using System.Collections; using System.Collections.Generic; using UnityEngine; using TcgEngine.Gameplay; namespace TcgEngine { /// /// Effect that sets basic stats (hp/attack/mana) to a specific value /// [CreateAssetMenu(fileName = "effect", menuName = "TcgEngine/Effect/SetStat", order = 10)] public class EffectSetStat : EffectData { public EffectStatType type; [Header("Team Mana (only for Mana type)")] public string team_id = ""; // 当type为Mana时,指定影响的阵营 public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target) { if (type == EffectStatType.HP) { target.hp = ability.value; } if (type == EffectStatType.Mana) { // 如果指定了阵营,设置阵营mana;否则设置通用mana if (!string.IsNullOrEmpty(team_id)) { target.SetTeamMana(team_id, ability.value); } else { Debug.Log($"SetStat Mana 通用: {ability.value}"); target.mana = ability.value; target.mana = Mathf.Max(target.mana, 0); } } } public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target) { if (type == EffectStatType.Attack) target.attack = ability.value; if (type == EffectStatType.Mana) target.mana = ability.value; if (type == EffectStatType.HP) { target.hp = ability.value; target.damage = 0; } if (type == EffectStatType.ManaFire) target.mana_fire = ability.value; if (type == EffectStatType.ManaForest) target.mana_forest = ability.value; if (type == EffectStatType.ManaWater) target.mana_water = ability.value; } public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target) { if (type == EffectStatType.Attack) target.attack = ability.value; if (type == EffectStatType.HP) target.hp = ability.value; if (type == EffectStatType.Mana) target.mana = ability.value; if (type == EffectStatType.ManaFire) target.mana_fire = ability.value; if (type == EffectStatType.ManaForest) target.mana_forest = ability.value; if (type == EffectStatType.ManaWater) target.mana_water = ability.value; } } }