using System; using UnityEngine; // Shared types used by combat/effect/skill systems public enum Selector { Self, AllAllies, AllAlliesExceptSelf, AdjacentAllies, CurrentEnemies, AllEntities } public enum EffectType { DamageSingleEnemy, DamageOverTimeEnemy, HealSingleEnemy, HealOverTimeEnemy, DamageSingleAlly, DamageOverTimeAlly, HealSingleSelf, HealOverTimeSelf, HealGroupSingle, HealGroupOverTime, BuffDuration, DebuffDuration, IncreaseManaOverTime, ReduceEnemyHealOverTime, ScoreMultiplier, AddScore, IncreaseMaxHP, DecreaseMaxHP, IncreaseMaxMana, DecreaseMaxMana, IncreaseScoreEfficiency, DecreaseScoreEfficiency, // New: modify damage resistance (0-1). Amount interpreted as additive delta (e.g. 0.2 to add 20% resistance) IncreaseDamageResistance, DecreaseDamageResistance, IncreaseAttack, DecreaseAttack, RedirectNextDamageToSelf, // Adds a virtual "Perfect" judgement to targeted ally tracks (counts + score + triggers note-hit hooks). GrantExtraPerfect, // While active, redirects damage that would be taken by this ally to an adjacent ally. RedirectSelfDamageToAdjacent, // While active, any non-Miss note judgement on the ally's track is rewritten to Perfect. RewriteNonMissToPerfect, // Equipment/passive specific: restore current mana directly. RestoreMana, // Equipment/passive specific: effect is handled entirely by custom code path. CustomPassive } public interface ICombatant { void ReceiveDamage(float amount, GameObject source, bool deferPopup = false); void ReceiveHeal(float amount, GameObject source, bool deferPopup = false); void ApplyBuff(Buff buff, GameObject source); void RemoveBuff(string buffId); }