[Cleanup] Utilize IsTaunting(), SetPetPower(), SetPetType(), and SetTaunting() (#3275)

* [Cleanup] Utilize SetPetPower() in zone/pets.cpp

# Notes
- This wasn't used before.

* Utilize other methods.

* Update special_attacks.cpp
This commit is contained in:
Alex King 2023-04-15 13:20:04 -04:00 committed by GitHub
parent 7523c972fa
commit ff40dbc710
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 10 deletions

View File

@ -380,8 +380,8 @@ Mob::Mob(
spellbonuses.AssistRange = -1;
SetPetID(0);
SetOwnerID(0);
typeofpet = petNone; // default to not a pet
petpower = 0;
SetPetType(petNone); // default to not a pet
SetPetPower(0);
held = false;
gheld = false;
nocast = false;

View File

@ -162,7 +162,7 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi
size = 15;
}
taunting = false;
SetTaunting(false);
proximity = nullptr;
copper = 0;
silver = 0;

View File

@ -441,22 +441,24 @@ Pet::Pet(NPCType *type_data, Mob *owner, PetType type, uint16 spell_id, int16 po
: NPC(type_data, 0, owner->GetPosition() + glm::vec4(2.0f, 2.0f, 0.0f, 0.0f), GravityBehavior::Water)
{
GiveNPCTypeData(type_data);
typeofpet = type;
petpower = power;
SetPetType(type);
SetPetPower(power);
SetOwnerID(owner ? owner->GetID() : 0);
SetPetSpellID(spell_id);
// All pets start at false on newer clients. The client
// turns it on and tracks the state.
taunting=false;
SetTaunting(false);
// Older clients didn't track state, and default taunting is on (per @mackal)
// Familiar and animation pets don't get taunt until an AA.
if (owner && owner->IsClient()) {
if (!(owner->CastToClient()->ClientVersionBit() & EQ::versions::maskUFAndLater)) {
if ((typeofpet != petFamiliar && typeofpet != petAnimation) ||
aabonuses.PetCommands[PET_TAUNT]) {
taunting=true;
if (
(GetPetType() != petFamiliar && GetPetType() != petAnimation) ||
aabonuses.PetCommands[PET_TAUNT]
) {
SetTaunting(true);
}
}
}

View File

@ -1730,7 +1730,13 @@ void NPC::DoClassAttacks(Mob *target) {
//general stuff, for all classes....
//only gets used when their primary ability get used too
if (taunting && HasOwner() && target->IsNPC() && target->GetBodyType() != BT_Undead && taunt_time) {
if (
IsTaunting() &&
HasOwner() &&
target->IsNPC() &&
target->GetBodyType() != BT_Undead &&
taunt_time
) {
GetOwner()->MessageString(Chat::PetResponse, PET_TAUNTING);
Taunt(target->CastToNPC(), false);
}