diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index b9f4699ea..d618f8bc7 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -623,7 +623,7 @@ actors.hero.talent.runic_transference.title=runic transference actors.hero.talent.runic_transference.desc=_+1:_ The Warrior's broken seal can transfer _regular glyphs_ in the same way it transfers an upgrade.\n\n_+2:_ The Warrior's broken seal can transfer _regular, powerful, and curse glyphs_ in the same way it transfers an upgrade. actors.hero.talent.runic_transference.meta_desc=_If this talent is gained by a different hero_ it will instead increase the level that armor glyphs are guaranteed to be preserved at when upgrading armor up to level 6 from 4 at +1, or level 7 from 4 at +2. actors.hero.talent.lethal_momentum.title=lethal momentum -actors.hero.talent.lethal_momentum.desc=_+1:_ When the Warrior lands a killing blow with a physical weapon, it has a _67% chance_ to take 0 turns.\n\n_+2:_ When the Warrior lands a killing blow with a physical weapon, it has a _100% chance_ to take 0 turns. +actors.hero.talent.lethal_momentum.desc=_+1:_ When the Warrior lands a killing blow on an enemy with a physical weapon, it has a _67% chance_ to take 0 turns.\n\n_+2:_ When the Warrior lands a killing blow on an enemy with a physical weapon, it has a _100% chance_ to take 0 turns. actors.hero.talent.improvised_projectiles.title=improvised projectiles actors.hero.talent.improvised_projectiles.desc=_+1:_ The Warrior can blind an enemy for _2 turns_ by throwing any item that isn’t a thrown weapon at them. This has a 50 turn cooldown.\n\n_+2:_ The Warrior can blind an enemy for _3 turns_ by throwing any item that isn’t a thrown weapon at them. This has a 50 turn cooldown. @@ -877,7 +877,7 @@ actors.hero.talent.weapon_recharging.title=weapon recharging actors.hero.talent.weapon_recharging.desc=_+1:_ The Duelist gains one primary weapon charge every _10 turns_ when under the effect of wand or artifact recharging buffs.\n\n_+2:_ The Duelist gains one primary weapon charge every _6 turns_ when under the effect of wand or artifact recharging buffs. actors.hero.talent.weapon_recharging.meta_desc=_If this talent is gained by a different hero_ it will instead cause them to deal +5% melee damage while recharging at +1, or +7.5% melee damage while recharging at +2. actors.hero.talent.lethal_haste.title=lethal haste -actors.hero.talent.lethal_haste.desc=_+1:_ When the Duelist lands a killing blow with a weapon ability, she gains _2 turns_ of haste.\n\n_+2:_ When the Duelist lands a killing blow with a weapon ability, she gains _3 turns_ of haste. +actors.hero.talent.lethal_haste.desc=_+1:_ When the Duelist lands a killing blow on an enemy with a weapon ability, she gains _2 turns_ of haste.\n\n_+2:_ When the Duelist lands a killing blow on an enemy with a weapon ability, she gains _3 turns_ of haste. actors.hero.talent.lethal_haste.meta_desc=_If this talent is gained by a different hero_ it will instead trigger with regular weapon attacks, with a 100 turn cooldown. actors.hero.talent.swift_equip.title=swift equip actors.hero.talent.swift_equip.desc=_+1:_ The Duelist can switch her equipped weapon instantly _one time_, with a 20 turn cooldown.\n\n_+2:_ The Duelist can switch her equipped weapon instantly _twice within 5 turns_, with a 20 turn cooldown.\n\nIf the Duelist has this talent and it is not on cooldown, quick-using an unequipped weapon will equip it. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bleeding.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bleeding.java index 751224e1e..f30b5ed21 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bleeding.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bleeding.java @@ -116,7 +116,7 @@ public class Bleeding extends Buff { } if (source == Sickle.HarvestBleedTracker.class && !target.isAlive()){ - MeleeWeapon.onAbilityKill(Dungeon.hero); + MeleeWeapon.onAbilityKill(Dungeon.hero, target); } spend( TICK ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java index be3570702..c331ac610 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java @@ -214,7 +214,7 @@ public class Pickaxe extends MeleeWeapon { if (enemy.isAlive()) { Buff.affect(enemy, Vulnerable.class, 3f); } else { - onAbilityKill(hero); + onAbilityKill(hero, enemy); } Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java index f4c2f72c7..28b31e599 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java @@ -74,7 +74,7 @@ public class Flail extends MeleeWeapon { @Override protected boolean act() { if (owner instanceof Hero && !target.isAlive()){ - onAbilityKill((Hero)owner); + onAbilityKill((Hero)owner, target); } Actor.remove(this); return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java index eb9026af2..77bf7ee2d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java @@ -93,7 +93,7 @@ public class Greataxe extends MeleeWeapon { if (hero.attack(enemy, 1.35f, 0, Char.INFINITE_ACCURACY)){ Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); if (!enemy.isAlive()){ - onAbilityKill(hero); + onAbilityKill(hero, enemy); } } Invisibility.dispel(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java index 8c4e90681..a47a75140 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java @@ -94,7 +94,7 @@ public class Mace extends MeleeWeapon { Buff.affect(enemy, Vulnerable.class, 5f); Buff.affect(enemy, Weakness.class, 5f); } else { - wep.onAbilityKill(hero); + wep.onAbilityKill(hero, enemy); } } Invisibility.dispel(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java index ba18faf07..52cb346d1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java @@ -253,8 +253,8 @@ public class MeleeWeapon extends Weapon { } } - public static void onAbilityKill( Hero hero ){ - if (hero.hasTalent(Talent.LETHAL_HASTE)){ + public static void onAbilityKill( Hero hero, Char killed ){ + if (killed.alignment == Char.Alignment.ENEMY && hero.hasTalent(Talent.LETHAL_HASTE)){ //effectively 2/3 turns of haste Buff.prolong(hero, Haste.class, 1.67f+hero.pointsInTalent(Talent.LETHAL_HASTE)); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java index c30c4e4b9..4c8063d75 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java @@ -130,7 +130,7 @@ public class Rapier extends MeleeWeapon { if (hero.attack(enemy, dmgMulti, dmgBoost, Char.INFINITE_ACCURACY)) { Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); if (!enemy.isAlive()) { - wep.onAbilityKill(hero); + wep.onAbilityKill(hero, enemy); } } Invisibility.dispel(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java index 17be01cec..d11af94fb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java @@ -91,7 +91,7 @@ public class RunicBlade extends MeleeWeapon { if (hero.attack(enemy, 1f, 0, Char.INFINITE_ACCURACY)){ Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); if (!enemy.isAlive()){ - onAbilityKill(hero); + onAbilityKill(hero, enemy); } } tracker.detach(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java index 19003cfef..df2d51dab 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java @@ -98,7 +98,7 @@ public class Sai extends MeleeWeapon { boolean hit = hero.attack(enemy, 1f + boostPerHit*recentHits, 0, Char.INFINITE_ACCURACY); if (hit && !enemy.isAlive()){ - wep.onAbilityKill(hero); + wep.onAbilityKill(hero, enemy); } Invisibility.dispel(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java index 7e99762d6..4ebd430f0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java @@ -97,7 +97,7 @@ public class Sickle extends MeleeWeapon { Invisibility.dispel(); hero.spendAndNext(hero.attackDelay()); if (!enemy.isAlive()){ - wep.onAbilityKill(hero); + wep.onAbilityKill(hero, enemy); Buff.prolong(hero, Sword.CleaveTracker.class, 5f); } else { if (hero.buff(Sword.CleaveTracker.class) != null) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java index a995e2fe9..a9fa81102 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java @@ -97,7 +97,7 @@ public class Spear extends MeleeWeapon { //knock them back along that ballistica WandOfBlastWave.throwChar(enemy, trajectory, 1, true, false, hero.getClass()); } else { - wep.onAbilityKill(hero); + wep.onAbilityKill(hero, enemy); } Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java index f35f9428f..987f01cc9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java @@ -97,7 +97,7 @@ public class Sword extends MeleeWeapon { Invisibility.dispel(); hero.spendAndNext(hero.attackDelay()); if (!enemy.isAlive()){ - wep.onAbilityKill(hero); + wep.onAbilityKill(hero, enemy); Buff.prolong(hero, CleaveTracker.class, 5f); } else { if (hero.buff(CleaveTracker.class) != null) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java index 794a9387a..3337cc970 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java @@ -81,7 +81,7 @@ public class Whip extends MeleeWeapon { for (Char ch : targets) { hero.attack(ch); if (!ch.isAlive()){ - onAbilityKill(hero); + onAbilityKill(hero, ch); } } Invisibility.dispel(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java index 8c15cb580..bfe112f4a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java @@ -176,7 +176,7 @@ public class Dart extends MissileWeapon { @Override protected boolean act() { if (!ch.isAlive()){ - bow.onAbilityKill(Dungeon.hero); + bow.onAbilityKill(Dungeon.hero, ch); } Actor.remove(this); return true;