public void attack(Unit unit) { if (!hasAttacked) { unit.takeHit(attack + terrain.getAttackBonus()); if (speed >= unit.speed + Constants.speedNeededForDoubleAttack) unit.takeHit(attack + terrain.getAttackBonus()); hasAttacked = true; } }
public void setTerrain(TileSprite newTerr) { if (terrain != null) terrain.currentUnit = null; else if (newTerr != null) { terrain = newTerr; terrain.currentUnit = this; } else { terrain = newTerr; } }
public boolean moveTo(int x, int y, TileSprite targetTile) { if (!hasMoved) { if (targetTile.getUnit() != null) { System.err.println("Multiple Units ERR"); return false; } targetTile.setUnit(this); terrain.setUnit(null); terrain = targetTile; hasMoved = true; return true; } return false; }
protected void takeHit(int damage) { int tmp = damage - (defense + terrain.getDefenseBonus()); if (tmp < 0) tmp = 0; health -= tmp; System.out.println("New HP: " + health); if (health <= 0) { die(); } }
protected void die() { terrain.setUnit(null); terrain = null; alive = false; }