v2.4.2: balance changes:

- buffed provoked anger to 2|3 damage from 1-2|2 dmg
- accelerated Duelist max charge gain. caps at lvl 19 from 25
- spin ability dmg boost up to 8+lvl from 6+lvl
- runic slash ability base enchant boost up to 300% from 200%
- harvest ability bleed up by ~30%, now damages bleed-immune enemies
This commit is contained in:
Evan Debenham
2024-06-02 13:38:11 -04:00
parent 70e0f5d7f8
commit 753b340f06
9 changed files with 33 additions and 35 deletions

View File

@@ -636,7 +636,7 @@ actors.hero.talent.hearty_meal.desc=_+1:_ Eating food heals the Warrior for _3 H
actors.hero.talent.veterans_intuition.title=veteran's intuition
actors.hero.talent.veterans_intuition.desc=_+1:_ The Warrior identifies weapons _1.75x faster_ and armor _2.5x faster_.\n\n_+2:_ The Warrior identifies weapons _2.5x faster_ and armor _when he equips it_.
actors.hero.talent.provoked_anger.title=provoked anger
actors.hero.talent.provoked_anger.desc=_+1:_ When the Warrior's shielding breaks, his next physical attack will deal _1-2 bonus damage_.\n\n_+2:_ When the Warrior's shielding breaks, his next physical attack will deal _2 bonus damage_.
actors.hero.talent.provoked_anger.desc=_+1:_ When the Warrior's shielding breaks, his next physical attack will deal _2 bonus damage_.\n\n_+2:_ When the Warrior's shielding breaks, his next physical attack will deal _3 bonus damage_.
actors.hero.talent.iron_will.title=iron will
actors.hero.talent.iron_will.desc=_+1:_ The max shield provided by the Warrior's seal is _increased by 1_.\n\n_+2:_ The max shield provided by the Warrior's seal is _increased by 2_.
actors.hero.talent.iron_will.meta_desc=_If this talent is gained by a different hero_ it will grant its shielding benefit without the broken seal.

View File

@@ -1809,8 +1809,8 @@ items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum
items.weapon.melee.sickle.name=sickle
items.weapon.melee.sickle.stats_desc=This is a rather inaccurate weapon.
items.weapon.melee.sickle.ability_name=harvest
items.weapon.melee.sickle.typical_ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and typically deals _%d damage,_ but applies the damage as bleeding instead.
items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and deals _%d damage,_ but applies the damage as bleeding instead.
items.weapon.melee.sickle.typical_ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and typically deals _%d damage._ This damage is applied as bleeding if the target isn't immune.
items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and deals _%d damage._ This damage is applied as bleeding if the target isn't immune.
items.weapon.melee.sickle.desc=A handheld farming tool that can double as a strong but unwieldy weapon.
items.weapon.melee.spear.name=spear
@@ -1838,8 +1838,8 @@ items.weapon.melee.warhammer.desc=Few creatures can withstand the crushing blow
items.weapon.melee.warscythe.name=war scythe
items.weapon.melee.warscythe.stats_desc=This is a rather inaccurate weapon.
items.weapon.melee.warscythe.ability_name=harvest
items.weapon.melee.warscythe.typical_ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and typically deals _%d damage,_ but applies the damage as bleeding instead.
items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and deals _%d damage,_ but applies the damage as bleeding instead.
items.weapon.melee.warscythe.typical_ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and typically deals _%d damage._ This damage is applied as bleeding if the target isn't immune.
items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and deals _%d damage._ This damage is applied as bleeding if the target isn't immune.
items.weapon.melee.warscythe.desc=This large and unwieldy tool has been reinforced to make it better at cutting foes than crops.
items.weapon.melee.whip.name=whip

View File

@@ -736,22 +736,19 @@ public abstract class Char extends Actor {
}
if (buff(Sickle.HarvestBleedTracker.class) != null){
if (isImmune(Bleeding.class)){
sprite.showStatus(CharSprite.POSITIVE, Messages.titleCase(Messages.get(this, "immune")));
buff(Sickle.HarvestBleedTracker.class).detach();
buff(Sickle.HarvestBleedTracker.class).detach();
if (!isImmune(Bleeding.class)){
Bleeding b = buff(Bleeding.class);
if (b == null){
b = new Bleeding();
}
b.announced = false;
b.set(dmg, Sickle.HarvestBleedTracker.class);
b.attachTo(this);
sprite.showStatus(CharSprite.WARNING, Messages.titleCase(b.name()) + " " + (int)b.level());
return;
}
Bleeding b = buff(Bleeding.class);
if (b == null){
b = new Bleeding();
}
b.announced = false;
b.set(dmg, Sickle.HarvestBleedTracker.class);
b.attachTo(this);
sprite.showStatus(CharSprite.WARNING, Messages.titleCase(b.name()) + " " + (int)b.level());
buff(Sickle.HarvestBleedTracker.class).detach();
return;
}
for (ChampionEnemy buff : buffs(ChampionEnemy.class)){

View File

@@ -684,7 +684,7 @@ public enum Talent {
if (hero.hasTalent(Talent.PROVOKED_ANGER)
&& hero.buff(ProvokedAngerTracker.class) != null){
dmg += Random.IntRange(hero.pointsInTalent(Talent.PROVOKED_ANGER) , 2);
dmg += 1 + hero.pointsInTalent(Talent.PROVOKED_ANGER);
hero.buff(ProvokedAngerTracker.class).detach();
}

View File

@@ -81,9 +81,9 @@ public class Flail extends MeleeWeapon {
});
//we detach and calculate bonus here in case the attack misses (e.g. vs. monks)
spin.detach();
//+(6+2*lvl) damage per spin, roughly +30% base damage, +45% scaling
// so +90% base dmg, +135% scaling at 3 spins
spinBoost = spin.spins * augment.damageFactor(6 + 2*buffedLvl());
//+(8+2*lvl) damage per spin, roughly +40% base damage, +45% scaling
// so +120% base dmg, +135% scaling at 3 spins
spinBoost = spin.spins * augment.damageFactor(8 + 2*buffedLvl());
return Float.POSITIVE_INFINITY;
} else {
spinBoost = 0;
@@ -126,7 +126,7 @@ public class Flail extends MeleeWeapon {
@Override
public String abilityInfo() {
int dmgBoost = levelKnown ? 6 + 2*buffedLvl() : 6;
int dmgBoost = levelKnown ? 8 + 2*buffedLvl() : 8;
if (levelKnown){
return Messages.get(this, "ability_desc", augment.damageFactor(dmgBoost));
} else {

View File

@@ -512,10 +512,11 @@ public class MeleeWeapon extends Weapon {
}
public int chargeCap(){
//caps at level 19 with 8 or 10 charges
if (Dungeon.hero.subClass == HeroSubClass.CHAMPION){
return Math.min(10, 4 + (Dungeon.hero.lvl - 1) / 4);
return Math.min(10, 4 + (Dungeon.hero.lvl - 1) / 3);
} else {
return Math.min(8, 2 + (Dungeon.hero.lvl - 1) / 4);
return Math.min(8, 2 + (Dungeon.hero.lvl - 1) / 3);
}
}

View File

@@ -74,7 +74,7 @@ public class RunicBlade extends MeleeWeapon {
//we apply here because of projecting
RunicSlashTracker tracker = Buff.affect(hero, RunicSlashTracker.class);
tracker.boost = 2f + 0.50f*buffedLvl();
tracker.boost = 3f + 0.50f*buffedLvl();
hero.belongings.abilityWeapon = this;
if (!hero.canAttack(enemy)){
GLog.w(Messages.get(this, "ability_target_range"));
@@ -106,9 +106,9 @@ public class RunicBlade extends MeleeWeapon {
@Override
public String abilityInfo() {
if (levelKnown){
return Messages.get(this, "ability_desc", 200+50*buffedLvl());
return Messages.get(this, "ability_desc", 300+50*buffedLvl());
} else {
return Messages.get(this, "typical_ability_desc", 200);
return Messages.get(this, "typical_ability_desc", 300);
}
}

View File

@@ -60,14 +60,14 @@ public class Sickle extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
//replaces damage with 12+2*lvl bleed, roughly 110% avg dmg at base, 100% avg scaling
int bleedAmt = augment.damageFactor(12 + 2*buffedLvl());
//replaces damage with 15+2.5*lvl bleed, roughly 138% avg base dmg, 125% avg scaling
int bleedAmt = augment.damageFactor(Math.round(15f + 2.5f*buffedLvl()));
Sickle.harvestAbility(hero, target, 0f, bleedAmt, this);
}
@Override
public String abilityInfo() {
int bleedAmt = levelKnown ? 12 + 2*buffedLvl() : 12;
int bleedAmt = levelKnown ? Math.round(15f + 2.5f*buffedLvl()) : 15;
if (levelKnown){
return Messages.get(this, "ability_desc", augment.damageFactor(bleedAmt));
} else {

View File

@@ -50,14 +50,14 @@ public class WarScythe extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
//replaces damage with 22.5+3.5*lvl bleed, exactly 100% avg damage.
int bleedAmt = augment.damageFactor(Math.round(22.5f + 3.5f*buffedLvl()));
//replaces damage with 30+4.5*lvl bleed, roughly 133% avg base dmg, 129% avg scaling
int bleedAmt = augment.damageFactor(Math.round(30f + 4.5f*buffedLvl()));
Sickle.harvestAbility(hero, target, 0f, bleedAmt, this);
}
@Override
public String abilityInfo() {
int bleedAmt = levelKnown ? Math.round(22.5f + 3.5f*buffedLvl()) : 23;
int bleedAmt = levelKnown ? Math.round(30f + 4.5f*buffedLvl()) : 30;
if (levelKnown){
return Messages.get(this, "ability_desc", augment.damageFactor(bleedAmt));
} else {