diff --git a/scenes/glossary/ComboGlossary.cs b/scenes/glossary/ComboGlossary.cs index ca60bd9..b8708cc 100644 --- a/scenes/glossary/ComboGlossary.cs +++ b/scenes/glossary/ComboGlossary.cs @@ -1,6 +1,7 @@ using Godot; using System; using System.Collections.Generic; +using System.Linq; using GLADIATE.scripts.battle; using GLADIATE.scripts.battle.card; using GLADIATE.scripts.XmlParsing; @@ -38,10 +39,21 @@ public override void _Ready() //cardList VBoxContainer cardList = packedScene.GetNode("VBoxContainer/ContentMargin/VBoxContainer/CardList/VBoxContainer"); int i = 0; + List _blockCards = CardPrototypes.cardPrototypeDict.Where(kvp => kvp.Value.CardType == "Block").Select(kvp => kvp.Value.Id).ToList(); + foreach (Card card in combo.CardList) { Label label = new Godot.Label(); - label.Text = (i+1).ToString() + ": " + CardPrototypes.cardPrototypeDict[card.Id].CardName; + + if (_blockCards.Contains(card.Id)) + { + label.Text = (i+1).ToString() + ": " + "Any Block Card"; + } + else + { + label.Text = (i+1).ToString() + ": " + CardPrototypes.cardPrototypeDict[card.Id].CardName; + } + cardList.AddChild(label); i++; } diff --git a/scripts/battle/GameState.cs b/scripts/battle/GameState.cs index e46e881..ef0029f 100644 --- a/scripts/battle/GameState.cs +++ b/scripts/battle/GameState.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using GLADIATE.scripts.battle.card; using GLADIATE.scripts.battle.target; using GLADIATE.scripts.XmlParsing; @@ -117,14 +118,25 @@ private void HideDeadEnemies() } public void PushCardStack(Card card) { ComboStack.Add(card); } + public Combo ComboCompare() { + List _blockCards = CardPrototypes.cardPrototypeDict.Where(kvp => kvp.Value.CardType == "Block").Select(kvp => kvp.Value.Id).ToList(); + foreach (string blockCard in _blockCards) + { + GD.Print("Block card: " + blockCard); + } + foreach (Combo combo in AllCombos) { int count = combo.CardList.Count; if (ComboStack.Count < count) { continue; } bool match = true; for (int i = 1; i <= count; i++) { + if (_blockCards.Contains(ComboStack[^i].Id) && "card_FullBlock" == combo.CardList[^i].Id) + { + continue; + } if (ComboStack[^i].Id != combo.CardList[^i].Id) { match = false; break; diff --git a/scripts/battle/card/BloodOnSand.cs b/scripts/battle/card/BloodOnSand.cs new file mode 100644 index 0000000..849c50e --- /dev/null +++ b/scripts/battle/card/BloodOnSand.cs @@ -0,0 +1,10 @@ +using GLADIATE.scripts.battle.target; + +namespace GLADIATE.scripts.battle.card; + +public class BloodOnSand : Card { + public override void Play(GameState gameState, ITarget target, ITarget player) { + player.DirectDamage(6); + base.Play(gameState, target, player); + } +} diff --git a/scripts/battle/card/CardFactory.cs b/scripts/battle/card/CardFactory.cs index 1fabf13..53cef73 100644 --- a/scripts/battle/card/CardFactory.cs +++ b/scripts/battle/card/CardFactory.cs @@ -88,12 +88,12 @@ public static class CardFactory { private static Dictionary> TypeDictionary = new() { { "card_reckless", () => new StunCard() }, { "card_Spartackle", () => new Spartackle() }, - { "card_BloodOnTheSand", () => new SelfDamageCard() }, + { "card_BloodOnTheSand", () => new BloodOnSand() }, { "card_gladius", () => new Gladius() }, { "card_Grapple", () => new ModifierCard() }, { "card_FlyingCrossBody", () => new FlyingCrossBody() }, { "card_DropKick", () => new Dropkick() }, - { "card_headbutt", () => new SelfDamageCard() }, + { "card_headbutt", () => new Headbutt() }, { "card_JudoThrow", () => new JudoThrow() }, { "card_KipUp", () => new KipUp() }, { "card_Throw", () => new ModifierCard() }, diff --git a/scripts/battle/card/SelfDamageCard.cs b/scripts/battle/card/Headbutt.cs similarity index 87% rename from scripts/battle/card/SelfDamageCard.cs rename to scripts/battle/card/Headbutt.cs index ecd390a..31a41ba 100644 --- a/scripts/battle/card/SelfDamageCard.cs +++ b/scripts/battle/card/Headbutt.cs @@ -2,7 +2,7 @@ namespace GLADIATE.scripts.battle.card; -public class SelfDamageCard : Card { +public class Headbutt : Card { public override void Play(GameState gameState, ITarget target, ITarget player) { player.DirectDamage(5); base.Play(gameState, target, player);