Example #1
0
 private void ProcessEffects(Xml.ModifierEffect effect)
 {
     if (effect == null)
     {
         return;
     }
     ProcessSfx(effect);
 }
Example #2
0
 private void ProcessSfx(Xml.ModifierEffect effect)
 {
     if (effect == null)
     {
         return;
     }
     if (effect.Sound != null && effect.Sound.Id != 0)
     {
         (Target as User)?.PlaySound(effect.Sound.Id);
         (Source as User)?.PlaySound(effect.Sound.Id);
     }
     if (effect.Animations != null)
     {
         if (effect.Animations?.Target != null && effect.Animations.Target.Id != 0)
         {
             var animation = effect.Animations.Target;
             if (Target is Monster || !Target.Condition.Comatose || (Target.Condition.Comatose && animation.Id == (Game.Config.Handlers?.Death?.Coma?.Effect ?? 24)))
             {
                 Target.Effect(effect.Animations.Target.Id, effect.Animations.Target.Speed);
             }
         }
         if (effect.Animations?.SpellEffect != null && effect.Animations?.SpellEffect.Id != 0)
         {
             Source?.Effect(effect.Animations.SpellEffect.Id, effect.Animations.SpellEffect.Speed);
         }
     }
     // Message handling
     if (effect.Messages != null)
     {
         if (TargetUser != null)
         {
             if (effect.Messages?.Target != null)
             {
                 TargetUser.SendSystemMessage(string.Format(effect.Messages.Target, SourceUser.Name));
             }
             if (effect.Messages?.Group != null)
             {
                 TargetUser.Group?.SendMessage(string.Format(effect.Messages.Group, SourceUser.Name));
             }
         }
         if (effect.Messages?.Source != null && TargetUser != null && TargetUser != SourceUser)
         {
             (Source as User)?.SendSystemMessage(string.Format(effect.Messages.Source, TargetUser?.Name ?? string.Empty));
         }
         if (effect.Messages?.Say != null)
         {
             Target.Say(string.Format(effect.Messages.Say, Target.Name ?? string.Empty));
         }
         if (effect.Messages?.Shout != null)
         {
             Target.Shout(string.Format(effect.Messages.Shout, Target.Name ?? string.Empty));
         }
     }
 }
Example #3
0
 private void ProcessFullEffects(Xml.ModifierEffect effect, bool RemoveStatBonuses = false, bool displaySfx = true)
 {
     if (effect == null)
     {
         return;
     }
     // Stat modifiers and condition changes are only processed during start/remove
     ProcessConditions(effect);
     ProcessStatModifiers(RemoveStatBonuses);
     if (displaySfx)
     {
         ProcessSfx(effect);
     }
 }
Example #4
0
 private void ProcessConditions(Xml.ModifierEffect effect)
 {
     if (effect == null)
     {
         return;
     }
     if (effect.Conditions?.Set != null)
     {
         Target.Condition.Conditions |= effect.Conditions.Set;
     }
     if (effect.Conditions?.Unset != null)
     {
         Target.Condition.Conditions &= ~effect.Conditions.Unset;
     }
 }
Example #5
0
    private (double Heal, DamageOutput Damage) CalculateNumericEffects(Xml.Castable castable, Xml.ModifierEffect effect, Creature source)
    {
        double heal = 0;
        var    dmg  = new DamageOutput();

        if (effect == null)
        {
            return(heal, dmg);
        }
        if (effect.Heal != null)
        {
            heal = NumberCruncher.CalculateHeal(castable, effect, Target, source, Name);
        }
        if (effect.Damage != null)
        {
            dmg = NumberCruncher.CalculateDamage(castable, effect, Target, source, Name);
        }
        return(heal, dmg);
    }