public void Swap() { if (!_support.Character.IsDead) { // Interrupt actions in progress _main.InterruptAnimateAction(); _support.InterruptAnimateAction(); // Swap characters CombatCharacterScript temp = _main; _main = _support; _support = temp; // Move character figures _support.GetComponent <CharacterMoverScript>().GoToSupportPosition(); _main.GetComponent <CharacterMoverScript>().GoToMainPosition(); // Update action bar TeamActionBar actionBar = GetComponent <TeamActionBar>(); if (actionBar != null) { actionBar.UpdateButtons(_main.Character, _support.Character); } } }
void InitiateEffect(CombatCharacterScript target) { StartTime = Time.time; FinishTime = StartTime + _duration; _timeOfNextTick = Time.time + _tickRate; Target = target; OnApply(); Target.Character.Buffs.Add(this); sfx = specialEffect.GetNext(); Target.AttachSpecialEffect(sfx); }
public void ExecuteAction(CombatCharacterScript user, TeamScript team) { if (Time.time >= CooldownFinish) { ActionInstance action = GenerateInstance(); action.User = user; action.Target = _targeting.GetTarget(user, team); action.Template = this; OnStart.Trigger(action); user.Character.OnActionStart.Trigger(action); action.Target.Character.OnEnemyActionStart.Trigger(action); } }
public void ApplyEffect(CombatCharacterScript target) { Buff preexistingBuff = target.Character.Buffs.Find(buff => buff.OriginatingBuff == this); if (preexistingBuff == null || Stacks) { Buff instance = Instantiate(this); instance.OriginatingBuff = this; instance.InitiateEffect(target); } else { preexistingBuff.FinishTime = Time.time + _duration; } }
public override CombatCharacterScript GetTarget(CombatCharacterScript user, TeamScript team) { return(team.EnemyTeam.Main); }
public override CombatCharacterScript GetTarget(CombatCharacterScript user, TeamScript team) { return(user); }
public abstract CombatCharacterScript GetTarget(CombatCharacterScript user, TeamScript team);