diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_DivineProtection.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_DivineProtection.asset index 0f6aad03..baf502d0 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_DivineProtection.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_DivineProtection.asset @@ -43,7 +43,7 @@ MonoBehaviour: Value: 7 index: 3 isKeyDuplicated: 0 - - Key: BlockStadck + - Key: BlockStack Value: 3 index: 4 isKeyDuplicated: 0 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_FreedomOfMovement.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_FreedomOfMovement.asset index 8746e736..c83ca2db 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_FreedomOfMovement.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_FreedomOfMovement.asset @@ -19,7 +19,7 @@ MonoBehaviour: cardRarity: 10 cardType: 20 keywords: - - TargetAllies + - Blessing - TargetSelf cardSprite: {fileID: 21300000, guid: c7e0489a5e85e65499fcacddb7c1391e, type: 3} cardLayoutTags: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_ShieldOfDevotion.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_ShieldOfDevotion.asset index 02b1ef6d..7bac90e3 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_ShieldOfDevotion.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_ShieldOfDevotion.asset @@ -19,8 +19,8 @@ MonoBehaviour: cardRarity: 10 cardType: 20 keywords: + - Blessing - TargetSelf - - TargetAllies cardSprite: {fileID: 21300000, guid: c7e0489a5e85e65499fcacddb7c1391e, type: 3} cardLayoutTags: [] functionText: Card_Basic_ShieldOfDevotion_FunctionText diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_SpiritGuardian.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_SpiritGuardian.asset index 2a6e3c41..2b99c669 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_SpiritGuardian.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_SpiritGuardian.asset @@ -19,7 +19,7 @@ MonoBehaviour: cardRarity: 10 cardType: 20 keywords: - - TargetAllies + - Blessing - TargetSelf cardSprite: {fileID: 21300000, guid: c7e0489a5e85e65499fcacddb7c1391e, type: 3} cardLayoutTags: [] diff --git a/Assets/Mods/Basic/Cards/Scripts/Cleric/DivineProtection.cs b/Assets/Mods/Basic/Cards/Scripts/Cleric/DivineProtection.cs index 3a26d557..ff0bcf35 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Cleric/DivineProtection.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Cleric/DivineProtection.cs @@ -2,6 +2,7 @@ using Continentis.MainGame.Card; using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; using SLSFramework.General; using System.Collections.Generic; @@ -11,7 +12,21 @@ namespace Continentis.Mods.Basic.Cards.Cleric { protected override List PlayEffect(List targetList) { - return base.PlayEffect(targetList); + base.PlayEffect(targetList); + + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_ParamFunction(0.2f, target => + { + user.AddBlock(GetAttribute("Block")); + })); + + mainGroup.AddCommand(new Cmd_Function(() => + { + this.SetAttribute("Block", this.GetAttribute("Block") + this.GetAttribute("BlockStack")); + })); + + return new List { mainGroup }; } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Cleric/DivinePunishment.cs b/Assets/Mods/Basic/Cards/Scripts/Cleric/DivinePunishment.cs index 826b0c5d..24467dd8 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Cleric/DivinePunishment.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Cleric/DivinePunishment.cs @@ -2,8 +2,10 @@ using Continentis.MainGame.Card; using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; using SLSFramework.General; using System.Collections.Generic; +using Unity.VisualScripting; namespace Continentis.Mods.Basic.Cards.Cleric { @@ -11,7 +13,21 @@ namespace Continentis.Mods.Basic.Cards.Cleric { protected override List PlayEffect(List targetList) { - return base.PlayEffect(targetList); + base.PlayEffect(targetList); + + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Attack"), + new Cmd_ParamFunction(0.2f, target => + { + user.Attack(target, GetFinalDamage(target)); + })); + + mainGroup.AddCommand(new Cmd_Function(() => + { + this.SetAttribute("Damage", this.GetAttribute("Damage") + this.GetAttribute("DamageStack")); + })); + + return new List { mainGroup }; } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Cleric/SpiritGuardian.cs b/Assets/Mods/Basic/Cards/Scripts/Cleric/SpiritGuardian.cs index f1418797..15b9883a 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Cleric/SpiritGuardian.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Cleric/SpiritGuardian.cs @@ -2,6 +2,7 @@ using Continentis.MainGame.Card; using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; using SLSFramework.General; using System.Collections.Generic; @@ -11,7 +12,13 @@ namespace Continentis.Mods.Basic.Cards.Cleric { protected override List PlayEffect(List targetList) { - return base.PlayEffect(targetList); + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_ParamFunction(0.01f, target => + { + CreateCharacterBuff(GetAttribute("BuffStack")).Apply(target, user, this); + })); + + return new List { mainGroup }; } } } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs index 99659ee7..4c67ee72 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs @@ -37,5 +37,12 @@ namespace Continentis.Mods.Basic.Buffs unitedStackSubmodule.ReduceStack(reducedStack); iconSubmodule.Update(); } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + //TODO + existingBuff = this; + return true; + } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/CounterAttack.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/CounterAttack.cs new file mode 100644 index 00000000..fa42b762 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/CounterAttack.cs @@ -0,0 +1,45 @@ +using Continentis.MainGame; +using Continentis.MainGame.Character; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Buffs +{ + public class CounterAttack : CharacterCombatBuffBase + { + public CounterAttack(int stack) + { + Initialize(BuffType.Positive, BuffDispelLevel.Strong); + + this.contentSubmodule = new ContentSubmodule(this) + .AddParameterGetter("Stack", () => actionCountSubmodule.remainingCount.ToString()); + + this.iconSubmodule = new IconSubmodule(this); + this.unitedStackSubmodule = new UnitedStackSubmodule(this, true, -1, stack, true); + + this.coreAttributeSubmodule = new CoreAttributeSubmodule(this); + this.coreAttributeSubmodule.numericChange.Add("PhysicsDamageDealtOffset", stack); + + this.eventSubmodule = new EventSubmodule(this); + this.eventSubmodule.onGetAttacked.Add(this.GetType().FullName, new PrioritizedAction(atkResult => + { + attachedCharacter.Attack(atkResult.attacker, unitedStackSubmodule.stackAmount, null, false, true); + })); + } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + MainGameManager.Instance.basePrefabs.GenerateInfoText("Counter Attack", attachedCharacter.characterView); + if (FindExistingSameBuff(out existingBuff)) + { + existingBuff.unitedStackSubmodule.ModifyStack(this.unitedStackSubmodule.stackAmount); + + int newStack = existingBuff.unitedStackSubmodule.stackAmount; + existingBuff.coreAttributeSubmodule.numericChange["PhysicsDamageDealtOffset"] = newStack; + return false; + } + + return true; + } + } +} diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/CounterAttack.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/General/CounterAttack.cs.meta new file mode 100644 index 00000000..66a4e50d --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/CounterAttack.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4ed1ea7f3f7fad342a08a53bb00a0288 \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs index 5c9ac41a..99d69739 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs @@ -14,31 +14,35 @@ namespace Continentis.Mods.Basic.Buffs this.contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()) .AddParameterGetter("Count", () => actionCountSubmodule.remainingCount.ToString()); - + this.iconSubmodule = new IconSubmodule(this); - + this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); - + this.actionCountSubmodule = new CountSubmodule(this, count); - + this.eventSubmodule = new EventSubmodule(this); this.eventSubmodule.onGetAttacked.Add("EstablishFormation", new PrioritizedAction(atkResult => { attachedCharacter.Attack(atkResult.attacker, unitedStackSubmodule.stackAmount, null, false, true); })); + + this.eventSubmodule.onRoundStart.Add("EstablishFormation", new PrioritizedAction(() => + { + this.Remove(); + })); } - - public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); - + if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); existingBuff.actionCountSubmodule.PickHigherCount(this.actionCountSubmodule); return false; } - return true; } } diff --git a/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset b/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset index 9dfcdd37..7f8debd4 100644 --- a/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset +++ b/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset @@ -128,5 +128,11 @@ MonoBehaviour: description: Keyword_Reuseable_Description index: 18 isKeyDuplicated: 0 + - Key: CounterAttack + Value: + name: Keyword_CounterAttack + description: Keyword_CounterAttack_Description + index: 19 + isKeyDuplicated: 0 dividerPosProp: 0.2 - keywordToAdd: Reuseable + keywordToAdd: CounterAttack diff --git a/Assets/Mods/Basic/Localization/Localization_Basic_ClericCards.csv b/Assets/Mods/Basic/Localization/Localization_Basic_ClericCards.csv index 2e931d1d..5c2033ee 100644 --- a/Assets/Mods/Basic/Localization/Localization_Basic_ClericCards.csv +++ b/Assets/Mods/Basic/Localization/Localization_Basic_ClericCards.csv @@ -12,12 +12,12 @@ Card_Basic_ShieldOfDevotion_FunctionText,TODO,,,,,, Card_Basic_FreedomOfMovement_DisplayName,Freedom Of Movement,行动自如,,,,, Card_Basic_FreedomOfMovement_FunctionText,TODO,,,,,, Card_Basic_SpiritGuardian_DisplayName,Spirit Guardian,灵体卫士,,,,, -Card_Basic_SpiritGuardian_FunctionText,TODO,,,,,, +Card_Basic_SpiritGuardian_FunctionText,TODO,$Keyword("Blessing")。\n获得$Attribute("BuffStack")层$Keyword("CounterAttack")。,,,,, Card_Basic_Faith_DisplayName,Faith,信仰,,,,, Card_Basic_Faith_FunctionText,TODO,$Keyword("Exhaustible"): $Attribute("ExhaustibleCount")\n抽$Attribute("DrawCount")张牌。,,,,, Card_Basic_DivinePunishment_DisplayName,Divine Punishment,神圣惩击,,,,, -Card_Basic_DivinePunishment_FunctionText,TODO,,,,,, +Card_Basic_DivinePunishment_FunctionText,TODO,造成$Attribute("Damage")点伤害。\n这张牌在本场战斗中的伤害+$Attribute("DamageStack")。,,,,, Card_Basic_DivineProtection_DisplayName,Divine Protection,神圣守护,,,,, -Card_Basic_DivineProtection_FunctionText,TODO,,,,,, +Card_Basic_DivineProtection_FunctionText,TODO,获得$Attribute("Block")点格挡。\n这张牌在本场战斗中的格挡+$Attribute("BlockStack")。,,,,, Card_Basic_ChainBlessing_DisplayName,Chain Blessing,连锁祝福,,,,, Card_Basic_ChainBlessing_FunctionText,TODO,,,,,, diff --git a/Assets/Mods/Basic/Localization/Localization_Basic_GeneralBuffs.csv b/Assets/Mods/Basic/Localization/Localization_Basic_GeneralBuffs.csv index 2981f1a1..1e1b08dd 100644 --- a/Assets/Mods/Basic/Localization/Localization_Basic_GeneralBuffs.csv +++ b/Assets/Mods/Basic/Localization/Localization_Basic_GeneralBuffs.csv @@ -4,11 +4,11 @@ Buff_DispelThreshold_Strong_Suffix,Dispel Threshold: StrongDeath Only,能否被驱散:仅死亡驱散,,,,, Buff_DispelThreshold_Undispellable_Suffix,Dispel Threshold: Undispellable,能否被驱散:不可驱散,,,,, Buff_Basic_Weak_DisplayName,Weak,虚弱,,,,, -Buff_Basic_Weak_FunctionText,"Deal 25% less physics damage, for $ParameterInt(""Count"") actions.","减少25%造成的物理伤害,持续$ParameterInt(""Count"")次行动。",,,,, +Buff_Basic_Weak_FunctionText,"Deal 25% less physics damage, for $ParameterInt(""Count"") actions.",减少25%造成的物理伤害,持续$ParameterInt("Count")次行动。,,,,, Buff_Basic_Vulnerable_DisplayName,Vulnerable,易伤,,,,, -Buff_Basic_Vulnerable_FunctionText,"Increase 50% more physics damage gain, for $ParameterInt(""Count"") actions.","增加50%受到的物理伤害,持续$ParameterInt(""Count"")次行动。",,,,, +Buff_Basic_Vulnerable_FunctionText,"Increase 50% more physics damage gain, for $ParameterInt(""Count"") actions.",增加50%受到的物理伤害,持续$ParameterInt("Count")次行动。,,,,, Buff_Basic_Blind_DisplayName,Blind,目盲,,,,, -Buff_Basic_Blind_FunctionText," This character's start damage in Dodge Check is decreased by $ParameterInt(""Stack"")% for $ParameterInt(""Count"") actions.","这个角色在闪避检定中的初始伤害降低$ParameterInt(""Stack"")%,持续$ParameterInt(""Count"")次行动。",,,,, +Buff_Basic_Blind_FunctionText, This character's start damage in Dodge Check is decreased by $ParameterInt("Stack")% for $ParameterInt("Count") actions.,这个角色在闪避检定中的初始伤害降低$ParameterInt("Stack")%,持续$ParameterInt("Count")次行动。,,,,, Buff_Basic_Bleed_DisplayName,Bleed,流血,,,,, Buff_Basic_Bleed_FunctionText,"After you get attacked, receive damage equals to its stack. At the beginning of your action, stack is halved (at least 1).","受到攻击后,受到相当于其堆叠层数的伤害。 @@ -18,28 +18,30 @@ Buff_Basic_Burn_FunctionText,"After you play a card, its stack is reduced by 30% Buff_Basic_Corrosion_DisplayName,Corrosion,腐蚀,,,,, Buff_Basic_Corrosion_FunctionText,"At the beginning of your action, gain damage equals to its stack, then stack is reduced by 1.",在你的行动开始时,获得等于其堆叠层数的伤害,然后其堆叠层数减少 1。,,,,, Buff_Basic_Firm_DisplayName,Firm,坚韧,,,,, -Buff_Basic_Firm_FunctionTextPos,"Gain $ParameterInt(""Stack"") more block from cards.","从卡牌中获得的格挡增加$ParameterInt(""Stack"")点。",,,,, -Buff_Basic_Firm_FunctionTextNeg,"Gain $ParameterAbsInt(""Stack"") less block from cards.","从卡牌中获得的格挡减少$ParameterAbsInt(""Stack"")点。",,,,, +Buff_Basic_Firm_FunctionTextPos,Gain $ParameterInt("Stack") more block from cards.,从卡牌中获得的格挡增加$ParameterInt("Stack")点。,,,,, +Buff_Basic_Firm_FunctionTextNeg,Gain $ParameterAbsInt("Stack") less block from cards.,从卡牌中获得的格挡减少$ParameterAbsInt("Stack")点。,,,,, Buff_Basic_Freeze_DisplayName,Freeze,冻结,,,,, -Buff_Basic_Freeze_FunctionText,"Reduce Speed by $ParameterInt(""Count""), also reduce Dodge Gain by $ParameterInt(""Stack"")% for $ParameterInt(""Count"") actions.","将速度降低$ParameterInt(""Count"")点,同时将 闪避获得降低$ParameterInt(""Stack"")%,持续$ParameterInt(""Count"")次行动。",,,,, +Buff_Basic_Freeze_FunctionText,"Reduce Speed by $ParameterInt(""Count""), also reduce Dodge Gain by $ParameterInt(""Stack"")% for $ParameterInt(""Count"") actions.",将速度降低$ParameterInt("Count")点,同时将 闪避获得降低$ParameterInt("Stack")%,持续$ParameterInt("Count")次行动。,,,,, Buff_Basic_Nimble_DisplayName,Nimble,灵巧,,,,, -Buff_Basic_Nimble_FunctionTextPos,"Gain $ParameterInt(""Stack"") more dodge from cards.","从卡牌中获得的闪避增加$ParameterInt(""Stack"")点。",,,,, -Buff_Basic_Nimble_FunctionTextNeg,"Gain $ParameterAbsInt(""Stack"") less dodge from cards.","从卡牌中获得的闪避减少$ParameterAbsInt(""Stack"")点。",,,,, +Buff_Basic_Nimble_FunctionTextPos,Gain $ParameterInt("Stack") more dodge from cards.,从卡牌中获得的闪避增加$ParameterInt("Stack")点。,,,,, +Buff_Basic_Nimble_FunctionTextNeg,Gain $ParameterAbsInt("Stack") less dodge from cards.,从卡牌中获得的闪避减少$ParameterAbsInt("Stack")点。,,,,, Buff_Basic_Prowess_DisplayName,Prowess,勇猛,,,,, -Buff_Basic_Prowess_FunctionTextPos,"Deal $ParameterInt(""Stack"") more physical damage from cards.","从卡牌中造成的物理伤害增加$ParameterInt(""Stack"")点。",,,,, -Buff_Basic_Prowess_FunctionTextNeg,"Deal $ParameterAbsInt(""Stack"") less physical damage from cards.","从卡牌中造成的物理伤害减少$ParameterAbsInt(""Stack"")点。",,,,, +Buff_Basic_Prowess_FunctionTextPos,Deal $ParameterInt("Stack") more physical damage from cards.,从卡牌中造成的物理伤害增加$ParameterInt("Stack")点。,,,,, +Buff_Basic_Prowess_FunctionTextNeg,Deal $ParameterAbsInt("Stack") less physical damage from cards.,从卡牌中造成的物理伤害减少$ParameterAbsInt("Stack")点。,,,,, Buff_Basic_Resonance_DisplayName,Resonance,共鸣,,,,, -Buff_Basic_Resonance_FunctionTextPos,"Deal $ParameterInt(""Stack"") more magical damage from cards.","从卡牌中造成的魔法伤害增加$ParameterInt(""Stack"")点。",,,,, -Buff_Basic_Resonance_FunctionTextNeg,"Deal $ParameterAbsInt(""Stack"") less magical damage from cards.","从卡牌中造成的魔法伤害减少$ParameterAbsInt(""Stack"")点。",,,,, +Buff_Basic_Resonance_FunctionTextPos,Deal $ParameterInt("Stack") more magical damage from cards.,从卡牌中造成的魔法伤害增加$ParameterInt("Stack")点。,,,,, +Buff_Basic_Resonance_FunctionTextNeg,Deal $ParameterAbsInt("Stack") less magical damage from cards.,从卡牌中造成的魔法伤害减少$ParameterAbsInt("Stack")点。,,,,, Buff_Basic_Hellfire_DisplayName,Hellfire,冥火,,,,, Buff_Basic_Hellfire_FunctionText,"After you play a card, stack is reduced by 20% (at least 1), receive damage equals to the reduced stacks. It will enhance the effects of some of Marshal's cards.","打出一张牌后,堆叠层数减少20%(至少减少1),并受到等于减少层数的伤害。 冥火将增强元帅的一些卡牌的效果。",,,,, Buff_Basic_SoulAbsorption_DisplayName,Soul Absorption,灵魂汲取,,,,, -Buff_Basic_SoulAbsorption_FunctionText,"Amplify the lifesteal effect by $ParameterInt(""Stack"")%.","提升吸血效果$ParameterInt(""Stack"")%。",,,,, +Buff_Basic_SoulAbsorption_FunctionText,Amplify the lifesteal effect by $ParameterInt("Stack")%.,提升吸血效果$ParameterInt("Stack")%。,,,,, Buff_Basic_Heavy_DisplayName,Heavy,沉重,,,,, Buff_Basic_Heavy_FunctionText,You can not draw cards.,你不能抽牌。,,,,, Buff_Basic_Protected_DisplayName,Protected,被保护,,,,, -Buff_Basic_Protected_FunctionText,"You are protected by $ParameterString(""Protector"").",你正在被其他人保护。,,,,, +Buff_Basic_Protected_FunctionText,You are protected by $ParameterString("Protector").,你正在被其他人保护。,,,,, Buff_Basic_Protecting_DisplayName,Protecting,保护,,,,, -Buff_Basic_Protecting_FunctionText,"You are protecting $ParameterString(""Target""), for $ParameterInt(""Count"") rounds.","你正在$ParameterInt(""Count"")回合内保护$ParameterString(""Target"")。",,,,, +Buff_Basic_Protecting_FunctionText,"You are protecting $ParameterString(""Target""), for $ParameterInt(""Count"") rounds.",你正在$ParameterInt("Count")回合内保护$ParameterString("Target")。,,,,, +Buff_Basic_CounterAttack_DisplayName,Counter Attack,反击,,,,, +Buff_Basic_CounterAttack_FunctionText,"Whenever you are attacked, deal $ParameterAbsInt(""Stack"") damage back.",每当你被攻击时,对攻击者造成$ParameterAbsInt("Stack")点伤害。,,,,, diff --git a/Assets/Mods/Basic/Localization/Localization_Basic_GeneralKeywords.csv b/Assets/Mods/Basic/Localization/Localization_Basic_GeneralKeywords.csv index 5082460f..4bf5dfff 100644 --- a/Assets/Mods/Basic/Localization/Localization_Basic_GeneralKeywords.csv +++ b/Assets/Mods/Basic/Localization/Localization_Basic_GeneralKeywords.csv @@ -33,3 +33,5 @@ Keyword_Purify,Purify,净化,,,,, Keyword_Purify_Description,Remove debuffs.,驱散负面效果。,,,,, Keyword_Reuseable,Reuseable,复用,,,,, Keyword_Reuseable_Description,This card will not be discarded after use.,这张卡在使用之后不会被丢弃。,,,,, +Keyword_CounterAttack,Counter Attack,反击,,,,, +Keyword_Reuseable_Description,"Whenever you are attacked, deal damage back equals to the stack amount.",每当你被攻击时,对攻击者造成层数点伤害。,,,,, diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_CounterAttack.png b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_CounterAttack.png new file mode 100644 index 00000000..1b9c1d27 Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_CounterAttack.png differ diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_CounterAttack.png.meta b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_CounterAttack.png.meta new file mode 100644 index 00000000..2c966995 --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_CounterAttack.png.meta @@ -0,0 +1,119 @@ +fileFormatVersion: 2 +guid: 192fe53f9070cfc41bfb26ac39c73d51 +labels: +- UnityAI +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1024 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/MainGame/Card/CardMainFunctions.cs b/Assets/Scripts/MainGame/Card/CardMainFunctions.cs index 4ff14f74..64f1a8b0 100644 --- a/Assets/Scripts/MainGame/Card/CardMainFunctions.cs +++ b/Assets/Scripts/MainGame/Card/CardMainFunctions.cs @@ -83,7 +83,7 @@ namespace Continentis.MainGame.Card } else { - if (HasKeyword("TargetAllies")) + if (HasKeyword("TargetAllies") || HasKeyword("Blessing")) { valid.AddRange(user.fraction is Fraction.Ally or Fraction.Player ? characters.Where(character => character.fraction is Fraction.Ally or Fraction.Player) diff --git a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs index 3301cf33..de8f4c9a 100644 --- a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs +++ b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs @@ -38,11 +38,7 @@ namespace Continentis.MainGame.Character throw new System.NotImplementedException("请使用类型约束更强的OnBuffApply方法"); } - public virtual bool OnBuffApply(out CharacterCombatBuffBase existingBuff) - { - throw new System.NotImplementedException(); //需要在子类中实现 - } - + public abstract bool OnBuffApply(out CharacterCombatBuffBase existingBuff); public override void OnAfterFirstApply() { statusSubmodule?.AddStatus();