Adds new method for containers for finding first item of a class Adds health potions Allows the user to use potions
103 lines
2.1 KiB
Java
103 lines
2.1 KiB
Java
package inf101.v18.rogue101.enemies;
|
|
|
|
import inf101.v18.grid.ILocation;
|
|
import inf101.v18.rogue101.game.IGame;
|
|
import inf101.v18.rogue101.items.Backpack;
|
|
import inf101.v18.rogue101.items.Sword;
|
|
import inf101.v18.rogue101.objects.IItem;
|
|
import inf101.v18.rogue101.objects.INonPlayer;
|
|
import inf101.v18.rogue101.shared.NPC;
|
|
|
|
public class Boss implements INonPlayer {
|
|
private int hp = getMaxHealth();
|
|
private final Backpack backpack = new Backpack();
|
|
private ILocation loc;
|
|
|
|
public Boss() {
|
|
backpack.add(new Sword());
|
|
}
|
|
|
|
@Override
|
|
public void doTurn(IGame game) {
|
|
loc = game.getLocation();
|
|
NPC.tryAttack(game, 1);
|
|
}
|
|
|
|
@Override
|
|
public int getAttack() {
|
|
return 50;
|
|
}
|
|
|
|
@Override
|
|
public int getDamage() {
|
|
return 15;
|
|
}
|
|
|
|
@Override
|
|
public IItem getItem(Class<?> type) {
|
|
for (IItem item : backpack.getContent()) {
|
|
if (type.isInstance(item)) {
|
|
return item;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public int getCurrentHealth() {
|
|
return hp;
|
|
}
|
|
|
|
@Override
|
|
public int getDefence() {
|
|
return 50;
|
|
}
|
|
|
|
@Override
|
|
public int getMaxHealth() {
|
|
return 500;
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "Lucifer";
|
|
}
|
|
|
|
@Override
|
|
public int getSize() {
|
|
return 50;
|
|
}
|
|
|
|
@Override
|
|
public String getPrintSymbol() {
|
|
return "\u001b[91m" + "\uD83D\uDE08" + "\u001b[0m";
|
|
}
|
|
|
|
@Override
|
|
public String getSymbol() {
|
|
return "B";
|
|
}
|
|
|
|
@Override
|
|
public int getVision() {
|
|
return 2;
|
|
}
|
|
|
|
@Override
|
|
public int handleDamage(IGame game, IItem source, int amount) {
|
|
hp -= amount;
|
|
if (hp < 0 && backpack.size() > 0) {
|
|
boolean dropped = false;
|
|
for (IItem item : backpack.getContent()) {
|
|
if (game.dropAt(loc, item)) {
|
|
dropped = true;
|
|
}
|
|
}
|
|
if (dropped) {
|
|
game.displayMessage(getName() + " dropped something");
|
|
}
|
|
}
|
|
return amount;
|
|
}
|
|
}
|