@Override public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { switch (Random.Int(5)) { case 0: GLog.w("Oh it's hot!"); Buff.affect(hero, Burning.class).reignite(hero); break; case 1: GLog.w("You can't feel your legs!"); Buff.prolong(hero, Roots.class, Paralysis.duration(hero)); break; case 2: GLog.w("You are not feeling well."); Buff.affect(hero, Poison.class).set(Poison.durationFactor(hero) * hero.HT / 5); break; case 3: GLog.w("You are stuffed."); Buff.prolong(hero, Slow.class, Slow.duration(hero)); break; } } }
@Override public void die(Object cause) { GameScene.bossSlain(); Dungeon.level.drop(new ArmorKit(), pos).sprite.drop(); if (Dungeon.gamemode == GameMode.REGULAR) { Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); } else if (Dungeon.gamemode == GameMode.ARENA) { // Level up Dungeon.hero.earnExp(Dungeon.hero.maxExp()); ArenaShopKey key = new ArenaShopKey(); key.identify(); Dungeon.level.drop(key, pos).sprite.drop(); } super.die(cause); Badges.validateBossSlain(); LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class); if (beacon != null) { beacon.upgrade(); GLog.p("Your beacon grows stronger!"); } yell("You cannot kill me, " + Dungeon.hero.givenName() + "... I am... immortal..."); }
@Override public boolean attachTo(Char target) { if (super.attachTo(target) && !target.immunities().contains(Sleep.class)) { if (target instanceof Hero) if (target.HP == target.HT) { GLog.i("You are too healthy, and resist the urge to sleep."); detach(); return true; } else { GLog.i("You fall into a deep magical sleep."); } else if (target instanceof Mob) ((Mob) target).state = ((Mob) target).SLEEPING; target.paralysed = true; return true; } else { return false; } }
@Override public boolean act() { if (target instanceof Hero) { target.HP = Math.min(target.HP + 1, target.HT); ((Hero) target).restoreHealth = true; if (target.HP == target.HT) { GLog.p("You wake up feeling refreshed and healthy."); detach(); } } spend(STEP); return true; }