From e6d3210b1f85469f908efeb850c106f443849280 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Fri, 5 Oct 2018 16:50:23 -0400 Subject: [PATCH] Allow UseLevelAggro rule to be configurable. --- common/ruletypes.h | 3 ++- zone/aggro.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/common/ruletypes.h b/common/ruletypes.h index 1796c9e4d..0840e89ab 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -554,7 +554,8 @@ RULE_REAL(Aggro, TunnelVisionAggroMod, 0.75) //people not currently the top hate RULE_INT(Aggro, MaxScalingProcAggro, 400) // Set to -1 for no limit. Maxmimum amount of aggro that HP scaling SPA effect in a proc will add. RULE_INT(Aggro, IntAggroThreshold, 75) // Int <= this will aggro regardless of level difference. RULE_BOOL(Aggro, AllowTickPulling, false) // tick pulling is an exploit in an NPC's call for help fixed sometime in 2006 on live -RULE_BOOL(Aggro, UseLevelAggro, true) // Level 18+ and Undead will aggro regardless of level difference. (this will disabled Rule:IntAggroThreshold if set to true) +RULE_INT(Aggro, MinAggroLevel, 18) // For use with UseLevelAggro +RULE_BOOL(Aggro, UseLevelAggro, true) // MinAggroLevel rule value+ and Undead will aggro regardless of level difference. (this will disabled Rule:IntAggroThreshold if set to true) RULE_INT(Aggro, ClientAggroCheckInterval, 6) // Interval in which clients actually check for aggro - in seconds RULE_REAL(Aggro, PetAttackRange, 40000.0) // max squared range /pet attack works at default is 200 RULE_BOOL(Aggro, NPCAggroMaxDistanceEnabled, true) /* If enabled, NPC's will drop aggro beyond 600 units or what is defined at the zone level */ diff --git a/zone/aggro.cpp b/zone/aggro.cpp index f8162322e..17b11afbd 100644 --- a/zone/aggro.cpp +++ b/zone/aggro.cpp @@ -158,7 +158,7 @@ void NPC::DescribeAggro(Client *towho, Mob *mob, bool verbose) { if (RuleB(Aggro, UseLevelAggro)) { - if (GetLevel() < 18 && mob->GetLevelCon(GetLevel()) == CON_GRAY && GetBodyType() != 3) + if (GetLevel() < RuleI(Aggro, MinAggroLevel) && mob->GetLevelCon(GetLevel()) == CON_GRAY && GetBodyType() != 3) { towho->Message(0, "...%s is red to me (basically)", mob->GetName(), dist2, iAggroRange2); return; @@ -336,7 +336,7 @@ bool Mob::CheckWillAggro(Mob *mob) { ( //old InZone check taken care of above by !mob->CastToClient()->Connected() ( - ( GetLevel() >= 18 ) + ( GetLevel() >= RuleI(Aggro, MinAggroLevel)) ||(GetBodyType() == 3) ||( mob->IsClient() && mob->CastToClient()->IsSitting() ) ||( mob->GetLevelCon(GetLevel()) != CON_GRAY)