From 31ef14b7a83deef2e2274921f51d86af1e69f662 Mon Sep 17 00:00:00 2001 From: xianyi Date: Tue, 26 Aug 2025 15:23:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8A=E8=A1=80=E5=8F=8C=E5=80=8D=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3&=E5=87=BB=E6=9D=80=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Abilities/play/play_damage2.asset | 41 +++++++++++++++ .../Abilities/play/play_damage2.asset.meta | 8 +++ .../Abilities/play/play_damage3.asset | 41 +++++++++++++++ .../Abilities/play/play_damage3.asset.meta | 8 +++ .../Abilities/spells/spell_ally_hp_4.asset | 38 ++++++++++++++ .../spells/spell_ally_hp_4.asset.meta | 8 +++ .../Resources/Cards/Fire/firefox.asset | 5 +- .../TcgEngine/Resources/Cards/Fire/imp.asset | 7 +-- .../Resources/Cards/Forest/tree_angry.asset | 7 +-- .../Resources/Effects/damage_double.asset | 18 +++++++ .../Effects/damage_double.asset.meta | 8 +++ .../Effects/damage_hook_add_all_hp_4.asset | 19 +++++++ .../damage_hook_add_all_hp_4.asset.meta | 8 +++ .../TcgEngine/Scripts/Effects/EffectDamage.cs | 50 ++++++++++++++++++- 14 files changed, 255 insertions(+), 11 deletions(-) create mode 100644 Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset create mode 100644 Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset.meta create mode 100644 Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset create mode 100644 Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset.meta create mode 100644 Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset create mode 100644 Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset.meta create mode 100644 Assets/TcgEngine/Resources/Effects/damage_double.asset create mode 100644 Assets/TcgEngine/Resources/Effects/damage_double.asset.meta create mode 100644 Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset create mode 100644 Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset.meta diff --git a/Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset b/Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset new file mode 100644 index 0000000..07738ac --- /dev/null +++ b/Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset @@ -0,0 +1,41 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: 8ce5f81e5cc37f547af6923758602c8c, type: 3} + m_Name: play_damage2 + m_EditorClassIdentifier: + id: play_deal_damage2 + trigger: 5 + conditions_trigger: [] + target: 30 + conditions_target: + - {fileID: 11400000, guid: 47221d412dc0a014b8a33abb0cbfc773, type: 2} + - {fileID: 11400000, guid: ef09540f94d8428408b69fea46ec3334, type: 2} + - {fileID: 11400000, guid: a1fb3a7171663234280fdfb41c99ab0a, type: 2} + filters_target: [] + effects: + - {fileID: 11400000, guid: 92cd231cc27774c149e82c59d3e72736, type: 2} + status: [] + value: 3 + duration: 0 + chain_abilities: [] + mana_cost: 0 + exhaust: 0 + board_fx: {fileID: 0} + caster_fx: {fileID: 0} + target_fx: {fileID: 9125387663047351618, guid: b66600b51774daa49964ead5c6a00c49, + type: 3} + projectile_fx: {fileID: 0} + cast_audio: {fileID: 0} + target_audio: {fileID: 0} + charge_target: 0 + title: "\u6253\u51FA\u4F24\u5BB3" + desc: "damage_double \u4F24\u5BB3\u7FFB\u500D" diff --git a/Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset.meta b/Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset.meta new file mode 100644 index 0000000..6c2b38b --- /dev/null +++ b/Assets/TcgEngine/Resources/Abilities/play/play_damage2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f729004d1ece04092a037b6b6d40829e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset b/Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset new file mode 100644 index 0000000..9e62f74 --- /dev/null +++ b/Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset @@ -0,0 +1,41 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: 8ce5f81e5cc37f547af6923758602c8c, type: 3} + m_Name: play_damage3 + m_EditorClassIdentifier: + id: play_deal_damage3 + trigger: 5 + conditions_trigger: [] + target: 30 + conditions_target: + - {fileID: 11400000, guid: 47221d412dc0a014b8a33abb0cbfc773, type: 2} + - {fileID: 11400000, guid: ef09540f94d8428408b69fea46ec3334, type: 2} + - {fileID: 11400000, guid: a1fb3a7171663234280fdfb41c99ab0a, type: 2} + filters_target: [] + effects: + - {fileID: 11400000, guid: 82aa37988fd69413b83d98dcd038982c, type: 2} + status: [] + value: 10 + duration: 0 + chain_abilities: [] + mana_cost: 0 + exhaust: 0 + board_fx: {fileID: 0} + caster_fx: {fileID: 0} + target_fx: {fileID: 9125387663047351618, guid: b66600b51774daa49964ead5c6a00c49, + type: 3} + projectile_fx: {fileID: 0} + cast_audio: {fileID: 0} + target_audio: {fileID: 0} + charge_target: 0 + title: "\u6253\u51FA\u4F24\u5BB3" + desc: "damage_double \u4F24\u5BB3\u7FFB\u500D" diff --git a/Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset.meta b/Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset.meta new file mode 100644 index 0000000..d7007da --- /dev/null +++ b/Assets/TcgEngine/Resources/Abilities/play/play_damage3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2cae01651c214277978e2e91d4cc0a2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset b/Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset new file mode 100644 index 0000000..85249d8 --- /dev/null +++ b/Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: 8ce5f81e5cc37f547af6923758602c8c, type: 3} + m_Name: spell_ally_hp_4 + m_EditorClassIdentifier: + id: spell_ally_hp_4 + trigger: 0 + conditions_trigger: [] + target: 10 + conditions_target: + - {fileID: 11400000, guid: 7463bf87d3794e249b7610c9de9c5327, type: 2} + filters_target: [] + effects: + - {fileID: 11400000, guid: fc8261ce93dbc924e859751e098513ad, type: 2} + status: [] + value: 4 + duration: 0 + chain_abilities: [] + mana_cost: 0 + exhaust: 0 + board_fx: {fileID: 0} + caster_fx: {fileID: 0} + target_fx: {fileID: 0} + projectile_fx: {fileID: 0} + cast_audio: {fileID: 0} + target_audio: {fileID: 0} + charge_target: 0 + title: "\u76DF\u53CB\u751F\u547D\u503C" + desc: "\u76DF\u53CB\u751F\u547D\u503C\u3002" diff --git a/Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset.meta b/Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset.meta new file mode 100644 index 0000000..57a0065 --- /dev/null +++ b/Assets/TcgEngine/Resources/Abilities/spells/spell_ally_hp_4.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7f9902097b1a41db9993a832dee3f16 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TcgEngine/Resources/Cards/Fire/firefox.asset b/Assets/TcgEngine/Resources/Cards/Fire/firefox.asset index 4cb1809..308f500 100644 --- a/Assets/TcgEngine/Resources/Cards/Fire/firefox.asset +++ b/Assets/TcgEngine/Resources/Cards/Fire/firefox.asset @@ -23,13 +23,10 @@ MonoBehaviour: mana: 1 attack: 1 hp: 20 - mana_fire: 0 - mana_forest: 0 - mana_water: 0 traits: [] stats: [] abilities: - - {fileID: 11400000, guid: 91c599c9893ab47a69a039c0ed0215cc, type: 2} + - {fileID: 11400000, guid: d006aa7902864824d907d4aa6b62de09, type: 2} text: "\u65BD\u653E(2): \u5C06\u4E00\u5F20\u6CD5\u672F\u724C\u9001\u56DE\u4F60\u7684\u624B\u724C\u3002" desc: spawn_fx: {fileID: 9125387663047351618, guid: bac685160af4aff46ae561a51da6f5f4, diff --git a/Assets/TcgEngine/Resources/Cards/Fire/imp.asset b/Assets/TcgEngine/Resources/Cards/Fire/imp.asset index 042539e..1f36ca8 100644 --- a/Assets/TcgEngine/Resources/Cards/Fire/imp.asset +++ b/Assets/TcgEngine/Resources/Cards/Fire/imp.asset @@ -13,10 +13,11 @@ MonoBehaviour: m_Name: imp m_EditorClassIdentifier: id: imp - title: 小鬼 + title: "\u5C0F\u9B3C" art_full: {fileID: 21300000, guid: e74d128a608ae4c449e33aaf6449ee5e, type: 3} art_board: {fileID: 21300000, guid: e4ceb28c84c0b8846a348abfad791085, type: 3} type: 10 + camp: 0 team: {fileID: 11400000, guid: 6bbb96863ece0314fb318c0fce569afc, type: 2} rarity: {fileID: 11400000, guid: fab1a52f5a36cc942985dea95be18ac9, type: 2} mana: 2 @@ -25,8 +26,8 @@ MonoBehaviour: traits: [] stats: [] abilities: - - {fileID: 11400000, guid: 4f4dd01a7c411ab408c5ca18edbef253, type: 2} - text: 打出: 造成1点伤害。 + - {fileID: 11400000, guid: e2cae01651c214277978e2e91d4cc0a2, type: 2} + text: "\u6253\u51FA: \u9020\u62101\u70B9\u4F24\u5BB3\u3002" desc: spawn_fx: {fileID: 9125387663047351618, guid: bac685160af4aff46ae561a51da6f5f4, type: 3} diff --git a/Assets/TcgEngine/Resources/Cards/Forest/tree_angry.asset b/Assets/TcgEngine/Resources/Cards/Forest/tree_angry.asset index c3d8f19..7909272 100644 --- a/Assets/TcgEngine/Resources/Cards/Forest/tree_angry.asset +++ b/Assets/TcgEngine/Resources/Cards/Forest/tree_angry.asset @@ -13,20 +13,21 @@ MonoBehaviour: m_Name: tree_angry m_EditorClassIdentifier: id: tree_angry - title: 愤怒之树 + title: "\u6124\u6012\u4E4B\u6811" art_full: {fileID: 21300000, guid: df4f7d3c3ffc18c42bdecfa498fa53da, type: 3} art_board: {fileID: 21300000, guid: b4baa2ca665d5aa42be490f5a09ea949, type: 3} type: 10 + camp: 0 team: {fileID: 11400000, guid: b80d8061c5bdb2e408e62a08e0e743ca, type: 2} rarity: {fileID: 11400000, guid: fab1a52f5a36cc942985dea95be18ac9, type: 2} mana: 3 attack: 3 - hp: 5 + hp: 30 traits: [] stats: [] abilities: - {fileID: 11400000, guid: 1bc895e873a2be145898a86a2fb9ca03, type: 2} - text: 再生 + text: "\u518D\u751F" desc: spawn_fx: {fileID: 5791330189299518109, guid: 1fa8fa11b2c6b9b4d976743e5bbb3956, type: 3} diff --git a/Assets/TcgEngine/Resources/Effects/damage_double.asset b/Assets/TcgEngine/Resources/Effects/damage_double.asset new file mode 100644 index 0000000..a4f1d10 --- /dev/null +++ b/Assets/TcgEngine/Resources/Effects/damage_double.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: 31aa9b0b846e37e47bb7896cc026a560, type: 3} + m_Name: damage_double + m_EditorClassIdentifier: + bonus_damage: {fileID: 11400000, guid: 50116f133bd899842ab1d2a5b71412ee, type: 2} + double_damage_on_half_hp: 1 + enable_kill_hook: 0 + kill_abilities: [] diff --git a/Assets/TcgEngine/Resources/Effects/damage_double.asset.meta b/Assets/TcgEngine/Resources/Effects/damage_double.asset.meta new file mode 100644 index 0000000..583bbea --- /dev/null +++ b/Assets/TcgEngine/Resources/Effects/damage_double.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92cd231cc27774c149e82c59d3e72736 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset b/Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset new file mode 100644 index 0000000..59d988e --- /dev/null +++ b/Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: 31aa9b0b846e37e47bb7896cc026a560, type: 3} + m_Name: damage_hook_add_all_hp_4 + m_EditorClassIdentifier: + bonus_damage: {fileID: 11400000, guid: 50116f133bd899842ab1d2a5b71412ee, type: 2} + double_damage_on_half_hp: 0 + enable_kill_hook: 1 + kill_abilities: + - {fileID: 11400000, guid: c0cea65074408f8498948aeae58fac68, type: 2} diff --git a/Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset.meta b/Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset.meta new file mode 100644 index 0000000..c79217f --- /dev/null +++ b/Assets/TcgEngine/Resources/Effects/damage_hook_add_all_hp_4.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82aa37988fd69413b83d98dcd038982c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TcgEngine/Scripts/Effects/EffectDamage.cs b/Assets/TcgEngine/Scripts/Effects/EffectDamage.cs index 3846b89..e445283 100644 --- a/Assets/TcgEngine/Scripts/Effects/EffectDamage.cs +++ b/Assets/TcgEngine/Scripts/Effects/EffectDamage.cs @@ -12,8 +12,15 @@ namespace TcgEngine [CreateAssetMenu(fileName = "effect", menuName = "TcgEngine/Effect/Damage", order = 10)] public class EffectDamage : EffectData { + [Header("伤害设置")] public TraitData bonus_damage; + [Header("半血翻倍")] + public bool double_damage_on_half_hp = false; // 当目标生命值低于50%时伤害翻倍 + + [Header("击杀触发")] + public AbilityData kill_trigger_ability = null; // 击杀后触发的技能 + public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target) { int damage = GetDamage(logic.GameData, caster, ability.value); @@ -22,8 +29,21 @@ namespace TcgEngine public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target) { - int damage = GetDamage(logic.GameData, caster, ability.value); + int damage = GetDamageWithHalfHpBonus(logic.GameData, caster, ability.value, target); + + // 是否可以击杀 + int target_hp_before = target != null ? target.GetHP() : 0; + bool will_kill = target != null && target_hp_before <= damage; + + // 造成伤害 logic.DamageCard(caster, target, damage, true); + + // 如果击杀了目标且配置了击杀触发技能,则触发技能 + if (will_kill && target != null && kill_trigger_ability != null) + { + Debug.Log("满足击杀条件"); + TriggerKillAbility(logic, caster, target); + } } private int GetDamage(Game data, Card caster, int value) @@ -33,5 +53,33 @@ namespace TcgEngine return damage; } + private int GetDamageWithHalfHpBonus(Game data, Card caster, int value, Card target) + { + int damage = GetDamage(data, caster, value); + + // 半血伤害翻倍 + if (double_damage_on_half_hp && target != null) + { + int current_hp = target.GetHP(); + int max_hp = target.CardData.hp; + float hp_percentage = (float)current_hp / max_hp; + + if (hp_percentage <= 0.5f) // 生命值低于等于50% + { + damage *= 2; + } + } + + return damage; + } + + private void TriggerKillAbility(GameLogic logic, Card caster, Card killed_target) + { + if (kill_trigger_ability != null && caster != null) + { + Debug.Log("触发击杀钩子"); + logic.TriggerAbilityDelayed(kill_trigger_ability, caster, killed_target); + } + } } } \ No newline at end of file