private void ProcessEffects(Xml.ModifierEffect effect) { if (effect == null) { return; } ProcessSfx(effect); }
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)); } } }
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); } }
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; } }
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); }