@Override public ArrayList<String> actions( Hero hero ) { ArrayList<String> actions = super.actions( hero ); actions.add( AC_ZAP ); actions.add( AC_SET ); if (returnDepth != -1) { actions.add( AC_RETURN ); } return actions; }
@Override public void activate(Char ch) { super.activate(ch); if (activeBuff != null) activeBuff.attachTo(ch); }
@Override public boolean act() { if (target instanceof Hero){ Belongings b = ((Hero) target).belongings; if (b.misc1 instanceof Artifact){ ((Artifact)b.misc1).charge((Hero)target); } if (b.misc2 instanceof Artifact){ ((Artifact)b.misc2).charge((Hero)target); } } left--; if (left <= 0){ detach(); } else { spend(TICK); } return true; }
@Override public String info() { if (cursed && cursedKnown && !isEquipped( Dungeon.hero )) { return desc() + "\n\n" + Messages.get(Artifact.class, "curse_known"); } else if (!isIdentified() && cursedKnown && !isEquipped( Dungeon.hero)) { return desc()+ "\n\n" + Messages.get(Artifact.class, "not_cursed"); } else { return desc(); } }
@Override public void execute(Hero hero, String action ) { super.execute(hero, action); if (action.equals(AC_BREW)){ if (!isEquipped(hero)) GLog.i( Messages.get(this, "need_to_equip") ); else if (cursed) GLog.w( Messages.get(this, "cursed") ); else if (!alchemyReady) GLog.i( Messages.get(this, "not_ready") ); else if (hero.visibleEnemies() > hero.mindVisionEnemies.size()) GLog.i( Messages.get(this, "enemy_near") ); else { AlchemyScene.setProvider(hero.buff(kitEnergy.class)); Game.switchScene(AlchemyScene.class); } } }
@Override public String desc() { String desc = super.desc(); if (returnDepth != -1){ desc += "\n\n" + Messages.get(this, "desc_set", returnDepth); } return desc; }
@Override public boolean doUnequip(Hero hero, boolean collect, boolean single) { if (super.doUnequip(hero, collect, single)){ stealthed = false; return true; } else return false; }
@Override public boolean doEquip(Hero hero) { if (super.doEquip(hero)){ alchemyReady = false; return true; } else { return false; } }
@Override public boolean doEquip( final Hero hero ) { if ((hero.belongings.misc1 != null && hero.belongings.misc1.getClass() == this.getClass()) || (hero.belongings.misc2 != null && hero.belongings.misc2.getClass() == this.getClass())){ GLog.w( Messages.get(Artifact.class, "cannot_wear_two") ); return false; } else { if (super.doEquip( hero )){ identify(); return true; } else { return false; } } }
@Override public String status() { //if the artifact isn't IDed, or is cursed, don't display anything if (!isIdentified() || cursed){ return null; } //display the current cooldown if (cooldown != 0) return Messages.format( "%d", cooldown ); //display as percent if (chargeCap == 100) return Messages.format( "%d%%", charge ); //display as #/# if (chargeCap > 0) return Messages.format( "%d/%d", charge, chargeCap ); //if there's no cap - //- but there is charge anyway, display that charge if (charge != 0) return Messages.format( "%d", charge ); //otherwise, if there's no charge, return null. return null; }
@Override public void execute(Hero hero, String action ) { super.execute(hero, action); if (action.equals(AC_BREW)){ if (!isEquipped(hero)) GLog.i( Messages.get(this, "need_to_equip") ); else if (cursed) GLog.w( Messages.get(this, "cursed") ); else if (!alchemyReady) GLog.i( Messages.get(this, "not_ready") ); else if (hero.visibleEnemies() > hero.mindVisionEnemies.size()) GLog.i( Messages.get(this, "enemy_near") ); else { AlchemyScene.setProvider(hero.buff(kitEnergy.class)); Game.switchScene(AlchemyScene.class); } } }
@Override public String desc() { String desc = super.desc(); if (returnDepth != -1){ desc += "\n\n" + Messages.get(this, "desc_set", returnDepth); } return desc; }
@Override public String info() { if (cursed && cursedKnown && !isEquipped( Dungeon.hero )) { return desc() + "\n\n" + Messages.get(Artifact.class, "curse_known"); } else if (!isIdentified() && cursedKnown && !isEquipped( Dungeon.hero)) { return desc()+ "\n\n" + Messages.get(Artifact.class, "not_cursed"); } else { return desc(); } }
@Override public boolean doUnequip(Hero hero, boolean collect, boolean single) { if (super.doUnequip(hero, collect, single)){ stealthed = false; return true; } else return false; }
@Override public boolean doEquip(Hero hero) { if (super.doEquip(hero)){ alchemyReady = false; return true; } else { return false; } }
@Override public boolean doEquip( final Hero hero ) { if ((hero.belongings.misc1 != null && hero.belongings.misc1.getClass() == this.getClass()) || (hero.belongings.misc2 != null && hero.belongings.misc2.getClass() == this.getClass())){ GLog.w( Messages.get(Artifact.class, "cannot_wear_two") ); return false; } else { if (super.doEquip( hero )){ identify(); return true; } else { return false; } } }
@Override public String status() { //if the artifact isn't IDed, or is cursed, don't display anything if (!isIdentified() || cursed){ return null; } //display the current cooldown if (cooldown != 0) return Messages.format( "%d", cooldown ); //display as percent if (chargeCap == 100) return Messages.format( "%d%%", charge ); //display as #/# if (chargeCap > 0) return Messages.format( "%d/%d", charge, chargeCap ); //if there's no cap - //- but there is charge anyway, display that charge if (charge != 0) return Messages.format( "%d", charge ); //otherwise, if there's no charge, return null. return null; }
@Override public ArrayList<String> actions( Hero hero ) { ArrayList<String> actions = super.actions( hero ); actions.add( AC_ZAP ); actions.add( AC_SET ); if (returnDepth != -1) { actions.add( AC_RETURN ); } return actions; }
@Override public void execute(Hero hero, String action ) { super.execute(hero, action); if (action.equals(AC_PRICK)){ int damage = 3*(level()*level()); if (damage > hero.HP*0.75) { GameScene.show( new WndOptions(Messages.titleCase(Messages.get(this, "name")), Messages.get(this, "prick_warn"), Messages.get(this, "yes"), Messages.get(this, "no")) { @Override protected void onSelect(int index) { if (index == 0) prick(Dungeon.hero); } } ); } else { prick(hero); } } }
@Override public String desc() { String desc = super.desc(); if (isEquipped( Dungeon.hero )){ desc += "\n\n"; if (cursed) desc += Messages.get(this, "desc_cursed"); else desc += Messages.get(this, "desc_equipped"); } return desc; }