public override void Initialize(List <Targetable> targets) { foreach (Targetable target in targets) { ActiveUnit unit = target as ActiveUnit; EffectActivator appliedEffect = null; foreach (EffectActivator effect in unit.appliedEffects) { if (effect.activeEffect.UID == activeEffect.UID) { appliedEffect = effect; } } if (appliedEffect != null) { appliedEffect.ActivateEffect(); } else { EffectActivator newEffect = Instantiate(activeEffect.effectActivator, target.transform.position, Quaternion.identity, target.transform); unit.appliedEffects.Add(newEffect); StacksEffectActivator effect = newEffect.gameObject.GetComponent <StacksEffectActivator>(); effect.targets = new List <Targetable> { target }; effect.ActivateEffect(); } } }
protected void ActivateEffect(Targetable target) { foreach (ActiveEffect activeEffect in effects) { if (!CheckConditions()) { continue; } List <Targetable> targets; if (activeEffect.targetType == TargetType.SingleTarget) { targets = new List <Targetable> { target }; } else { targets = GetTargets(activeEffect, activeEffect.targetType); } if (activatedEffects.ContainsKey(activeEffect)) { activatedEffects[activeEffect].Initialize(targets); } else { EffectActivator effectActivator = Instantiate(activeEffect.effectActivator, transform); effectActivator.Initialize(targets); activatedEffects.Add(activeEffect, effectActivator); } } }
public override void Initialize(List<Targetable> targets) { foreach (Targetable target in targets) { ActiveUnit unit = target as ActiveUnit; EffectActivator appliedEffect = null; foreach (EffectActivator effect in unit.appliedEffects) { if (effect.activeEffect.UID == activeEffect.UID) { appliedEffect = effect; } } if (appliedEffect != null) { // Do the check if effect got reapplied, do different things !!! if (onEffectDuplication == OnEffectDuplication.IncreaseDuration) { DurationalEffectActivator durationalEffectActivator = appliedEffect as DurationalEffectActivator; durationalEffectActivator.IncreaseDuration(bonusDuration); } if (onEffectDuplication == OnEffectDuplication.IncreaseEffect) { /* foreach (var item in ParameterModiferValue) { durationEffect.values += bonusValue; } */ } } else { EffectActivator newEffect = Instantiate(activeEffect.effectActivator, target.transform.position, Quaternion.identity, target.transform); unit.appliedEffects.Add(newEffect); DurationalEffectActivator durationalEffect = newEffect.gameObject.GetComponent<DurationalEffectActivator>(); durationalEffect.targets = new List<Targetable> { target }; durationalEffect.ActivateEffect(); } } }
protected override void Start() { foreach (Effect effect in mEffects) { Effect cloned = effect.Clone() as Effect; cloned.AbilityId = AbilityId; foreach (CharacterProperty target in mTargets) { if (target == null) { break; } EffectActivator effectActivator = target.GetComponent <EffectActivator> (); if (effectActivator != null) { effectActivator.AddEffect(cloned as Effect); } } } status = AbilityActionStatus.Success; }