public AbilityInstance Cast(AbilityCaster caster) { if (CurrentCooldown <= 0) { EventHandler[] targets = null; // If the Ability targets at start, search for targets if (Template.Targeting.TargetAtStart) { targets = _template.Targeting.GetTargets(caster); } if (!Template.Targeting.TargetAtStart || HasValidTarget(targets)) { AbilityInstance instance = AbilityInstance.Cast(this, caster, targets, new AbilityData(Data)); CurrentCooldown = Cooldown; if (caster.Animator != null) { caster.Animator.SetTrigger(_template.AnimationName); } return(instance); } } return(null); }
public static AbilityInstance Cast(Ability originAbility, AbilityCaster caster, EventHandler[] targets, AbilityData data) { AbilityInstance instance = new AbilityInstance(originAbility, caster, targets, data); instance.Start(); return(instance); }
public bool CastAbility(int abilityIndex) { if (CanCastSpell(abilityIndex)) { _abilityBeingCast = Abilities[abilityIndex].Cast(this); return(true); } return(false); }
public bool CompleteAbility() { if (_abilityBeingCast != null) { _abilityBeingCast.Complete(); _abilityBeingCast = null; return(true); } return(false); }
public AbilityInstance Complete(AbilityInstance instance) { instance.Complete(); return(instance); }