示例#1
0
    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;
        }
    }
示例#2
0
    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;
        }
    }