@Override public void activate( Char ch ) { if(wand != null) wand.charge( ch, STAFF_SCALE_FACTOR ); }
protected void wandUsed() { usagesToKnow -= cursed ? 1 : chargesPerCast(); curCharges -= cursed ? 1 : chargesPerCast(); if (!isIdentified() && usagesToKnow <= 0) { identify(); GLog.w( Messages.get(Wand.class, "identify", name()) ); } else { if (curUser.heroClass == HeroClass.MAGE) levelKnown = true; updateQuickslot(); } curUser.spendAndNext( TIME_TO_ZAP ); }
@Override public String info() { String desc = desc(); desc += "\n\n" + statsDesc(); if (cursed && cursedKnown) { desc += "\n\n" + Messages.get(Wand.class, "cursed"); } else if (!isIdentified() && cursedKnown){ desc += "\n\n" + Messages.get(Wand.class, "not_cursed"); } return desc; }
int targetLevel = Math.max(this.level(), wand.level()); if (wand.level() >= this.level() && this.level() > 0) targetLevel++; this.degrade(Math.abs(staffLevelDiff)); int wandLevelDiff = targetLevel - wand.level(); if (wandLevelDiff > 0) wand.upgrade(wandLevelDiff); else if (wandLevelDiff < 0) wand.degrade(Math.abs(wandLevelDiff)); wand.identify(); if (owner != null) wand.charge(owner);
private void selectReward( Wandmaker wandmaker, Item item, Wand reward ) { hide(); item.detach( Dungeon.hero.belongings.backpack ); reward.identify(); if (reward.doPickUp( Dungeon.hero )) { GLog.i( Messages.get(Dungeon.hero, "you_now_have", reward.name()) ); } else { Dungeon.level.drop( reward, wandmaker.pos ).sprite.drop(); } wandmaker.yell( Messages.get(this, "farewell", Dungeon.hero.givenName()) ); wandmaker.destroy(); wandmaker.sprite.die(); Wandmaker.Quest.complete(); } }
QuickSlotButton.target(Actor.findChar(cell)); if (curWand.curCharges >= (curWand.cursed ? 1 : curWand.chargesPerCast())) { CursedWand.cursedZap(curWand, curUser, new Ballistica( curUser.pos, target, Ballistica.MAGIC_BOLT)); if (!curWand.cursedKnown){ GLog.n(Messages.get(Wand.class, "curse_discover", curWand.name())); curWand.fx(shot, new Callback() { public void call() { curWand.onZap(shot);
private void applyWand(Wand wand){ Sample.INSTANCE.play(Assets.SND_BURNING); curUser.sprite.emitter().burst( ElmoParticle.FACTORY, 12 ); evoke(curUser); Dungeon.quickslot.clearItem(wand); wand.detach(curUser.belongings.backpack); GLog.p( Messages.get(MagesStaff.class, "imbue", wand.name())); imbueWand( wand, curUser ); updateQuickslot(); } };
GLog.p(Messages.get(CursedWand.class, "grass")); GLog.w(Messages.get(CursedWand.class, "fire")); wand.wandUsed(); break; wand.wandUsed(); } else { GameScene.show( wand.wandUsed(); wand.wandUsed(); wand.detach(user.belongings.backpack); Item result; do { GLog.w( Messages.get(CursedWand.class, "transmogrify") ); Dungeon.level.drop(result, user.pos).sprite.drop(); wand.wandUsed(); break;
public void gainCharge( float amt ){ if (wand != null){ wand.gainCharge(amt); } }
public MagesStaff(Wand wand){ this(); wand.identify(); wand.cursed = false; this.wand = wand; wand.maxCharges = Math.min(wand.maxCharges + 1, 10); wand.curCharges = wand.maxCharges; name = Messages.get(wand, "staff_name"); }
@Override public Item degrade() { super.degrade(); if (wand != null) { int curCharges = wand.curCharges; wand.degrade(); //gives the wand one additional charge wand.maxCharges = Math.min(wand.maxCharges + 1, 10); wand.curCharges = curCharges-1; updateQuickslot(); } return this; }
@Override public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_IMBUE)) { curUser = hero; GameScene.selectItem(itemSelector, WndBag.Mode.WAND, Messages.get(this, "prompt")); } else if (action.equals(AC_ZAP)){ if (wand == null) { GameScene.show(new WndItem(null, this, true)); return; } wand.execute(hero, AC_ZAP); } }
int targetLevel = Math.max(this.level(), wand.level()); if (wand.level() >= this.level() && this.level() > 0) targetLevel++; this.degrade(Math.abs(staffLevelDiff)); int wandLevelDiff = targetLevel - wand.level(); if (wandLevelDiff > 0) wand.upgrade(wandLevelDiff); else if (wandLevelDiff < 0) wand.degrade(Math.abs(wandLevelDiff)); wand.identify(); if (owner != null) wand.charge(owner);
private void selectReward( Wandmaker wandmaker, Item item, Wand reward ) { hide(); item.detach( Dungeon.hero.belongings.backpack ); reward.identify(); if (reward.doPickUp( Dungeon.hero )) { GLog.i( Messages.get(Dungeon.hero, "you_now_have", reward.name()) ); } else { Dungeon.level.drop( reward, wandmaker.pos ).sprite.drop(); } wandmaker.yell( Messages.get(this, "farewell", Dungeon.hero.givenName()) ); wandmaker.destroy(); wandmaker.sprite.die(); Wandmaker.Quest.complete(); } }
QuickSlotButton.target(Actor.findChar(cell)); if (curWand.curCharges >= (curWand.cursed ? 1 : curWand.chargesPerCast())) { CursedWand.cursedZap(curWand, curUser, new Ballistica( curUser.pos, target, Ballistica.MAGIC_BOLT)); if (!curWand.cursedKnown){ GLog.n(Messages.get(Wand.class, "curse_discover", curWand.name())); curWand.fx(shot, new Callback() { public void call() { curWand.onZap(shot);
private void applyWand(Wand wand){ Sample.INSTANCE.play(Assets.SND_BURNING); curUser.sprite.emitter().burst( ElmoParticle.FACTORY, 12 ); evoke(curUser); Dungeon.quickslot.clearItem(wand); wand.detach(curUser.belongings.backpack); GLog.p( Messages.get(MagesStaff.class, "imbue", wand.name())); imbueWand( wand, curUser ); updateQuickslot(); } };
GLog.p(Messages.get(CursedWand.class, "grass")); GLog.w(Messages.get(CursedWand.class, "fire")); wand.wandUsed(); break; wand.wandUsed(); } else { GameScene.show( wand.wandUsed(); wand.wandUsed(); wand.detach(user.belongings.backpack); Item result; do { GLog.w( Messages.get(CursedWand.class, "transmogrify") ); Dungeon.level.drop(result, user.pos).sprite.drop(); wand.wandUsed(); break;
public void gainCharge( float amt ){ if (wand != null){ wand.gainCharge(amt); } }
public MagesStaff(Wand wand){ this(); wand.identify(); wand.cursed = false; this.wand = wand; wand.maxCharges = Math.min(wand.maxCharges + 1, 10); wand.curCharges = wand.maxCharges; name = Messages.get(wand, "staff_name"); }
@Override public Item degrade() { super.degrade(); if (wand != null) { int curCharges = wand.curCharges; wand.degrade(); //gives the wand one additional charge wand.maxCharges = Math.min(wand.maxCharges + 1, 10); wand.curCharges = curCharges-1; updateQuickslot(); } return this; }