public override void OnSpellAdd(ModularSpell addedSpell) { // save onCast actions IOnCastAction[] totalOnCastActions = addedSpell.onCastActions.Clone() as IOnCastAction[]; //modify damage of AllOnHitActions foreach (IOnHitAction onHitAction in addedSpell.AllOnHitActions) { if (onHitAction.GetType() == typeof(DamageOnHit)) { DamageOnHit damageAction = onHitAction as DamageOnHit; damageAction.damage *= damageMultiplier; } } addedSpell.onCastActions = new IOnCastAction[1]; // create new multiple cast action RepeatCastOnCast castRepeater = new RepeatCastOnCast(); castRepeater.nRepeats = nCasts; castRepeater.timeBetweenCasts = timeBetweenCasts; // add old onCast actions to it castRepeater.OnCastActions = totalOnCastActions; castRepeater.Init(addedSpell); addedSpell.onCastActions[0] = castRepeater; }
public abstract void OnSpellAdd(ModularSpell addedSpell);