Fixes getNeighbourhood counting corners twice
This commit is contained in:
@@ -17,6 +17,7 @@ import inf101.v18.grid.GridDirection;
|
||||
import inf101.v18.grid.IGrid;
|
||||
import inf101.v18.grid.ILocation;
|
||||
import inf101.v18.rogue101.Main;
|
||||
import inf101.v18.rogue101.enemies.Boss;
|
||||
import inf101.v18.rogue101.enemies.Girl;
|
||||
import inf101.v18.rogue101.examples.Carrot;
|
||||
import inf101.v18.rogue101.items.*;
|
||||
@@ -26,6 +27,7 @@ import inf101.v18.rogue101.map.IGameMap;
|
||||
import inf101.v18.rogue101.map.IMapView;
|
||||
import inf101.v18.rogue101.map.MapReader;
|
||||
import inf101.v18.rogue101.objects.*;
|
||||
import inf101.v18.rogue101.shared.NPC;
|
||||
import javafx.scene.canvas.GraphicsContext;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.paint.Color;
|
||||
@@ -179,6 +181,12 @@ public class Game implements IGame {
|
||||
if (!map.has(loc, target)) {
|
||||
throw new IllegalMoveException("Target isn't there!");
|
||||
}
|
||||
IWeapon weapon = (IWeapon) currentActor.getItem(IWeapon.class);
|
||||
if (weapon != null) {
|
||||
NPC.playSound(weapon.getSound());
|
||||
} else {
|
||||
NPC.playSound("audio/Realistic_Punch-Mark_DiAngelo-1609462330.wav");
|
||||
}
|
||||
if (getAttack() >= getDefence(target)) {
|
||||
int actualDamage = target.handleDamage(this, target, getDamage(target));
|
||||
formatMessage("%s hits %s for %d damage", currentActor.getName(), target.getName(), actualDamage);
|
||||
@@ -199,6 +207,12 @@ public class Game implements IGame {
|
||||
@Override
|
||||
public ILocation rangedAttack(GridDirection dir, IItem target) {
|
||||
ILocation loc = currentLocation;
|
||||
IWeapon weapon = (IWeapon) currentActor.getItem(IWeapon.class);
|
||||
if (weapon != null) {
|
||||
NPC.playSound(weapon.getSound());
|
||||
} else {
|
||||
NPC.playSound("audio/Snow Ball Throw And Splat-SoundBible.com-992042947.wav");
|
||||
}
|
||||
if (getAttack() >= getDefence(target)) {
|
||||
int damage = getDamage(target) / loc.gridDistanceTo(map.getLocation(target));
|
||||
int actualDamage = target.handleDamage(this, target, damage);
|
||||
@@ -342,6 +356,7 @@ public class Game implements IGame {
|
||||
itemFactories.put(".", Dust::new);
|
||||
itemFactories.put("S", Sword::new);
|
||||
itemFactories.put("c", Chest::new);
|
||||
itemFactories.put("B", Boss::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -514,7 +529,7 @@ public class Game implements IGame {
|
||||
|
||||
@Override
|
||||
public IItem pickUp(IItem item) {
|
||||
if (item != null && map.has(currentLocation, item)) {
|
||||
if (item != null && map.has(currentLocation, item) && !(item instanceof IStatic)) {
|
||||
if (item instanceof IActor) {
|
||||
if (item.getCurrentHealth() / item.getMaxHealth() < 3) {
|
||||
map.remove(currentLocation, item);
|
||||
|
Reference in New Issue
Block a user