package inf101.v18.rogue101.enemies; import inf101.v18.rogue101.Main; import inf101.v18.rogue101.game.Game; import inf101.v18.rogue101.game.RogueGame; import inf101.v18.rogue101.items.weapon.BasicSword; import inf101.v18.rogue101.object.Item; import inf101.v18.rogue101.state.AttackType; import inf101.v18.util.NPCHelper; /** * A boss enemy that's harder than any other enemy */ public class Boss extends Enemy { /** * Instantiates a new boss character */ public Boss() { backpack.add(new BasicSword()); } @Override public void doTurn(Game game) { currentLocation = game.getLocation(); NPCHelper.tryAttack(game, 1, AttackType.MELEE); } @Override public int getAttack() { return 50; } @Override public int getDamage() { return 15; } @Override public int getCurrentHealth() { return hp; } @Override public int getDefense() { return 40; } @Override public int getMaxHealth() { return 550; } @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 3; } @Override public int handleDamage(Game game, Item source, int amount) { super.handleDamage(game, source, amount); if (hp < 0) { ((RogueGame) game).win(); } game.getPrinter().printAt(Main.COLUMN_RIGHT_SIDE_START, 19, "Boss HP: " + NPCHelper.hpBar(this)); return amount; } }