[Bug Fix] Limit Pet Taunt Distance (#4018)

* [Bug Fix] Limit pet taunt distance

Previously this was not regulated and allowed players to exploit unlimited taunt distance.

Rule Name: PetTauntRange
Rule Default: 150

Calculation is Rule Squared.

* Remove `this`
This commit is contained in:
Fryguy 2024-01-26 15:43:20 -05:00 committed by GitHub
parent 0ebc7f9bb6
commit 8a87e00b66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 2 deletions

View File

@ -269,6 +269,7 @@ RULE_BOOL(Pets, CanTakeNoDrop, false, "Setting whether anyone can give no-drop i
RULE_BOOL(Pets, CanTakeQuestItems, true, "Setting whether anyone can give quest items to pets") RULE_BOOL(Pets, CanTakeQuestItems, true, "Setting whether anyone can give quest items to pets")
RULE_BOOL(Pets, LivelikeBreakCharmOnInvis, true, "Default: true will break charm on any type of invis (hide/ivu/iva/etc) false will only break if the pet can not see you (ex. you have an undead pet and cast IVU") RULE_BOOL(Pets, LivelikeBreakCharmOnInvis, true, "Default: true will break charm on any type of invis (hide/ivu/iva/etc) false will only break if the pet can not see you (ex. you have an undead pet and cast IVU")
RULE_BOOL(Pets, ClientPetsUseOwnerNameInLastName, true, "Disable this to keep client pet's last names from being owner_name's pet") RULE_BOOL(Pets, ClientPetsUseOwnerNameInLastName, true, "Disable this to keep client pet's last names from being owner_name's pet")
RULE_INT(Pets, PetTauntRange, 150, "Range at which a pet will taunt targets.")
RULE_CATEGORY_END() RULE_CATEGORY_END()
RULE_CATEGORY(GM) RULE_CATEGORY(GM)

View File

@ -1819,14 +1819,16 @@ void NPC::DoClassAttacks(Mob *target) {
target->GetBodyType() != BT_Undead && target->GetBodyType() != BT_Undead &&
taunt_time && taunt_time &&
type_of_pet && type_of_pet &&
type_of_pet != petTargetLock type_of_pet != petTargetLock &&
DistanceSquared(GetPosition(), target->GetPosition()) <= (RuleI(Pets, PetTauntRange) * RuleI(Pets, PetTauntRange))
) { ) {
GetOwner()->MessageString(Chat::PetResponse, PET_TAUNTING); GetOwner()->MessageString(Chat::PetResponse, PET_TAUNTING);
Taunt(target->CastToNPC(), false); Taunt(target->CastToNPC(), false);
} }
if(!ca_time) if(!ca_time) {
return; return;
}
float HasteModifier = GetHaste() * 0.01f; float HasteModifier = GetHaste() * 0.01f;