Skip to content

Commit 6ec0d40

Browse files
fix RemoveShields not updating visual shield stack amount correctly
1 parent 3ac13ac commit 6ec0d40

3 files changed

Lines changed: 26 additions & 16 deletions

File tree

InscryptionAPI/Card/CardExtensionsHelpers.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,10 @@ public static int GetTotalShields(this PlayableCard card)
776776
// covers for a situation I discovered where you use a SpecialBattleSequencer's triggers to advance a boss fight
777777
// somehow you can end up with a null playablecard which breaks this bit here
778778
if (card == null)
779+
{
780+
InscryptionAPIPlugin.Logger.LogDebug("[GetTotalShields] Card is null, returning 0.");
779781
return 0;
782+
}
780783

781784
int totalShields = 0;
782785
List<Ability> distinct = new(); // keep track of non-stacking shield abilities so we don't add them again
@@ -792,6 +795,7 @@ public static int GetTotalShields(this PlayableCard card)
792795
}
793796
}
794797

798+
//InscryptionAPIPlugin.Logger.LogDebug("[GetTotalShields] Total is " + totalShields);
795799
return totalShields;
796800
}
797801

InscryptionAPI/Card/DamageShieldBehaviour.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@ public virtual void AddShields(int amount, bool updateDisplay = true)
4040
public virtual void RemoveShields(int amount, bool updateDisplay = true)
4141
{
4242
numShields -= amount;
43-
if (base.Card.GetTotalShields() <= 0)
44-
base.Card.Status.lostShield = true;
45-
46-
if (!Ability.GetHideSingleStacks() && !HasShields() && !base.Card.Status.hiddenAbilities.Contains(this.Ability))
43+
if (!this.HasShields())
4744
{
48-
base.Card.Status.hiddenAbilities.Add(this.Ability);
49-
//Debug.Log("Add hidden single");
45+
if (Ability.GetHideSingleStacks()) // visually reduce the number of shield stacks
46+
{
47+
for (int i = 0; i < amount; i++)
48+
base.Card.Status.hiddenAbilities.Add(this.Ability);
49+
}
50+
else if (!base.Card.Status.hiddenAbilities.Contains(this.Ability)) // hide the whole sigil
51+
base.Card.Status.hiddenAbilities.Add(this.Ability);
5052
}
5153

5254
if (updateDisplay)

InscryptionCommunityPatch/Card/StackAbilityIcons.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -319,19 +319,23 @@ private static void AddIconNumber(Ability ability, CardInfo info, PlayableCard c
319319
AbilityInfo ai = AbilityManager.AllAbilityInfos.AbilityByID(ability);
320320
if (card != null)
321321
{
322-
baseAbilities.AddRange(AbilitiesUtil.GetAbilitiesFromMods(card.TemporaryMods/*.Where(x => !x.fromTotem && (!x.fromCardMerge || PatchPlugin.configMergeOnBottom.Value)).ToList()*/));
323-
if (ai.GetHideSingleStacks())
322+
if (ai.IsShieldAbility())
323+
{
324+
count = card.GetShieldBehaviour(ability)?.NumShields;
325+
}
326+
else
324327
{
325-
for (int i = 0; i < card.Status.hiddenAbilities.Count(x => x == ability); i++)
328+
baseAbilities.AddRange(AbilitiesUtil.GetAbilitiesFromMods(card.TemporaryMods/*.Where(x => !x.fromTotem && (!x.fromCardMerge || PatchPlugin.configMergeOnBottom.Value)).ToList()*/));
329+
if (ai.GetHideSingleStacks())
326330
{
327-
baseAbilities.Remove(ability);
331+
for (int i = 0; i < card.Status.hiddenAbilities.Count(x => x == ability); i++)
332+
{
333+
baseAbilities.Remove(ability);
334+
}
328335
}
329-
}
330-
else if (card.Status.hiddenAbilities.Contains(ability))
331-
baseAbilities.RemoveAll(x => x == ability);
332-
333-
if (ai.IsShieldAbility())
334-
count = card.GetShieldBehaviour(ability)?.NumShields;
336+
else if (card.Status.hiddenAbilities.Contains(ability))
337+
baseAbilities.RemoveAll(x => x == ability);
338+
}
335339
}
336340

337341
count ??= baseAbilities.Count(ab => ab == ability);

0 commit comments

Comments
 (0)