Kristian Knarvik 30ba612e56 Minor changes
Adds new method for containers for finding first item of a class
Adds health potions
Allows the user to use potions
2018-03-20 01:10:30 +01:00

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;
}
}