diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-03-27 18:14:47 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-27 18:14:47 +0200 |
| commit | b47185cabfbdeeaf492bf2303635db07ce703785 (patch) | |
| tree | a162947c7357e964ef991471fe5a40b44f6bbbcf /src/server/game | |
| parent | 4eba9786708dd3b22d9053c1a14eac7e6d03242e (diff) | |
Core/Misc: Rename AddXXXFlag updatefield functions to SetXXXFlag
Diffstat (limited to 'src/server/game')
39 files changed, 217 insertions, 185 deletions
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index 9f4dfb4c9f3..3479e4c55a9 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -412,7 +412,7 @@ void PetAI::DoAttack(Unit* target, bool chase) if (me->Attack(target, true)) { - me->AddUnitFlag(UNIT_FLAG_PET_IN_COMBAT); // on player pets, this flag indicates we're actively going after a target - that's what we're doing, so set it + me->SetUnitFlag(UNIT_FLAG_PET_IN_COMBAT); // on player pets, this flag indicates we're actively going after a target - that's what we're doing, so set it // Play sound to let the player know the pet is attacking something it picked on its own if (me->HasReactState(REACT_AGGRESSIVE) && !me->GetCharmInfo()->IsCommandAttack()) me->SendPetAIReaction(me->GetGUID()); diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index 9222084a5d8..4d5be9811b9 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -394,10 +394,10 @@ int32 CreatureAI::VisualizeBoundary(Seconds duration, Unit* owner, bool fill) co if (TempSummon* point = owner->SummonCreature(BOUNDARY_VISUALIZE_CREATURE, Position(startPosition.GetPositionX() + front.first * BOUNDARY_VISUALIZE_STEP_SIZE, startPosition.GetPositionY() + front.second * BOUNDARY_VISUALIZE_STEP_SIZE, spawnZ), TEMPSUMMON_TIMED_DESPAWN, duration)) { point->SetObjectScale(BOUNDARY_VISUALIZE_CREATURE_SCALE); - point->AddUnitFlag(UNIT_FLAG_STUNNED); + point->SetUnitFlag(UNIT_FLAG_STUNNED); point->SetImmuneToAll(true); if (!hasOutOfBoundsNeighbor) - point->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE); + point->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE); } } diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index b28edb29ef0..9d1b5c98651 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1652,7 +1652,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { for (WorldObject* target : targets) if (IsCreature(target)) - target->ToUnit()->AddNpcFlag(NPCFlags(e.action.flag.flag)); + target->ToUnit()->SetNpcFlag(NPCFlags(e.action.flag.flag)); break; } case SMART_ACTION_REMOVE_NPC_FLAG: @@ -1805,7 +1805,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u // pet talent points break; case 2: - target->ToUnit()->AddVisFlags(UnitVisFlags(e.action.setunitByte.byte1)); + target->ToUnit()->SetVisFlag(UnitVisFlags(e.action.setunitByte.byte1)); break; case 3: target->ToUnit()->SetAnimTier(AnimTier(e.action.setunitByte.byte1)); @@ -1828,7 +1828,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u // pet talent points break; case 2: - target->ToUnit()->RemoveVisFlags(UnitVisFlags(e.action.setunitByte.byte1)); + target->ToUnit()->RemoveVisFlag(UnitVisFlags(e.action.setunitByte.byte1)); break; case 3: target->ToUnit()->SetAnimTier(AnimTier::Ground); @@ -2369,7 +2369,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (IsUnit(target)) { if (e.action.setImmunePC.immunePC) - target->ToUnit()->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); + target->ToUnit()->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); else target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); } @@ -2383,7 +2383,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (IsUnit(target)) { if (e.action.setImmuneNPC.immuneNPC) - target->ToUnit()->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); + target->ToUnit()->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); else target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); } @@ -2397,7 +2397,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (IsUnit(target)) { if (e.action.setUninteractible.uninteractible) - target->ToUnit()->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE); + target->ToUnit()->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE); else target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE); } diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index c39dbc9106a..4a0a3d25137 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -503,7 +503,7 @@ void Battlefield::HideNpc(Creature* creature) { creature->CombatStop(); creature->SetReactState(REACT_PASSIVE); - creature->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE)); + creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE); creature->DisappearAndDie(); creature->SetVisible(false); } @@ -511,14 +511,14 @@ void Battlefield::HideNpc(Creature* creature) void Battlefield::ShowNpc(Creature* creature, bool aggressive) { creature->SetVisible(true); - creature->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE)); + creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE); if (!creature->IsAlive()) creature->Respawn(true); if (aggressive) creature->SetReactState(REACT_AGGRESSIVE); else { - creature->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); creature->SetReactState(REACT_PASSIVE); } } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 715c497fa30..5d18797a419 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1812,7 +1812,7 @@ void Battleground::HandleKillPlayer(Player* victim, Player* killer) if (!isArena()) { // To be able to remove insignia -- ONLY IN Battlegrounds - victim->AddUnitFlag(UNIT_FLAG_SKINNABLE); + victim->SetUnitFlag(UNIT_FLAG_SKINNABLE); RewardXPAtKill(killer, victim); } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index d826794b178..d0518e566e0 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -137,9 +137,9 @@ void BattlegroundIC::PostUpdateImpl(uint32 diff) { if (siege->IsAlive()) { - if (siege->HasUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_CANT_SWIM | UNIT_FLAG_IMMUNE_TO_PC))) + if (siege->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_CANT_SWIM | UNIT_FLAG_IMMUNE_TO_PC)) // following sniffs the vehicle always has UNIT_FLAG_CANNOT_SWIM - siege->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE_TO_PC)); + siege->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE_TO_PC); else siege->SetHealth(siege->GetMaxHealth()); } @@ -577,7 +577,7 @@ void BattlegroundIC::HandleContestedNodes(ICNodePoint* node) for (Creature* cannon : cannons) { cannon->GetVehicleKit()->RemoveAllPassengers(); - cannon->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE); + cannon->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE); } } else if (node->nodeType == NODE_TYPE_WORKSHOP) @@ -764,7 +764,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* node, bool recapture) if (Creature* siegeEngine = GetBGCreature(siegeType)) { - siegeEngine->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_CANT_SWIM)); + siegeEngine->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_CANT_SWIM); siegeEngine->SetImmuneToPC(true); siegeEngine->SetFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]); } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index c2cb0bad634..e112eff40ce 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -676,9 +676,9 @@ void BattlegroundSA::DemolisherStartState(bool start) if (Creature* dem = GetBGCreature(i)) { if (start) - dem->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE)); + dem->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE); else - dem->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE)); + dem->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE); } } } @@ -762,7 +762,7 @@ void BattlegroundSA::UpdateObjectInteractionFlags(uint32 objectId) if (CanInteractWithObject(objectId)) go->RemoveFlag(GO_FLAG_NOT_SELECTABLE); else - go->AddFlag(GO_FLAG_NOT_SELECTABLE); + go->SetFlag(GO_FLAG_NOT_SELECTABLE); } } diff --git a/src/server/game/Combat/CombatManager.cpp b/src/server/game/Combat/CombatManager.cpp index 41ee2147113..4a82b5e98b2 100644 --- a/src/server/game/Combat/CombatManager.cpp +++ b/src/server/game/Combat/CombatManager.cpp @@ -367,7 +367,7 @@ bool CombatManager::UpdateOwnerCombatState() const if (combatState) { - _owner->AddUnitFlag(UNIT_FLAG_IN_COMBAT); + _owner->SetUnitFlag(UNIT_FLAG_IN_COMBAT); _owner->AtEnterCombat(); if (_owner->GetTypeId() != TYPEID_UNIT) _owner->AtEngage(GetAnyTarget()); diff --git a/src/server/game/Entities/Corpse/Corpse.h b/src/server/game/Entities/Corpse/Corpse.h index c52e8e74dd1..5d65e858ae3 100644 --- a/src/server/game/Entities/Corpse/Corpse.h +++ b/src/server/game/Entities/Corpse/Corpse.h @@ -87,7 +87,7 @@ class TC_GAME_API Corpse : public WorldObject, public GridObject<Corpse> static void DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransaction trans); CorpseDynFlags GetCorpseDynamicFlags() const { return CorpseDynFlags(*m_corpseData->DynamicFlags); } - void AddCorpseDynamicFlag(CorpseDynFlags dynamicFlags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Corpse::m_corpseData).ModifyValue(&UF::CorpseData::DynamicFlags), dynamicFlags); } + void SetCorpseDynamicFlag(CorpseDynFlags dynamicFlags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Corpse::m_corpseData).ModifyValue(&UF::CorpseData::DynamicFlags), dynamicFlags); } void RemoveCorpseDynamicFlag(CorpseDynFlags dynamicFlags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Corpse::m_corpseData).ModifyValue(&UF::CorpseData::DynamicFlags), dynamicFlags); } void ReplaceAllCorpseDynamicFlags(CorpseDynFlags dynamicFlags) { SetUpdateFieldValue(m_values.ModifyValue(&Corpse::m_corpseData).ModifyValue(&UF::CorpseData::DynamicFlags), dynamicFlags); } diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c5b445df19c..baba65fca1d 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -675,7 +675,7 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/, // trigger creature is always uninteractible and can not be attacked if (IsTrigger()) - AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE); + SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE); InitializeReactState(); @@ -1357,7 +1357,7 @@ void Creature::SetLootRecipient(Unit* unit, bool withGroup) else m_lootRecipientGroup = ObjectGuid::Empty; - AddDynamicFlag(UNIT_DYNFLAG_TAPPED); + SetDynamicFlag(UNIT_DYNFLAG_TAPPED); } // return true if this creature is tapped by the player or by a member of his group. @@ -2518,7 +2518,7 @@ bool Creature::CanAssistTo(Unit const* u, Unit const* enemy, bool checkfaction / if (IsCivilian()) return false; - if (HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE)) || IsImmuneToNPC()) + if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE) || IsImmuneToNPC()) return false; // skip fighting creature @@ -2874,14 +2874,14 @@ void Creature::RefreshCanSwimFlag(bool recheck) // Check if the creature has UNIT_FLAG_CAN_SWIM and add it if it's missing // Creatures must be able to chase a target in water if they can enter water if (_isMissingCanSwimFlagOutOfCombat && CanEnterWater()) - AddUnitFlag(UNIT_FLAG_CAN_SWIM); + SetUnitFlag(UNIT_FLAG_CAN_SWIM); } void Creature::AllLootRemovedFromCorpse() { if (loot.loot_type != LOOT_SKINNING && !IsPet() && GetCreatureTemplate()->SkinLootId && hasLootRecipient()) if (LootTemplates_Skinning.HaveLootFor(GetCreatureTemplate()->SkinLootId)) - AddUnitFlag(UNIT_FLAG_SKINNABLE); + SetUnitFlag(UNIT_FLAG_SKINNABLE); time_t now = GameTime::GetGameTime(); // Do not reset corpse remove time if corpse is already removed diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 8d618eaf8f2..bdd4b55c2eb 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -439,7 +439,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD break; case GAMEOBJECT_TYPE_PHASEABLE_MO: RemoveFlag(GameObjectFlags(0xF00)); - AddFlag(GameObjectFlags((m_goInfo->phaseableMO.AreaNameSet & 0xF) << 8)); + SetFlag(GameObjectFlags((m_goInfo->phaseableMO.AreaNameSet & 0xF) << 8)); break; case GAMEOBJECT_TYPE_CAPTURE_POINT: SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::SpellVisualID), m_goInfo->capturePoint.SpellVisual1); @@ -1269,7 +1269,7 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap if (!GetGOInfo()->GetDespawnPossibility() && !GetGOInfo()->IsDespawnAtAction()) { - AddFlag(GO_FLAG_NODESPAWN); + SetFlag(GO_FLAG_NODESPAWN); m_respawnDelayTime = 0; m_respawnTime = 0; } @@ -1660,7 +1660,7 @@ void GameObject::ActivateObject(GameObjectActions action, int32 param, WorldObje RemoveFlag(GO_FLAG_LOCKED); break; case GameObjectActions::Lock: - AddFlag(GO_FLAG_LOCKED); + SetFlag(GO_FLAG_LOCKED); break; case GameObjectActions::Open: if (unitCaster) @@ -1691,14 +1691,14 @@ void GameObject::ActivateObject(GameObjectActions action, int32 param, WorldObje DespawnOrUnsummon(); break; case GameObjectActions::MakeInert: - AddFlag(GO_FLAG_NOT_SELECTABLE); + SetFlag(GO_FLAG_NOT_SELECTABLE); break; case GameObjectActions::MakeActive: RemoveFlag(GO_FLAG_NOT_SELECTABLE); break; case GameObjectActions::CloseAndLock: ResetDoorOrButton(); - AddFlag(GO_FLAG_LOCKED); + SetFlag(GO_FLAG_LOCKED); break; case GameObjectActions::UseArtKit0: case GameObjectActions::UseArtKit1: @@ -1801,7 +1801,7 @@ void GameObject::SetGoArtKit(uint8 artkit, GameObject* go, ObjectGuid::LowType l void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false */) { if (activate) - AddFlag(GO_FLAG_IN_USE); + SetFlag(GO_FLAG_IN_USE); else RemoveFlag(GO_FLAG_IN_USE); @@ -2002,7 +2002,7 @@ void GameObject::Use(Unit* user) if (uint32 trapEntry = info->goober.linkedTrap) TriggeringLinkedGameObject(trapEntry, user); - AddFlag(GO_FLAG_IN_USE); + SetFlag(GO_FLAG_IN_USE); SetLootState(GO_ACTIVATED, user); // this appear to be ok, however others exist in addition to this that should have custom (ex: 190510, 188692, 187389) @@ -2669,7 +2669,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb switch (state) { case GO_DESTRUCTIBLE_INTACT: - RemoveFlag(GameObjectFlags(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED)); + RemoveFlag(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED); SetDisplayId(m_goInfo->displayId); if (setHealth) { @@ -2684,7 +2684,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb AI()->Damaged(attackerOrHealer, m_goInfo->destructibleBuilding.DamagedEvent); RemoveFlag(GO_FLAG_DESTROYED); - AddFlag(GO_FLAG_DAMAGED); + SetFlag(GO_FLAG_DAMAGED); uint32 modelId = m_goInfo->displayId; if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec)) @@ -2713,7 +2713,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb bg->DestroyGate(player, this); RemoveFlag(GO_FLAG_DAMAGED); - AddFlag(GO_FLAG_DESTROYED); + SetFlag(GO_FLAG_DESTROYED); uint32 modelId = m_goInfo->displayId; if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec)) @@ -2732,7 +2732,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb case GO_DESTRUCTIBLE_REBUILDING: { EventInform(m_goInfo->destructibleBuilding.RebuildingEvent, attackerOrHealer); - RemoveFlag(GameObjectFlags(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED)); + RemoveFlag(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED); uint32 modelId = m_goInfo->displayId; if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec)) @@ -3321,7 +3321,7 @@ void GameObject::CreateModel() { m_model = GameObjectModel::Create(std::make_unique<GameObjectModelOwnerImpl>(this), sWorld->GetDataPath()); if (m_model && m_model->isMapObject()) - AddFlag(GO_FLAG_MAP_OBJECT); + SetFlag(GO_FLAG_MAP_OBJECT); } std::string GameObject::GetDebugInfo() const diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 7b2d4aa1d88..b032b0018bb 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -200,7 +200,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject> void getFishLootJunk(Loot* loot, Player* loot_owner); bool HasFlag(GameObjectFlags flags) const { return (*m_gameObjectData->Flags & flags) != 0; } - void AddFlag(GameObjectFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::Flags), flags); } + void SetFlag(GameObjectFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::Flags), flags); } void RemoveFlag(GameObjectFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::Flags), flags); } void ReplaceAllFlags(GameObjectFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::Flags), flags); } diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 30617f21b88..d52519fa164 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1647,7 +1647,7 @@ Item* Item::CloneItem(uint32 count, Player const* player /*= nullptr*/) const newItem->SetCreator(GetCreator()); newItem->SetGiftCreator(GetGiftCreator()); - newItem->ReplaceAllItemFlags(ItemFieldFlags(*m_itemData->DynamicFlags & ~(ITEM_FIELD_FLAG_REFUNDABLE | ITEM_FIELD_FLAG_BOP_TRADEABLE))); + newItem->ReplaceAllItemFlags(ItemFieldFlags(*m_itemData->DynamicFlags) & ~(ITEM_FIELD_FLAG_REFUNDABLE | ITEM_FIELD_FLAG_BOP_TRADEABLE)); newItem->SetExpiration(m_itemData->Expiration); // player CAN be NULL in which case we must not update random properties because that accesses player's item update queue if (player) @@ -1892,7 +1892,7 @@ bool Item::IsRefundExpired() void Item::SetSoulboundTradeable(GuidSet const& allowedLooters) { - AddItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE); + SetItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE); allowedGUIDs = allowedLooters; } diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 7440b9bb0a2..8e7aebc7660 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -201,17 +201,17 @@ class TC_GAME_API Item : public Object void SetBinding(bool val) { if (val) - AddItemFlag(ITEM_FIELD_FLAG_SOULBOUND); + SetItemFlag(ITEM_FIELD_FLAG_SOULBOUND); else RemoveItemFlag(ITEM_FIELD_FLAG_SOULBOUND); } bool HasItemFlag(ItemFieldFlags flag) const { return (*m_itemData->DynamicFlags & flag) != 0; } - void AddItemFlag(ItemFieldFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags), flags); } + void SetItemFlag(ItemFieldFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags), flags); } void RemoveItemFlag(ItemFieldFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags), flags); } void ReplaceAllItemFlags(ItemFieldFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags), flags); } bool HasItemFlag2(ItemFieldFlags2 flag) const { return (*m_itemData->DynamicFlags2 & flag) != 0; } - void AddItemFlag2(ItemFieldFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } + void SetItemFlag2(ItemFieldFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } void RemoveItemFlag2(ItemFieldFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } void ReplaceAllItemFlags2(ItemFieldFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); } diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index a2183ba78be..8ae68284dec 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -168,11 +168,15 @@ enum ItemFieldFlags : uint32 ITEM_FIELD_FLAG_UNK26 = 0x80000000 }; +DEFINE_ENUM_FLAG(ItemFieldFlags); + enum ItemFieldFlags2 : uint32 { ITEM_FIELD_FLAG2_EQUIPPED = 0x1 }; +DEFINE_ENUM_FLAG(ItemFieldFlags2); + enum ItemFlags : uint32 { ITEM_FLAG_NO_PICKUP = 0x00000001, diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 129ac5a7988..9350f7073e6 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2931,7 +2931,7 @@ bool WorldObject::IsValidAttackTarget(WorldObject const* target, SpellInfo const } // check flags - if (unitTarget && unitTarget->HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_ON_TAXI | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2))) + if (unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_ON_TAXI | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2)) return false; Unit const* unitOrOwner = unit; @@ -3075,7 +3075,7 @@ bool WorldObject::IsValidAssistTarget(WorldObject const* target, SpellInfo const return false; // check flags for negative spells - if (isNegativeSpell && unitTarget && unitTarget->HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_ON_TAXI | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2))) + if (isNegativeSpell && unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_ON_TAXI | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2)) return false; if (isNegativeSpell || !bySpell || !bySpell->HasAttribute(SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG)) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 66c9ed7a8ce..cd1e47ca26a 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -163,7 +163,7 @@ class TC_GAME_API Object uint32 GetDynamicFlags() const { return m_objectData->DynamicFlags; } bool HasDynamicFlag(uint32 flag) const { return (*m_objectData->DynamicFlags & flag) != 0; } - void AddDynamicFlag(uint32 flag) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags), flag); } + void SetDynamicFlag(uint32 flag) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags), flag); } void RemoveDynamicFlag(uint32 flag) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags), flag); } void ReplaceAllDynamicFlags(uint32 flag) { SetUpdateFieldValue(m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags), flag); } diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 467daa1996b..a3c2313e63f 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -289,7 +289,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c SetClass(CLASS_WARRIOR); SetGender(GENDER_NONE); SetSheath(SHEATH_STATE_MELEE); - ReplaceAllPetFlags(petInfo->WasRenamed ? UNIT_PET_FLAG_CAN_BE_ABANDONED : UnitPetFlag(UNIT_PET_FLAG_CAN_BE_RENAMED | UNIT_PET_FLAG_CAN_BE_ABANDONED)); + ReplaceAllPetFlags(petInfo->WasRenamed ? UNIT_PET_FLAG_CAN_BE_ABANDONED : (UNIT_PET_FLAG_CAN_BE_RENAMED | UNIT_PET_FLAG_CAN_BE_ABANDONED)); ReplaceAllUnitFlags(UNIT_FLAG_PLAYER_CONTROLLED); // this enables popup window (pet abandon, cancel) break; default: @@ -842,7 +842,7 @@ bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map) SetGender(GENDER_NONE); SetPowerType(POWER_FOCUS); SetSheath(SHEATH_STATE_MELEE); - ReplaceAllPetFlags(UnitPetFlag(UNIT_PET_FLAG_CAN_BE_RENAMED | UNIT_PET_FLAG_CAN_BE_ABANDONED)); + ReplaceAllPetFlags(UNIT_PET_FLAG_CAN_BE_RENAMED | UNIT_PET_FLAG_CAN_BE_ABANDONED); } return true; @@ -1702,7 +1702,7 @@ bool Pet::Create(ObjectGuid::LowType guidlow, Map* map, uint32 Entry, uint32 /*p return false; // Force regen flag for player pets, just like we do for players themselves - AddUnitFlag2(UNIT_FLAG2_REGENERATE_POWER); + SetUnitFlag2(UNIT_FLAG2_REGENERATE_POWER); SetSheath(SHEATH_STATE_MELEE); GetThreatManager().Initialize(); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 41957580229..f649e5169b1 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -476,11 +476,11 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac InitDisplayIds(); if (sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_PVP || sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_RPPVP) { - AddPvpFlag(UNIT_BYTE2_FLAG_PVP); - AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + SetPvpFlag(UNIT_BYTE2_FLAG_PVP); + SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); } - AddUnitFlag2(UNIT_FLAG2_REGENERATE_POWER); + SetUnitFlag2(UNIT_FLAG2_REGENERATE_POWER); SetHoverHeight(1.0f); // default for players in 3.0.3 SetWatchedFactionIndex(-1); @@ -1275,7 +1275,7 @@ void Player::ToggleAFK() if (isAFK()) RemovePlayerFlag(PLAYER_FLAGS_AFK); else - AddPlayerFlag(PLAYER_FLAGS_AFK); + SetPlayerFlag(PLAYER_FLAGS_AFK); // afk player not allowed in battleground if (!IsGameMaster() && isAFK() && InBattleground() && !InArena()) @@ -1287,7 +1287,7 @@ void Player::ToggleDND() if (isDND()) RemovePlayerFlag(PLAYER_FLAGS_DND); else - AddPlayerFlag(PLAYER_FLAGS_DND); + SetPlayerFlag(PLAYER_FLAGS_DND); } uint8 Player::GetChatFlags() const @@ -2109,8 +2109,8 @@ void Player::SetGameMaster(bool on) { m_ExtraFlags |= PLAYER_EXTRA_GM_ON; SetFaction(FACTION_FRIENDLY); - AddPlayerFlag(PLAYER_FLAGS_GM); - AddUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); + SetPlayerFlag(PLAYER_FLAGS_GM); + SetUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); if (Pet* pet = GetPet()) pet->SetFaction(FACTION_FRIENDLY); @@ -2137,7 +2137,7 @@ void Player::SetGameMaster(bool on) // restore FFA PvP Server state if (sWorld->IsFFAPvPRealm()) - AddPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); + SetPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); // restore FFA PvP area state, remove not allowed for GM mounts UpdateArea(m_areaUpdateId); @@ -2570,22 +2570,22 @@ void Player::InitStatsForLevel(bool reapplyMods) SetMountDisplayId(0); // cleanup unit flags (will be re-applied if need at aura load). - RemoveUnitFlag(UnitFlags( + RemoveUnitFlag( UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_LOOTING | UNIT_FLAG_PET_IN_COMBAT | UNIT_FLAG_SILENCED | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED | UNIT_FLAG_IN_COMBAT | UNIT_FLAG_DISARMED | UNIT_FLAG_CONFUSED | UNIT_FLAG_FLEEING | UNIT_FLAG_UNINTERACTIBLE | - UNIT_FLAG_SKINNABLE | UNIT_FLAG_MOUNT | UNIT_FLAG_ON_TAXI )); - AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); // must be set + UNIT_FLAG_SKINNABLE | UNIT_FLAG_MOUNT | UNIT_FLAG_ON_TAXI ); + SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); // must be set - AddUnitFlag2(UNIT_FLAG2_REGENERATE_POWER);// must be set + SetUnitFlag2(UNIT_FLAG2_REGENERATE_POWER);// must be set // cleanup player flags (will be re-applied if need at aura load), to avoid have ghost flag without ghost aura, for example. - RemovePlayerFlag(PlayerFlags(PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST)); + RemovePlayerFlag(PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST); - RemoveVisFlags(UNIT_VIS_FLAGS_ALL); // one form stealth modified bytes - RemovePvpFlag(UnitPVPStateFlags(UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY)); + RemoveVisFlag(UNIT_VIS_FLAGS_ALL); // one form stealth modified bytes + RemovePvpFlag(UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY); // restore if need some important flags SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LocalRegenFlags), 0); @@ -4330,7 +4330,7 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness) RemoveAurasDueToSpell(8326); // SPELL_AURA_GHOST if (GetSession()->IsARecruiter() || (GetSession()->GetRecruiterId() != 0)) - AddDynamicFlag(UNIT_DYNFLAG_REFER_A_FRIEND); + SetDynamicFlag(UNIT_DYNFLAG_REFER_A_FRIEND); setDeathState(ALIVE); @@ -4413,7 +4413,7 @@ void Player::KillPlayer() ReplaceAllDynamicFlags(UNIT_DYNFLAG_NONE); if (!sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) - AddPlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); + SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); else RemovePlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); @@ -7114,7 +7114,7 @@ void Player::SetInGuild(ObjectGuid::LowType guildId) if (guildId) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::GuildGUID), ObjectGuid::Create<HighGuid::Guild>(guildId)); - AddPlayerFlag(PLAYER_FLAGS_GUILD_LEVEL_ENABLED); + SetPlayerFlag(PLAYER_FLAGS_GUILD_LEVEL_ENABLED); } else { @@ -7208,7 +7208,7 @@ void Player::UpdateArea(uint32 newArea) pvpInfo.IsInNoPvPArea = false; if (area && area->IsSanctuary()) // in sanctuary { - AddPvpFlag(UNIT_BYTE2_FLAG_SANCTUARY); + SetPvpFlag(UNIT_BYTE2_FLAG_SANCTUARY); pvpInfo.IsInNoPvPArea = true; if (!duel && GetCombatManager().HasPvPCombat()) CombatStopWithPets(); @@ -8707,7 +8707,7 @@ void Player::RemovedInsignia(Player* looterPlr) return; // Now we must make bones lootable, and send player loot - bones->AddCorpseDynamicFlag(CORPSE_DYNFLAG_LOOTABLE); + bones->SetCorpseDynamicFlag(CORPSE_DYNFLAG_LOOTABLE); // We store the level of our player in the gold field // We retrieve this information at Player::SendLoot() @@ -9121,7 +9121,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type, bool aeLooting/* = fa m_AELootView[loot->GetGUID()] = guid; if (loot_type == LOOT_CORPSE && !guid.IsItem()) - AddUnitFlag(UNIT_FLAG_LOOTING); + SetUnitFlag(UNIT_FLAG_LOOTING); } else SendLootError(loot->GetGUID(), guid, LOOT_ERROR_DIDNT_KILL); @@ -12075,7 +12075,7 @@ Item* Player::StoreNewItem(ItemPosCountVec const& pos, uint32 itemId, bool updat Item* item = Item::CreateItem(itemId, count, context, this); if (item) { - item->AddItemFlag(ITEM_FIELD_FLAG_NEW_ITEM); + item->SetItemFlag(ITEM_FIELD_FLAG_NEW_ITEM); item->SetBonuses(bonusListIDs); @@ -12119,7 +12119,7 @@ Item* Player::StoreNewItem(ItemPosCountVec const& pos, uint32 itemId, bool updat if (Item* childItem = StoreNewItem(childDest, childTemplate->GetId(), update, {}, {}, context, {}, addToCollection)) { childItem->SetCreator(item->GetGUID()); - childItem->AddItemFlag(ITEM_FIELD_FLAG_CHILD); + childItem->SetItemFlag(ITEM_FIELD_FLAG_CHILD); item->SetChildItem(childItem->GetGUID()); } } @@ -12321,7 +12321,7 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update) } } - pItem->AddItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); + pItem->SetItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); if (IsInWorld() && update) { @@ -12499,7 +12499,7 @@ void Player::QuickEquipItem(uint16 pos, Item* pItem) uint8 slot = pos & 255; VisualizeItem(slot, pItem); - pItem->AddItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); + pItem->SetItemFlag2(ITEM_FIELD_FLAG2_EQUIPPED); if (IsInWorld()) { @@ -18628,7 +18628,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol // RaF stuff. if (GetSession()->IsARecruiter() || (GetSession()->GetRecruiterId() != 0)) - AddDynamicFlag(UNIT_DYNFLAG_REFER_A_FRIEND); + SetDynamicFlag(UNIT_DYNFLAG_REFER_A_FRIEND); _LoadDeclinedNames(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES)); @@ -18924,7 +18924,7 @@ void Player::LoadCorpse(PreparedQueryResult result) Field* fields = result->Fetch(); _corpseLocation.WorldRelocate(fields[0].GetUInt16(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat()); if (!sMapStore.AssertEntry(_corpseLocation.GetMapId())->Instanceable()) - AddPlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); + SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); else RemovePlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); } @@ -19787,7 +19787,7 @@ void Player::_LoadGroup(PreparedQueryResult result) if (Group* group = sGroupMgr->GetGroupByDbStoreId((*result)[0].GetUInt32())) { if (group->IsLeader(GetGUID())) - AddPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); + SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); uint8 subgroup = group->GetMemberGroup(GetGUID()); SetGroup(group, subgroup); @@ -21797,7 +21797,7 @@ void Player::SetContestedPvP(Player* attackedPlayer) if (!HasUnitState(UNIT_STATE_ATTACK_PLAYER)) { AddUnitState(UNIT_STATE_ATTACK_PLAYER); - AddPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP); + SetPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP); // call MoveInLineOfSight for nearby contested guards Trinity::AIRelocationNotifier notifier(*this); Cell::VisitWorldObjects(this, notifier, GetVisibilityRange()); @@ -23017,7 +23017,7 @@ void Player::CleanupAfterTaxiFlight() { m_taxi.ClearTaxiDestinations(); // not destinations, clear source node Dismount(); - RemoveUnitFlag(UnitFlags(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_ON_TAXI)); + RemoveUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_ON_TAXI); } void Player::ContinueTaxiFlight() const @@ -23165,7 +23165,7 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c if (pProto->HasFlag(ITEM_FLAG_ITEM_PURCHASE_RECORD) && crItem->ExtendedCost && pProto->GetMaxStackSize() == 1) { - it->AddItemFlag(ITEM_FIELD_FLAG_REFUNDABLE); + it->SetItemFlag(ITEM_FIELD_FLAG_REFUNDABLE); it->SetRefundRecipient(GetGUID()); it->SetPaidMoney(price); it->SetPaidExtendedCost(crItem->ExtendedCost); @@ -23623,9 +23623,9 @@ void Player::UpdatePvPState(bool onlyFFA) { if (!IsFFAPvP()) { - AddPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); + SetPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); for (ControlList::iterator itr = m_Controlled.begin(); itr != m_Controlled.end(); ++itr) - (*itr)->AddPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); + (*itr)->SetPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); } } else if (IsFFAPvP()) @@ -29180,7 +29180,7 @@ void Player::SetWarModeDesired(bool enabled) if (enabled) { - AddPlayerFlag(PLAYER_FLAGS_WAR_MODE_DESIRED); + SetPlayerFlag(PLAYER_FLAGS_WAR_MODE_DESIRED); TogglePvpTalents(true); SetPvP(true); } @@ -29197,7 +29197,7 @@ void Player::SetWarModeDesired(bool enabled) void Player::SetWarModeLocal(bool enabled) { if (enabled) - AddPlayerLocalFlag(PLAYER_LOCAL_FLAG_WAR_MODE); + SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_WAR_MODE); else RemovePlayerLocalFlag(PLAYER_LOCAL_FLAG_WAR_MODE); } @@ -29238,12 +29238,12 @@ void Player::UpdateWarModeAuras() } else { - AddPlayerFlag(PLAYER_FLAGS_WAR_MODE_ACTIVE); + SetPlayerFlag(PLAYER_FLAGS_WAR_MODE_ACTIVE); RemoveAurasDueToSpell(auraInside); CastSpell(this, auraOutside, true); } SetWarModeLocal(true); - AddPvpFlag(UNIT_BYTE2_FLAG_PVP); + SetPvpFlag(UNIT_BYTE2_FLAG_PVP); } else { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 528d8db6fab..12477542e99 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -484,6 +484,8 @@ enum PlayerFlags PLAYER_FLAGS_COMMENTATOR_CAMERA = 0x80000000 }; +DEFINE_ENUM_FLAG(PlayerFlags); + enum PlayerFlagsEx { PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED = 0x0001, @@ -495,6 +497,8 @@ enum PlayerFlagsEx PLAYER_FLAGS_EX_UNLOCKED_AOE_LOOT = 0x0200 }; +DEFINE_ENUM_FLAG(PlayerFlagsEx); + enum PlayerLocalFlags { PLAYER_LOCAL_FLAG_CONTROLLING_PET = 0x00000001, // Displays "You have an active summon already" when trying to tame new pet @@ -514,6 +518,8 @@ enum PlayerLocalFlags PLAYER_LOCAL_FLAG_WEEKLY_REWARD_AVAILABLE = 0x00040000, }; +DEFINE_ENUM_FLAG(PlayerLocalFlags); + // used in PLAYER_FIELD_BYTES2 values enum PlayerFieldByte2Flags { @@ -1190,7 +1196,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void ContinueTaxiFlight() const; bool IsDeveloper() const { return HasPlayerFlag(PLAYER_FLAGS_DEVELOPER); } - void SetDeveloper(bool on) { if (on) AddPlayerFlag(PLAYER_FLAGS_DEVELOPER); else RemovePlayerFlag(PLAYER_FLAGS_DEVELOPER); } + void SetDeveloper(bool on) { if (on) SetPlayerFlag(PLAYER_FLAGS_DEVELOPER); else RemovePlayerFlag(PLAYER_FLAGS_DEVELOPER); } bool isAcceptWhispers() const { return (m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS) != 0; } void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; } bool IsGameMaster() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_ON) != 0; } @@ -2631,7 +2637,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> // Void Storage bool IsVoidStorageUnlocked() const { return HasPlayerFlag(PLAYER_FLAGS_VOID_UNLOCKED); } - void UnlockVoidStorage() { AddPlayerFlag(PLAYER_FLAGS_VOID_UNLOCKED); } + void UnlockVoidStorage() { SetPlayerFlag(PLAYER_FLAGS_VOID_UNLOCKED); } void LockVoidStorage() { RemovePlayerFlag(PLAYER_FLAGS_VOID_UNLOCKED); } uint8 GetNextVoidStorageFreeSlot() const; uint8 GetNumOfVoidStorageFreeSlots() const; @@ -2643,7 +2649,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> // Reagent Bank bool IsReagentBankUnlocked() const { return HasPlayerFlagEx(PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED); } - void UnlockReagentBank() { AddPlayerFlagEx(PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED); } + void UnlockReagentBank() { SetPlayerFlagEx(PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED); } void CreateGarrison(uint32 garrSiteId); void DeleteGarrison(); @@ -2675,12 +2681,12 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool MeetPlayerCondition(uint32 conditionId) const; bool HasPlayerFlag(PlayerFlags flags) const { return (*m_playerData->PlayerFlags & flags) != 0; } - void AddPlayerFlag(PlayerFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlags), flags); } + void SetPlayerFlag(PlayerFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlags), flags); } void RemovePlayerFlag(PlayerFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlags), flags); } void ReplaceAllPlayerFlags(PlayerFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlags), flags); } bool HasPlayerFlagEx(PlayerFlagsEx flags) const { return (*m_playerData->PlayerFlagsEx & flags) != 0; } - void AddPlayerFlagEx(PlayerFlagsEx flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlagsEx), flags); } + void SetPlayerFlagEx(PlayerFlagsEx flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlagsEx), flags); } void RemovePlayerFlagEx(PlayerFlagsEx flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlagsEx), flags); } void ReplaceAllPlayerFlagsEx(PlayerFlagsEx flags) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PlayerFlagsEx), flags); } @@ -2756,7 +2762,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> ObjectGuid GetSummonedBattlePetGUID() const { return m_activePlayerData->SummonedBattlePetGUID; } void SetSummonedBattlePetGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::SummonedBattlePetGUID), guid); } - void AddTrackCreatureFlag(uint32 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TrackCreatureMask), flags); } + void SetTrackCreatureFlag(uint32 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TrackCreatureMask), flags); } void RemoveTrackCreatureFlag(uint32 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TrackCreatureMask), flags); } void SetVersatilityBonus(float value) { SetUpdateFieldStatValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::VersatilityBonus), value); } @@ -2766,7 +2772,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void ApplyModOverrideAPBySpellPowerPercent(float mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::OverrideAPBySpellPowerPercent), mod, apply); } bool HasPlayerLocalFlag(PlayerLocalFlags flags) const { return (*m_activePlayerData->LocalFlags & flags) != 0; } - void AddPlayerLocalFlag(PlayerLocalFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LocalFlags), flags); } + void SetPlayerLocalFlag(PlayerLocalFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LocalFlags), flags); } void RemovePlayerLocalFlag(PlayerLocalFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LocalFlags), flags); } void ReplaceAllPlayerLocalFlags(PlayerLocalFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LocalFlags), flags); } diff --git a/src/server/game/Entities/Player/RestMgr.cpp b/src/server/game/Entities/Player/RestMgr.cpp index 3c23a9310c0..2eb0243be28 100644 --- a/src/server/game/Entities/Player/RestMgr.cpp +++ b/src/server/game/Entities/Player/RestMgr.cpp @@ -102,7 +102,7 @@ void RestMgr::SetRestFlag(RestFlag restFlag, uint32 triggerID) if (!oldRestMask && _restFlagMask) // only set flag/time on the first rest state { _restTime = GameTime::GetGameTime(); - _player->AddPlayerFlag(PLAYER_FLAGS_RESTING); + _player->SetPlayerFlag(PLAYER_FLAGS_RESTING); } if (triggerID) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 004ee1f1ab3..86b7eac84a4 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5868,7 +5868,7 @@ void Unit::SetMinion(Minion *minion, bool apply) if (GetTypeId() == TYPEID_PLAYER) { minion->m_ControlledByPlayer = true; - minion->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + minion->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); } // Can only have one pet. If a new one is summoned, dismiss the old one. @@ -6055,7 +6055,7 @@ void Unit::SetCharm(Unit* charm, bool apply) charm->m_ControlledByPlayer = true; /// @todo maybe we can use this flag to check if controlled by player - charm->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); } else charm->m_ControlledByPlayer = false; @@ -6094,13 +6094,13 @@ void Unit::SetCharm(Unit* charm, bool apply) if (charm->GetTypeId() == TYPEID_PLAYER) { charm->m_ControlledByPlayer = true; - charm->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); charm->ToPlayer()->UpdatePvPState(); } else if (Player* player = charm->GetCharmerOrOwnerPlayerOrPlayerItself()) { charm->m_ControlledByPlayer = true; - charm->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); charm->ReplaceAllPvpFlags(player->GetPvpFlags()); } else @@ -7573,7 +7573,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) if (mount) SetMountDisplayId(mount); - AddUnitFlag(UNIT_FLAG_MOUNT); + SetUnitFlag(UNIT_FLAG_MOUNT); if (Player* player = ToPlayer()) { @@ -7596,7 +7596,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) Battleground* bg = ToPlayer()->GetBattleground(); // don't unsummon pet in arena but SetFlag UNIT_FLAG_STUNNED to disable pet's interface if (bg && bg->isArena()) - pet->AddUnitFlag(UNIT_FLAG_STUNNED); + pet->SetUnitFlag(UNIT_FLAG_STUNNED); else player->UnsummonPetTemporaryIfAny(); } @@ -7604,7 +7604,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) // if we have charmed npc, stun him also (everywhere) if (Unit* charm = player->GetCharmed()) if (charm->GetTypeId() == TYPEID_UNIT) - charm->AddUnitFlag(UNIT_FLAG_STUNNED); + charm->SetUnitFlag(UNIT_FLAG_STUNNED); player->SendMovementSetCollisionHeight(player->GetCollisionHeight(), WorldPackets::Movement::UpdateCollisionHeightReason::Mount); } @@ -7766,11 +7766,11 @@ void Unit::UpdateMountCapability() bool Unit::IsServiceProvider() const { - return HasNpcFlag(NPCFlags( + return HasNpcFlag( UNIT_NPC_FLAG_VENDOR | UNIT_NPC_FLAG_TRAINER | UNIT_NPC_FLAG_FLIGHTMASTER | UNIT_NPC_FLAG_PETITIONER | UNIT_NPC_FLAG_BATTLEMASTER | UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_INNKEEPER | UNIT_NPC_FLAG_SPIRITHEALER | - UNIT_NPC_FLAG_SPIRITGUIDE | UNIT_NPC_FLAG_TABARDDESIGNER | UNIT_NPC_FLAG_AUCTIONEER)); + UNIT_NPC_FLAG_SPIRITGUIDE | UNIT_NPC_FLAG_TABARDDESIGNER | UNIT_NPC_FLAG_AUCTIONEER); } void Unit::EngageWithTarget(Unit* enemy) @@ -7788,20 +7788,20 @@ void Unit::SetImmuneToAll(bool apply, bool keepCombat) { if (apply) { - AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC)); + SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); ValidateAttackersAndOwnTarget(); if (!keepCombat) m_combatManager.EndAllCombat(); } else - RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC)); + RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); } void Unit::SetImmuneToPC(bool apply, bool keepCombat) { if (apply) { - AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); + SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); ValidateAttackersAndOwnTarget(); if (!keepCombat) { @@ -7824,7 +7824,7 @@ void Unit::SetImmuneToNPC(bool apply, bool keepCombat) { if (apply) { - AddUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); + SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); ValidateAttackersAndOwnTarget(); if (!keepCombat) { @@ -7853,7 +7853,7 @@ bool Unit::isTargetableForAttack(bool checkFakeDeath) const if (!IsAlive()) return false; - if (HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE))) + if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE)) return false; if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->IsGameMaster()) @@ -8394,7 +8394,7 @@ void Unit::UpdatePetCombatState() } if (state) - AddUnitFlag(UNIT_FLAG_PET_IN_COMBAT); + SetUnitFlag(UNIT_FLAG_PET_IN_COMBAT); else RemoveUnitFlag(UNIT_FLAG_PET_IN_COMBAT); } @@ -10408,7 +10408,7 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id) pet->SetCreatedBySpell(spell_id); if (GetTypeId() == TYPEID_PLAYER) - pet->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + pet->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); if (!pet->InitStatsForLevel(level)) { @@ -10710,7 +10710,7 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId) { // must be after setDeathState which resets dynamic flags if (!creature->loot.isLooted()) - creature->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE); + creature->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE); else creature->AllLootRemovedFromCorpse(); } @@ -10918,7 +10918,7 @@ void Unit::SetStunned(bool apply) if (apply) { SetTarget(ObjectGuid::Empty); - AddUnitFlag(UNIT_FLAG_STUNNED); + SetUnitFlag(UNIT_FLAG_STUNNED); StopMoving(); @@ -11169,13 +11169,13 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au switch (type) { case CHARM_TYPE_VEHICLE: - AddUnitFlag(UNIT_FLAG_POSSESSED); + SetUnitFlag(UNIT_FLAG_POSSESSED); playerCharmer->SetClientControl(this, true); playerCharmer->VehicleSpellInitialize(); break; case CHARM_TYPE_POSSESS: - AddUnitFlag(UNIT_FLAG_POSSESSED); - charmer->AddUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL); + SetUnitFlag(UNIT_FLAG_POSSESSED); + charmer->SetUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL); playerCharmer->SetClientControl(this, true); playerCharmer->PossessSpellInitialize(); AddUnitState(UNIT_STATE_POSSESSED); @@ -11374,7 +11374,7 @@ void Unit::RemoveVehicleKit(bool onRemoveFromWorld /*= false*/) m_updateFlag.Vehicle = false; m_unitTypeMask &= ~UNIT_MASK_VEHICLE; - RemoveNpcFlag(NPCFlags(UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE)); + RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE); } bool Unit::IsOnVehicle(Unit const* vehicle) const @@ -11515,7 +11515,7 @@ bool Unit::IsContestedGuard() const void Unit::SetPvP(bool state) { if (state) - AddPvpFlag(UNIT_BYTE2_FLAG_PVP); + SetPvpFlag(UNIT_BYTE2_FLAG_PVP); else RemovePvpFlag(UNIT_BYTE2_FLAG_PVP); } @@ -12169,11 +12169,11 @@ bool Unit::CanSwim() const return false; if (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED)) // is player return true; - if (HasUnitFlag2(UnitFlags2(0x1000000))) + if (HasUnitFlag2(UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS)) return false; if (HasUnitFlag(UNIT_FLAG_PET_IN_COMBAT)) return true; - return HasUnitFlag(UnitFlags(UNIT_FLAG_RENAME | UNIT_FLAG_CAN_SWIM)); + return HasUnitFlag(UNIT_FLAG_RENAME | UNIT_FLAG_CAN_SWIM); } void Unit::NearTeleportTo(Position const& pos, bool casting /*= false*/) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 235eb5da319..aa9ec20bc68 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -946,17 +946,17 @@ class TC_GAME_API Unit : public WorldObject void SetModTimeRate(float timeRate) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ModTimeRate), timeRate); } bool HasUnitFlag(UnitFlags flags) const { return (*m_unitData->Flags & flags) != 0; } - void AddUnitFlag(UnitFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags), flags); } + void SetUnitFlag(UnitFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags), flags); } void RemoveUnitFlag(UnitFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags), flags); } void ReplaceAllUnitFlags(UnitFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags), flags); } bool HasUnitFlag2(UnitFlags2 flags) const { return (*m_unitData->Flags2 & flags) != 0; } - void AddUnitFlag2(UnitFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags2), flags); } + void SetUnitFlag2(UnitFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags2), flags); } void RemoveUnitFlag2(UnitFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags2), flags); } void ReplaceAllUnitFlags2(UnitFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags2), flags); } bool HasUnitFlag3(UnitFlags3 flags) const { return (*m_unitData->Flags3 & flags) != 0; } - void AddUnitFlag3(UnitFlags3 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags3), flags); } + void SetUnitFlag3(UnitFlags3 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags3), flags); } void RemoveUnitFlag3(UnitFlags3 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags3), flags); } void ReplaceAllUnitFlags3(UnitFlags3 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Flags3), flags); } @@ -979,7 +979,7 @@ class TC_GAME_API Unit : public WorldObject UnitPVPStateFlags GetPvpFlags() const { return UnitPVPStateFlags(*m_unitData->PvpFlags); } bool HasPvpFlag(UnitPVPStateFlags flags) const { return (*m_unitData->PvpFlags & flags) != 0; } - void AddPvpFlag(UnitPVPStateFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PvpFlags), flags); } + void SetPvpFlag(UnitPVPStateFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PvpFlags), flags); } void RemovePvpFlag(UnitPVPStateFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PvpFlags), flags); } void ReplaceAllPvpFlags(UnitPVPStateFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PvpFlags), flags); } @@ -990,7 +990,7 @@ class TC_GAME_API Unit : public WorldObject UnitPetFlag GetPetFlags() const { return UnitPetFlag(*m_unitData->PetFlags); } bool HasPetFlag(UnitPetFlag flags) const { return (*m_unitData->PetFlags & flags) != 0; } - void AddPetFlag(UnitPetFlag flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PetFlags), flags); } + void SetPetFlag(UnitPetFlag flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PetFlags), flags); } void RemovePetFlag(UnitPetFlag flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PetFlags), flags); } void ReplaceAllPetFlags(UnitPetFlag flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PetFlags), flags); } @@ -1002,8 +1002,8 @@ class TC_GAME_API Unit : public WorldObject bool IsStandState() const; void SetStandState(UnitStandStateType state, uint32 animKitID = 0); - void AddVisFlags(UnitVisFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::VisFlags), flags); } - void RemoveVisFlags(UnitVisFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::VisFlags), flags); } + void SetVisFlag(UnitVisFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::VisFlags), flags); } + void RemoveVisFlag(UnitVisFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::VisFlags), flags); } void ReplaceAllVisFlags(UnitVisFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::VisFlags), flags); } AnimTier GetAnimTier() const { return AnimTier(*m_unitData->AnimTier); } @@ -1090,13 +1090,15 @@ class TC_GAME_API Unit : public WorldObject MeleeHitOutcome RollMeleeOutcomeAgainst(Unit const* victim, WeaponAttackType attType) const; + NPCFlags GetNpcFlags() const { return NPCFlags(m_unitData->NpcFlags[0]); } bool HasNpcFlag(NPCFlags flags) const { return (m_unitData->NpcFlags[0] & flags) != 0; } - void AddNpcFlag(NPCFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 0), flags); } + void SetNpcFlag(NPCFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 0), flags); } void RemoveNpcFlag(NPCFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 0), flags); } void ReplaceAllNpcFlags(NPCFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 0), flags); } + NPCFlags2 GetNpcFlags2() const { return NPCFlags2(m_unitData->NpcFlags[1]); } bool HasNpcFlag2(NPCFlags2 flags) const { return (m_unitData->NpcFlags[1] & flags) != 0; } - void AddNpcFlag2(NPCFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); } + void SetNpcFlag2(NPCFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); } void RemoveNpcFlag2(NPCFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); } void ReplaceAllNpcFlags2(NPCFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); } @@ -1116,7 +1118,7 @@ class TC_GAME_API Unit : public WorldObject bool IsArmorer() const { return HasNpcFlag(UNIT_NPC_FLAG_REPAIR); } bool IsWildBattlePet() const { return HasNpcFlag(UNIT_NPC_FLAG_WILD_BATTLE_PET); } bool IsServiceProvider() const; - bool IsSpiritService() const { return HasNpcFlag(NPCFlags(UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE)); } + bool IsSpiritService() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE); } bool IsCritter() const { return GetCreatureType() == CREATURE_TYPE_CRITTER; } bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); } diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h index 48cfa6a9116..161c38161bc 100644 --- a/src/server/game/Entities/Unit/UnitDefines.h +++ b/src/server/game/Entities/Unit/UnitDefines.h @@ -19,6 +19,7 @@ #define UnitDefines_h__ #include "Define.h" +#include "EnumFlag.h" #include <string> #define MIN_MELEE_REACH 2.0f @@ -90,6 +91,8 @@ enum UnitPVPStateFlags : uint8 UNIT_BYTE2_FLAG_UNK7 = 0x80 }; +DEFINE_ENUM_FLAG(UnitPVPStateFlags); + // byte (2 from 0..3) of UNIT_FIELD_BYTES_2 enum UnitPetFlag : uint8 { @@ -98,6 +101,8 @@ enum UnitPetFlag : uint8 UNIT_PET_FLAG_CAN_BE_ABANDONED = 0x02 }; +DEFINE_ENUM_FLAG(UnitPetFlag); + enum UnitMoveType { MOVE_WALK = 0, @@ -161,6 +166,8 @@ enum UnitFlags : uint32 UNIT_FLAG_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG_DISALLOWED) }; +DEFINE_ENUM_FLAG(UnitFlags); + // Value masks for UNIT_FIELD_FLAGS_2 // EnumUtils: DESCRIBE THIS enum UnitFlags2 : uint32 @@ -211,6 +218,8 @@ enum UnitFlags2 : uint32 UNIT_FLAG2_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG2_DISALLOWED) }; +DEFINE_ENUM_FLAG(UnitFlags2); + // Value masks for UNIT_FIELD_FLAGS_3 // EnumUtils: DESCRIBE THIS enum UnitFlags3 : uint32 @@ -221,6 +230,8 @@ enum UnitFlags3 : uint32 UNIT_FLAG3_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG3_DISALLOWED) }; +DEFINE_ENUM_FLAG(UnitFlags3); + /// Non Player Character flags // EnumUtils: DESCRIBE THIS enum NPCFlags : uint32 @@ -260,6 +271,8 @@ enum NPCFlags : uint32 UNIT_NPC_FLAG_BLACK_MARKET = 0x80000000 // TITLE is black market }; +DEFINE_ENUM_FLAG(NPCFlags); + // EnumUtils: DESCRIBE THIS enum NPCFlags2 : uint32 { @@ -277,6 +290,8 @@ enum NPCFlags2 : uint32 UNIT_NPC_FLAG_2_ISLANDS_QUEUE = 0x8000, // TITLE is islands queue }; +DEFINE_ENUM_FLAG(NPCFlags2); + enum MovementFlags : uint32 { MOVEMENTFLAG_NONE = 0x00000000, diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index c50dcc3fde9..26c5fc949c0 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -50,7 +50,7 @@ UsableSeatNum(0), _me(unit), _vehicleInfo(vehInfo), _creatureEntry(creatureEntry // Set or remove correct flags based on available seats. Will overwrite db data (if wrong). if (UsableSeatNum) - _me->AddNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK)); + _me->SetNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK)); else _me->RemoveNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK)); @@ -500,7 +500,7 @@ Vehicle* Vehicle::RemovePassenger(Unit* unit) unit->GetName().c_str(), _me->GetEntry(), _vehicleInfo->ID, _me->GetGUID().ToString().c_str(), (int32)seat->first); if (seat->second.SeatInfo->CanEnterOrExit() && ++UsableSeatNum) - _me->AddNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK)); + _me->SetNpcFlag((_me->GetTypeId() == TYPEID_PLAYER ? UNIT_NPC_FLAG_PLAYER_VEHICLE : UNIT_NPC_FLAG_SPELLCLICK)); // Enable gravity for passenger when he did not have it active before entering the vehicle if (seat->second.SeatInfo->Flags & VEHICLE_SEAT_FLAG_DISABLE_GRAVITY && !seat->second.Passenger.IsGravityDisabled) diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 3b17bb29d32..8b82680f82a 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -161,7 +161,7 @@ bool Group::Create(Player* leader) m_guid = ObjectGuid::Create<HighGuid::Party>(sGroupMgr->GenerateGroupId()); m_leaderGuid = leaderGuid; m_leaderName = leader->GetName(); - leader->AddPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); + leader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); if (isBGGroup() || isBFGroup()) { @@ -783,7 +783,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid, int8 partyIndex) if (Player* oldLeader = ObjectAccessor::FindConnectedPlayer(m_leaderGuid)) oldLeader->RemovePlayerFlag(PLAYER_FLAGS_GROUP_LEADER); - newLeader->AddPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); + newLeader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); m_leaderGuid = newLeader->GetGUID(); m_leaderName = newLeader->GetName(); ToggleGroupMemberFlag(slot, MEMBER_FLAG_ASSISTANT, false); diff --git a/src/server/game/Handlers/AzeriteHandler.cpp b/src/server/game/Handlers/AzeriteHandler.cpp index 6b7d1e027fe..1f4bfa7646c 100644 --- a/src/server/game/Handlers/AzeriteHandler.cpp +++ b/src/server/game/Handlers/AzeriteHandler.cpp @@ -176,7 +176,7 @@ void WorldSession::HandleAzeriteEmpoweredItemViewed(WorldPackets::Azerite::Azeri if (!item || !item->IsAzeriteEmpoweredItem()) return; - item->AddItemFlag(ITEM_FIELD_FLAG_AZERITE_EMPOWERED_ITEM_VIEWED); + item->SetItemFlag(ITEM_FIELD_FLAG_AZERITE_EMPOWERED_ITEM_VIEWED); item->SetState(ITEM_CHANGED, _player); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 48f22613bdf..7c98070ed15 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1296,7 +1296,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder) // Set FFA PvP for non GM in non-rest mode if (sWorld->IsFFAPvPRealm() && !pCurrChar->IsGameMaster() && !pCurrChar->HasPlayerFlag(PLAYER_FLAGS_RESTING)) - pCurrChar->AddPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); + pCurrChar->SetPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP); if (pCurrChar->HasPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP)) pCurrChar->SetContestedPvP(); diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index ce0e4b0681d..c47b8145b19 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -535,7 +535,7 @@ void WorldSession::HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildC void WorldSession::HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites& packet) { if (packet.Allow) - GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_AUTO_DECLINE_GUILD); + GetPlayer()->SetPlayerFlag(PLAYER_FLAGS_AUTO_DECLINE_GUILD); else GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_AUTO_DECLINE_GUILD); } diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 410726ec394..2b73fd51ffc 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -618,7 +618,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPackets::Mail::MailCreateTextIt if (m->messageType == MAIL_NORMAL) bodyItem->SetCreator(ObjectGuid::Create<HighGuid::Player>(m->sender)); - bodyItem->AddItemFlag(ITEM_FIELD_FLAG_READABLE); + bodyItem->SetItemFlag(ITEM_FIELD_FLAG_READABLE); ItemPosCountVec dest; uint8 msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, bodyItem, false); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 519f98aaf31..aff58ca046d 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -278,7 +278,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ if (GetPlayer()->GetStandState() == UNIT_STAND_STATE_STAND) GetPlayer()->SetStandState(UNIT_STAND_STATE_SIT); GetPlayer()->SetRooted(true); - GetPlayer()->AddUnitFlag(UNIT_FLAG_STUNNED); + GetPlayer()->SetUnitFlag(UNIT_FLAG_STUNNED); } SetLogoutStartTime(GameTime::GetGameTime()); @@ -312,7 +312,7 @@ void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& /*packet*/) { if (!GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_IN_PVP)) { - GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_IN_PVP); + GetPlayer()->SetPlayerFlag(PLAYER_FLAGS_IN_PVP); GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER); if (!GetPlayer()->IsPvP() || GetPlayer()->pvpInfo.EndTimer) GetPlayer()->UpdatePvP(true, true); @@ -320,7 +320,7 @@ void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& /*packet*/) else if (!GetPlayer()->IsWarModeLocalActive()) { GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP); - GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER); + GetPlayer()->SetPlayerFlag(PLAYER_FLAGS_PVP_TIMER); if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP()) GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off } @@ -330,7 +330,7 @@ void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet) { if (packet.EnablePVP) { - GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_IN_PVP); + GetPlayer()->SetPlayerFlag(PLAYER_FLAGS_IN_PVP); GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER); if (!GetPlayer()->IsPvP() || GetPlayer()->pvpInfo.EndTimer) GetPlayer()->UpdatePvP(true, true); @@ -338,7 +338,7 @@ void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet) else if (!GetPlayer()->IsWarModeLocalActive()) { GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP); - GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER); + GetPlayer()->SetPlayerFlag(PLAYER_FLAGS_PVP_TIMER); if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP()) GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off } @@ -1041,7 +1041,7 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDiff void WorldSession::HandleSetTaxiBenchmark(WorldPackets::Misc::SetTaxiBenchmarkMode& packet) { if (packet.Enable) - _player->AddPlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK); + _player->SetPlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK); else _player->RemovePlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK); } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index da83cc662b0..c1209c0f7a7 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -431,7 +431,7 @@ void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movem if (plrMover->IsAlive()) { TC_LOG_DEBUG("entities.player.falldamage", "FALLDAMAGE Below map. Map min height: %f , Player debug info:\n%s", plrMover->GetMap()->GetMinHeight(plrMover->GetPhaseShift(), movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY()), plrMover->GetDebugInfo().c_str()); - plrMover->AddPlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS); + plrMover->SetPlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS); plrMover->EnvironmentalDamage(DAMAGE_FALL_TO_VOID, GetPlayer()->GetMaxHealth()); // player can be alive if GM/etc // change the death state to CORPSE to prevent the death timer from diff --git a/src/server/game/Handlers/VoidStorageHandler.cpp b/src/server/game/Handlers/VoidStorageHandler.cpp index 844a6c1eace..a586e64672c 100644 --- a/src/server/game/Handlers/VoidStorageHandler.cpp +++ b/src/server/game/Handlers/VoidStorageHandler.cpp @@ -51,7 +51,7 @@ void WorldSession::HandleVoidStorageUnlock(WorldPackets::VoidStorage::UnlockVoid void WorldSession::HandleVoidStorageQuery(WorldPackets::VoidStorage::QueryVoidStorage& queryVoidStorage) { - Creature* unit = _player->GetNPCIfCanInteractWith(queryVoidStorage.Npc, NPCFlags(UNIT_NPC_FLAG_TRANSMOGRIFIER | UNIT_NPC_FLAG_VAULTKEEPER), UNIT_NPC_FLAG_2_NONE); + Creature* unit = _player->GetNPCIfCanInteractWith(queryVoidStorage.Npc, UNIT_NPC_FLAG_TRANSMOGRIFIER | UNIT_NPC_FLAG_VAULTKEEPER, UNIT_NPC_FLAG_2_NONE); if (!unit) { TC_LOG_DEBUG("network", "WORLD: HandleVoidStorageQuery - %s not found or player can't interact with it.", queryVoidStorage.Npc.ToString().c_str()); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index c5c75e56dba..8ddb0a46f84 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -19,6 +19,7 @@ #define TRINITY_SHAREDDEFINES_H #include "Define.h" +#include "EnumFlag.h" float const GROUND_HEIGHT_TOLERANCE = 0.05f; // Extra tolerance to z position to check if it is in air or on ground. constexpr float Z_OFFSET_FIND_HEIGHT = 0.5f; @@ -2817,6 +2818,8 @@ enum GameObjectFlags GO_FLAG_LOW_PRIORITY_SELECTION = 0x04000000, // client will give lower cursor priority to this object when multiple objects overlap }; +DEFINE_ENUM_FLAG(GameObjectFlags); + enum GameObjectDynamicLowFlags { GO_DYNFLAG_LO_HIDE_MODEL = 0x0002, // Object model is not shown with this flag @@ -5669,6 +5672,8 @@ enum CorpseDynFlags CORPSE_DYNFLAG_LOOTABLE = 0x0001 }; +DEFINE_ENUM_FLAG(CorpseDynFlags); + #define PLAYER_CORPSE_LOOT_ENTRY 1 // EnumUtils: DESCRIBE THIS diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp index dd6e3708d68..64fbb953619 100755 --- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp @@ -49,7 +49,7 @@ void ConfusedMovementGenerator<T>::DoInitialize(T* owner) return; // TODO: UNIT_FIELD_FLAGS should not be handled by generators - owner->AddUnitFlag(UNIT_FLAG_CONFUSED); + owner->SetUnitFlag(UNIT_FLAG_CONFUSED); owner->StopMoving(); _timer.Reset(0); diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp index 415793b7b50..c8916f45c1f 100644 --- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp @@ -55,7 +55,7 @@ void FleeingMovementGenerator<T>::DoInitialize(T* owner) return; // TODO: UNIT_FIELD_FLAGS should not be handled by generators - owner->AddUnitFlag(UNIT_FLAG_FLEEING); + owner->SetUnitFlag(UNIT_FLAG_FLEEING); _path = nullptr; SetTargetLocation(owner); diff --git a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp index f6cc69c1f3c..89d990cb3b8 100644 --- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp @@ -73,7 +73,7 @@ void FlightPathMovementGenerator::DoReset(Player* owner) RemoveFlag(MOVEMENTGENERATOR_FLAG_DEACTIVATED); owner->CombatStopWithPets(); - owner->AddUnitFlag(UnitFlags(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_ON_TAXI)); + owner->SetUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_ON_TAXI); uint32 end = GetPathAtMapEnd(); uint32 currentNodeId = GetCurrentNode(); @@ -160,7 +160,7 @@ void FlightPathMovementGenerator::DoFinalize(Player* owner, bool active, bool/* uint32 taxiNodeId = owner->m_taxi.GetTaxiDestination(); owner->m_taxi.ClearTaxiDestinations(); owner->Dismount(); - owner->RemoveUnitFlag(UnitFlags(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_ON_TAXI)); + owner->RemoveUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_ON_TAXI); if (owner->m_taxi.empty()) { diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 751f6ac27af..51bcda8d306 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1533,7 +1533,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo target->m_stealth.AddFlag(type); target->m_stealth.AddValue(type, GetAmount()); - target->AddVisFlags(UNIT_VIS_FLAGS_CREEP); + target->SetVisFlag(UNIT_VIS_FLAGS_CREEP); if (Player * playerTarget = target->ToPlayer()) playerTarget->AddAuraVision(PLAYER_FIELD_BYTE2_STEALTH); } @@ -1545,7 +1545,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo { target->m_stealth.DelFlag(type); - target->RemoveVisFlags(UNIT_VIS_FLAGS_CREEP); + target->RemoveVisFlag(UNIT_VIS_FLAGS_CREEP); if (Player * playerTarget = target->ToPlayer()) playerTarget->RemoveAuraVision(PLAYER_FIELD_BYTE2_STEALTH); } @@ -1651,7 +1651,7 @@ void AuraEffect::HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool if (apply) { - target->AddPlayerFlag(PLAYER_FLAGS_GHOST); + target->SetPlayerFlag(PLAYER_FLAGS_GHOST); target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); } @@ -2098,7 +2098,7 @@ void AuraEffect::HandleAuraCloneCaster(AuraApplication const* aurApp, uint8 mode // What must be cloned? at least display and scale target->SetDisplayId(caster->GetDisplayId()); //target->SetObjectScale(caster->GetObjectScale()); // we need retail info about how scaling is handled (aura maybe?) - target->AddUnitFlag2(UNIT_FLAG2_MIRROR_IMAGE); + target->SetUnitFlag2(UNIT_FLAG2_MIRROR_IMAGE); } else { @@ -2160,9 +2160,9 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo if (aurApp->GetRemoveMode()) return; - target->AddUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); - target->AddUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); - target->AddDynamicFlag(UNIT_DYNFLAG_DEAD); + target->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); + target->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); + target->SetDynamicFlag(UNIT_DYNFLAG_DEAD); target->AddUnitState(UNIT_STATE_DIED); if (Creature* creature = target->ToCreature()) @@ -2192,7 +2192,7 @@ void AuraEffect::HandleModUnattackable(AuraApplication const* aurApp, uint8 mode return; if (apply) - target->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2); + target->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2); else target->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2); @@ -2230,7 +2230,7 @@ void AuraEffect::HandleAuraModDisarm(AuraApplication const* aurApp, uint8 mode, { case SPELL_AURA_MOD_DISARM: if (apply) - flagChangeFunc = [](Unit* u) { u->AddUnitFlag(UNIT_FLAG_DISARMED); }; + flagChangeFunc = [](Unit* u) { u->SetUnitFlag(UNIT_FLAG_DISARMED); }; else flagChangeFunc = [](Unit* u) { u->RemoveUnitFlag(UNIT_FLAG_DISARMED); }; slot = EQUIPMENT_SLOT_MAINHAND; @@ -2238,7 +2238,7 @@ void AuraEffect::HandleAuraModDisarm(AuraApplication const* aurApp, uint8 mode, break; case SPELL_AURA_MOD_DISARM_OFFHAND: if (apply) - flagChangeFunc = [](Unit* u) { u->AddUnitFlag2(UNIT_FLAG2_DISARM_OFFHAND); }; + flagChangeFunc = [](Unit* u) { u->SetUnitFlag2(UNIT_FLAG2_DISARM_OFFHAND); }; else flagChangeFunc = [](Unit* u) { u->RemoveUnitFlag2(UNIT_FLAG2_DISARM_OFFHAND); }; slot = EQUIPMENT_SLOT_OFFHAND; @@ -2246,7 +2246,7 @@ void AuraEffect::HandleAuraModDisarm(AuraApplication const* aurApp, uint8 mode, break; case SPELL_AURA_MOD_DISARM_RANGED: if (apply) - flagChangeFunc = [](Unit* u) { u->AddUnitFlag2(UNIT_FLAG2_DISARM_RANGED); }; + flagChangeFunc = [](Unit* u) { u->SetUnitFlag2(UNIT_FLAG2_DISARM_RANGED); }; else flagChangeFunc = [](Unit* u) { u->RemoveUnitFlag2(UNIT_FLAG2_DISARM_RANGED); }; slot = EQUIPMENT_SLOT_MAINHAND; @@ -2291,7 +2291,7 @@ void AuraEffect::HandleAuraModSilence(AuraApplication const* aurApp, uint8 mode, if (apply) { - target->AddUnitFlag(UNIT_FLAG_SILENCED); + target->SetUnitFlag(UNIT_FLAG_SILENCED); // call functions which may have additional effects after changing state of unit // Stop cast only spells vs PreventionType & SPELL_PREVENTION_TYPE_SILENCE @@ -2319,7 +2319,7 @@ void AuraEffect::HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode, Unit* target = aurApp->GetTarget(); if (apply) - target->AddUnitFlag(UNIT_FLAG_PACIFIED); + target->SetUnitFlag(UNIT_FLAG_PACIFIED); else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -2341,7 +2341,7 @@ void AuraEffect::HandleAuraModPacifyAndSilence(AuraApplication const* aurApp, ui if (m_spellInfo->Id == 45839) { if (apply) - target->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + target->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); else target->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); } @@ -2364,7 +2364,7 @@ void AuraEffect::HandleAuraModNoActions(AuraApplication const* aurApp, uint8 mod if (apply) { - target->AddUnitFlag2(UNIT_FLAG2_NO_ACTIONS); + target->SetUnitFlag2(UNIT_FLAG2_NO_ACTIONS); // call functions which may have additional effects after chainging state of unit // Stop cast only spells vs PreventionType & SPELL_PREVENTION_TYPE_SILENCE @@ -2398,7 +2398,7 @@ void AuraEffect::HandleAuraTrackCreatures(AuraApplication const* aurApp, uint8 m return; if (apply) - target->AddTrackCreatureFlag(uint32(1) << (GetMiscValue() - 1)); + target->SetTrackCreatureFlag(uint32(1) << (GetMiscValue() - 1)); else target->RemoveTrackCreatureFlag(uint32(1) << (GetMiscValue() - 1)); } @@ -2419,7 +2419,7 @@ void AuraEffect::HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 m return; } if (apply) - target->AddPlayerLocalFlag(PLAYER_LOCAL_FLAG_TRACK_STEALTHED); + target->SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_TRACK_STEALTHED); else target->RemovePlayerLocalFlag(PLAYER_LOCAL_FLAG_TRACK_STEALTHED); } @@ -2433,7 +2433,7 @@ void AuraEffect::HandleAuraModStalked(AuraApplication const* aurApp, uint8 mode, // used by spells: Hunter's Mark, Mind Vision, Syndicate Tracker (MURP) DND if (apply) - target->AddDynamicFlag(UNIT_DYNFLAG_TRACK_UNIT); + target->SetDynamicFlag(UNIT_DYNFLAG_TRACK_UNIT); else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -2454,13 +2454,13 @@ void AuraEffect::HandleAuraUntrackable(AuraApplication const* aurApp, uint8 mode Unit* target = aurApp->GetTarget(); if (apply) - target->AddVisFlags(UNIT_VIS_FLAGS_UNTRACKABLE); + target->SetVisFlag(UNIT_VIS_FLAGS_UNTRACKABLE); else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit if (target->HasAuraType(GetAuraType())) return; - target->RemoveVisFlags(UNIT_VIS_FLAGS_UNTRACKABLE); + target->RemoveVisFlag(UNIT_VIS_FLAGS_UNTRACKABLE); } } @@ -2496,7 +2496,7 @@ void AuraEffect::HandleAuraAllowTalentSwapping(AuraApplication const* aurApp, ui return; if (apply) - target->AddUnitFlag2(UNIT_FLAG2_ALLOW_CHANGING_TALENTS); + target->SetUnitFlag2(UNIT_FLAG2_ALLOW_CHANGING_TALENTS); else if (!target->HasAuraType(GetAuraType())) target->RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHANGING_TALENTS); } @@ -2690,7 +2690,7 @@ void AuraEffect::HandleForceMoveForward(AuraApplication const* aurApp, uint8 mod Unit* target = aurApp->GetTarget(); if (apply) - target->AddUnitFlag2(UNIT_FLAG2_FORCE_MOVEMENT); + target->SetUnitFlag2(UNIT_FLAG2_FORCE_MOVEMENT); else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -3224,7 +3224,7 @@ void AuraEffect::HandleAuraModSchoolImmunity(AuraApplication const* aurApp, uint if (apply) { - target->AddUnitFlag(UNIT_FLAG_IMMUNE); + target->SetUnitFlag(UNIT_FLAG_IMMUNE); target->GetThreatManager().EvaluateSuppressed(); } else @@ -3246,7 +3246,7 @@ void AuraEffect::HandleAuraModDmgImmunity(AuraApplication const* aurApp, uint8 m if (apply) { - target->AddUnitFlag(UNIT_FLAG_IMMUNE); + target->SetUnitFlag(UNIT_FLAG_IMMUNE); target->GetThreatManager().EvaluateSuppressed(); } else @@ -4438,7 +4438,7 @@ void AuraEffect::HandleArenaPreparation(AuraApplication const* aurApp, uint8 mod Unit* target = aurApp->GetTarget(); if (apply) - target->AddUnitFlag(UNIT_FLAG_PREPARATION); + target->SetUnitFlag(UNIT_FLAG_PREPARATION); else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -4873,7 +4873,7 @@ void AuraEffect::HandleAuraEmpathy(AuraApplication const* aurApp, uint8 mode, bo if (target->GetCreatureType() == CREATURE_TYPE_BEAST) { if (apply) - target->AddDynamicFlag(UNIT_DYNFLAG_SPECIALINFO); + target->SetDynamicFlag(UNIT_DYNFLAG_SPECIALINFO); else target->RemoveDynamicFlag(UNIT_DYNFLAG_SPECIALINFO); } @@ -4896,7 +4896,7 @@ void AuraEffect::HandleAuraModFaction(AuraApplication const* aurApp, uint8 mode, { target->RestoreFaction(); if (target->GetTypeId() == TYPEID_PLAYER) - target->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + target->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); } } @@ -4923,7 +4923,7 @@ void AuraEffect::HandleComprehendLanguage(AuraApplication const* aurApp, uint8 m Unit* target = aurApp->GetTarget(); if (apply) - target->AddUnitFlag2(UNIT_FLAG2_COMPREHEND_LANG); + target->SetUnitFlag2(UNIT_FLAG2_COMPREHEND_LANG); else { if (target->HasAuraType(GetAuraType())) @@ -5158,7 +5158,7 @@ void AuraEffect::HandlePreventResurrection(AuraApplication const* aurApp, uint8 if (apply) target->RemovePlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); else if (!target->GetMap()->Instanceable()) - target->AddPlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); + target->SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_RELEASE_TIMER); } void AuraEffect::HandleMastery(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -5907,7 +5907,7 @@ void AuraEffect::HandleAllowUsingGameobjectsWhileMounted(AuraApplication const* return; if (apply) - target->AddPlayerLocalFlag(PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); + target->SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); else if (!target->HasAuraType(SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED)) target->RemovePlayerLocalFlag(PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d723e505845..a7e7f24c007 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1663,7 +1663,7 @@ void Spell::EffectOpenLock() SendLoot(guid, LOOT_SKINNING); else if (itemTarget) { - itemTarget->AddItemFlag(ITEM_FIELD_FLAG_UNLOCKED); + itemTarget->SetItemFlag(ITEM_FIELD_FLAG_UNLOCKED); itemTarget->SetState(ITEM_CHANGED, itemTarget->GetOwner()); } @@ -3780,7 +3780,7 @@ void Spell::EffectSkinning() uint32 skill = creature->GetCreatureTemplate()->GetRequiredLootSkill(); creature->RemoveUnitFlag(UNIT_FLAG_SKINNABLE); - creature->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE); + creature->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE); player->SendLoot(creature->GetGUID(), LOOT_SKINNING); if (skill == SKILL_SKINNING) @@ -4905,7 +4905,7 @@ void Spell::EffectRenamePet() !unitTarget->IsPet() || ((Pet*)unitTarget)->getPetType() != HUNTER_PET) return; - unitTarget->AddPetFlag(UNIT_PET_FLAG_CAN_BE_RENAMED); + unitTarget->SetPetFlag(UNIT_PET_FLAG_CAN_BE_RENAMED); } void Spell::EffectPlayMusic() @@ -5404,7 +5404,7 @@ void Spell::EffectEnableBattlePets() return; Player* player = unitTarget->ToPlayer(); - player->AddPlayerFlag(PLAYER_FLAGS_PET_BATTLES_UNLOCKED); + player->SetPlayerFlag(PLAYER_FLAGS_PET_BATTLES_UNLOCKED); player->GetSession()->GetBattlePetMgr()->UnlockSlot(BattlePets::BattlePetSlot::Slot0); } |
