public void Cast(IAbilityUser originator, params IAbilityUser[] targets) { if (instanceManager == null || !unlocked) { return; } string id = originator.GetInstanceID() + ""; if (targets.Length <= 0) { if (!instanceManager.IsCastLegitimate(id)) { return; } instanceManager.RequestInstance(id).Cast(originator, null); } for (int t = 0; t < targets.Length; t++) { if (!instanceManager.IsCastLegitimate(id)) { return; } instanceManager.RequestInstance(id).Cast(originator, targets[t]); } }
public bool Use(IAbilityUser user, ref AbilityInfo abilityInfo) { if (hasCost && !user.DeductStat(cost)) { return(false); } user.Behaviour.StartCoroutine(UseAbility(abilityInfo)); return(true); }
public void Init(IAbilityUser user) { if (!IsClone) { throw new Exception("Non clone condition may not be initialized."); } if (initialized) { throw new Exception("do not reinitalize an initialized TriggerCondition"); } Source = user; _Init(user); initialized = true; }
public void Init(IConstantHolder holder) { if (!IsClone) { throw new Exception("Non clone Constant Modifier cannot be initialized!"); } if (Initialized) { throw new System.Exception("dont re init me"); } IAbilityUser User = holder.GetAbilityUser(); for (int i = 0; i < TriggeredEffects.Count; i++) { TriggeredEffects[i].Init(User); } _Init(holder); Initialized = true; }
public override void OnState(IAbilityUser user, ref AbilityInfo info) { }
internal void Cast(IAbilityUser originator, IAbilityUser target) { m_CachedID = originator.GetInstanceID() + ""; m_Originator = originator; m_Target = target; m_LastList = new Stack <int>(); m_LastList.Push(0); transform.position = Vector3.zero; for (int s = 0; s < subInstanceLinks.Length; s++) { SubInstanceLink link = subInstanceLinks[s]; // Set the correct spawn position switch (link.spawn) { case SubInstanceLink.Spawn.Originator: link.obj.transform.position = originator.GetCenter() + link.spawnOffset; break; case SubInstanceLink.Spawn.Target: link.obj.transform.position = target.GetCenter() + link.spawnOffset; break; case SubInstanceLink.Spawn.Zero: link.obj.transform.position = link.spawnOffset; break; } // Start particle system if (link.particleSystem != null) { link.particleSystem.Play(); } // Show mesh renderer if (link.meshRenderer != null) { link.meshRenderer.enabled = true; } for (int r = 0; r < link.meshRendererAll.Length; r++) { if (link.meshRendererAll[r] != null) { link.meshRendererAll[r].enabled = true; } } if (target != null) { link.direction = (target.GetCenter() - originator.GetCenter()).normalized; } else { link.direction = Vector3.zero; } subInstanceLinks[s].obj.SetActive(true); } for (int v = 0; v < sharedVariables.Length; v++) { sharedVariables[v].RestoreDefault(); } for (int p = 0; p < phaseLists.Length; p++) { DefineContext(phaseLists[p]); phaseLists[p].OnCast(); } isUpdating = true; }
void OnItrreupted(IAbilityUser info) { }
public void Initialize(IAbilityUser user) { this.AbilityUser = user; Initialized = true; }
public virtual void OnInterrupt(IAbilityUser user, ref AbilityInfo info) { }
public virtual void OnCancel(IAbilityUser user, ref AbilityInfo info) { }
public abstract void OnState(IAbilityUser user, ref AbilityInfo info);
public ConditionTriggered(TriggerCondition condition, IAbilityUser source, HexCoordinates?target) { TriggerCondition = condition; TriggerSource = source; TriggerTarget = target; }
protected abstract void _Init(IAbilityUser user);