@Override public Item sampleOutput(ArrayList<Item> ingredients) { AlchemistsToolkit sample = new AlchemistsToolkit(); sample.identify(); AlchemistsToolkit existing = (AlchemistsToolkit) ingredients.get(0); sample.charge = existing.charge; sample.partialCharge = existing.partialCharge; sample.exp = existing.exp; sample.level(existing.level()); sample.absorbEnergy(AlchemyScene.availableEnergy()); return sample; } }
@Override public ArrayList<String> actions( Hero hero ) { ArrayList<String> actions = super.actions( hero ); if (isEquipped( hero ) && !cursed) actions.add(AC_BREW); return actions; }
public void absorbEnergy( int energy ){ exp += energy; while (exp >= 10 && level() < levelCap){ upgrade(); exp -= 10; } if (level() == levelCap){ partialCharge += exp; energy -= exp; exp = 0; } partialCharge += energy/3f; while (partialCharge >= 1){ partialCharge -= 1; charge++; if (charge >= chargeCap){ charge = chargeCap; partialCharge = 0; break; } } updateQuickslot(); }
@Override public void charge(Hero target) { if (charge < chargeCap){ partialCharge += 0.5f; if (partialCharge >= 1){ partialCharge--; charge++; updateQuickslot(); } } }
@Override public Item brew(ArrayList<Item> ingredients) { AlchemistsToolkit existing = (AlchemistsToolkit) ingredients.get(0); existing.absorbEnergy(lastCost); return existing; }
public void gainCharge(float levelPortion) { alchemyReady = true; if (cursed) return; if (charge < chargeCap) { //generates 2 energy every hero level, +0.1 energy per toolkit level //to a max of 12 energy per hero level //This means that energy absorbed into the kit is recovered in 6.67 hero levels (as 33% of input energy is kept) //exp towards toolkit levels is included here float effectiveLevel = GameMath.gate(0, level() + exp/10f, 10); partialCharge += (2 + (1f * effectiveLevel)) * levelPortion; //charge is in increments of 1/10 max hunger value. while (partialCharge >= 1) { charge++; partialCharge -= 1; if (charge == chargeCap){ GLog.p( Messages.get(AlchemistsToolkit.class, "full") ); partialCharge = 0; } updateQuickslot(); } } else partialCharge = 0; }
"All of this is explained in a new guidebook specifically for alchemy. Pages of it can be found in alchemy rooms. Existing players will be given some pages automatically to get started.")); changes.addButton( new ChangeButton(new AlchemistsToolkit(), "The Alchemist's Toolkit returns!\n\n" + "The toolkit can be found like any other artifact, and acts as a sort of horn of plenty for the new alchemical energy resource."));
@Override public void charge(Hero target) { if (charge < chargeCap){ partialCharge += 0.5f; if (partialCharge >= 1){ partialCharge--; charge++; updateQuickslot(); } } }
@Override public Item brew(ArrayList<Item> ingredients) { AlchemistsToolkit existing = (AlchemistsToolkit) ingredients.get(0); existing.absorbEnergy(lastCost); return existing; }
public void gainCharge(float levelPortion) { alchemyReady = true; if (cursed) return; if (charge < chargeCap) { //generates 2 energy every hero level, +0.1 energy per toolkit level //to a max of 12 energy per hero level //This means that energy absorbed into the kit is recovered in 6.67 hero levels (as 33% of input energy is kept) //exp towards toolkit levels is included here float effectiveLevel = GameMath.gate(0, level() + exp/10f, 10); partialCharge += (2 + (1f * effectiveLevel)) * levelPortion; //charge is in increments of 1/10 max hunger value. while (partialCharge >= 1) { charge++; partialCharge -= 1; if (charge == chargeCap){ GLog.p( Messages.get(AlchemistsToolkit.class, "full") ); partialCharge = 0; } updateQuickslot(); } } else partialCharge = 0; }
"All of this is explained in a new guidebook specifically for alchemy. Pages of it can be found in alchemy rooms. Existing players will be given some pages automatically to get started.")); changes.addButton( new ChangeButton(new AlchemistsToolkit(), "The Alchemist's Toolkit returns!\n\n" + "The toolkit can be found like any other artifact, and acts as a sort of horn of plenty for the new alchemical energy resource."));
@Override public Item sampleOutput(ArrayList<Item> ingredients) { AlchemistsToolkit sample = new AlchemistsToolkit(); sample.identify(); AlchemistsToolkit existing = (AlchemistsToolkit) ingredients.get(0); sample.charge = existing.charge; sample.partialCharge = existing.partialCharge; sample.exp = existing.exp; sample.level(existing.level()); sample.absorbEnergy(AlchemyScene.availableEnergy()); return sample; } }
public void absorbEnergy( int energy ){ exp += energy; while (exp >= 10 && level() < levelCap){ upgrade(); exp -= 10; } if (level() == levelCap){ partialCharge += exp; energy -= exp; exp = 0; } partialCharge += energy/3f; while (partialCharge >= 1){ partialCharge -= 1; charge++; if (charge >= chargeCap){ charge = chargeCap; partialCharge = 0; break; } } updateQuickslot(); }
@Override public ArrayList<String> actions( Hero hero ) { ArrayList<String> actions = super.actions( hero ); if (isEquipped( hero ) && !cursed) actions.add(AC_BREW); return actions; }
@Override public String desc() { String result = Messages.get(this, "desc"); if (isEquipped(Dungeon.hero)) { if (cursed) result += "\n\n" + Messages.get(this, "desc_cursed"); else if (!alchemyReady) result += "\n\n" + Messages.get(this, "desc_warming"); else result += "\n\n" + Messages.get(this, "desc_hint"); } return result; }
@Override public String desc() { String result = Messages.get(this, "desc"); if (isEquipped(Dungeon.hero)) { if (cursed) result += "\n\n" + Messages.get(this, "desc_cursed"); else if (!alchemyReady) result += "\n\n" + Messages.get(this, "desc_warming"); else result += "\n\n" + Messages.get(this, "desc_hint"); } return result; }
@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 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); } } }