From 467e385991c96a374953fe25b68559a971ddc126 Mon Sep 17 00:00:00 2001 From: SoulliesOfficial Date: Sat, 13 Dec 2025 23:28:23 -0500 Subject: [PATCH] Update --- .../Source Han Serif Heavy - Round Hint.mat | 5 ++ ...rt.wav => BGM_Basic_MagicalAdventures.wav} | Bin ...a => BGM_Basic_MagicalAdventures.wav.meta} | 0 .../Assassin/CardData_Basic_Backstab.asset | 1 + .../Assassin/CardData_Basic_BladeOfFear.asset | 3 +- .../Assassin/CardData_Basic_ExtremePain.asset | 1 + .../Assassin/CardData_Basic_Torture.asset | 1 - .../CardData_Basic_WoundDeterioration.asset | 2 +- .../Basic/Cards/Scripts/Assassin/Ambush.cs | 1 - .../Basic/Cards/Scripts/Assassin/Backstab.cs | 10 +++ .../Cards/Scripts/Assassin/BladeOfFear.cs | 2 +- .../Cards/Scripts/Assassin/ExtremePain.cs | 10 +++ .../Basic/Cards/Scripts/Assassin/Torture.cs | 5 +- .../Basic/Cards/Scripts/Knight/FirmBelief.cs | 4 +- .../Cards/Scripts/Knight/UtmostStrike.cs | 2 +- .../Cards/Scripts/Mage/IdentifyWeakness.cs | 2 +- .../CombatViews/Assassin.prefab | 4 +- .../CharacterViews/CombatViews/Cleric.prefab | 9 ++- .../CharacterViews/CombatViews/Knight.prefab | 2 +- .../CharacterViews/CombatViews/Mage.prefab | 9 ++- .../CombatViews/MarshalOfTheUnderworld.prefab | 11 ++- .../CombatViews/SkeletonGuard.prefab | 9 ++- .../CombatBuffs/Assassin/AmbushStance.cs | 7 +- .../CombatBuffs/General/Corrosion.cs | 1 + .../CombatBuffs/General/Protected.cs | 2 - .../CombatBuffs/General/Protecting.cs | 33 +++++---- .../CombatBuffs/General/Sharpness.cs | 8 ++- .../CombatBuffs/General/Vulnerable.cs | 2 +- ...racterData_Basic_MarshalOfUnderworld.asset | 2 +- .../Basic/Localization_Basic_GeneralBuffs.csv | 2 +- .../Localization_Basic_GeneralKeywords.csv | 6 +- .../Localization_Basic_AssassinBuffs.csv | 2 +- .../Player/Localization_Basic_ClericCards.csv | 2 +- Assets/Scenes/GameScene.unity | 68 ++---------------- Assets/Scripts/MainGame/Audio/AudioManager.cs | 8 ++- .../Interpreters/DynamicTextInterpreter.cs | 2 +- Assets/Scripts/MainGame/Buff/BuffBase.cs | 9 ++- .../Card/CardBuff/CardCombatBuffBase.cs | 5 +- .../MainGame/Card/CardMainFunctions.cs | 13 ++-- .../CardLogicComponent_Attack.cs | 5 ++ .../CharacterBuff/CharacterCombatBuffBase.cs | 10 ++- .../Character/CharacterMainFunctions.cs | 40 +++++------ .../CombatBuffSubmodule.cs | 8 ++- .../Combat/CombatCharacterController.cs | 37 +++++++--- .../MainGame/Combat/CombatMainManager.cs | 14 ++-- .../MainGame/Commands/Cmd_DrawCards.cs | 2 +- .../MainGame/UI/CombatMainPage/HandPile.cs | 7 +- .../MainGame/UI/CombatMainPage/PileBase.cs | 1 + .../ScriptExtensions/General/ListExtension.cs | 10 ++- 49 files changed, 238 insertions(+), 161 deletions(-) rename Assets/Mods/Basic/Audios/Music/{Magical Adventures Short.wav => BGM_Basic_MagicalAdventures.wav} (100%) rename Assets/Mods/Basic/Audios/Music/{Magical Adventures Short.wav.meta => BGM_Basic_MagicalAdventures.wav.meta} (100%) diff --git a/Assets/Fonts/Source Han Serif/Materials/Source Han Serif Heavy - Round Hint.mat b/Assets/Fonts/Source Han Serif/Materials/Source Han Serif Heavy - Round Hint.mat index 9e35c47e..e61987ff 100644 --- a/Assets/Fonts/Source Han Serif/Materials/Source Han Serif Heavy - Round Hint.mat +++ b/Assets/Fonts/Source Han Serif/Materials/Source Han Serif Heavy - Round Hint.mat @@ -39,6 +39,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _BumpMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -125,6 +129,7 @@ Material: m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: + - PixelSnap: 0 - _AddColorContrast: 0.5 - _AddColorContrastToggle: 0 - _AddColorFade: 1 diff --git a/Assets/Mods/Basic/Audios/Music/Magical Adventures Short.wav b/Assets/Mods/Basic/Audios/Music/BGM_Basic_MagicalAdventures.wav similarity index 100% rename from Assets/Mods/Basic/Audios/Music/Magical Adventures Short.wav rename to Assets/Mods/Basic/Audios/Music/BGM_Basic_MagicalAdventures.wav diff --git a/Assets/Mods/Basic/Audios/Music/Magical Adventures Short.wav.meta b/Assets/Mods/Basic/Audios/Music/BGM_Basic_MagicalAdventures.wav.meta similarity index 100% rename from Assets/Mods/Basic/Audios/Music/Magical Adventures Short.wav.meta rename to Assets/Mods/Basic/Audios/Music/BGM_Basic_MagicalAdventures.wav.meta diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Backstab.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Backstab.asset index 9cce371c..36f72ed5 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Backstab.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Backstab.asset @@ -20,6 +20,7 @@ MonoBehaviour: cardType: 0 keywords: - TargetEnemies + - Physics cardSprite: {fileID: 21300000, guid: 9c04599ab4b90f444bc24da7f8f620b5, type: 3} cardLayoutTags: [] functionText: Card_Basic_Backstab_FunctionText diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_BladeOfFear.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_BladeOfFear.asset index 0ee03adb..9ef31714 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_BladeOfFear.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_BladeOfFear.asset @@ -20,6 +20,7 @@ MonoBehaviour: cardType: 0 keywords: - TargetEnemies + - Physics cardSprite: {fileID: 21300000, guid: 10ee9f14f0036b8409f43d68af077efe, type: 3} cardLayoutTags: [] functionText: Card_Basic_BladeOfFear_FunctionText @@ -35,7 +36,7 @@ MonoBehaviour: index: 0 isKeyDuplicated: 0 - Key: StaminaCost - Value: 2 + Value: 1 index: 1 isKeyDuplicated: 0 - Key: ManaCost diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_ExtremePain.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_ExtremePain.asset index c6837d27..d8195e24 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_ExtremePain.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_ExtremePain.asset @@ -20,6 +20,7 @@ MonoBehaviour: cardType: 0 keywords: - TargetEnemies + - Physics cardSprite: {fileID: 21300000, guid: 1706538a394d48e4e8648e7e9edff712, type: 3} cardLayoutTags: [] functionText: Card_Basic_ExtremePain_FunctionText diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Torture.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Torture.asset index 99c39918..7df0b3dc 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Torture.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_Torture.asset @@ -19,7 +19,6 @@ MonoBehaviour: cardRarity: 20 cardType: 10 keywords: - - TargetSelf - TargetEnemies cardSprite: {fileID: 21300000, guid: b578528a8fd633946814ec547e8e41ca, type: 3} cardLayoutTags: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_WoundDeterioration.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_WoundDeterioration.asset index 68d3b8d0..e11f8b7e 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_WoundDeterioration.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_WoundDeterioration.asset @@ -35,7 +35,7 @@ MonoBehaviour: index: 0 isKeyDuplicated: 0 - Key: StaminaCost - Value: 0 + Value: 1 index: 1 isKeyDuplicated: 0 - Key: ManaCost diff --git a/Assets/Mods/Basic/Cards/Scripts/Assassin/Ambush.cs b/Assets/Mods/Basic/Cards/Scripts/Assassin/Ambush.cs index f59fda4f..a73d9b99 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Assassin/Ambush.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Assassin/Ambush.cs @@ -21,7 +21,6 @@ namespace Continentis.Mods.Basic.Cards.Assassin mainGroup.AddCommand(new Cmd_Function(() => { CardData cardData = GetDerivativeCardData(0); - Debug.LogError(cardData.displayName); CardInstance.GenerateCardInstance(cardData, user.team, "Hand"); })); diff --git a/Assets/Mods/Basic/Cards/Scripts/Assassin/Backstab.cs b/Assets/Mods/Basic/Cards/Scripts/Assassin/Backstab.cs index 48eb361e..ab9c13be 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Assassin/Backstab.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Assassin/Backstab.cs @@ -10,6 +10,11 @@ namespace Continentis.Mods.Basic.Cards.Assassin { private int _sharpnessCount = 0; + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + public override List PlayEffect(List targetList) { CommandGroup mainGroup = TargetListCommandGroup( targetList, @@ -32,5 +37,10 @@ namespace Continentis.Mods.Basic.Cards.Assassin return new List { mainGroup }; } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Default(); + } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Assassin/BladeOfFear.cs b/Assets/Mods/Basic/Cards/Scripts/Assassin/BladeOfFear.cs index 2f1b9399..455f091b 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Assassin/BladeOfFear.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Assassin/BladeOfFear.cs @@ -33,7 +33,7 @@ namespace Continentis.Mods.Basic.Cards.Assassin public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Default(); } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Assassin/ExtremePain.cs b/Assets/Mods/Basic/Cards/Scripts/Assassin/ExtremePain.cs index 73d7c862..c342461c 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Assassin/ExtremePain.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Assassin/ExtremePain.cs @@ -8,6 +8,11 @@ namespace Continentis.Mods.Basic.Cards.Assassin { public class ExtremePain : CardLogicBase { + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + public override List PlayEffect(List targetList) { CommandGroup mainGroup = TargetListCommandGroup(targetList, @@ -32,5 +37,10 @@ namespace Continentis.Mods.Basic.Cards.Assassin } return baseDamage + extraDamage; } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Default(); + } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Assassin/Torture.cs b/Assets/Mods/Basic/Cards/Scripts/Assassin/Torture.cs index 3190492b..1cc3f875 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Assassin/Torture.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Assassin/Torture.cs @@ -15,10 +15,7 @@ namespace Continentis.Mods.Basic.Cards.Assassin CommandGroup mainGroup = TargetListCommandGroup(targetList, new Cmd_ParamFunction(0.01f, target => { - if (target != user) - { - CreateCharacterBuff(GetAttribute("BuffStack")).Apply(target, user, this); - } + CreateCharacterBuff(GetAttribute("BuffStack")).Apply(target, user, this); })); return new List { mainGroup }; } diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs index 4b7b61a5..44e198c4 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs @@ -13,7 +13,7 @@ namespace Continentis.Mods.Basic.Cards { base.Initialize(card); this.card.eventSubmodule.onInitiativeDiscard.Add("FirmBelief_PlayWhenDiscard", - new PrioritizedCheckAndEffect(() => true, () => card.Play(new List(), user))); + new PrioritizedCheckAndEffect(() => true, () => card.Play(new List(), user, false, true))); } public override void SetUpLogicComponents() @@ -26,7 +26,7 @@ namespace Continentis.Mods.Basic.Cards CommandGroup mainGroup = SingleCommandGroup( new Cmd_PlayAnimation(user.characterView, "Skill"), new Cmd_Function(() => user.AddBlock(GetAttribute("Block"))), - new Cmd_Function(() => user.deckSubmodule.DrawCards(GetAttribute("DrawCardAmount")))); + user.deckSubmodule.DrawCards(GetAttribute("DrawCardAmount"))); return new List { mainGroup }; } diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs index be297bbf..a9828ad5 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs @@ -43,7 +43,7 @@ namespace Continentis.Mods.Basic.Cards private void SelectEffect(CardInstance card) { - CommandQueueManager.Instance.AddCommand(user.deckSubmodule.DiscardCard(card, true), new CommandContext()); + CommandQueueManager.Instance.AddCommand(user.deckSubmodule.DiscardCard(card, true, 0f), new CommandContext()); } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs index 0433cc04..c9a906f2 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs @@ -13,7 +13,7 @@ namespace Continentis.Mods.Basic.Cards public override List PlayEffect(List targetList) { CommandGroup mainGroup = TargetListCommandGroup(targetList, - new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_PlayAnimation(user.characterView, "Action"), new Cmd_ParamFunction(0.1f, target => { CreateCharacterBuff(GetAttribute("BuffCount_Vulnerable")).Apply(target, user, this); diff --git a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Assassin.prefab b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Assassin.prefab index 3408474f..2ad723bc 100644 --- a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Assassin.prefab +++ b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Assassin.prefab @@ -222,6 +222,8 @@ MonoBehaviour: textsPivot: {fileID: 99536820446155663} hudPivot: {fileID: 9155063391537260755} hudContainer: {fileID: 0} + spriteRenderers: [] + materials: [] --- !u!65 &6378826047261086390 BoxCollider: m_ObjectHideFlags: 0 @@ -241,7 +243,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 1.5, y: 1.5, z: 0.5} + m_Size: {x: 1, y: 1.5, z: 0.2} m_Center: {x: 0, y: 0.5, z: 0} --- !u!1 &3589482867899585260 GameObject: diff --git a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Cleric.prefab b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Cleric.prefab index f2358a9f..39eafb65 100644 --- a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Cleric.prefab +++ b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Cleric.prefab @@ -126,6 +126,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 13546c0bea421894db5da5d01493af9d, type: 3} m_Name: m_EditorClassIdentifier: AnimatorPlus::AnimatorPlus.AnimatorPlus2D + defaultIdleClip: {fileID: 0} + currentClipName: + currentTime: 0 + currentDuration: 0 + isLoopingCurrent: 0 --- !u!1 &1586215903625107760 GameObject: m_ObjectHideFlags: 0 @@ -218,6 +223,8 @@ MonoBehaviour: textsPivot: {fileID: 99536820446155663} hudPivot: {fileID: 9155063391537260755} hudContainer: {fileID: 0} + spriteRenderers: [] + materials: [] --- !u!212 &5070467027223662231 SpriteRenderer: m_ObjectHideFlags: 0 @@ -295,7 +302,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 1.5, y: 1.5, z: 0.5} + m_Size: {x: 1, y: 1.5, z: 0.2} m_Center: {x: 0, y: 0.5, z: 0} --- !u!1 &3589482867899585260 GameObject: diff --git a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Knight.prefab b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Knight.prefab index 554e82fa..1c19ae50 100644 --- a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Knight.prefab +++ b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Knight.prefab @@ -243,7 +243,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 1.5, y: 1.5, z: 0.5} + m_Size: {x: 1, y: 1.5, z: 0.2} m_Center: {x: 0, y: 0.5, z: 0} --- !u!1 &3589482867899585260 GameObject: diff --git a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Mage.prefab b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Mage.prefab index 54c15219..9a332d2f 100644 --- a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Mage.prefab +++ b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/Mage.prefab @@ -91,6 +91,8 @@ MonoBehaviour: textsPivot: {fileID: 7522544214260205966} hudPivot: {fileID: 9155063391537260755} hudContainer: {fileID: 0} + spriteRenderers: [] + materials: [] --- !u!65 &6378826047261086390 BoxCollider: m_ObjectHideFlags: 0 @@ -110,7 +112,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 1.5, y: 1.5, z: 0.5} + m_Size: {x: 1, y: 1.5, z: 0.2} m_Center: {x: 0, y: 0.5, z: 0} --- !u!1 &2669832049843731127 GameObject: @@ -269,6 +271,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 13546c0bea421894db5da5d01493af9d, type: 3} m_Name: m_EditorClassIdentifier: AnimatorPlus::AnimatorPlus.AnimatorPlus2D + defaultIdleClip: {fileID: 0} + currentClipName: + currentTime: 0 + currentDuration: 0 + isLoopingCurrent: 0 --- !u!1 &3589482867899585260 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/MarshalOfTheUnderworld.prefab b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/MarshalOfTheUnderworld.prefab index c7d89af8..0a7a5633 100644 --- a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/MarshalOfTheUnderworld.prefab +++ b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/MarshalOfTheUnderworld.prefab @@ -91,6 +91,8 @@ MonoBehaviour: textsPivot: {fileID: 2142949113663212184} hudPivot: {fileID: 9155063391537260755} hudContainer: {fileID: 0} + spriteRenderers: [] + materials: [] --- !u!65 &6378826047261086390 BoxCollider: m_ObjectHideFlags: 0 @@ -110,8 +112,8 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 3, y: 3, z: 0.5} - m_Center: {x: 0, y: 1.5, z: 0} + m_Size: {x: 2, y: 3.2, z: 0.2} + m_Center: {x: 0, y: 1.4, z: 0} --- !u!1 &3589482867899585260 GameObject: m_ObjectHideFlags: 0 @@ -300,6 +302,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 13546c0bea421894db5da5d01493af9d, type: 3} m_Name: m_EditorClassIdentifier: AnimatorPlus::AnimatorPlus.AnimatorPlus2D + defaultIdleClip: {fileID: 0} + currentClipName: + currentTime: 0 + currentDuration: 0 + isLoopingCurrent: 0 --- !u!1 &4556379524467831266 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/SkeletonGuard.prefab b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/SkeletonGuard.prefab index 3877ff01..454bce65 100644 --- a/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/SkeletonGuard.prefab +++ b/Assets/Mods/Basic/Characters/CharacterViews/CombatViews/SkeletonGuard.prefab @@ -91,6 +91,8 @@ MonoBehaviour: textsPivot: {fileID: 2142949113663212184} hudPivot: {fileID: 9155063391537260755} hudContainer: {fileID: 0} + spriteRenderers: [] + materials: [] --- !u!65 &6378826047261086390 BoxCollider: m_ObjectHideFlags: 0 @@ -110,7 +112,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 1.5, y: 1.5, z: 0.5} + m_Size: {x: 1, y: 1.5, z: 0.2} m_Center: {x: 0, y: 0.5, z: 0} --- !u!1 &3589482867899585260 GameObject: @@ -300,6 +302,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 13546c0bea421894db5da5d01493af9d, type: 3} m_Name: m_EditorClassIdentifier: AnimatorPlus::AnimatorPlus.AnimatorPlus2D + defaultIdleClip: {fileID: 0} + currentClipName: + currentTime: 0 + currentDuration: 0 + isLoopingCurrent: 0 --- !u!1 &4556379524467831266 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs index 6c9cb1e8..41bd3278 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs @@ -12,17 +12,14 @@ namespace Continentis.Mods.Basic.Buffs public AmbushStance(int stack) { Initialize(BuffType.Positive, BuffDispelLevel.Strong); - this.contentSubmodule = new ContentSubmodule(this, false) + this.contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); this.iconSubmodule = new IconSubmodule(this); this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); this.eventSubmodule.onBeforePlayCard.Add("AmbushStance", new PrioritizedAction>(((card, targets) => { - if (this.attachedCharacter is PlayerHero player) - { - CreateCharacterBuff(this.unitedStackSubmodule.stackAmount).Apply(attachedCharacter, attachedCharacter); - } + CreateCharacterBuff(this.unitedStackSubmodule.stackAmount).Apply(attachedCharacter, attachedCharacter); }))); } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs index 6438492d..d4a5112b 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs @@ -38,6 +38,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnActionStart() { + Debug.Log($"Corrosion deals damage to {attachedCharacter.data.displayName}"); sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, null, false, true); unitedStackSubmodule.ReduceStack(1); iconSubmodule.Update(); diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs index 646a171f..37b5e4b4 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs @@ -23,8 +23,6 @@ namespace Continentis.Mods.Basic.Buffs .AddParameterGetter("Protector", GetProtectorNames); this.iconSubmodule = new IconSubmodule(this).SetTextFunctions(); - - this.eventSubmodule = new EventSubmodule(this); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs index b0c009c3..5f9fcbb7 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Character; using SLSFramework.General; @@ -22,42 +23,43 @@ namespace Continentis.Mods.Basic.Buffs } this.contentSubmodule = new ContentSubmodule(this) - .AddParameterGetter("Count", () => roundCountSubmodule.remainingCount.ToString()) + .AddParameterGetter("Count", () => roundFirstActionCountSubmodule.remainingCount.ToString()) .AddParameterGetter("Target", () => target.data.displayName);//TODO: 以后增加角色的ContentSubmodule this.iconSubmodule = new IconSubmodule(this).SetTextFunctions("Count"); - this.roundCountSubmodule = new CountSubmodule(this, actionCount); - - this.eventSubmodule = new EventSubmodule(this); + this.roundFirstActionCountSubmodule = new CountSubmodule(this, actionCount); } - + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { - MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, + attachedCharacter.characterView); if (attachedCharacter.combatBuffSubmodule.TryGetBuff(out Protected conflictProtected)) { //如果目标已经有Protected Buff,则应当将其移除,以防止冲突. //使用移除所有保护者的方式来移除。 - Debug.Log($"Conflicted Protected buff found, with {conflictProtected.protectingSources.Count} protecting sources. Removing all."); + Debug.Log( + $"Conflicted Protected buff found, with {conflictProtected.protectingSources.Count} protecting sources. Removing all."); conflictProtected.protectingSources.For(ps => ps.Remove()); } - if (FindExistingSameBuff(out existingBuff)) + if (FindExistingSameBuffs(out List existingProtecting)) { - Debug.Log("Existing same buff found."); - - Protecting existProtecting = existingBuff as Protecting; - Debug.Log(existProtecting == null ? "Existing buff is not of type Protecting!" : "Existing Protecting buff found."); - if (existProtecting.target == this.target) + var sameProtecting = existingProtecting.Find(ep => ep.target == this.target); + if (sameProtecting != null) { - existProtecting.roundCountSubmodule.AddCount(this.roundCountSubmodule.remainingCount); + existingBuff = sameProtecting; + sameProtecting.roundFirstActionCountSubmodule.AddCount(this.roundFirstActionCountSubmodule.remainingCount); return false; } + + existingBuff = null; return true; //独立处理,直接返回true } - + + existingBuff = null; return true; } @@ -71,6 +73,7 @@ namespace Continentis.Mods.Basic.Buffs { base.OnBuffRemove(); protectedBuff.protectingSources.Remove(this); + Debug.Log($"Protecting buff removed. Remaining protecting sources: {protectedBuff.protectingSources.Count}"); if (protectedBuff.protectingSources.Count == 0) { protectedBuff.Remove(); diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Sharpness.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Sharpness.cs index aa3e3245..59ef3cb3 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Sharpness.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Sharpness.cs @@ -1,6 +1,7 @@ using Continentis.MainGame; using Continentis.MainGame.Character; using SLSFramework.General; +using UnityEngine; namespace Continentis.Mods.Basic.Buffs { @@ -35,16 +36,17 @@ namespace Continentis.Mods.Basic.Buffs public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText("Sharpness", attachedCharacter.characterView); - + if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.ModifyStack(this.unitedStackSubmodule.stackAmount); int newStack = existingBuff.unitedStackSubmodule.stackAmount; - existingBuff.coreAttributeSubmodule.numericChange["PhysicsDamageDealtOffset"] = newStack; + Debug.Log($"[Sharpness] New Stack: {newStack}"); + existingBuff.generalAttributeSubmodule.numericChange["PhysicsDamageDealtOffset"] = newStack; return false; } - + return true; } } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Vulnerable.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Vulnerable.cs index b5d60074..b71c342b 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Vulnerable.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Vulnerable.cs @@ -28,7 +28,7 @@ namespace Continentis.Mods.Basic.Buffs if (FindExistingSameBuff(out existingBuff)) { - existingBuff.actionCountSubmodule.AddCount(this.roundCountSubmodule.maximumCount); + existingBuff.actionCountSubmodule.AddCount(this.actionCountSubmodule.remainingCount); return false; } diff --git a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_MarshalOfUnderworld.asset b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_MarshalOfUnderworld.asset index 4adc8126..9126f302 100644 --- a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_MarshalOfUnderworld.asset +++ b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_MarshalOfUnderworld.asset @@ -152,7 +152,7 @@ MonoBehaviour: index: 22 isKeyDuplicated: 0 - Key: Speed - Value: 10 + Value: 99 index: 23 isKeyDuplicated: 0 - Key: LifeStealMultiplier diff --git a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv index e1911811..d5528b49 100644 --- a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv +++ b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv @@ -19,7 +19,7 @@ At the beginning of your action, stack is halved (at least 1).","受到攻击后 Khi bắt đầu hành động, số tầng giảm một nửa (tối thiểu giảm 1).","หลังจากถูกโจมตี, ได้รับความเสียหายเท่ากับจำนวนชั้น เมื่อเริ่มการกระทำของคุณ, จำนวนชั้นลดลงครึ่งหนึ่ง (ลดลงอย่างน้อย 1)" Buff_Basic_Burn_DisplayName,Burn,灼烧,灼燒,火傷,화상,Bỏng,เผาผลาญ -Buff_Basic_Burn_FunctionText,"After you play a card, its stack is reduced by 30% (at least 1), receive damage equals to the reduced stack.",打出一张牌后,堆叠层数减少30%(至少减少1),并受到等于减少层数的伤害。,打出一張牌後,堆疊層數減少30%(至少減少1),並受到等於減少層數的傷害。,カードをプレイした後、層数が30%(最低1)減少し、減少量に等しいダメージを受ける。,"카드를 낼 때마다 중첩 수가 30%(최소 1) 감소하고, 감소한 만큼 피해를 입습니다.","Sau khi đánh bài, giảm 30% số tầng (tối thiểu 1), và chịu sát thương bằng số tầng đã giảm.","หลังจากเล่นการ์ด, ลดจำนวนชั้นลง 30% (อย่างน้อย 1), และได้รับความเสียหายเท่ากับจำนวนชั้นที่ลดลง" +Buff_Basic_Burn_FunctionText,"After you play a card, receive damage equals to the stack, its stack reduce 1 when your action starts.",打出一张牌后,并受到等于其层数的伤害。行动开始时,层数减少1。,打出一張牌後,堆疊層數減少30%(至少減少1),並受到等於減少層數的傷害。,カードをプレイした後、層数が30%(最低1)減少し、減少量に等しいダメージを受ける。,"카드를 낼 때마다 중첩 수가 30%(최소 1) 감소하고, 감소한 만큼 피해를 입습니다.","Sau khi đánh bài, giảm 30% số tầng (tối thiểu 1), và chịu sát thương bằng số tầng đã giảm.","หลังจากเล่นการ์ด, ลดจำนวนชั้นลง 30% (อย่างน้อย 1), และได้รับความเสียหายเท่ากับจำนวนชั้นที่ลดลง" Buff_Basic_Corrosion_DisplayName,Corrosion,腐蚀,腐蝕,腐食,부식,Ăn Mòn,กัดกร่อน Buff_Basic_Corrosion_FunctionText,"At the beginning of your action, gain damage equals to its stack, then stack is reduced by 1.",在你的行动开始时,获得等于其堆叠层数的伤害,然后其堆叠层数减少 1。,在你的行動開始時,獲得等於其堆疊層數的傷害,然後其堆疊層數減少 1。,自身のアクション開始時、層数に等しいダメージを受け、層数を1減らす。,행동 시작 시 중첩 수만큼 피해를 입고 중첩 수가 1 감소합니다.,"Khi bắt đầu hành động, chịu sát thương bằng số tầng, sau đó giảm 1 tầng.","เมื่อเริ่มการกระทำของคุณ, ได้รับความเสียหายเท่ากับจำนวนชั้น, จากนั้นลดจำนวนชั้นลง 1" Buff_Basic_Firm_DisplayName,Firm,坚韧,堅韌,強靭,인내,Kiên Định,ความอดทน diff --git a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv index efac4f2b..ab6fc8e9 100644 --- a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv +++ b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv @@ -38,4 +38,8 @@ Keyword_CounterAttack_Description,"Whenever you are attacked, deal damage back e Keyword_Concentrate,Concentrate,专注,專注,集中,집중,Tập Trung,สมาธิ Keyword_Concentrate_Description,"When attacked, may interrupt spell casting.",受到攻击时,概率会打断正在释放的法术效果。,受到攻擊時,概率會打斷正在釋放的法術效果。,攻撃を受けた時、詠唱中の魔法が中断される可能性がある。,"공격을 받을 때, 시전 중인 마법 효과가 확률적으로 중단될 수 있습니다.","Khi bị tấn công, có xác suất làm gián đoạn phép thuật đang thi triển.","เมื่อถูกโจมตี, มีโอกาสที่จะขัดจังหวะเวทมนตร์ที่กำลังร่ายอยู่." Keyword_ConcentratedSpellcasting,Concentrated Spellcasting,法术强度,法術強度,スペルパワー,주문력,Sức Mạnh Phép Thuật,พลังเวท -Keyword_ConcentratedSpellcasting_Description,Spell damage is increased by stacks.,法术造成的伤害增加层数点伤害。,法術造成的傷害增加層數點傷害。,魔法ダメージが層数分増加する。,주문으로 주는 피해가 중첩 수만큼 증가합니다.,Sát thương phép thuật tăng thêm bằng số tầng.,ความเสียหายเวทมนตร์เพิ่มขึ้นเท่ากับจำนวนชั้น. \ No newline at end of file +Keyword_ConcentratedSpellcasting_Description,Spell damage is increased by stacks.,法术造成的伤害增加层数点伤害。,法術造成的傷害增加層數點傷害。,魔法ダメージが層数分増加する。,주문으로 주는 피해가 중첩 수만큼 증가합니다.,Sát thương phép thuật tăng thêm bằng số tầng.,ความเสียหายเวทมนตร์เพิ่มขึ้นเท่ากับจำนวนชั้น. +Keyword_Physics,Physics,物理,,,,, +Keyword_Physics_Description,This card deals physics damage.,这张牌造成物理伤害。,,,,, +Keyword_Magic,Magic,魔法,,,,, +Keyword_Magic_Description,This card deals magic damage.,这张牌造成魔法伤害。,,,,, diff --git a/Assets/Mods/Basic/Localization/Player/Localization_Basic_AssassinBuffs.csv b/Assets/Mods/Basic/Localization/Player/Localization_Basic_AssassinBuffs.csv index 1f3cce6b..4f9513c8 100644 --- a/Assets/Mods/Basic/Localization/Player/Localization_Basic_AssassinBuffs.csv +++ b/Assets/Mods/Basic/Localization/Player/Localization_Basic_AssassinBuffs.csv @@ -1,6 +1,6 @@ Key,English,Simplified Chinese,Traditional Chinese,Japanese,Korean,Vietnamese,Thai Buff_Basic_WoundDeterioration_DisplayName,Wound Deterioration,恶化伤口,惡化傷口,傷口悪化,상처 악화,Vết Thương Hoại Tử,บาดแผลลุกลาม -Buff_Basic_WoundDeterioration_FunctionText,"When you deal at least $ParameterInt(""Damage"") damage in a single hit, apply an additional $ParameterInt(""Stack"") stacks of $Keyword(""Basic_WoundDeterioration"").","你单次造成至少$ParameterInt(""Damage"")点的伤害时,额外给予$ParameterInt(""Stack"")%层$Keyword(""Basic_WoundDeterioration"")。","你單次造成至少$ParameterInt(""Damage"")點的傷害時,額外給予$ParameterInt(""Stack"")%層$Keyword(""Basic_WoundDeterioration"")。","1回で$ParameterInt(""Damage"")点以上のダメージを与えた時、追加で$ParameterInt(""Stack"")%層の$Keyword(""Basic_WoundDeterioration"")を付与する。","한 번에 최소 $ParameterInt(""Damage"")의 피해를 줄 때, $ParameterInt(""Stack"")% 층의 $Keyword(""Basic_WoundDeterioration"") 효과를 추가로 부여합니다.","Khi bạn gây ít nhất $ParameterInt(""Damage"") sát thương trong 1 lần, áp dụng thêm $ParameterInt(""Stack"")% tầng $Keyword(""Basic_WoundDeterioration"").","เมื่อคุณสร้างความเสียหายอย่างน้อย $ParameterInt(""Damage"") หน่วยในครั้งเดียว, มอบสถานะ $Keyword(""Basic_WoundDeterioration"") เพิ่มเติม $ParameterInt(""Stack"")% ชั้น." +Buff_Basic_WoundDeterioration_FunctionText,"When you deal at least $ParameterInt(""DamageCount"") damage in a single hit, apply an additional $ParameterInt(""Stack"") stacks of $Keyword(""Basic_WoundDeterioration"").","你单次造成至少$ParameterInt(""DamageCount"")点的伤害时,额外给予$ParameterInt(""Stack"")%层$Keyword(""Basic_WoundDeterioration"")。","你單次造成至少$ParameterInt(""DamageCount"")點的傷害時,額外給予$ParameterInt(""Stack"")%層$Keyword(""Basic_WoundDeterioration"")。","1回で$ParameterInt(""DamageCount"")点以上のダメージを与えた時、追加で$ParameterInt(""Stack"")%層の$Keyword(""Basic_WoundDeterioration"")を付与する。","한 번에 최소 $ParameterInt(""DamageCount"")의 피해를 줄 때, $ParameterInt(""Stack"")% 층의 $Keyword(""Basic_WoundDeterioration"") 효과를 추가로 부여합니다.","Khi bạn gây ít nhất $ParameterInt(""DamageCount"") sát thương trong 1 lần, áp dụng thêm $ParameterInt(""Stack"")% tầng $Keyword(""Basic_WoundDeterioration"").","เมื่อคุณสร้างความเสียหายอย่างน้อย $ParameterInt(""DamageCount"") หน่วยในครั้งเดียว, มอบสถานะ $Keyword(""Basic_WoundDeterioration"") เพิ่มเติม $ParameterInt(""Stack"")% ชั้น." Buff_Basic_Sharpness_DisplayName,Sharpness,锋利,鋒利,鋭利,예리함,Sắc Bén,ความคม Buff_Basic_Sharpness_FunctionText,"The next attack deals an additional $ParameterInt(""Stack"") damage and removes all stacks.","下次攻击将造成额外$ParameterInt(""Stack"")点伤害并失去所有层数。","下次攻擊將造成額外$ParameterInt(""Stack"")點傷害並失去所有層數。","次の攻撃で追加の$ParameterInt(""Stack"")点のダメージを与え、全ての層数を失う。","다음 공격은 $ParameterInt(""Stack"")의 추가 피해를 주며 모든 중첩을 소모합니다.","Đòn tấn công tiếp theo sẽ gây thêm $ParameterInt(""Stack"") sát thương và mất tất cả các tầng.","การโจมตีครั้งถัดไปจะสร้างความเสียหายเพิ่มเติม $ParameterInt(""Stack"") หน่วยและสูญเสียจำนวนชั้นทั้งหมด." Buff_Basic_KnifeTrick_DisplayName,Knife Trick,刀具把戏,刀具把戲,ナイフトリック,단검 묘기,Trò Chơi Dao,กลมีด diff --git a/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv b/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv index 8e481f8a..f4127ee3 100644 --- a/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv +++ b/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv @@ -11,7 +11,7 @@ Card_Basic_Sanctuary_FunctionText,"$Keyword(""Purify"") an ally. $Keyword(""Reuseable"").","$Keyword(""Purify"")一名友方目标。\n$Keyword(""Reuseable"")。","$Keyword(""Purify"")一名友方目標。\n$Keyword(""Reuseable"")。","味方1体を$Keyword(""Purify"")する。\n$Keyword(""Reuseable"")。","아군 1명을 $Keyword(""Purify"").\n$Keyword(""Reuseable"").","$Keyword(""Purify"") 1 đồng minh.\n$Keyword(""Reuseable"").","$Keyword(""Purify"") เพื่อนร่วมทีม 1 คน.\n$Keyword(""Reuseable"")." Card_Basic_ShieldOfDevotion_DisplayName,Shield Of Devotion,虔诚护盾,虔誠護盾,信仰の盾,경건의 방패,Khiên Sùng Kính,โล่แห่งศรัทธา Card_Basic_ShieldOfDevotion_FunctionText,"$Keyword(""Blessing""). -Gain $Attribute(""BuffStack"") stacks of $Keyword(""Basic_Sharpness"").","$Keyword(""Blessing"")。\n获得$Attribute(""BuffStack"")层$Keyword(""Basic_Sharpness"")。","$Keyword(""Blessing"")。\n獲得$Attribute(""BuffStack"")層$Keyword(""Basic_Sharpness"")。","$Keyword(""Blessing"")。\n$Attribute(""BuffStack"")層の$Keyword(""Basic_Sharpness"")を得る。","$Keyword(""Blessing"")。\n$Attribute(""BuffStack"") 층의 $Keyword(""Basic_Sharpness"") 효과를 얻습니다.","$Keyword(""Blessing"").\nNhận $Attribute(""BuffStack"") tầng $Keyword(""Basic_Sharpness"").","$Keyword(""Blessing"").\nได้รับ $Keyword(""Basic_Sharpness"") จำนวน $Attribute(""BuffStack"") ชั้น." +Gain $Attribute(""BuffStack"") stacks of $Keyword(""Basic_Withstand"").","$Keyword(""Blessing"")。\n获得$Attribute(""BuffStack"")层$Keyword(""Basic_Withstand"")。","$Keyword(""Blessing"")。\n獲得$Attribute(""BuffStack"")層$Keyword(""Basic_Withstand"")。","$Keyword(""Blessing"")。\n$Attribute(""BuffStack"")層の$Keyword(""Basic_Withstand"")を得る。","$Keyword(""Blessing"")。\n$Attribute(""BuffStack"") 층의 $Keyword(""Basic_Withstand"") 효과를 얻습니다.","$Keyword(""Blessing"").\nNhận $Attribute(""BuffStack"") tầng $Keyword(""Basic_Withstand"").","$Keyword(""Blessing"").\nได้รับ $Keyword(""Basic_Withstand"") จำนวน $Attribute(""BuffStack"") ชั้น." Card_Basic_FreedomOfMovement_DisplayName,Freedom Of Movement,行动自如,行動自如,フリーダム・オブ・ムーブメント,자유로운 행동,Di Chuyển Tự Do,อิสระแห่งการเคลื่อนไหว Card_Basic_FreedomOfMovement_FunctionText,"$Keyword(""Blessing""). Whenever you play a Power card, draw $Attribute(""BuffStack"") cards.","$Keyword(""Blessing"")。\n每打出一张能力牌,抽$Attribute(""BuffStack"")张牌。","$Keyword(""Blessing"")。\n每打出一張能力牌,抽$Attribute(""BuffStack"")張牌。","$Keyword(""Blessing"")。\nパワーカードをプレイするたび、カードを$Attribute(""BuffStack"")枚引く。","$Keyword(""Blessing"")。\n능력 카드를 사용할 때마다, 카드 $Attribute(""BuffStack"")장을 뽑습니다.","$Keyword(""Blessing"").\nMỗi khi đánh ra 1 lá bài Năng Lực, rút $Attribute(""BuffStack"") lá bài.","$Keyword(""Blessing"").\nทุกครั้งที่เล่นการ์ดพาวเวอร์, จั่วการ์ด $Attribute(""BuffStack"") ใบ." diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index 9ab3de3a..0d7ecb24 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -1118,7 +1118,6 @@ GameObject: - component: {fileID: 288463699} - component: {fileID: 288463701} - component: {fileID: 288463700} - - component: {fileID: 288463703} - component: {fileID: 288463702} m_Layer: 5 m_Name: RoundHint @@ -1166,7 +1165,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Round_Hint + m_text: "\u7B2C1\u56DE\u5408" m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: bed6ac8052bf6ad45ab264ebde048831, type: 2} m_sharedMaterial: {fileID: 2100000, guid: fd63410a2dd495a45957bf7bed05ac10, type: 2} @@ -1259,45 +1258,6 @@ MonoBehaviour: m_EditorClassIdentifier: I2::I2.Loc.LocalizationParamsManager _Params: [] _IsGlobalManager: 0 ---- !u!114 &288463703 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288463698} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3} - m_Name: - m_EditorClassIdentifier: I2::I2.Loc.Localize - mTerm: Game UI/Round_Hint - mTermSecondary: - PrimaryTermModifier: 0 - SecondaryTermModifier: 0 - TermPrefix: - TermSuffix: - LocalizeOnAwake: 1 - IgnoreRTL: 0 - MaxCharactersInRTL: 0 - IgnoreNumbersInRTL: 1 - CorrectAlignmentForRTL: 1 - AddSpacesToJoinedLanguages: 0 - AllowLocalizedParameters: 1 - AllowParameters: 1 - TranslatedObjects: [] - LocalizeEvent: - m_PersistentCalls: - m_Calls: [] - AlwaysForceLocalize: 0 - LocalizeCallBack: - Target: {fileID: 0} - MethodName: - mGUI_ShowReferences: 0 - mGUI_ShowTems: 1 - mGUI_ShowCallback: 0 - mLocalizeTarget: {fileID: 1808410751} - mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI --- !u!1 &317741247 GameObject: m_ObjectHideFlags: 0 @@ -3077,6 +3037,7 @@ MonoBehaviour: cardSpacingBase: 100 cardSpacingFactor: 500 maxVerticalOffset: 50 + cardSpacing: 0 --- !u!1 &699256281 GameObject: m_ObjectHideFlags: 0 @@ -4287,6 +4248,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b08e47804e080294d876b08f0556a4bb, type: 3} m_Name: m_EditorClassIdentifier: + characterController: + combatCharacterViews: [] currentRound: 0 currentActionIndex: 0 --- !u!1 &922348734 @@ -8214,23 +8177,6 @@ RectTransform: m_AnchoredPosition: {x: -785, y: -150} m_SizeDelta: {x: 250, y: 390} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1808410751 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 481ab606793a67349be805c13febeba0, type: 3} - m_Name: - m_EditorClassIdentifier: I2::I2.Loc.LocalizeTarget_TextMeshPro_UGUI - mTarget: {fileID: 288463700} - mAlignment_RTL: 516 - mAlignment_LTR: 513 - mAlignmentWasRTL: 0 - mInitializeAlignment: 1 --- !u!1 &1808733956 GameObject: m_ObjectHideFlags: 0 @@ -9563,13 +9509,13 @@ AudioSource: m_audioClip: {fileID: 0} m_Resource: {fileID: 0} m_PlayOnAwake: 0 - m_Volume: 1 + m_Volume: 0.5 m_Pitch: 1 - Loop: 0 + Loop: 1 Mute: 0 Spatialize: 0 SpatializePostEffects: 0 - Priority: 128 + Priority: 192 DopplerLevel: 1 MinDistance: 1 MaxDistance: 500 diff --git a/Assets/Scripts/MainGame/Audio/AudioManager.cs b/Assets/Scripts/MainGame/Audio/AudioManager.cs index 7f97f82e..2725b74a 100644 --- a/Assets/Scripts/MainGame/Audio/AudioManager.cs +++ b/Assets/Scripts/MainGame/Audio/AudioManager.cs @@ -1,3 +1,4 @@ +using System; using SLSFramework.General; using SLSFramework.UModAssistance; using UnityEngine; @@ -7,7 +8,12 @@ namespace Continentis.MainGame public partial class AudioManager : Singleton { public AudioSource musicAudioSource; - + + private void Start() + { + PlayBGM("BGM_Basic_MagicalAdventures"); + } + public static AudioClip GetAudio(string audioID) { return ModManager.GetAsset(audioID); diff --git a/Assets/Scripts/MainGame/Base/Interpreters/DynamicTextInterpreter.cs b/Assets/Scripts/MainGame/Base/Interpreters/DynamicTextInterpreter.cs index c3b7d11d..e12fed73 100644 --- a/Assets/Scripts/MainGame/Base/Interpreters/DynamicTextInterpreter.cs +++ b/Assets/Scripts/MainGame/Base/Interpreters/DynamicTextInterpreter.cs @@ -52,7 +52,7 @@ namespace Continentis.MainGame string expressionToEvaluate = template.Substring(startIndex, endIndex - startIndex + 1); string cleanExpression = expressionToEvaluate.Substring(1); - Debug.Log($"Evaluating expression: {cleanExpression}"); + //Debug.Log($"Evaluating expression: {cleanExpression}"); object result = interpreter.Eval(cleanExpression); string resultAsLiteral = result.ToString(); template = template.Substring(0, startIndex) + resultAsLiteral + template.Substring(endIndex + 1); diff --git a/Assets/Scripts/MainGame/Buff/BuffBase.cs b/Assets/Scripts/MainGame/Buff/BuffBase.cs index bbfdf844..75c71c25 100644 --- a/Assets/Scripts/MainGame/Buff/BuffBase.cs +++ b/Assets/Scripts/MainGame/Buff/BuffBase.cs @@ -45,9 +45,9 @@ namespace Continentis.MainGame public partial class BuffBase { - protected bool FindExistingSameBuff(out T2 existingBuff, List buffList) where T1 : BuffBase where T2 : BuffBase + protected bool FindExistingSameBuffs(out List existingBuffs, List buffList) where T1 : BuffBase where T2 : BuffBase { - existingBuff = null; + existingBuffs = new List(); //Debug.Log($"Searching for existing buff of type: {this.GetType()} in buff list of count: {buffList.Count}"); foreach (T1 buff in buffList) { @@ -55,9 +55,8 @@ namespace Continentis.MainGame if (buff.GetType() == this.GetType()) { //Debug.Log("Found existing buff of the same type."); - existingBuff = buff as T2; + existingBuffs.Add(buff as T2); //Debug.Log(existingBuff == null); - return true; } else { @@ -65,7 +64,7 @@ namespace Continentis.MainGame } } - return false; + return existingBuffs.Count > 0; } public abstract void Apply(T attached); diff --git a/Assets/Scripts/MainGame/Card/CardBuff/CardCombatBuffBase.cs b/Assets/Scripts/MainGame/Card/CardBuff/CardCombatBuffBase.cs index e24bcdbd..7227edee 100644 --- a/Assets/Scripts/MainGame/Card/CardBuff/CardCombatBuffBase.cs +++ b/Assets/Scripts/MainGame/Card/CardBuff/CardCombatBuffBase.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.Linq; using Continentis.MainGame.Card; using Continentis.MainGame.Character; @@ -67,7 +68,9 @@ namespace Continentis.MainGame.Card { protected bool FindExistingSameBuff(out T existingBuff) where T : CardBuffBase { - return base.FindExistingSameBuff(out existingBuff, attachedCard.combatBuffSubmodule.buffList); + bool result = FindExistingSameBuffs(out List existingBuffs, attachedCard.combatBuffSubmodule.buffList); + existingBuff = result ? existingBuffs[0] : null; + return result; } public override void Apply(CardInstance attachedCard, CharacterBase sourceCharacter = null) diff --git a/Assets/Scripts/MainGame/Card/CardMainFunctions.cs b/Assets/Scripts/MainGame/Card/CardMainFunctions.cs index 779fe753..affa00eb 100644 --- a/Assets/Scripts/MainGame/Card/CardMainFunctions.cs +++ b/Assets/Scripts/MainGame/Card/CardMainFunctions.cs @@ -170,8 +170,10 @@ namespace Continentis.MainGame.Card /// /// 目标列表 /// 使用者 + /// 是否不消耗资源 /// 打出之前是否进行可用性检测 - public bool Play(List targetList, CharacterBase user = null, bool willCheckBeforePlay = true) + public bool Play(List targetList, CharacterBase user = null, + bool willCheckBeforePlay = true, bool noConsumption = false) { if (handCardView != null) { @@ -188,9 +190,12 @@ namespace Continentis.MainGame.Card if (!willCheckBeforePlay || CheckBeforePlay()) { - this.user.ModifyStamina(-GetAttribute("StaminaCost")); - this.user.ModifyMana(-GetAttribute("ManaCost")); - + if (!noConsumption) + { + this.user.ModifyStamina(-GetAttribute("StaminaCost")); + this.user.ModifyMana(-GetAttribute("ManaCost")); + } + Debug.Log($"Starting to play card: {contentSubmodule.cardName}"); CommandQueueManager.Instance.AddCommand(new Cmd_Function(() => diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs index a711e553..e9edfde1 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs @@ -26,6 +26,11 @@ namespace Continentis.MainGame.Card { card.SetVariableAttribute("Damage", damageOffset, additive, originalDamage); } + + public void SetDamage_Default() + { + SetDamage(0); + } /// /// 斩击伤害计算,伤害=基础伤害+(力量加成+敏捷加成)/2 diff --git a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs index a33f6494..765b022f 100644 --- a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs +++ b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs @@ -57,7 +57,15 @@ namespace Continentis.MainGame.Character { protected bool FindExistingSameBuff(out T existingBuff) where T : CharacterBuffBase { - return FindExistingSameBuff(out existingBuff, attachedCharacter.combatBuffSubmodule.buffList); + bool result = FindExistingSameBuffs(out List existingBuffs, attachedCharacter.combatBuffSubmodule.buffList); + existingBuff = result ? existingBuffs[0] : null; + return result; + } + + protected bool FindExistingSameBuffs(out List existingBuffs) where T : CharacterBuffBase + { + bool result = FindExistingSameBuffs(out existingBuffs, attachedCharacter.combatBuffSubmodule.buffList); + return result; } public override void Apply(CharacterBase attachedCharacter, CharacterBase sourceCharacter = null) diff --git a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs index d067de61..3d496bdc 100644 --- a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs +++ b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs @@ -313,26 +313,6 @@ namespace Continentis.MainGame.Character public virtual void GetIntendedCards() { - bool CanAfford(CardInstance card, int stamina, int mana) - { - return card.GetAttribute("StaminaCost") <= stamina && - card.GetAttribute("ManaCost") <= mana; - } - - bool CheckAvailabilityAndSetTargets(CardInstance card, out List targets) - { - card.DetectTargetsValidity(out List valid, out _, out _); - if (valid.Count == 0) - { - targets = null; - return false; // 无有效目标或无法使用则跳过 - } - - targets = card.SetRandomTargets(valid); - - return true; - } - IntentionBase currentIntention = intentionSubmodule.currentIntention; List availableCards = deckSubmodule.PoolPile; List intended = new List(); @@ -425,5 +405,25 @@ namespace Continentis.MainGame.Character intentionSubmodule.intendedCards.AddRange(intended); } + + bool CanAfford(CardInstance card, int stamina, int mana) + { + return card.GetAttribute("StaminaCost") <= stamina && + card.GetAttribute("ManaCost") <= mana; + } + + public bool CheckAvailabilityAndSetTargets(CardInstance card, out List targets) + { + card.DetectTargetsValidity(out List valid, out _, out _); + if (valid.Count == 0) + { + targets = null; + return false; // 无有效目标或无法使用则跳过 + } + + targets = card.SetRandomTargets(valid); + + return true; + } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs index 39a5a837..919f2bee 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs @@ -73,9 +73,15 @@ namespace Continentis.MainGame.Character public void ActionStart() { + Debug.Log($"{owner.data.displayName} is starting an action. Current action count this round: {owner.actionCountThisRound}"); if (owner.actionCountThisRound == 0) { - buffList.For(buff => buff.roundFirstActionCountSubmodule?.Update()); + Debug.Log($"{owner.data.displayName} is starting their first action this round. Buff count of {buffList.Count} will update their round first action counts."); + buffList.For(buff => + { + Debug.Log($"Updating round first action count for buff: {buff.contentSubmodule.displayName}"); + buff.roundFirstActionCountSubmodule?.Update(); + }); } buffList.For(buff => buff.actionCountSubmodule?.Update()); diff --git a/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs b/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs index 9669d030..e63184e0 100644 --- a/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs +++ b/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Continentis.MainGame.Character; +using DG.Tweening; using Lean.Pool; using SLSFramework.UModAssistance; using UnityEngine; @@ -67,8 +68,7 @@ namespace Continentis.MainGame.Combat combatCharacterViews.Add(view); } - SetViewPositions(); - SetViewHUDs(); + SetViewPositions(0); //ModManager.CreateInstance("Basic.Buffs.Weak", 2).Apply(enemies[0]); } @@ -90,7 +90,7 @@ namespace Continentis.MainGame.Combat npc.InitializeCards(); Vector3 eulerAngles = fraction == Fraction.Enemy ? new Vector3(0, 180, 0) : Vector3.zero; - CombatCharacterViewBase view = npc.GenerateCharacterView(new Vector3(0, -2, 0)); + CombatCharacterViewBase view = npc.GenerateCharacterView(new Vector3(0, -1, 0)); view.mainView.transform.localEulerAngles = eulerAngles; npcs[fraction].Add(npc); @@ -99,10 +99,9 @@ namespace Continentis.MainGame.Combat } SetViewPositions(); - SetViewHUDs(); } - public void SetViewPositions() + public void SetViewPositions(float transitionDuration = 0.25f) { float playerSideLeftBound = -7.5f; float playerSideRightBound = -1.5f; @@ -118,7 +117,19 @@ namespace Continentis.MainGame.Combat { float xPos = playerSideLeftBound + index * playerBaseInterval; Vector3 position = new Vector3(xPos, -1, 0); - playerHeroes[index].characterView.transform.position = position; + + if (transitionDuration > 0f) + { + playerHeroes[index].characterView.transform.DOMove(position, transitionDuration) + .SetEase(Ease.InOutSine) + .OnComplete(SetViewHUDs) + .Play(); + } + else + { + playerHeroes[index].characterView.transform.position = position; + SetViewHUDs(); + } } @@ -136,7 +147,18 @@ namespace Continentis.MainGame.Combat { float xPos = enemySideLeftBound + index * enemyBaseInterval; Vector3 position = new Vector3(xPos, -1, 0); - enemies[index].characterView.transform.position = position; + if (transitionDuration > 0f) + { + enemies[index].characterView.transform.DOMove(position, transitionDuration) + .SetEase(Ease.InOutSine) + .OnComplete(SetViewHUDs) + .Play(); + } + else + { + enemies[index].characterView.transform.position = position; + SetViewHUDs(); + } } Debug.Log($"Enemy are sorted: {string.Join(", ", enemies.Select(e => e.data.displayName))}"); @@ -207,7 +229,6 @@ namespace Continentis.MainGame.Combat Object.Destroy(character.characterView.gameObject); SetViewPositions(); - SetViewHUDs(); } } diff --git a/Assets/Scripts/MainGame/Combat/CombatMainManager.cs b/Assets/Scripts/MainGame/Combat/CombatMainManager.cs index 5be9b203..ccabef71 100644 --- a/Assets/Scripts/MainGame/Combat/CombatMainManager.cs +++ b/Assets/Scripts/MainGame/Combat/CombatMainManager.cs @@ -149,14 +149,14 @@ namespace Continentis.MainGame.Combat currentCharacter = characterController.actionOrderList[0]; currentCharacter.eventSubmodule.onActionStart.Invoke(); + currentCharacter.combatBuffSubmodule.ActionStart(); currentCharacter.recordSubmodule.SetAction(currentRound, ++currentActionIndex); - + if (currentCharacter is PlayerHero playerHero) { CombatMainPage combatMainPage = CombatUIManager.Instance.combatMainPage; playerHero.deckSubmodule.SetUpHandCardViews(); - playerHero.combatBuffSubmodule.ActionStart(); combatMainPage.handPile.isUpdatingLayout = false; CommandQueueManager.Instance.AddCommand(playerHero.deckSubmodule.DrawCards(playerHero.GetAttribute("DrawCardAmountPerAction"))); @@ -191,8 +191,14 @@ namespace Continentis.MainGame.Combat CommandQueueManager.Instance.AddCommand(new Cmd_Function(0.25f, null)); foreach (IntendedCard intendedCard in currentCharacter.intentionSubmodule.intendedCards) { - CommandQueueManager.Instance.AddCommand(new Cmd_Function(0.25f, () => intendedCard.cardInstance.DestroyIntentionCardView())); - intendedCard.cardInstance.Play(intendedCard.targets, currentCharacter, false); + //TODO: 临时的,刷新一次意图目标 + currentCharacter.CheckAvailabilityAndSetTargets(intendedCard.cardInstance, out intendedCard.targets); + + CommandQueueManager.Instance.AddCommand(new Cmd_Function(0.25f, () => + { + intendedCard.cardInstance.Play(intendedCard.targets, currentCharacter); + intendedCard.cardInstance.DestroyIntentionCardView(); + })); } CommandQueueManager.Instance.AddCommand(new Cmd_Function(0f, EndAction)); } diff --git a/Assets/Scripts/MainGame/Commands/Cmd_DrawCards.cs b/Assets/Scripts/MainGame/Commands/Cmd_DrawCards.cs index 8b6f855b..58d8c413 100644 --- a/Assets/Scripts/MainGame/Commands/Cmd_DrawCards.cs +++ b/Assets/Scripts/MainGame/Commands/Cmd_DrawCards.cs @@ -18,7 +18,7 @@ namespace Continentis.MainGame.Commands private readonly bool isCustomDraw; private readonly int drawCount; private readonly float interval; - private readonly float singleCardAnimationDuration = 0.5f; // 单张卡牌的动画时长 + private readonly float singleCardAnimationDuration = 0.4f; // 单张卡牌的动画时长 private readonly List customDrawCards; diff --git a/Assets/Scripts/MainGame/UI/CombatMainPage/HandPile.cs b/Assets/Scripts/MainGame/UI/CombatMainPage/HandPile.cs index 97ebf063..513cd098 100644 --- a/Assets/Scripts/MainGame/UI/CombatMainPage/HandPile.cs +++ b/Assets/Scripts/MainGame/UI/CombatMainPage/HandPile.cs @@ -1,4 +1,5 @@ using System; +using NaughtyAttributes; using UnityEngine; namespace Continentis.MainGame.UI @@ -13,6 +14,10 @@ namespace Continentis.MainGame.UI public float cardSpacingFactor = 500f; // 手牌间距调整因子 public float maxVerticalOffset = 50f; // 控制最外侧卡牌的垂直偏移 + [SerializeField] + [ReadOnly] + private float cardSpacing; + private void Update() { if (isUpdatingLayout) @@ -26,7 +31,7 @@ namespace Continentis.MainGame.UI if (count == 0 || index < 0) return Vector2.zero; - float cardSpacing = cardSpacingBase + Mathf.Max((cardSpacingFactor - (count * 20)), -200) / count; + cardSpacing = cardSpacingBase + Mathf.Max((cardSpacingFactor - (count * 40)), -200) / count; // 计算中间索引,保证手牌居中排列 float midIndex = (count - 1) / 2f; diff --git a/Assets/Scripts/MainGame/UI/CombatMainPage/PileBase.cs b/Assets/Scripts/MainGame/UI/CombatMainPage/PileBase.cs index db873c93..be855e6b 100644 --- a/Assets/Scripts/MainGame/UI/CombatMainPage/PileBase.cs +++ b/Assets/Scripts/MainGame/UI/CombatMainPage/PileBase.cs @@ -15,6 +15,7 @@ namespace Continentis.MainGame.UI { base.Awake(); cardViews = new List(); + UpdateCountText(); } public virtual void AddCard(CardViewBase cardObject) diff --git a/Assets/Scripts/ScriptExtensions/General/ListExtension.cs b/Assets/Scripts/ScriptExtensions/General/ListExtension.cs index 72b9c54b..ffb3ef59 100644 --- a/Assets/Scripts/ScriptExtensions/General/ListExtension.cs +++ b/Assets/Scripts/ScriptExtensions/General/ListExtension.cs @@ -10,12 +10,20 @@ namespace SLSFramework.General { /// /// 对列表中的每个元素执行指定的操作 + /// 可以处理在迭代过程中移除元素的情况 /// - public static void For(this IList list, System.Action action) + public static void For(this IList list, Action action) { for (var index = 0; index < list.Count; index++) { + int initialCount = list.Count; + action(list[index]); + + if (list.Count < initialCount) + { + index--; + } } }