From 08da3811f0be83c4218c50f2c024980c7d4a860d Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 15 May 2023 15:30:00 -0400 Subject: [PATCH] v2.1.0: reworked the Heavy Blow weapon ability --- core/src/main/assets/interfaces/buffs.png | Bin 1639 -> 1669 bytes .../main/assets/interfaces/large_buffs.png | Bin 3607 -> 3681 bytes .../assets/messages/actors/actors.properties | 8 +++- .../assets/messages/items/items.properties | 8 ++-- .../shatteredpixeldungeon/actors/Char.java | 3 ++ .../actors/buffs/Daze.java | 45 ++++++++++++++++++ .../items/quest/Pickaxe.java | 2 +- .../items/wands/WandOfCorruption.java | 2 + .../items/weapon/melee/AssassinsBlade.java | 5 +- .../items/weapon/melee/BattleAxe.java | 13 ++++- .../items/weapon/melee/Crossbow.java | 5 +- .../items/weapon/melee/Dagger.java | 11 ++--- .../items/weapon/melee/Dirk.java | 5 +- .../items/weapon/melee/Flail.java | 6 +-- .../items/weapon/melee/Greataxe.java | 2 +- .../items/weapon/melee/Greatsword.java | 6 +-- .../items/weapon/melee/HandAxe.java | 12 ++++- .../items/weapon/melee/Longsword.java | 6 +-- .../items/weapon/melee/Mace.java | 36 ++++++++++++-- .../items/weapon/melee/MeleeWeapon.java | 12 ++--- .../items/weapon/melee/Quarterstaff.java | 6 +-- .../items/weapon/melee/Rapier.java | 4 +- .../items/weapon/melee/RoundShield.java | 2 +- .../items/weapon/melee/RunicBlade.java | 2 +- .../items/weapon/melee/Sai.java | 5 +- .../items/weapon/melee/Scimitar.java | 7 +-- .../items/weapon/melee/Shortsword.java | 6 +-- .../items/weapon/melee/Sickle.java | 2 +- .../items/weapon/melee/Spear.java | 2 +- .../items/weapon/melee/Sword.java | 6 +-- .../items/weapon/melee/WarHammer.java | 13 ++++- .../items/weapon/melee/Whip.java | 3 +- .../items/weapon/melee/WornShortsword.java | 6 +-- .../ui/BuffIndicator.java | 1 + 34 files changed, 176 insertions(+), 76 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Daze.java diff --git a/core/src/main/assets/interfaces/buffs.png b/core/src/main/assets/interfaces/buffs.png index 3c9b045025bf4c1001688b1a7c35be4906ca7f6d..fab8b983d94d13a70d6192c4199d8d4fa046d1c1 100644 GIT binary patch delta 1326 zcmV+}1=0HF422D_X#sx)21!IgRCobokcEL|ArJ&{zRPp>{A0Wx`qm5g8q|L@F~(RF zM?4865=Tzt`~jxU=L@-#8@Url9^^@0FQwjDmc2#b=^O-dlLU&QfIx|xOCPGbsjCoM zG;MTGOg@u9*Fm7~2YJ6hg1|VAA}~!;5|}>(77_PIejv9H zU{L<-JxZwYavfr7qQhe-3?KPC^s*P}ufROdN#Ix@u%?9fC4UKIDrM~`VDlUXyiPPc zN@#=-QzHWZcqz-cCD(hp&H=4xU zpL*U%{sRPL{)5xE#dCl*gGN> zyP_p>e*?Z}E((E}I+;QEJ_QcQ>e}Ja+R-5dvMhtZy)3&2frGF%uMr9y2Z59A69}B* z{+vdEGeUuL3S3-XUS52&=ZrT20a!>NOi@|jh^(z=ZEI)i8`%aQ)m1JCgoXTL82HKF z-rkAte6@cAgPl&7bauhn?nL0?ve)ZfUN~YY(C_ogKmcpHfqimC0J0F+xX%V85F0=~ z47RuTu(or7ZkqDJd~D>O!vOgX1KV?S5Cxo2fX^R$(f|!O1I&*N@cC1Ka0aenOQ2`~ z6Tk-2PRa(DFM-&Ap1&6Yd{BTD%tQegXb6!XXMlf0kYNa!4*?dSBe*gH9iBj(fpapM z0c3|U2q2yO-CIC`e|!rNAEL#TYq&04BuUc5c45NBvM}+3s0kM}(Go6-pai=nf&kw5 z@bzrHjqQtgAzFmMg9KbR!hd~A;2~ZRA5!300vu?*+~W<$ANc?~y!%OD7zE6L{zJYc z5Ey@rN2A9g^Tnv;un9P8F53T0;xD4Bny8D z4BtTD?c28y7!nA)vv&~CYmdelS$#A72_qE1$x6V|J~4ev%qZ|4@!JqE^C+;u(`kGz z@MhR93m_dE`PJ%&svFjxr-lqG1mM&U0)1>n(=mK@ouAFXU>gmDv!4hwP(WE=s3SoB zL?9nK0E|dPgN&^)5&BaV$p-L7IzDI$5vbBA1xP5p4fjrM4a3|02Kwv+t#w|jDqabkHI)=ar z?$1dSI3*M~qrmya#l`s#yUutM5P*dQ!W3N>I3(M(yldUOR?q8v%3E9z2n+c~F!1Bu z-Q8nvf7gG8LA%!{y&Z76QwW@23QI01Y?;%#RK5{ZoK&25wOKzwqN8UpW52N7&)pPXgm0U=H*H@-2nH zWIBJDJPZOx9LL?oaj%uCKU7O=DGX2n#0-MWHZ1L;@C8t&4&0)=JeXpLF%!Js1=XI1R#v!^S^k!;XmQI!A%g z=-FuGm%lpdbdcY1)7@i@p@A+Nc>esw^P+!&WUc`SfYd3j`im(@{CWef89-(wHlQ!y zqoYTf0SLq+Kz=tg@Z`x;2_y!E>ocGR^k=H>rWsHJI`udM(m_KKKmp2E19_N%$z&=4 zPq5~0!Rjhzz(q*^hFfq1f`BkS^S7WYUWx_bs;ewqWFO%o`veQ(PmzgVKSl!MR}g=A z{rWWo#smUy>%qZ{{@hu3L`6mTljl0(ckdBS~ za`|1^4QtmkLx#-+;4};ZLu^IUG5jjwuNGj?LIdIKKP52M5g@-1(Ab&sAz-_^$T9@Z z1azd#RIX)`kq!-z{vHk}-~$CLta*O{Q8Yk8Q>!1z)Ci$jR~I0IYEFQaPSqj1(SOmpo;uwe=1gV+Gh;L|hkfBSSS0002M zFic_ow8Q9=669%n!Qub_000000043T0000000000zyZLhqW`XwgdhL_000O{MNUMn GLSTZ}6hlt{ diff --git a/core/src/main/assets/interfaces/large_buffs.png b/core/src/main/assets/interfaces/large_buffs.png index f84f75b1d5af39e59180d7f597dc0c9d62e667a2..87385dd1e786794a0875893230129797a902c19d 100644 GIT binary patch delta 3385 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 Y+&LbV>HqIltN-?1?!Io-F8uWW0ErvsTL1t6 delta 3310 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 + */ + +package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; + +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; + +public class Daze extends FlavourBuff { + + public static final float DURATION = 5f; + + { + type = buffType.NEGATIVE; + announced = true; + } + + @Override + public int icon() { + return BuffIndicator.DAZE; + } + + @Override + public float iconFadePercent() { + return Math.max(0, (DURATION - visualcooldown()) / DURATION); + } + +} 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 c331ac610..e79c39074 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 @@ -208,7 +208,7 @@ public class Pickaxe extends MeleeWeapon { || enemy instanceof Scorpio) { damageMulti = 2f; } - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); if (hero.attack(enemy, damageMulti, 0, Char.INFINITE_ACCURACY)) { if (enemy.isAlive()) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index 562ab4419..7faae4889 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Daze; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy; @@ -112,6 +113,7 @@ public class WandOfCorruption extends Wand { MAJOR_DEBUFFS.put(Hex.class, 2f); MAJOR_DEBUFFS.put(Paralysis.class, 1f); + MAJOR_DEBUFFS.put(Daze.class, 0f); MAJOR_DEBUFFS.put(Dread.class, 0f); MAJOR_DEBUFFS.put(Charm.class, 0f); MAJOR_DEBUFFS.put(MagicalSleep.class, 0f); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java index 2ec23a6bc..8a463a858 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; -import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -67,8 +66,8 @@ public class AssassinsBlade extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { - return 2*super.abilityChargeUse(hero); + public float abilityChargeUse(Hero hero, Char target) { + return 2*super.abilityChargeUse(hero, target); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java index 6f7854cdf..521cfe76c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java @@ -22,7 +22,9 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -48,9 +50,18 @@ public class BattleAxe extends MeleeWeapon { return Messages.get(this, "prompt"); } + @Override + public float abilityChargeUse(Hero hero, Char target) { + if (target == null || (target instanceof Mob && ((Mob) target).surprisedBy(hero))) { + return super.abilityChargeUse(hero, target); + } else { + return 2*super.abilityChargeUse(hero, target); + } + } + @Override protected void duelistAbility(Hero hero, Integer target) { - Mace.heavyBlowAbility(hero, target, 1.55f, this); + Mace.heavyBlowAbility(hero, target, 1.35f, this); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java index 6a6d6d7e3..7b4dc6729 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java @@ -22,11 +22,8 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; -import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfForce; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; @@ -72,7 +69,7 @@ public class Crossbow extends MeleeWeapon { return; } - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, null); Buff.affect(hero, ChargedShot.class); hero.sprite.operate(hero.pos); hero.next(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java index 60ada187d..c247bda4f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java @@ -31,13 +31,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; -import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; -import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; -import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; -import com.watabou.utils.PathFinder; import com.watabou.utils.Random; public class Dagger extends MeleeWeapon { @@ -80,8 +75,8 @@ public class Dagger extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { - return 2*super.abilityChargeUse(hero); + public float abilityChargeUse(Hero hero, Char target) { + return 2*super.abilityChargeUse(hero, target); } @Override @@ -90,7 +85,7 @@ public class Dagger extends MeleeWeapon { } public static void sneakAbility(Hero hero, int invisTurns, MeleeWeapon wep){ - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, null); Buff.affect(hero, Invisibility.class, invisTurns); hero.spendAndNext(Actor.TICK); CellEmitter.get( Dungeon.hero.pos ).burst( Speck.factory( Speck.WOOL ), 6 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java index c3cfbea95..dee1e4210 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; -import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -67,8 +66,8 @@ public class Dirk extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { - return 2*super.abilityChargeUse(hero); + public float abilityChargeUse(Hero hero, Char target) { + return 2*super.abilityChargeUse(hero, target); } @Override 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 c4101a35f..ac4efae03 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 @@ -89,11 +89,11 @@ public class Flail extends MeleeWeapon { } } - public float abilityChargeUse( Hero hero ) { + public float abilityChargeUse(Hero hero, Char target) { if (Dungeon.hero.buff(SpinAbilityTracker.class) != null){ return 0; } else { - return 2*super.abilityChargeUse(hero); + return 2*super.abilityChargeUse(hero, target); } } @@ -106,7 +106,7 @@ public class Flail extends MeleeWeapon { return; } - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, null); if (spin == null){ spin = Buff.affect(hero, SpinAbilityTracker.class, 3f); } 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 869a0359d..9b29268da 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 @@ -88,7 +88,7 @@ public class Greataxe extends MeleeWeapon { hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); if (hero.attack(enemy, 1.50f, 0, Char.INFINITE_ACCURACY)){ Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java index 0c3d9217a..1ab5c566e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java @@ -22,7 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -38,11 +38,11 @@ public class Greatsword extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { + public float abilityChargeUse(Hero hero, Char target) { if (hero.buff(Sword.CleaveTracker.class) != null){ return 0; } else { - return super.abilityChargeUse( hero ); + return super.abilityChargeUse( hero, target); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java index edb74d1d8..600cb157c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -56,9 +57,18 @@ public class HandAxe extends MeleeWeapon { return Messages.get(this, "prompt"); } + @Override + public float abilityChargeUse(Hero hero, Char target) { + if (target == null || (target instanceof Mob && ((Mob) target).surprisedBy(hero))) { + return super.abilityChargeUse(hero, target); + } else { + return 2*super.abilityChargeUse(hero, target); + } + } + @Override protected void duelistAbility(Hero hero, Integer target) { - Mace.heavyBlowAbility(hero, target, 1.65f, this); + Mace.heavyBlowAbility(hero, target, 0.45f, this); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java index e01adb136..7d884917d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java @@ -22,7 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -38,11 +38,11 @@ public class Longsword extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { + public float abilityChargeUse(Hero hero, Char target) { if (hero.buff(Sword.CleaveTracker.class) != null){ return 0; } else { - return super.abilityChargeUse( hero ); + return super.abilityChargeUse( hero, target); } } 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 a47a75140..222165429 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 @@ -26,10 +26,12 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Daze; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator; @@ -59,9 +61,18 @@ public class Mace extends MeleeWeapon { return Messages.get(this, "prompt"); } + @Override + public float abilityChargeUse(Hero hero, Char target) { + if (target == null || (target instanceof Mob && ((Mob) target).surprisedBy(hero))) { + return super.abilityChargeUse(hero, target); + } else { + return 2*super.abilityChargeUse(hero, target); + } + } + @Override protected void duelistAbility(Hero hero, Integer target) { - Mace.heavyBlowAbility(hero, target, 1.60f, this); + Mace.heavyBlowAbility(hero, target, 1.40f, this); } public static void heavyBlowAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){ @@ -83,16 +94,31 @@ public class Mace extends MeleeWeapon { } hero.belongings.abilityWeapon = null; + //need to separately check charges here, as non-surprise attacks cost 2 + if (enemy instanceof Mob && !((Mob) enemy).surprisedBy(hero)){ + Charger charger = Buff.affect(hero, Charger.class); + if (Dungeon.hero.belongings.weapon == wep) { + if (charger.charges + charger.partialCharge < wep.abilityChargeUse(hero, enemy)){ + GLog.w(Messages.get(wep, "ability_no_charge")); + return; + } + } else { + if (charger.secondCharges + charger.secondPartialCharge < wep.abilityChargeUse(hero, enemy)){ + GLog.w(Messages.get(wep, "ability_no_charge")); + return; + } + } + } + hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); - if (hero.attack(enemy, dmgMulti, 0, 0.25f)) { + if (hero.attack(enemy, dmgMulti, 0, Char.INFINITE_ACCURACY)) { Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); if (enemy.isAlive()){ - Buff.affect(enemy, Vulnerable.class, 5f); - Buff.affect(enemy, Weakness.class, 5f); + Buff.affect(enemy, Daze.class, Daze.DURATION); } else { wep.onAbilityKill(hero, enemy); } 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 507523d13..88e2ba1d7 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 @@ -116,11 +116,11 @@ public class MeleeWeapon extends Weapon { GLog.w(Messages.get(this, "ability_low_str")); usesTargeting = false; } else if (hero.belongings.weapon == this && - (Buff.affect(hero, Charger.class).charges + Buff.affect(hero, Charger.class).partialCharge) < abilityChargeUse(hero)) { + (Buff.affect(hero, Charger.class).charges + Buff.affect(hero, Charger.class).partialCharge) < abilityChargeUse(hero, null)) { GLog.w(Messages.get(this, "ability_no_charge")); usesTargeting = false; } else if (hero.belongings.secondWep == this && - (Buff.affect(hero, Charger.class).secondCharges + Buff.affect(hero, Charger.class).secondPartialCharge) < abilityChargeUse(hero)) { + (Buff.affect(hero, Charger.class).secondCharges + Buff.affect(hero, Charger.class).secondPartialCharge) < abilityChargeUse(hero, null)) { GLog.w(Messages.get(this, "ability_no_charge")); usesTargeting = false; } else { @@ -194,18 +194,18 @@ public class MeleeWeapon extends Weapon { //do nothing by default } - protected void beforeAbilityUsed(Hero hero ){ + protected void beforeAbilityUsed(Hero hero, Char target){ hero.belongings.abilityWeapon = this; Charger charger = Buff.affect(hero, Charger.class); if (Dungeon.hero.belongings.weapon == this) { - charger.partialCharge -= abilityChargeUse(hero); + charger.partialCharge -= abilityChargeUse(hero, target); while (charger.partialCharge < 0 && charger.charges > 0) { charger.charges--; charger.partialCharge++; } } else { - charger.secondPartialCharge -= abilityChargeUse(hero); + charger.secondPartialCharge -= abilityChargeUse(hero, target); while (charger.secondPartialCharge < 0 && charger.secondCharges > 0) { charger.secondCharges--; charger.secondPartialCharge++; @@ -266,7 +266,7 @@ public class MeleeWeapon extends Weapon { } } - public float abilityChargeUse( Hero hero ){ + public float abilityChargeUse(Hero hero, Char target){ float chargeUse = 1f; if (hero.buff(Talent.CounterAbilityTacker.class) != null){ chargeUse = Math.max(0, chargeUse-0.5f*hero.pointsInTalent(Talent.COUNTER_ABILITY)); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java index da83834b0..f07b7948a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java @@ -51,13 +51,13 @@ public class Quarterstaff extends MeleeWeapon { } @Override - public float abilityChargeUse(Hero hero) { - return 2*super.abilityChargeUse(hero); + public float abilityChargeUse(Hero hero, Char target) { + return 2*super.abilityChargeUse(hero, target); } @Override protected void duelistAbility(Hero hero, Integer target) { - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, null); Buff.prolong(hero, DefensiveStance.class, 4f); //4 turns as using the ability is instant hero.sprite.operate(hero.pos); hero.next(); 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 4c8063d75..5df87b7ff 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 @@ -125,7 +125,7 @@ public class Rapier extends MeleeWeapon { @Override public void call() { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); if (hero.attack(enemy, dmgMulti, dmgBoost, Char.INFINITE_ACCURACY)) { Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); @@ -139,7 +139,7 @@ public class Rapier extends MeleeWeapon { } }); } else { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, null); GLog.w(Messages.get(Rapier.class, "ability_no_target")); hero.spendAndNext(hero.speed()); wep.afterAbilityUsed(hero); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java index 4b1818806..2919c3bb4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java @@ -66,7 +66,7 @@ public class RoundShield extends MeleeWeapon { } public static void guardAbility(Hero hero, int duration, MeleeWeapon wep){ - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, null); Buff.prolong(hero, GuardTracker.class, duration); hero.sprite.operate(hero.pos); hero.spendAndNext(Actor.TICK); 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 d11af94fb..c2a97b8d2 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 @@ -86,7 +86,7 @@ public class RunicBlade extends MeleeWeapon { hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); if (hero.attack(enemy, 1f, 0, Char.INFINITE_ACCURACY)){ Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); 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 32a6c7330..c3bc3ac3e 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 @@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -38,8 +37,6 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; -import java.util.HashSet; - public class Sai extends MeleeWeapon { { @@ -89,7 +86,7 @@ public class Sai extends MeleeWeapon { hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); int recentHits = 0; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java index b8e4600eb..5eb100763 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; @@ -46,13 +47,13 @@ public class Scimitar extends MeleeWeapon { } @Override - public float abilityChargeUse(Hero hero) { - return 2*super.abilityChargeUse(hero); + public float abilityChargeUse(Hero hero, Char target) { + return 2*super.abilityChargeUse(hero, target); } @Override protected void duelistAbility(Hero hero, Integer target) { - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, null); Buff.prolong(hero, SwordDance.class, 4f); //4 turns as using the ability is instant hero.sprite.operate(hero.pos); hero.next(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java index b8df33f7e..acb6a9a72 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java @@ -22,7 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -38,11 +38,11 @@ public class Shortsword extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { + public float abilityChargeUse(Hero hero, Char target) { if (hero.buff(Sword.CleaveTracker.class) != null){ return 0; } else { - return super.abilityChargeUse( hero ); + return super.abilityChargeUse( hero, target); } } 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 4ebd430f0..fd8b7e87e 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 @@ -86,7 +86,7 @@ public class Sickle extends MeleeWeapon { hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); Buff.affect(enemy, HarvestBleedTracker.class, 0).bleedFactor = bleedFactor; 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 7c5b85eb4..d6fa77ffa 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 @@ -86,7 +86,7 @@ public class Spear extends MeleeWeapon { hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); if (hero.attack(enemy, dmgMulti, 0, Char.INFINITE_ACCURACY)) { if (enemy.isAlive()){ 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 987f01cc9..d53501193 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 @@ -48,11 +48,11 @@ public class Sword extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { + public float abilityChargeUse(Hero hero, Char target) { if (hero.buff(Sword.CleaveTracker.class) != null){ return 0; } else { - return super.abilityChargeUse( hero ); + return super.abilityChargeUse( hero, target); } } @@ -88,7 +88,7 @@ public class Sword extends MeleeWeapon { hero.sprite.attack(enemy.pos, new Callback() { @Override public void call() { - wep.beforeAbilityUsed(hero); + wep.beforeAbilityUsed(hero, enemy); AttackIndicator.target(enemy); if (hero.attack(enemy, dmgMulti, 0, Char.INFINITE_ACCURACY)){ Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java index 2d0d92d6b..84c6de7ed 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java @@ -22,7 +22,9 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -48,9 +50,18 @@ public class WarHammer extends MeleeWeapon { return Messages.get(this, "prompt"); } + @Override + public float abilityChargeUse(Hero hero, Char target) { + if (target == null || (target instanceof Mob && ((Mob) target).surprisedBy(hero))) { + return super.abilityChargeUse(hero, target); + } else { + return 2*super.abilityChargeUse(hero, target); + } + } + @Override protected void duelistAbility(Hero hero, Integer target) { - Mace.heavyBlowAbility(hero, target, 1.50f, this); + Mace.heavyBlowAbility(hero, target, 1.30f, this); } } 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 6aa89ffeb..ad98dbb6a 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 @@ -29,7 +29,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.utils.Callback; @@ -82,7 +81,7 @@ public class Whip extends MeleeWeapon { hero.sprite.attack(hero.pos, new Callback() { @Override public void call() { - beforeAbilityUsed(hero); + beforeAbilityUsed(hero, finalClosest); for (Char ch : targets) { hero.attack(ch, 0, 1, ch == finalClosest ? Char.INFINITE_ACCURACY : 1); if (!ch.isAlive()){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java index e149d9112..4fbbe3d17 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java @@ -22,7 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -40,11 +40,11 @@ public class WornShortsword extends MeleeWeapon { } @Override - public float abilityChargeUse( Hero hero ) { + public float abilityChargeUse(Hero hero, Char target) { if (hero.buff(Sword.CleaveTracker.class) != null){ return 0; } else { - return super.abilityChargeUse( hero ); + return super.abilityChargeUse( hero, target); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java index 3e2bb4664..a469de2af 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java @@ -121,6 +121,7 @@ public class BuffIndicator extends Component { public static final int CHALLENGE = 67; public static final int MONK_ENERGY = 68; public static final int DUEL_COMBO = 69; + public static final int DAZE = 70; public static final int SIZE_SMALL = 7; public static final int SIZE_LARGE = 16;