v1.2.0: balance changes to mage T2 talents

This commit is contained in:
Evan Debenham 2022-03-04 13:54:44 -05:00
parent 49385a9bae
commit dea75db5d5
5 changed files with 21 additions and 14 deletions

View File

@ -576,13 +576,13 @@ actors.hero.talent.backup_barrier.desc=_+1:_ The Mage gains _3 shielding_ whenev
actors.hero.talent.energizing_meal.title=energizing meal actors.hero.talent.energizing_meal.title=energizing meal
actors.hero.talent.energizing_meal.desc=_+1:_ Eating food takes the Mage 1 turn and grants him _5 turns of wand recharging_.\n\n_+2:_ Eating food takes the Mage 1 turn and grants him _8 turns of wand recharging_. actors.hero.talent.energizing_meal.desc=_+1:_ Eating food takes the Mage 1 turn and grants him _5 turns of wand recharging_.\n\n_+2:_ Eating food takes the Mage 1 turn and grants him _8 turns of wand recharging_.
actors.hero.talent.energizing_upgrade.title=energizing upgrade actors.hero.talent.energizing_upgrade.title=energizing upgrade
actors.hero.talent.energizing_upgrade.desc=_+1:_ Using a scroll of upgrade instantly recharges the Mage's staff _for 3 charges_, this can put it above its current charge cap.\n\n_+2:_ Using a scroll of upgrade instantly recharges the Mage's staff _for 5 charges_, this can put it above its current charge cap.\n\nThis talent also triggers when using scrolls or spells based on scrolls of upgrade. actors.hero.talent.energizing_upgrade.desc=_+1:_ Using a scroll of upgrade instantly recharges the Mage's staff _for 4 charges_, this can put it above its current charge cap.\n\n_+2:_ Using a scroll of upgrade instantly recharges the Mage's staff _for 6 charges_, this can put it above its current charge cap.\n\nThis talent also triggers when using scrolls or spells based on scrolls of upgrade.
actors.hero.talent.wand_preservation.title=wand preservation actors.hero.talent.wand_preservation.title=wand preservation
actors.hero.talent.wand_preservation.desc=_+1:_ When the Mage imbues a new wand into his staff, the old wand has a _67% chance_ of being returned at +0.\n\n_+2:_ When the Mage imbues a new wand into his staff, the old wand has a _100% chance_ of being returned at +0.\n\nThis talent can activate a maximum of three times. actors.hero.talent.wand_preservation.desc=_+1:_ When the Mage imbues a new wand into his staff, the old wand has an _50% chance_ of being returned at +0, otherwise it will be returned as 1 arcane resin.\n\n_+2:_ When the Mage imbues a new wand into his staff, the old wand has a _100% chance_ of being returned at +0.\n\nThis talent can preserve wands a maximum of five times, afterward it will always grant 1 arcane resin.
actors.hero.talent.arcane_vision.title=arcane vision actors.hero.talent.arcane_vision.title=arcane vision
actors.hero.talent.arcane_vision.desc=_+1:_ When the Mage zaps an enemy, he gains mind vision on them for _10 turns_.\n\n_+2:_ When the Mage zaps an enemy, he gains mind vision on them for _15 turns_. actors.hero.talent.arcane_vision.desc=_+1:_ When the Mage zaps an enemy, he gains mind vision on them for _10 turns_.\n\n_+2:_ When the Mage zaps an enemy, he gains mind vision on them for _15 turns_.
actors.hero.talent.shield_battery.title=shield battery actors.hero.talent.shield_battery.title=shield battery
actors.hero.talent.shield_battery.desc=_+1:_ The Mage can self-target with a wand to convert all of its charges into shielding at a rate of _5% max HP per charge_.\n\n_+2:_ The Mage can self-target with a wand to convert all of its charges into shielding at a rate of _7.5% max HP per charge_. actors.hero.talent.shield_battery.desc=_+1:_ The Mage can self-target with a wand to convert all of its charges into shielding at a rate of _4% max HP per charge_.\n\n_+2:_ The Mage can self-target with a wand to convert all of its charges into shielding at a rate of _6% max HP per charge_.
actors.hero.talent.empowering_scrolls.title=empowering scrolls actors.hero.talent.empowering_scrolls.title=empowering scrolls
actors.hero.talent.empowering_scrolls.desc=_+1:_ When the Mage reads a scroll, his next two wand zaps will get _+1 level_.\n\n_+2:_ When the Mage reads a scroll, his next two wand zaps will get _+2 levels_.\n\n_+3:_ When the Mage reads a scroll, his next two wand zaps will get _+3 levels_. actors.hero.talent.empowering_scrolls.desc=_+1:_ When the Mage reads a scroll, his next two wand zaps will get _+1 level_.\n\n_+2:_ When the Mage reads a scroll, his next two wand zaps will get _+2 levels_.\n\n_+3:_ When the Mage reads a scroll, his next two wand zaps will get _+3 levels_.

View File

@ -1475,12 +1475,13 @@ items.weapon.melee.magesstaff.ac_zap=ZAP
items.weapon.melee.magesstaff.prompt=Select a wand items.weapon.melee.magesstaff.prompt=Select a wand
items.weapon.melee.magesstaff.imbue=You imbue your staff with the %s. items.weapon.melee.magesstaff.imbue=You imbue your staff with the %s.
items.weapon.melee.magesstaff.preserved=The previous wand was preserved! items.weapon.melee.magesstaff.preserved=The previous wand was preserved!
items.weapon.melee.magesstaff.preserved_resin=The previous wand was disenchanted into arcane resin.
items.weapon.melee.magesstaff.conflict=The conflicting magics erase the enchantment on your staff. items.weapon.melee.magesstaff.conflict=The conflicting magics erase the enchantment on your staff.
items.weapon.melee.magesstaff.id_first=You'll need to identify this wand first. items.weapon.melee.magesstaff.id_first=You'll need to identify this wand first.
items.weapon.melee.magesstaff.cursed=You can't use a cursed wand. items.weapon.melee.magesstaff.cursed=You can't use a cursed wand.
items.weapon.melee.magesstaff.imbue_desc=Are you sure you want to imbue your staff with this wand?\n\nIf the wand being imbued is the same or higher level than the staff, the staff will inherit the level of that wand plus a single one of its own upgrades.\n\nThis imbue will result in a level %d staff. items.weapon.melee.magesstaff.imbue_desc=Are you sure you want to imbue your staff with this wand?\n\nIf the wand being imbued is the same or higher level than the staff, the staff will inherit the level of that wand plus a single one of its own upgrades.\n\nThis imbue will result in a _level %d_ staff.
items.weapon.melee.magesstaff.imbue_lost=The wand currently imbued in your staff will be lost. items.weapon.melee.magesstaff.imbue_lost=The wand currently imbued in your staff will be lost.
items.weapon.melee.magesstaff.imbue_talent=The wand currently imbued in your staff has a %1$d%% chance to be returned at +0. Wand returns remaining: %2$d. items.weapon.melee.magesstaff.imbue_talent=The wand currently imbued in your staff has a _%1$d%% chance_ to be returned at +0. Wand returns remaining: _%2$d_. If your wand is not preserved, you will get 1 arcane resin instead.
items.weapon.melee.magesstaff.yes=Yes, I'm sure. items.weapon.melee.magesstaff.yes=Yes, I'm sure.
items.weapon.melee.magesstaff.no=No, I changed my mind items.weapon.melee.magesstaff.no=No, I changed my mind
items.weapon.melee.magesstaff.desc=Crafted by the Mage himself, this staff is a unique magical weapon which can be imbued with a wand. items.weapon.melee.magesstaff.desc=Crafted by the Mage himself, this staff is a unique magical weapon which can be imbued with a wand.

View File

@ -386,7 +386,7 @@ public enum Talent {
if (hero.hasTalent(ENERGIZING_UPGRADE)){ if (hero.hasTalent(ENERGIZING_UPGRADE)){
MagesStaff staff = hero.belongings.getItem(MagesStaff.class); MagesStaff staff = hero.belongings.getItem(MagesStaff.class);
if (staff != null){ if (staff != null){
staff.gainCharge(1 + 2*hero.pointsInTalent(ENERGIZING_UPGRADE), true); staff.gainCharge(2 + 2*hero.pointsInTalent(ENERGIZING_UPGRADE), true);
ScrollOfRecharging.charge( Dungeon.hero ); ScrollOfRecharging.charge( Dungeon.hero );
SpellSprite.show( hero, SpellSprite.CHARGE ); SpellSprite.show( hero, SpellSprite.CHARGE );
} }

View File

@ -558,7 +558,7 @@ public abstract class Wand extends Item {
if (target == curUser.pos || cell == curUser.pos) { if (target == curUser.pos || cell == curUser.pos) {
if (target == curUser.pos && curUser.hasTalent(Talent.SHIELD_BATTERY)){ if (target == curUser.pos && curUser.hasTalent(Talent.SHIELD_BATTERY)){
float shield = curUser.HT * (0.05f*curWand.curCharges); float shield = curUser.HT * (0.04f*curWand.curCharges);
if (curUser.pointsInTalent(Talent.SHIELD_BATTERY) == 2) shield *= 1.5f; if (curUser.pointsInTalent(Talent.SHIELD_BATTERY) == 2) shield *= 1.5f;
Buff.affect(curUser, Barrier.class).setShield(Math.round(shield)); Buff.affect(curUser, Barrier.class).setShield(Math.round(shield));
curWand.curCharges = 0; curWand.curCharges = 0;

View File

@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.ArcaneResin;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
@ -207,11 +208,9 @@ public class MagesStaff extends MeleeWeapon {
int oldStaffcharges = this.wand.curCharges; int oldStaffcharges = this.wand.curCharges;
if (owner == Dungeon.hero && Dungeon.hero.hasTalent(Talent.WAND_PRESERVATION) if (owner == Dungeon.hero && Dungeon.hero.hasTalent(Talent.WAND_PRESERVATION)){
&& Random.Float() < 0.34f + 0.33f*Dungeon.hero.pointsInTalent(Talent.WAND_PRESERVATION)){
Talent.WandPreservationCounter counter = Buff.affect(Dungeon.hero, Talent.WandPreservationCounter.class); Talent.WandPreservationCounter counter = Buff.affect(Dungeon.hero, Talent.WandPreservationCounter.class);
if (counter.count() < 3) { if (counter.count() < 5 && Random.Float() < 0.5f*Dungeon.hero.pointsInTalent(Talent.WAND_PRESERVATION)){
counter.countUp(1); counter.countUp(1);
this.wand.level(0); this.wand.level(0);
if (!this.wand.collect()) { if (!this.wand.collect()) {
@ -219,6 +218,13 @@ public class MagesStaff extends MeleeWeapon {
} }
GLog.newLine(); GLog.newLine();
GLog.p(Messages.get(this, "preserved")); GLog.p(Messages.get(this, "preserved"));
} else {
ArcaneResin resin = new ArcaneResin();
if (!resin.collect()) {
Dungeon.level.drop(resin, owner.pos);
}
GLog.newLine();
GLog.p(Messages.get(this, "preserved_resin"));
} }
} }
@ -420,12 +426,12 @@ public class MagesStaff extends MeleeWeapon {
} }
String bodyText = Messages.get(MagesStaff.class, "imbue_desc", newLevel); String bodyText = Messages.get(MagesStaff.class, "imbue_desc", newLevel);
int preservesLeft = Dungeon.hero.hasTalent(Talent.WAND_PRESERVATION) ? 3 : 0; int preservesLeft = Dungeon.hero.hasTalent(Talent.WAND_PRESERVATION) ? 5 : 0;
if (Dungeon.hero.buff(Talent.WandPreservationCounter.class) != null){ if (Dungeon.hero.buff(Talent.WandPreservationCounter.class) != null){
preservesLeft -= Dungeon.hero.buff(Talent.WandPreservationCounter.class).count(); preservesLeft -= Dungeon.hero.buff(Talent.WandPreservationCounter.class).count();
} }
if (preservesLeft > 0){ if (Dungeon.hero.hasTalent(Talent.WAND_PRESERVATION)){
int preserveChance = Dungeon.hero.pointsInTalent(Talent.WAND_PRESERVATION) == 1 ? 67 : 100; int preserveChance = Dungeon.hero.pointsInTalent(Talent.WAND_PRESERVATION) == 1 ? 50 : 100;
bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_talent", preserveChance, preservesLeft); bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_talent", preserveChance, preservesLeft);
} else { } else {
bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_lost"); bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_lost");