public void DeregisterModifier(Modifier modifierToDeregister) { switch (modifierToDeregister.modifierType) { case ModifierType.MoveSpeed: activeMoveSpeedModifiers.Remove(modifierToDeregister as ValueModifier); break; case ModifierType.DamageDealt: activeDamageDealtModifiers.Remove(modifierToDeregister as ValueModifier); break; case ModifierType.DamageReceived: Destroy(modifierToDeregister); activeDamageReceivedModifiers.Remove(modifierToDeregister as ValueModifier); break; case ModifierType.Mark: activeMark = null; break; case ModifierType.Movement: break; case ModifierType.Stun: activeStunModifier = null; entityEmitter.SetUnstunned(); break; default: break; } }
public void RegisterModifier(Modifier newModifier) { newModifier.Init(this); switch (newModifier.modifierType) { case ModifierType.MoveSpeed: activeMoveSpeedModifiers.Add(newModifier as ValueModifier); break; case ModifierType.DamageDealt: activeDamageDealtModifiers.Add(newModifier as ValueModifier); break; case ModifierType.DamageReceived: activeDamageReceivedModifiers.Add(newModifier as ValueModifier); break; case ModifierType.Mark: if (activeMark != null) { Destroy(activeMark); } activeMark = newModifier as OnDamageMarkModifier; break; case ModifierType.Movement: break; case ModifierType.Stun: if (activeStunModifier == null) { entityEmitter.SetStunned(); activeStunModifier = newModifier; } else if (newModifier.baseDuration > activeStunModifier.DurationRemaining) { Destroy(activeStunModifier); activeStunModifier = newModifier; } else { Destroy(newModifier); } break; default: break; } }