diff --git a/common/ruletypes.h b/common/ruletypes.h index b97c061bd..c5fc1b9ce 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -350,6 +350,7 @@ RULE_INT(Spells, MaxTotalSlotsNPC, 60) // default to Tit's limit RULE_INT(Spells, MaxTotalSlotsPET, 30) // default to Tit's limit RULE_BOOL (Spells, EnableBlockedBuffs, true) RULE_INT(Spells, ReflectType, 3) //0 = disabled, 1 = single target player spells only, 2 = all player spells, 3 = all single target spells, 4 = all spells +RULE_BOOL(Spells, ReflectMessagesClose, true) // Live functionality is for Reflect messages to show to players within close proximity, false shows just player reflecting RULE_INT(Spells, VirusSpreadDistance, 30) // The distance a viral spell will jump to its next victim RULE_BOOL(Spells, LiveLikeFocusEffects, true) // Determines whether specific healing, dmg and mana reduction focuses are randomized RULE_INT(Spells, BaseImmunityLevel, 55) // The level that targets start to be immune to stun, fear and mez spells with a max level of 0. diff --git a/zone/spells.cpp b/zone/spells.cpp index 5504422e0..65626d43b 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -3804,8 +3804,22 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob *spelltar, bool reflect, bool use_r break; } if (reflect_chance) { - entity_list.MessageClose_StringID(this, false, RuleI(Range, SpellMessages), MT_Spells, - SPELL_REFLECT, GetCleanName(), spelltar->GetCleanName()); + + if (RuleB(Spells, ReflectMessagesClose)) { + entity_list.MessageClose_StringID( + this, /* Sender */ + false, /* Skip Sender */ + RuleI(Range, SpellMessages), /* Range */ + MT_Spells, /* Type */ + SPELL_REFLECT, /* String ID */ + GetCleanName(), /* Message 1 */ + spelltar->GetCleanName() /* Message 2 */ + ); + } + else { + Message_StringID(MT_Spells, SPELL_REFLECT, GetCleanName(), spelltar->GetCleanName()); + } + CheckNumHitsRemaining(NumHit::ReflectSpell); // caster actually appears to change // ex. During OMM fight you click your reflect mask and you get the recourse from the reflected