@@ -104,7 +104,7 @@ private static bool PreventShieldReset(PlayableCard target)
104104 [ HarmonyPrefix , HarmonyPatch ( typeof ( PlayableCard ) , nameof ( PlayableCard . ResetShield ) , new Type [ ] { } ) ]
105105 private static void ResetModShields ( PlayableCard __instance ) // runs before the base ResetShield logic
106106 {
107- foreach ( var com in __instance . GetComponents < DamageShieldBehaviour > ( ) )
107+ foreach ( DamageShieldBehaviour com in __instance . GetComponents < DamageShieldBehaviour > ( ) )
108108 com . ResetShields ( false ) ;
109109
110110 // if we're using the broken shield portrait, reset to the default portrait - if we're MudTurtle
@@ -216,23 +216,26 @@ private static List<Ability> HiddensOnlyRemoveStacks(List<Ability> abilities, Li
216216 {
217217 // remove all abilities that hide the entire stack
218218 abilities . RemoveAll ( x => hiddenAbilities . Contains ( x ) && ! x . GetHideSingleStacks ( ) ) ;
219- foreach ( var ab in hiddenAbilities . Where ( x => x . GetHideSingleStacks ( ) ) )
219+ foreach ( Ability ab in hiddenAbilities . Where ( x => x . GetHideSingleStacks ( ) ) )
220220 abilities . Remove ( ab ) ;
221+
221222 return abilities ;
222223 }
223224 private static void CorrectHiddenAbilityRender ( PlayableCard card )
224225 {
225- foreach ( var com in card . GetComponents < DamageShieldBehaviour > ( ) )
226+ foreach ( DamageShieldBehaviour com in card . GetComponents < DamageShieldBehaviour > ( ) . Where ( x => x . initialised ) )
226227 {
227228 if ( com . HasShields ( ) )
228229 {
229230 if ( com . Ability . GetHideSingleStacks ( ) )
230231 {
231232 // if there are more hidden shields than there should be
232- int removeStacks = card . Status . hiddenAbilities . Count ( x => x == com . Ability ) - com . NumShields ;
233- for ( int i = 0 ; i < removeStacks ; i ++ )
233+ if ( card . Status . hiddenAbilities . Count ( x => x == com . Ability ) >= com . NumShields )
234234 {
235- card . Status . hiddenAbilities . Remove ( com . Ability ) ;
235+ for ( int i = 0 ; i < com . NumShields ; i ++ )
236+ {
237+ card . Status . hiddenAbilities . Remove ( com . Ability ) ;
238+ }
236239 }
237240 }
238241 else
@@ -245,11 +248,13 @@ private static void CorrectHiddenAbilityRender(PlayableCard card)
245248 {
246249 if ( com . Ability . GetHideSingleStacks ( ) )
247250 {
251+ card . AddShieldCount ( 1 , Ability . DeathShield ) ;
248252 int shieldsLost = com . StartingNumShields - com . NumShields ;
249253 if ( card . Status . hiddenAbilities . Count ( x => x == com . Ability ) < shieldsLost )
250254 {
251255 for ( int i = 0 ; i < shieldsLost ; i ++ )
252256 {
257+ //Debug.Log($"{com.StartingNumShields} {com.NumShields} {shieldsLost} Add hidden");
253258 card . Status . hiddenAbilities . Add ( com . Ability ) ;
254259 }
255260 }
@@ -271,7 +276,7 @@ private static void CorrectHiddenAbilityRender(PlayableCard card)
271276 card . RenderCard ( ) ;
272277 }
273278
274- [ HarmonyPostfix , HarmonyPatch ( typeof ( PlayableCard ) , nameof ( PlayableCard . AddTemporaryMod ) ) ]
279+ [ HarmonyPrefix , HarmonyPatch ( typeof ( PlayableCard ) , nameof ( PlayableCard . AddTemporaryMod ) ) ]
275280 private static void AddTemporaryShieldCount ( PlayableCard __instance , CardModificationInfo mod )
276281 {
277282 if ( __instance == null || mod == null )
@@ -287,7 +292,7 @@ private static void AddTemporaryShieldCount(PlayableCard __instance, CardModific
287292 {
288293 DamageShieldBehaviour behaviour = __instance . TriggerHandler . triggeredAbilities . Find ( x => x . Item1 == ability ) . Item2 as DamageShieldBehaviour ;
289294 behaviour . AddShields ( 1 ) ;
290- //InscryptionAPIPlugin.Logger.LogInfo($"Add: {__instance.Info.name} {behaviour.NumShields} <-- {behaviour.NumShields - 1 }");
295+ //InscryptionAPIPlugin.Logger.LogInfo($"Add: {__instance.Info.name} {behaviour.NumShields - 1} --> {behaviour.NumShields}");
291296 }
292297 }
293298 }
0 commit comments