v0.9.3: Balance changes to the Mage's talents:

- backup barrier shield down to 3/5 from 4/6
- energizing upgrade chare granted up to 3/5 from 2/3
- empowering scrolls no longer has a timer
- Ally warp range down to 2/4/6 from 3/6/9
- Empowered strike damage bonus up to 25/50/75% from 20/40/60%
- Soul siphon effectiveness down to 13/27/40% from 15/30/45%
- Necromancer's minions proc chance up to 13/27/40% from 10/20/30%
This commit is contained in:
Evan Debenham
2021-04-26 22:33:45 -04:00
parent 636e58e490
commit f3e15c2262
8 changed files with 19 additions and 24 deletions

View File

@@ -282,7 +282,7 @@ actors.buffs.roots.heromsg=You can't move!
actors.buffs.roots.desc=Roots (magical or natural) grab at the feet, forcing them down to the ground.\n\nRoots lock a target in place, making it impossible for them to move, but other actions are not affected.\n\nTurns of root remaining: %s.
actors.buffs.scrollempower.name=Scroll Empower
actors.buffs.scrollempower.desc=The energy from the Mage's recently read scroll is empowering his wands! His next wand zap within %1$d turns will gain +%2$d levels.
actors.buffs.scrollempower.desc=The energy from the Mage's recently read scroll is empowering his wands! His next wand zap will gain +%1$d levels.
actors.buffs.shadows.name=Shadowmelded
actors.buffs.shadows.desc=You are blended into the shadows around you, granting you invisibility and slowing your metabolism.\n\nWhile you are invisible enemies are unable to attack or follow you. Most physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility. Additionally, while shadowmelded, your rate of hunger is slowed.\n\nYou will remain shadowmelded until you leave the shadows or an enemy comes into contact with you.
@@ -496,12 +496,12 @@ actors.hero.talent.scholars_intuition.desc=_+1:_ The Mage identifies wands _3x f
actors.hero.talent.tested_hypothesis.title=tested hypothesis
actors.hero.talent.tested_hypothesis.desc=_+1:_ Whenever the Mage identifies an item, he gains _2 turns of wand recharging_.\n\n_+2:_ Whenever the Mage identifies an item, he gains _3 turns of wand recharging_.
actors.hero.talent.backup_barrier.title=backup barrier
actors.hero.talent.backup_barrier.desc=_+1:_ The Mage gains _4 shielding_ whenever he spends the last charge in his staff.\n\n_+2:_ The Mage gains _6 shielding_ whenever he spends the last charge in his staff.
actors.hero.talent.backup_barrier.desc=_+1:_ The Mage gains _3 shielding_ whenever he spends the last charge in his staff.\n\n_+2:_ The Mage gains _5 shielding_ whenever he spends the last charge in his staff.
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_upgrade.title=energizing upgrade
actors.hero.talent.energizing_upgrade.desc=_+1:_ Using a scroll of upgrade instantly recharges the Mage's staff _for 2 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 3 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 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.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 preserve a wand up to three times.
actors.hero.talent.arcane_vision.title=arcane vision
@@ -510,23 +510,23 @@ 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 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 its charges into shielding at a rate of _7.5% max HP per charge_.
actors.hero.talent.empowering_scrolls.title=empowering scrolls
actors.hero.talent.empowering_scrolls.desc=_+1:_ When the Mage reads a scroll, his next wand zap within 20 turns will get _+1 level_.\n\n_+2:_ When the Mage reads a scroll, his next wand zap within 20 turns will get _+2 levels_.\n\n_+3:_ When the Mage reads a scroll, his next wand zap within 20 turns will get _+3 levels_.
actors.hero.talent.empowering_scrolls.desc=_+1:_ When the Mage reads a scroll, his next wand zap will get _+1 level_.\n\n_+2:_ When the Mage reads a scroll, his next wand zap will get _+2 levels_.\n\n_+3:_ When the Mage reads a scroll, his next wand zap will get _+3 levels_.
actors.hero.talent.ally_warp.title=ally warp
actors.hero.talent.ally_warp.desc=_+1:_ The Mage can tap an ally to instantly swap places with them, with a _3 tile range_.\n\n_+2:_ The Mage can tap an ally to instantly swap places with them, with a _6 tile range_.\n\n_+3:_ The Mage can tap an ally to instantly swap places with them, with a _9 tile range_.\n\nThe Mage cannot swap places with immobile allies.
actors.hero.talent.ally_warp.desc=_+1:_ The Mage can tap an ally to instantly swap places with them, with a _2 tile range_.\n\n_+2:_ The Mage can tap an ally to instantly swap places with them, with a _4 tile range_.\n\n_+3:_ The Mage can tap an ally to instantly swap places with them, with a _6 tile range_.\n\nThe Mage cannot swap places with immobile allies.
actors.hero.talent.empowered_strike.title=empowered strike
actors.hero.talent.empowered_strike.desc=_+1:_ The Battlemage's first melee strike with his staff after zapping with it deals _+20% damage_.\n\n_+2:_ The Battlemage's first melee strike with his staff after zapping with it deals _+40% damage_.\n\n_+3:_ The Battlemage's first melee strike with his staff after zapping with it deals _+60% damage_.
actors.hero.talent.empowered_strike.desc=_+1:_ The Battlemage's first melee strike with his staff after zapping with it deals _+25% damage_.\n\n_+2:_ The Battlemage's first melee strike with his staff after zapping with it deals _+50% damage_.\n\n_+3:_ The Battlemage's first melee strike with his staff after zapping with it deals _+75% damage_.
actors.hero.talent.mystical_charge.title=mystical charge
actors.hero.talent.mystical_charge.desc=_+1:_ Striking with his staff grants the Battlemage _0.5 turns_ worth of artifact recharging.\n\n_+2:_ Striking with his staff grants the Battlemage _1 turn_ worth of artifact recharging.\n\n_+3:_ Striking with his staff grants the Battlemage _1.5 turns_ worth of artifact recharging.
actors.hero.talent.excess_charge.title=excess charge
actors.hero.talent.excess_charge.desc=_+1:_ When the Battlemage's staff is fully charged, he has a _20% chance_ to gain 2 shielding per level of the staff when he strikes with it.\n\n_+2:_ When the Battlemage's staff is fully charged, he has a _40% chance_ to gain 2 shielding per level of the staff when he strikes with it.\n\n_+3:_ When the Battlemage's staff is fully charged, he has a _60% chance_ to gain 2 shielding per level of the staff when he strikes with it.
actors.hero.talent.soul_siphon.title=soul siphon
actors.hero.talent.soul_siphon.desc=_+1:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _15% effectiveness_.\n\n_+2:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _30% effectiveness_.\n\n_+3:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _45% effectiveness_.
actors.hero.talent.soul_siphon.desc=_+1:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _13% effectiveness_.\n\n_+2:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _27% effectiveness_.\n\n_+3:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _40% effectiveness_.
actors.hero.talent.soul_eater.title=soul eater
actors.hero.talent.soul_eater.desc=_+1:_ Soul mark grants _0.33 turns_ of satiety for each physical damage dealt. Soul marked enemies have a _10% chance_ to trigger on-eat effects when they die.\n\n_+2:_ Soul mark grants _0.67 turns_ of satiety for each physical damage dealt. Soul marked enemies have a _20% chance_ to trigger on-eat effects when they die.\n\n_+3:_ Soul mark grants _1 turn_ of satiety for each physical damage dealt. Soul marked enemies have a _30% chance_ to trigger on-eat effects when they die.
actors.hero.talent.necromancers_minions.title=necromancer's minions
actors.hero.talent.necromancers_minions.desc=_+1:_ When a soul marked enemy dies, the Warlock has a _10% chance_ to raise them as a corrupted wraith.\n\n_+2:_ When a soul marked enemy dies, the Warlock has a _20% chance_ to raise them as a corrupted wraith.\n\n_+3:_ When a soul marked enemy dies, the Warlock has a _30% chance_ to raise them as a corrupted wraith.
actors.hero.talent.necromancers_minions.desc=_+1:_ When a soul marked enemy dies, the Warlock has a _13% chance_ to raise them as a corrupted wraith.\n\n_+2:_ When a soul marked enemy dies, the Warlock has a _27% chance_ to raise them as a corrupted wraith.\n\n_+3:_ When a soul marked enemy dies, the Warlock has a _40% chance_ to raise them as a corrupted wraith.
actors.hero.talent.molten_earth_1.title=TODO NAME
actors.hero.talent.molten_earth_1.desc=TODO DESC

View File

@@ -164,7 +164,7 @@ public abstract class Char extends Actor {
return true;
} else if (c instanceof Hero
&& alignment == Alignment.ALLY
&& Dungeon.level.distance(pos, c.pos) <= 3*Dungeon.hero.pointsInTalent(Talent.ALLY_WARP)){
&& Dungeon.level.distance(pos, c.pos) <= 2*Dungeon.hero.pointsInTalent(Talent.ALLY_WARP)){
return true;
} else {
return false;

View File

@@ -28,7 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.watabou.noosa.Image;
public class ScrollEmpower extends FlavourBuff {
public class ScrollEmpower extends Buff {
{
type = buffType.POSITIVE;
@@ -50,11 +50,6 @@ public class ScrollEmpower extends FlavourBuff {
icon.hardlight(1, 1, 0);
}
@Override
public float iconFadePercent() {
return Math.max(0, (20-visualcooldown()) / 20f);
}
@Override
public String toString() {
return Messages.get(this, "name");
@@ -62,7 +57,7 @@ public class ScrollEmpower extends FlavourBuff {
@Override
public String desc() {
return Messages.get(this, "desc", (int)visualcooldown(), Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS));
return Messages.get(this, "desc", Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS));
}
}

View File

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

View File

@@ -597,7 +597,7 @@ public abstract class Mob extends Char {
//physical damage that doesn't come from the hero is less effective
if (enemy != Dungeon.hero){
restoration = Math.round(restoration * 0.15f*Dungeon.hero.pointsInTalent(Talent.SOUL_SIPHON));
restoration = Math.round(restoration * 0.4f*Dungeon.hero.pointsInTalent(Talent.SOUL_SIPHON)/3f);
}
if (restoration > 0) {
Buff.affect(Dungeon.hero, Hunger.class).affectHunger(restoration*Dungeon.hero.pointsInTalent(Talent.SOUL_EATER)/3f);
@@ -692,7 +692,7 @@ public abstract class Mob extends Char {
if (!(this instanceof Wraith)
&& soulMarked
&& Random.Int(10) < Dungeon.hero.pointsInTalent(Talent.NECROMANCERS_MINIONS)){
&& Random.Float() < (0.4f*Dungeon.hero.pointsInTalent(Talent.NECROMANCERS_MINIONS)/3f)){
Wraith w = Wraith.spawnAt(pos);
if (w != null) {
Buff.affect(w, Corruption.class);

View File

@@ -187,7 +187,7 @@ public abstract class Scroll extends Item {
((HeroSprite)curUser.sprite).read();
if (curUser.hasTalent(Talent.EMPOWERING_SCROLLS)){
Buff.affect(curUser, ScrollEmpower.class, 20f);
Buff.affect(curUser, ScrollEmpower.class);
updateQuickslot();
}

View File

@@ -377,11 +377,11 @@ public abstract class Wand extends Item {
&& charger.target == Dungeon.hero
&& !Dungeon.hero.belongings.contains(this)) {
if (curCharges == 0 && Dungeon.hero.hasTalent(Talent.BACKUP_BARRIER)) {
//grants 4/6 shielding
Buff.affect(Dungeon.hero, Barrier.class).setShield(2 + 2 * Dungeon.hero.pointsInTalent(Talent.BACKUP_BARRIER));
//grants 3/5 shielding
Buff.affect(Dungeon.hero, Barrier.class).setShield(1 + 2 * Dungeon.hero.pointsInTalent(Talent.BACKUP_BARRIER));
}
if (Dungeon.hero.hasTalent(Talent.EMPOWERED_STRIKE)){
Buff.prolong(Dungeon.hero, Talent.EmpoweredStrikeTracker.class, 5f);
Buff.prolong(Dungeon.hero, Talent.EmpoweredStrikeTracker.class, 10f);
}
}

View File

@@ -150,7 +150,7 @@ public class MagesStaff extends MeleeWeapon {
public int proc(Char attacker, Char defender, int damage) {
if (attacker.buff(Talent.EmpoweredStrikeTracker.class) != null){
attacker.buff(Talent.EmpoweredStrikeTracker.class).detach();
damage = Math.round( damage * (1f + Dungeon.hero.pointsInTalent(Talent.EMPOWERED_STRIKE)/5f));
damage = Math.round( damage * (1f + Dungeon.hero.pointsInTalent(Talent.EMPOWERED_STRIKE)/4f));
}
if (wand.curCharges >= wand.maxCharges && attacker instanceof Hero && Random.Int(5) < ((Hero) attacker).pointsInTalent(Talent.EXCESS_CHARGE)){