From 3b68e92837658569c94aff84dc3c98f06cb07a2c Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 29 Nov 2022 22:58:26 -0500 Subject: [PATCH] v2.0.0: added an ability for shield weapons --- core/src/main/assets/interfaces/buffs.png | Bin 1493 -> 1498 bytes .../main/assets/interfaces/large_buffs.png | Bin 3187 -> 3202 bytes .../assets/messages/items/items.properties | 7 ++++ .../actors/hero/Hero.java | 18 ++++++++--- .../items/weapon/melee/Greatshield.java | 6 ++++ .../items/weapon/melee/MeleeWeapon.java | 2 +- .../items/weapon/melee/RoundShield.java | 30 ++++++++++++++++++ .../ui/BuffIndicator.java | 1 + 8 files changed, 59 insertions(+), 5 deletions(-) diff --git a/core/src/main/assets/interfaces/buffs.png b/core/src/main/assets/interfaces/buffs.png index 6075db9529d7ad173672bfc220dfb4a058e8a715..27b5b5414a9c91a1d21c515dacdaa9128afe227f 100644 GIT binary patch delta 966 zcmV;%13CQF3)%~?VF3YTlVSnKe_&c834?IeF(+>d&K*wJ%BSdl=mysa68HcAKhix7 zvsDn6XBgsnA9{LN3fK=`zzhlGF+LxT-~<9EJc56*F&{wS|Lgzr2#Q5SfY1Lu_7CP) zng9iU*a@66fnVQ}fWzi|!<)vNd=UUp0;$0N|6fN6Z%80?fDK3!_|>5BfA$U-K>`IU z82A+n0w-7$U3i5@nGU z6;TytR>Q7~SX_yQ_(nKjO=lt%DC9{2!&?++lZ(qv_p;l8K$0X7xRE3`Akg-!a*a@+ z=LPz;J_H81KZ77JBor7?e_%YBOvc|djpLnw04yZnTXZPUC6}dS>ZVDloRs;>UT{Ic zFU;@3!1~Q*vv2jU>M*F!=45sShF5!m@no@BOvadP6j&||??E6W&>}|ykcB|`CKHfA zNT5fmwOSLawiB4gF<+Vwfzb#Cm~Sv}O+yAj00ue&etztI0yJO;e>guRz|T(s!VX-+ zmOz>S8o&hNS94KUy4J!;&x&MNtvkgcBytgcCoAoG_6S4Phx76k+Ft7r=wh ztdx|d*mi<1q7w+*e~Q4bj_}=FDsUTLh_@-wlK{iy*F7FMcE?uO{^=)ywHI&(^aJL* z2m+h!W^>mIIAS<%)U9-q$$yj2oJ24{1Q2r&>i(D&-zLeDGi=;8$si!cR+?e4ekUcd|UtyI=Jh4a{$t)7@i?K7lC{c>MUuV+nA=VFC~UkVOi^sfP|o2MI|40cgGwNPGu2 zo2>-&AU(VVf5jp?U>;5Xh+EJDUO+g$j&H$KJQW48iz_Qk!~yc-=RpGNXApS){5b^H z1OhMI3kc}DM>U4P(m9NFJK!ZX^-~#g@(8QtuBhVRq)()(9I09HKA?Ak;T)b2Xm%K-q94}+y oK6eRUZ9sDYxf+L!14bPH03!f`RcQV7X#fBK07*qoM6N<$f?`jf!vFvP delta 961 zcmV;y13vuP3)Ks-VF3YOlVSnKe^6E=iGpavQY&`?)*V*pnCC`6v}QN+1>Z_1CvZA)7$918hK=z}E(af4}a45hPHu zl7X+WAh3c(0Y;Et!~8V}6u_T$AbSgPId*`Z`WLrA1{A=8fKUnl?iQF>7aL+zY>91= z7dv8CnAsk7MZ{uXRK-Wa0joI^sX(bnN*G?JK!a>-Hd~vmCIpfsfxx>Yc?W@pUpsFI z1=?Pqv)6$@7x$+d1bT!5e|-uJhQs0DqndHN6A*xf1bmCK0xhz+m5kgd+1gIF`O0r_ zLBKD}Z^OVkwOXxXl@BT~sEj9MybpT&bAiEdI-L#&m~9j|I54~ifsjC*EC@gr0^5g7 zKms8F%!k3=UJYw+CNPO(zBC^K{XPsZ-(cVnfz^Tl40Hti{MhpZe`vrCaDGUDpPvGR z9e9H+fiwX$fC(PH5mZV3}n6qT_}IALN!lY zKVZI#AaH(hetzi%95Ea>>bA9#D}GeWtwbKN3;_&W8XEkig05 ziJ2aM6ga!OhJfsK4>>=HwhA}5H#ai@zqUpw{AepzEb>{sn-74xg+boUsePhi9Z?(ZM&CBO;U1Rww+qqyRqx8Q5bCSd9S zA9*1GJ%HQoD|G+@;RrB)0C;|PMqWiNBC;^>%=zw&PkOUBb<|~23 zci{Z|LIQe_e`aq%xr`2&@YDapEocKTARJ$dw_qe5MM=!!$_o>*`24*hfwLzFJU>4} z;EX`v#l1j4-#w}^1P+{Aiony^C@X;J*qEQszvj(h)hu=gFj$7bnT`PS=K{0ZX+8v8 zt#$wbJFuk)fRF$UN+E#_%!fb?ivoyX83JcB0W6jfGxI|SHeOZ2gM$Nhz{Lmg@)G!M j1C`xEsFX{c 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 A;{X5v delta 2916 zcmWkwdpK12AO4;*7jui#%)}@$!loiqY$jq3Y7t>WbYrCJcAHYNi#f+gbdlM%i()dH zwrojhbJ z_SYvpStpOyokz+IHI z68PLCFnK+S%ea%6DTHt0;tRof6A$ATHAZ!YF8Y@>qRJcgY(3L?v%PFaPR3TheqZT; z#Avdck^8`Qzh^ZN@&i#E#>_M*0x+p=0>PnVHg>%Ez1G>K^G-G{l1`^hI_L9sSHZuH;ZW!rN+sFwm@RQ8KSU5J!>FJL%iK=`z1_2k zi3SX7g})ZUhwN7y)WdApcY(ys?GRU{46XcI<|rE9f0)}$dfqxNIg|) zjGBu9(eT#Mz|pZ0&Ce&n=xY2jLda5;tijI}6uF2wR0O`ORshD}O)y`&i*n6L@MR7B z=kA>{H4+VlLjrR(f~L(yFegAw&dT_S{-i)Wpg!*BUY0S=ZU0V>!Ao0jE<#exmuua* zl9Whd{_yhxaXRZrJpAxjBq3zmoPDq$NNk(=v7kva(D`A@E?F_Ao&g&k_^&0B8Bg3% z_D1ed_z=_`m^`mPIErM9&N_H+bk@nW`y8e@l3wo0TwfLc^59Dr#)51T4 zvrIR_q+4wBv{{pG&Jnk?y^+Kr^?r39M4AiygDohz^(~ow5V(`)F z3_cbV`z4kKhoTVwV*bSaI;OzvA(TYe{2xZJ7LP>p;F{nJw`h>DSZtmjaBJ5Ki%3TM zqGx1b>Lp8MBBETI7>%F*kuvDh89!6AeZvI!d~5|oJ;XuB>n$Y7YxY#8f-k|ih!Rm7 z8lbhh3bV3xy8HG}XnZLPg|FeOTArMh88~rxC+taVl7ZrmpiFyHc|s&Z(6JCJF{^e& zzZ8WPr`yomcdSH>3vh-?v@F(6taNQZ5)~;Ir9h8v(L8o@#8H0uaB5;9tg5N?BEEcm z_NsT#jJFEGqi;O5bf#;I6h&=O8jaXjR5InAzwe4ptLFOyKp(03uA|!tb?-5gi@FKe zg<-p0YqVEk=TAulCM~upZpOu3A(~KYX)rKM`P)5ZEo$Ue=WS)a3XG!?HrjEu2pu>> zCgN2Eb|&PN4eCrhwv7zkfRSRx(hH`<)3ed$ zf$b5`@q}Uy*gvI)G<2ZM&lL}L1(cuM{EVhJV4A*h`G@$6YxxtOM-i`9J(R*6=B|Qt z_Dg{Zy1f{r5*9Za14^`>L#DHrhw^r{9<0c{NWV`#SImcDyTFC7-q4;0vUZ>}f$I3( zU$L7!!Iiv7HhQ zR~kyG9;vy`MKCAmW9O&cbT9u@G1a{(s+irkieY@3KI7!EYLw&d*ORdWmUbcmzC zi=VHvShr^aFj!G{u~$=Q@jEOn`&D|I)_l_c#+v&(0P)h6V|}WUHadeg~0Kx;*1|d>!2JVXeuXOg415hlo2F`Oeap+c3+LcfVVc z6y=jDvWloCYxycgDs+Km<^M7De_jIZODy4f|K#unvLSX4hBEcO=FGSd$e zglDpql}sUmLiab0T&h#mrhkMVcxW23N*}>O-sDtJNOha%{)~@ULAw1B??0)ktUf=$! zsZJGX{M7LYd$Mv(+;mxB?zr2>t8*8R&`5k?`$@`vGCx5|a&r&wbR@+_0 zz4xRZ#WmjWNjs9g__-t&zvrcC?cdu9a>2pE@A%=I6~+mnWA7|xbB9~{n+}7|*-qq>kBB*NTov`vkRA97*II<2y&~3fem>7E%u*8tWoYv#CA0@l8jPt-$%5zz zyL}YMl6X^OeO8sF@N!zaz9~pwx*wf}*l?Ari7TL$v}Y+;I?aU&dys=b$2P4;4$zVc zxa1ULi7}XZ{x0GVj!|e@J1fmQMVaaHDSjrOsw%Sbr}0JkGh&}L%9)zxrnaMW+!1xh zwQY#Ro2#5Ij|SE$?p@5u-B}DCbU9SPJ%8cN&_Y>=GVT scBYFprSiTaV{!KzeCm+8dZv+?)AIdtMM=cM$tM~FFAG~*<}a504>^A!1^@s6 diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 8306b484f..bd8fbf76c 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1533,6 +1533,8 @@ items.weapon.melee.greataxe.desc=Meant to be wielded over the shoulder, this tit items.weapon.melee.greatshield.name=greatshield items.weapon.melee.greatshield.typical_stats_desc=Typically this weapon blocks 0-%d damage. This blocking scales with upgrades. items.weapon.melee.greatshield.stats_desc=This weapon blocks 0-%d damage. This blocking scales with upgrades. +items.weapon.melee.greatshield.ability_name=guard +items.weapon.melee.greatshield.ability_desc=The duelist can _guard_ herself with a greatshield, completely negating the next physical or magical attack made against her within 4 turns. items.weapon.melee.greatshield.desc=More like a mobile wall than a shield, this gigantic mass of metal aids defense, but doesn't leave much room for attacking. items.weapon.melee.greatsword.name=greatsword @@ -1610,7 +1612,12 @@ items.weapon.melee.rapier.desc=A slim straight sword that offers some protection items.weapon.melee.roundshield.name=round shield items.weapon.melee.roundshield.typical_stats_desc=Typically this weapon blocks 0-%d damage. This blocking scales with upgrades. items.weapon.melee.roundshield.stats_desc=This weapon blocks 0-%d damage. This blocking scales with upgrades. +items.weapon.melee.roundshield.ability_name=guard +items.weapon.melee.roundshield.ability_desc=The duelist can _guard_ herself with a round shield, completely negating the next physical or magical attack made against her within 5 turns. items.weapon.melee.roundshield.desc=This large shield effectively blocks attacks and makes a decent weapon in a pinch. +items.weapon.melee.roundshield$guardtracker.name=guarding +items.weapon.melee.roundshield$guardtracker.guarded=guarded +items.weapon.melee.roundshield$guardtracker.desc=The duelist has readied her shield in anticipation of an incoming attack. The next physical or magical attack made against her will be completely negated.\n\nTurns remaining: %s. items.weapon.melee.runicblade.name=runic blade items.weapon.melee.runicblade.stats_desc=This weapon benefits more from upgrades. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 4f34bff37..8ffec099f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -115,6 +115,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Flail; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.journal.Document; import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; @@ -125,7 +126,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap; import com.shatteredpixel.shatteredpixeldungeon.mechanics.ShadowCaster; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; -import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot; import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle; import com.shatteredpixel.shatteredpixeldungeon.scenes.AlchemyScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -478,6 +478,10 @@ public class Hero extends Char { } return INFINITE_EVASION; } + + if (buff(RoundShield.GuardTracker.class) != null){ + return INFINITE_EVASION; + } float evasion = defenseSkill; @@ -497,15 +501,21 @@ public class Hero extends Char { @Override public String defenseVerb() { Combo.ParryTracker parry = buff(Combo.ParryTracker.class); - if (parry == null){ - return super.defenseVerb(); - } else { + if (parry != null){ parry.parried = true; if (buff(Combo.class).getComboCount() < 9 || pointsInTalent(Talent.ENHANCED_COMBO) < 2){ parry.detach(); } return Messages.get(Monk.class, "parried"); } + + if (buff(RoundShield.GuardTracker.class) != null){ + buff(RoundShield.GuardTracker.class).detach(); + Sample.INSTANCE.play(Assets.Sounds.HIT_PARRY, 1, Random.Float(0.96f, 1.05f)); + return Messages.get(RoundShield.GuardTracker.class, "guarded"); + } + + return super.defenseVerb(); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatshield.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatshield.java index 529443062..cf3a1953c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatshield.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatshield.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; 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; @@ -51,4 +52,9 @@ public class Greatshield extends MeleeWeapon { return Messages.get(this, "typical_stats_desc", 6); } } + + @Override + protected void duelistAbility(Hero hero, Integer target) { + RoundShield.guardAbility(hero, 4, this); + } } 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 45cb04f64..23b6060c9 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 @@ -136,7 +136,7 @@ public class MeleeWeapon extends Weapon { } public int abilityChargeUse(){ - return 1; //TODO + return 1; } public int tier; 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 74eba3623..0d5759b49 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 @@ -22,9 +22,14 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; import com.shatteredpixel.shatteredpixeldungeon.Assets; +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.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; public class RoundShield extends MeleeWeapon { @@ -55,4 +60,29 @@ public class RoundShield extends MeleeWeapon { return Messages.get(this, "typical_stats_desc", 4); } } + + @Override + protected void duelistAbility(Hero hero, Integer target) { + RoundShield.guardAbility(hero, 5, this); + } + + public static void guardAbility(Hero hero, int duration, MeleeWeapon wep){ + Buff.affect(hero, GuardTracker.class, duration); + hero.sprite.operate(hero.pos); + wep.onAbilityUsed(hero); + hero.spendAndNext(Actor.TICK); + } + + public static class GuardTracker extends FlavourBuff { + + { + announced = true; + type = buffType.POSITIVE; + } + + @Override + public int icon() { + return BuffIndicator.DUEL_GUARD; + } + } } \ No newline at end of file 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 61eeae573..94024b449 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java @@ -112,6 +112,7 @@ public class BuffIndicator extends Component { public static final int NATURE_POWER= 58; public static final int AMULET = 59; public static final int DUEL_CLEAVE = 60; + public static final int DUEL_GUARD = 61; public static final int SIZE_SMALL = 7; public static final int SIZE_LARGE = 16;