diff --git a/Assets/Mods/Basic/Basic_Manifest.asset b/Assets/Mods/Basic/Basic_Manifest.asset index bd8cee8e..d80b8e48 100644 --- a/Assets/Mods/Basic/Basic_Manifest.asset +++ b/Assets/Mods/Basic/Basic_Manifest.asset @@ -92,12 +92,13 @@ MonoBehaviour: hudDataIDList: - HUDData_Basic_Default localizationFiles: - - {fileID: 4900000, guid: 9072c63645396754ab7c90a266d2e6f8, type: 3} + - {fileID: 4900000, guid: b07b620f4c7256843b55609e43977ced, type: 3} + - {fileID: 4900000, guid: 189619dba501d344ea1d0f59202d9e6d, type: 3} - {fileID: 4900000, guid: c3a2d38972f95ed41aa340ad6c5ca3b5, type: 3} - - {fileID: 4900000, guid: dae5bc8e90366584ca78827dfe470a23, type: 3} - - {fileID: 4900000, guid: 769aea741717c4a4bbf3c474056da92f, type: 3} - - {fileID: 4900000, guid: e1ad01987651df444878ed7e1da1b9c8, type: 3} - {fileID: 4900000, guid: 5d66745b8665526429012762a60469bd, type: 3} - {fileID: 4900000, guid: b8e11e42fa0f82c41a2cb84cd79ccb79, type: 3} + - {fileID: 4900000, guid: dae5bc8e90366584ca78827dfe470a23, type: 3} + - {fileID: 4900000, guid: 9072c63645396754ab7c90a266d2e6f8, type: 3} - {fileID: 4900000, guid: 240d7d7c1050c1c498575d637265ab32, type: 3} - - {fileID: 4900000, guid: 189619dba501d344ea1d0f59202d9e6d, type: 3} + - {fileID: 4900000, guid: 769aea741717c4a4bbf3c474056da92f, type: 3} + - {fileID: 4900000, guid: e1ad01987651df444878ed7e1da1b9c8, type: 3} 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 506fd478..fe96e8d5 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 @@ -43,17 +43,13 @@ MonoBehaviour: index: 3 isKeyDuplicated: 0 - Key: BuffStack_WD - Value: 1 + Value: 4 index: 4 isKeyDuplicated: 0 - Key: DamageCount Value: 20 index: 5 isKeyDuplicated: 0 - - Key: BuffStack_Corrosion - Value: 4 - index: 6 - isKeyDuplicated: 0 dividerPosProp: 0.5 originalAttributes: dictionaryList: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_BattlefieldExperience.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_BattlefieldExperience.asset index 457b1a58..0f8c4ecf 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_BattlefieldExperience.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_BattlefieldExperience.asset @@ -54,5 +54,5 @@ MonoBehaviour: customDescriptions: [] prefabRefs: [] derivativeCardDataRefs: - - CardData_Basic_Strike + - CardData_Basic_Tactic derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Scripts/Assassin/WoundDeterioration.cs b/Assets/Mods/Basic/Cards/Scripts/Assassin/WoundDeterioration.cs index a38cc01a..15959811 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Assassin/WoundDeterioration.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Assassin/WoundDeterioration.cs @@ -14,7 +14,7 @@ namespace Continentis.Mods.Basic.Cards CommandGroup mainGroup = TargetListCommandGroup(targetList, new Cmd_ParamFunction(0.05f, target => { - CreateCharacterBuff(GetAttribute("BuffStack_WD")).Apply(target, user, this); + CreateCharacterBuff(GetAttribute("BuffStack_WD"), GetAttribute("DamageCount")).Apply(target, user, this); })); return new List { mainGroup }; } diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/BattlefieldExperience.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/BattlefieldExperience.cs index caafa95d..66029fe4 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/BattlefieldExperience.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/BattlefieldExperience.cs @@ -20,8 +20,8 @@ namespace Continentis.Mods.Basic.Cards mainGroup.AddCommand(new Cmd_PlayAnimation(user.characterView, "Skill")); mainGroup.AddCommand(new Cmd_Function(() => { - CardData holyWaterCardData = GetDerivativeCardData(0); - CardInstance.GenerateCardInstance(holyWaterCardData, user.team, "Hand"); + CardData tacticData = GetDerivativeCardData(0); + CardInstance.GenerateCardInstance(tacticData, user.team, "Hand"); })); return new List { mainGroup }; diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs index 3a2baebb..9c584758 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs @@ -30,7 +30,10 @@ namespace Continentis.Mods.Basic.Cards } CommandGroup occupiedGroup = new CommandGroup(ExecutionMode.Sequential, new Cmd_Function(1, ()=> { - Debug.Log("不插队指令,先于攻击触发,如果先执行抽牌说明插队成功"); + CommandQueueManager.Instance.AddCommand(new Cmd_Function(() => + { + Debug.Log("插队指令,等待动画播放完毕"); + }), false); })); CommandGroup mainGroup = TargetListCommandGroup(targetList, ExecutionMode.Sequential, ExecutionMode.Sequential, templates.ToArray()); CommandGroup finalGroup = new CommandGroup(ExecutionMode.Sequential, new Cmd_Function(()=> @@ -39,7 +42,7 @@ namespace Continentis.Mods.Basic.Cards })); CommandGroup firstGroup = new CommandGroup(ExecutionMode.Sequential, new Cmd_Function(()=> { - Debug.Log("插队指令,先抽牌"); + Debug.Log("插队指令,抽牌"); }), new Cmd_DrawCards(user.deckSubmodule, 1)); firstGroup.insertAtFirst = true; diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs index 88b87f12..cf917063 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs @@ -16,8 +16,6 @@ namespace Continentis.Mods.Basic.Cards protected override List PlayEffect(List targetList) { - base.PlayEffect(targetList); - CommandGroup mainGroup = TargetListCommandGroup(targetList, new Cmd_PlayAnimation(user.characterView, "Attack"), new Cmd_ParamFunction(target => diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/WoundDeterioration.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/WoundDeterioration.cs index 2e425d66..dae30402 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/WoundDeterioration.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/WoundDeterioration.cs @@ -1,18 +1,32 @@ using Continentis.MainGame; using Continentis.MainGame.Character; +using SLSFramework.General; using UnityEngine; namespace Continentis.Mods.Basic.Buffs { public class WoundDeterioration : CharacterCombatBuffBase { - public WoundDeterioration(int stack) + private int damageCount; + + public WoundDeterioration(int stack, int damageCount) { Initialize(BuffType.Positive, BuffDispelLevel.Basic); + this.damageCount = damageCount; this.contentSubmodule = new ContentSubmodule(this) - .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); + .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()) + .AddParameterGetter("DamageCount", damageCount.ToString); + this.iconSubmodule = new IconSubmodule(this); this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); + this.eventSubmodule = new EventSubmodule(this); + this.eventSubmodule.onDealAttack.Add("WoundDeterioration", new PrioritizedAction(atkRes => + { + if (atkRes.hurtDamage >= 20) + { + CreateCharacterBuff(this.unitedStackSubmodule.stackAmount).Apply(atkRes.target, atkRes.attacker); + } + })); //TODO: When character damage exceed 20, apply corrision //this.attachedCharacter.eventSubmodule.onFinishAttack.Add; } @@ -23,8 +37,10 @@ namespace Continentis.Mods.Basic.Buffs if (FindExistingSameBuff(out existingBuff)) { + WoundDeterioration existing = existingBuff as WoundDeterioration; + existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); - existingBuff.actionCountSubmodule.PickHigherCount(this.actionCountSubmodule); + existing!.damageCount = Mathf.Min(existing.damageCount, this.damageCount); return false; } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs index bf591cfb..99659ee7 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs @@ -28,7 +28,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnGetAttacked(AttackResult result) { int stackAmount = unitedStackSubmodule.stackAmount; - result.attacker.Attack(attachedCharacter, stackAmount, false, true); + result.attacker.Attack(attachedCharacter, stackAmount, null, false, true); } private void OnActionStart() diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs index da8da6cd..16941eb3 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs @@ -46,7 +46,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnAfterPlayCard(CardInstance card, List targets) { - sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, false, true); + sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, null, false, true); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs index a8c245d8..6438492d 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs @@ -38,7 +38,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnActionStart() { - sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, false, true); + sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, null, false, true); unitedStackSubmodule.ReduceStack(1); iconSubmodule.Update(); } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs index 44fc1c2c..5c9ac41a 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs @@ -24,7 +24,7 @@ namespace Continentis.Mods.Basic.Buffs this.eventSubmodule = new EventSubmodule(this); this.eventSubmodule.onGetAttacked.Add("EstablishFormation", new PrioritizedAction(atkResult => { - attachedCharacter.Attack(atkResult.attacker, unitedStackSubmodule.stackAmount, false, true); + attachedCharacter.Attack(atkResult.attacker, unitedStackSubmodule.stackAmount, null, false, true); })); } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs b/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs index 1cf9afdc..0b241f47 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs @@ -40,7 +40,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnAfterPlayCard(CardInstance card, List targets) { int reducedStack = Mathf.Max(1, Mathf.FloorToInt(unitedStackSubmodule.stackAmount * 0.2f)); - sourceCharacter.Attack(attachedCharacter, reducedStack, true); + sourceCharacter.Attack(attachedCharacter, reducedStack, null, true); unitedStackSubmodule.ReduceStack(reducedStack); iconSubmodule.Update(); } diff --git a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Assassin.asset b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Assassin.asset index 9d7fd3a6..a2549952 100644 --- a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Assassin.asset +++ b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Assassin.asset @@ -206,5 +206,6 @@ MonoBehaviour: - CardData_Basic_Torture - CardData_Basic_CompoundPosion - CardData_Basic_WoundDeterioration + - CardData_Basic_DivineSmite hudDataRefs: - HUDData_Basic_Default diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_WoundDeterioration.png b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_WoundDeterioration.png new file mode 100644 index 00000000..33e3c855 Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_WoundDeterioration.png differ diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_WoundDeterioration.png.meta b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_WoundDeterioration.png.meta new file mode 100644 index 00000000..23133bc5 --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_WoundDeterioration.png.meta @@ -0,0 +1,119 @@ +fileFormatVersion: 2 +guid: ad17795194f70134c997e767d8f2f45a +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/Scenes/MenuScene.unity b/Assets/Scenes/MenuScene.unity index 131dd4b9..6d7e90e1 100644 --- a/Assets/Scenes/MenuScene.unity +++ b/Assets/Scenes/MenuScene.unity @@ -2630,7 +2630,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 960.00006, y: -60.445} + m_AnchoredPosition: {x: 960, y: -60.445} m_SizeDelta: {x: 500.07, y: 80.89} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1914150234 diff --git a/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs b/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs index 61de646b..f9a815a4 100644 --- a/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs +++ b/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs @@ -128,6 +128,7 @@ namespace Continentis.MainGame public OrderedDictionary> onOpponentDecideAction; //对手AI决定行动时,参数为对手,和原定的目标角色 + public OrderedDictionary> onDealAttack; //造成伤害后,参数为伤害结果 public OrderedDictionary> onGetAttacked; //被攻击后,参数为伤害结果 public OrderedDictionary> onDrawCard; //抽到卡牌时 @@ -147,6 +148,7 @@ namespace Continentis.MainGame onActionStart = new OrderedDictionary(); onActionEnd = new OrderedDictionary(); + onDealAttack = new OrderedDictionary>(); onGetAttacked = new OrderedDictionary>(); onOpponentDecideAction = new OrderedDictionary>(); diff --git a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs index 850e23f9..33e991a1 100644 --- a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs +++ b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs @@ -76,10 +76,13 @@ namespace Continentis.MainGame.Character /// 是否无视格挡 /// 是否无视护盾 /// 实际造成的伤害 - public AttackResult Attack(CharacterBase target, int startDamage, bool triggerAttackEvent = true, bool ignoreDodge = false, bool ignoreBlock = false, bool ignoreShield = false) + public AttackResult Attack(CharacterBase target, int startDamage, CardInstance attackCard = null, bool triggerAttackEvent = true, bool ignoreDodge = false, bool ignoreBlock = false, bool ignoreShield = false) { - eventSubmodule.onStartAttack.Invoke(new List { target }); - + if (triggerAttackEvent) + { + eventSubmodule.onStartAttack.Invoke(target); + } + //闪避检测:如果闪避成功,直接结束 int modifiedStartDamageForDodge = Mathf.RoundToInt(startDamage * GetRawAttribute("DodgeCheckStartDamageMultiplier", 1)); bool dodged = !ignoreDodge && target.CheckDodge(modifiedStartDamageForDodge); @@ -105,10 +108,14 @@ namespace Continentis.MainGame.Character } target.characterView.hudContainer.enablingHUDs["MainAttributesBar"].UpdateHud(); - AttackResult attackResult = new AttackResult(this, startDamage, dodged, blocked, shielded, hurt); + AttackResult attackResult = new AttackResult(this, target, startDamage, attackCard, dodged, blocked, shielded, hurt); if (triggerAttackEvent) { - eventSubmodule.onFinishAttack.Invoke(new List { target }, new List { attackResult }); + eventSubmodule.onFinishAttack.Invoke(target, attackResult); + combatBuffSubmodule.buffList.For(buff => + { + buff.eventSubmodule.onDealAttack.Invoke(attackResult); + }); } return attackResult; diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs index 8ad41896..4263eb58 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs @@ -14,8 +14,8 @@ namespace Continentis.MainGame.Character public OrderedDictionary onRoundStart; //每回合开始时 public OrderedDictionary onRoundEnd; //每回合结束时 - public OrderedDictionary>> onStartAttack; //开始攻击时,参数为被攻击目标列表 - public OrderedDictionary, List>> onFinishAttack; //完成攻击时,参数为被攻击目标列表和对应的攻击结果列表 + public OrderedDictionary> onStartAttack; //开始攻击时,参数为被攻击目标 + public OrderedDictionary> onFinishAttack; //完成攻击时,参数为被攻击目标和对应的攻击结果 public OrderedDictionary> onGetAttacked; //被攻击时,参数为攻击者和攻击结果 public OrderedDictionary onActionStart; //每次行动开始时 @@ -35,8 +35,8 @@ namespace Continentis.MainGame.Character onActionStart = new OrderedDictionary(); onActionEnd = new OrderedDictionary(); - onStartAttack = new OrderedDictionary>>(); - onFinishAttack = new OrderedDictionary, List>>(); + onStartAttack = new OrderedDictionary>(); + onFinishAttack = new OrderedDictionary>(); onGetAttacked = new OrderedDictionary>(); onBeforePlayCard = new OrderedDictionary>>(); @@ -82,6 +82,8 @@ namespace Continentis.MainGame.Character public class AttackResult { public CharacterBase attacker; //攻击者 + public CharacterBase target; //被攻击者 + public CardInstance attackCard; //使用的攻击卡牌 public int startDamage; //攻击开始时的原始伤害值 public bool isDodged; //是否被闪避 public int blockedDamage; //格挡掉的伤害 @@ -90,9 +92,11 @@ namespace Continentis.MainGame.Character public bool IsHurt => hurtDamage > 0; //是否实际受到伤害 - public AttackResult(CharacterBase attacker, int startDamage, bool isDodged, int blocked, int shielded, int hurt) + public AttackResult(CharacterBase attacker, CharacterBase target, int startDamage, CardInstance attackCard, bool isDodged, int blocked, int shielded, int hurt) { this.attacker = attacker; + this.target = target; + this.attackCard = attackCard; this.startDamage = startDamage; this.isDodged = isDodged; this.blockedDamage = blocked; diff --git a/Assets/Scripts/Mod/Manifests/ModManifest.cs b/Assets/Scripts/Mod/Manifests/ModManifest.cs index 1e098823..efefe3a3 100644 --- a/Assets/Scripts/Mod/Manifests/ModManifest.cs +++ b/Assets/Scripts/Mod/Manifests/ModManifest.cs @@ -67,6 +67,9 @@ namespace Continentis.Mods [Button] private void CollectAllHUDData() => hudDataIDList = CollectData(); + + [Button] + private void CollectAllLocalizations() => localizationFiles = CollectLocalizations(); } public partial class ModManifest @@ -97,6 +100,30 @@ namespace Continentis.Mods Debug.Log($"Collected {collectedDataIDList.Count} CardData assets."); return collectedDataIDList; } + + private List CollectLocalizations() + { + string inEditorModPath = "Assets/Mods/" + inEditorModFolder; + string dataTypeName = nameof(TextAsset); + string[] guids = UnityEditor.AssetDatabase.FindAssets($"t:{dataTypeName}", new[] { inEditorModPath }); + List collectedTextAssets = new List(); + Debug.Log($"Found {guids.Length} TextAsset assets."); + foreach (string guid in guids) + { + string path = UnityEditor.AssetDatabase.GUIDToAssetPath(guid); + string assetFileName = System.IO.Path.GetFileNameWithoutExtension(path); + TextAsset data = UnityEditor.AssetDatabase.LoadAssetAtPath(path); + + if (assetFileName.Contains("Localization")) + { + collectedTextAssets.Add(data); + Debug.Log($"Collected localization TextAsset: {assetFileName}"); + } + } + + Debug.Log($"Collected {collectedTextAssets.Count} localization TextAssets."); + return collectedTextAssets; + } } #endif } \ No newline at end of file