diff --git a/common/ruletypes.h b/common/ruletypes.h index 24a904e96..bb52f203e 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -664,6 +664,8 @@ RULE_BOOL(Aggro, NPCAggroMaxDistanceEnabled, true, "If enabled, NPC's will drop RULE_BOOL(Aggro, AggroPlayerPets, false, "If enabled, NPCs will aggro player pets") RULE_BOOL(Aggro, UndeadAlwaysAggro, true, "should undead always aggro?") RULE_INT(Aggro, BardAggroCap, 40, "per song bard aggro cap.") +RULE_INT(Aggro, InitialAggroBonus, 100, "Initial Aggro Bonus, Default: 100") +RULE_INT(Aggro, InitialPetAggroBonus, 100, "Initial Pet Aggro Bonus, Default 100") RULE_CATEGORY_END() RULE_CATEGORY(TaskSystem) diff --git a/zone/attack.cpp b/zone/attack.cpp index d98e465ae..2bda7549e 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -3089,12 +3089,16 @@ void Mob::AddToHateList(Mob* other, int64 hate /*= 0*/, int64 damage /*= 0*/, bo // Spell Casting Subtlety etc int64 hatemod = 100 + other->spellbonuses.hatemod + other->itembonuses.hatemod + other->aabonuses.hatemod; - if (hatemod < 1) + if (hatemod < 1) { hatemod = 1; + } hate = ((hate * (hatemod)) / 100); - } - else { - hate += 100; // 100 bonus initial aggro + } else { + if (IsCharmed()){ + hate += RuleI(Aggro, InitialPetAggroBonus); + } else { + hate += RuleI(Aggro, InitialAggroBonus); + } } // Pet that is /pet hold on will not add to their hate list if they're not engaged