Beispiel #1
0
        public CreatureStatus(Xml.Status xmlstatus, Creature target, Xml.Castable castable = null, Creature source = null, int duration = -1, int tickFrequency = -1, double intensity = 1.0)
        {
            Target    = target;
            XmlStatus = xmlstatus;
            Start     = DateTime.Now;
            Target    = target;
            Source    = source;
            Duration  = duration == -1 ? xmlstatus.Duration : duration;
            Tick      = tickFrequency == -1 ? xmlstatus.Tick : tickFrequency;
            Intensity = intensity;

            // Calculate damage/heal effects. Note that a castable MUST be passed here for a status
            // to have damage effects as the castable itself has fields we need to access
            // (intensity, etc) in order to do damage calculations.

            if (castable != null)
            {
                var start  = CalculateNumericEffects(castable, xmlstatus.Effects.OnApply, source);
                var tick   = CalculateNumericEffects(castable, xmlstatus.Effects.OnTick, source);
                var end    = CalculateNumericEffects(castable, xmlstatus.Effects.OnRemove, source);
                var expire = CalculateNumericEffects(castable, xmlstatus.Effects.OnExpire, source);
                OnStartEffect  = new SimpleStatusEffect(start.Heal, start.Damage);
                OnTickEffect   = new SimpleStatusEffect(tick.Heal, tick.Damage);
                OnRemoveEffect = new SimpleStatusEffect(end.Heal, end.Damage);
                OnExpireEffect = new SimpleStatusEffect(expire.Heal, expire.Damage);
            }
        }
Beispiel #2
0
 private void ProcessNumericEffects(SimpleStatusEffect effect)
 {
     if (effect == null)
     {
         return;
     }
     if (effect.Damage != null && effect.Damage.Amount != 0)
     {
         Target.Damage(effect.Damage.Amount, effect.Damage.Element, effect.Damage.Type, effect.Damage.Flags, Source);
     }
     if (effect.Heal != 0)
     {
         Target.Heal(effect.Heal, Source);
     }
 }
Beispiel #3
0
 private void ProcessNumericEffects(SimpleStatusEffect effect)
 {
 }