Core/Misc: Rename AddXXXFlag updatefield functions to SetXXXFlag
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)]);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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); }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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); }
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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); }
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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); }
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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); }
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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*/)
|
||||
|
||||
@@ -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); }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -279,19 +279,19 @@ struct boss_garothi_worldbreaker : public BossAI
|
||||
DoCastSelf(SPELL_APOCALYPSE_DRIVE_FINAL_DAMAGE);
|
||||
Talk(SAY_ANNOUNCE_APOCALYPSE_DRIVE);
|
||||
Talk(SAY_APOCALYPSE_DRIVE);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
|
||||
if (Creature* decimator = instance->GetCreature(DATA_DECIMATOR))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, decimator, 2);
|
||||
decimator->AddUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
decimator->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
decimator->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
}
|
||||
|
||||
if (Creature* annihilator = instance->GetCreature(DATA_ANNIHILATOR))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, annihilator, 2);
|
||||
annihilator->AddUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
annihilator->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
annihilator->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
}
|
||||
++_apocalypseDriveCount;
|
||||
@@ -456,13 +456,13 @@ struct boss_garothi_worldbreaker : public BossAI
|
||||
if (Creature* decimator = instance->GetCreature(DATA_DECIMATOR))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, decimator);
|
||||
decimator->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE));
|
||||
decimator->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE);
|
||||
}
|
||||
|
||||
if (Creature* annihilator = instance->GetCreature(DATA_ANNIHILATOR))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, annihilator);
|
||||
annihilator->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE));
|
||||
annihilator->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -570,7 +570,7 @@ void BattlefieldWG::OnBattleStart()
|
||||
// Update faction of relic, only attacker can click on
|
||||
relic->SetFaction(WintergraspFaction[GetAttackerTeam()]);
|
||||
// Set in use (not allow to click on before last door is broken)
|
||||
relic->AddFlag(GameObjectFlags(GO_FLAG_IN_USE | GO_FLAG_NOT_SELECTABLE));
|
||||
relic->SetFlag(GO_FLAG_IN_USE | GO_FLAG_NOT_SELECTABLE);
|
||||
m_titansRelicGUID = relic->GetGUID();
|
||||
}
|
||||
else
|
||||
@@ -967,7 +967,7 @@ void BattlefieldWG::HandleKill(Player* killer, Unit* victim)
|
||||
HandlePromotion(killer, victim);
|
||||
|
||||
// Allow to Skin non-released corpse
|
||||
victim->AddUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||
victim->SetUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||
}
|
||||
|
||||
/// @todoRecent PvP activity worldstate
|
||||
@@ -1494,7 +1494,7 @@ void BfWGGameObjectBuilding::Destroyed()
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
_wg->SetRelicInteractible(true);
|
||||
if (_wg->GetRelic())
|
||||
_wg->GetRelic()->RemoveFlag(GameObjectFlags(GO_FLAG_IN_USE | GO_FLAG_NOT_SELECTABLE));
|
||||
_wg->GetRelic()->RemoveFlag(GO_FLAG_IN_USE | GO_FLAG_NOT_SELECTABLE);
|
||||
else
|
||||
TC_LOG_ERROR("bg.battlefield.wg", "Titan Relic not found.");
|
||||
break;
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ struct boss_pyroguard_emberseer : public BossAI
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetImmuneToPC(true);
|
||||
events.Reset();
|
||||
// Apply auras on spawn and reset
|
||||
|
||||
+1
-1
@@ -204,7 +204,7 @@ struct go_suppression_device : public GameObjectAI
|
||||
return;
|
||||
_active = false;
|
||||
me->SetGoState(GO_STATE_ACTIVE);
|
||||
me->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
_events.CancelEvent(EVENT_SUPPRESSION_CAST);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -303,7 +303,7 @@ struct go_chromaggus_lever : public GameObjectAI
|
||||
_instance->HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
}
|
||||
|
||||
me->AddFlag(GameObjectFlags(GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE));
|
||||
me->SetFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE);
|
||||
me->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
return true;
|
||||
|
||||
+2
-2
@@ -184,7 +184,7 @@ struct boss_victor_nefarius : public BossAI
|
||||
_Reset();
|
||||
|
||||
me->SetVisible(true);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR);
|
||||
me->RemoveAura(SPELL_NEFARIANS_BARRIER);
|
||||
@@ -219,7 +219,7 @@ struct boss_victor_nefarius : public BossAI
|
||||
if (summon->GetEntry() != NPC_NEFARIAN)
|
||||
{
|
||||
summon->UpdateEntry(NPC_BONE_CONSTRUCT);
|
||||
summon->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
summon->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
summon->SetReactState(REACT_PASSIVE);
|
||||
summon->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
}
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ struct boss_vaelastrasz : public BossAI
|
||||
boss_vaelastrasz(Creature* creature) : BossAI(creature, DATA_VAELASTRAZ_THE_CORRUPT)
|
||||
{
|
||||
Initialize();
|
||||
creature->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
creature->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
creature->SetFaction(FACTION_FRIENDLY);
|
||||
creature->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
}
|
||||
|
||||
+2
-2
@@ -159,7 +159,7 @@ struct boss_majordomo : public BossAI
|
||||
{
|
||||
case EVENT_OUTRO_1:
|
||||
me->NearTeleportTo(RagnarosTelePos.GetPositionX(), RagnarosTelePos.GetPositionY(), RagnarosTelePos.GetPositionZ(), RagnarosTelePos.GetOrientation());
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
break;
|
||||
case EVENT_OUTRO_2:
|
||||
instance->instance->SummonCreature(NPC_RAGNAROS, RagnarosSummonPos);
|
||||
@@ -186,7 +186,7 @@ struct boss_majordomo : public BossAI
|
||||
else if (action == ACTION_START_RAGNAROS_ALT)
|
||||
{
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ struct boss_ragnaros : public BossAI
|
||||
Initialize();
|
||||
_introState = 0;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ struct boss_ragnaros : public BossAI
|
||||
//Root self
|
||||
//DoCast(me, 23973);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetEmoteState(EMOTE_STATE_SUBMERGED);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
|
||||
instance->SetData(DATA_RAGNAROS_ADDS, 0);
|
||||
|
||||
@@ -172,7 +172,7 @@ class instance_deadmines : public InstanceMapScript
|
||||
void LeverStucked()
|
||||
{
|
||||
if (GameObject* pDoorLever = instance->GetGameObject(DoorLeverGUID))
|
||||
pDoorLever->AddFlag(GO_FLAG_INTERACT_COND);
|
||||
pDoorLever->SetFlag(GO_FLAG_INTERACT_COND);
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
|
||||
@@ -311,7 +311,7 @@ public:
|
||||
if (GameObject* go = me->SummonGameObject(183410, -533.140f, -105.322f, -156.016f, 0.f, QuaternionData(), 1s))
|
||||
{
|
||||
GoSummonList.push_back(go->GetGUID());
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
|
||||
}
|
||||
Summon(3);
|
||||
break;
|
||||
@@ -326,7 +326,7 @@ public:
|
||||
if (GameObject* go = me->SummonGameObject(183410, -542.199f, -96.854f, -155.790f, 0.f, QuaternionData(), 1s))
|
||||
{
|
||||
GoSummonList.push_back(go->GetGUID());
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
@@ -340,7 +340,7 @@ public:
|
||||
if (GameObject* go = me->SummonGameObject(183410, -507.820f, -103.333f, -151.353f, 0.f, QuaternionData(), 1s))
|
||||
{
|
||||
GoSummonList.push_back(go->GetGUID());
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
|
||||
Summon(5);
|
||||
}
|
||||
break;
|
||||
@@ -348,7 +348,7 @@ public:
|
||||
if (GameObject* go = me->SummonGameObject(183410, -511.829f, -86.249f, -151.431f, 0.f, QuaternionData(), 1s))
|
||||
{
|
||||
GoSummonList.push_back(go->GetGUID());
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
|
||||
@@ -438,7 +438,7 @@ class go_blackened_urn : public GameObjectScript
|
||||
|
||||
if (Creature* nightbane = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_NIGHTBANE)))
|
||||
{
|
||||
me->AddFlag(GO_FLAG_IN_USE);
|
||||
me->SetFlag(GO_FLAG_IN_USE);
|
||||
nightbane->AI()->DoAction(ACTION_SUMMON);
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
if (spellInfo->Id == SPELL_INFERNAL_RELAY)
|
||||
{
|
||||
me->SetDisplayId(me->GetNativeDisplayId());
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
HellfireTimer = 4000;
|
||||
CleanupTimer = 170000;
|
||||
}
|
||||
@@ -449,7 +449,7 @@ public:
|
||||
Creature* axe = me->SummonCreature(MALCHEZARS_AXE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1s);
|
||||
if (axe)
|
||||
{
|
||||
axe->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
axe->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
axe->SetFaction(me->GetFaction());
|
||||
axes[i] = axe->GetGUID();
|
||||
if (target)
|
||||
|
||||
@@ -1019,7 +1019,7 @@ void PretendToDie(Creature* creature)
|
||||
creature->InterruptNonMeleeSpells(true);
|
||||
creature->RemoveAllAuras();
|
||||
creature->SetHealth(0);
|
||||
creature->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
creature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
creature->GetMotionMaster()->Clear();
|
||||
creature->GetMotionMaster()->MoveIdle();
|
||||
creature->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
|
||||
@@ -224,7 +224,7 @@ public:
|
||||
case GO_SIDE_ENTRANCE_DOOR:
|
||||
SideEntranceDoor = go->GetGUID();
|
||||
if (GetBossState(DATA_OPERA_PERFORMANCE) == DONE)
|
||||
go->AddFlag(GO_FLAG_LOCKED);
|
||||
go->SetFlag(GO_FLAG_LOCKED);
|
||||
else
|
||||
go->RemoveFlag(GO_FLAG_LOCKED);
|
||||
break;
|
||||
|
||||
@@ -196,7 +196,7 @@ public:
|
||||
me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f,
|
||||
TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 1min))
|
||||
{
|
||||
spotlight->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
spotlight->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
spotlight->CastSpell(spotlight, SPELL_SPOTLIGHT, false);
|
||||
m_uiSpotlightGUID = spotlight->GetGUID();
|
||||
}
|
||||
@@ -272,7 +272,7 @@ public:
|
||||
float PosX = Spawns[index][1];
|
||||
|
||||
if (Creature* creature = me->SummonCreature(entry, PosX, SPAWN_Y, SPAWN_Z, SPAWN_O, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 2h))
|
||||
creature->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
RaidWiped = false;
|
||||
@@ -463,7 +463,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
if (instance->GetGuidData(DATA_IMAGE_OF_MEDIVH).IsEmpty())
|
||||
{
|
||||
|
||||
@@ -410,7 +410,7 @@ struct npc_felblood_kaelthas_phoenix : public ScriptedAI
|
||||
me->AttackStop();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveAllAuras();
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
DoCastSelf(SPELL_EMBER_BLAST);
|
||||
// DoCastSelf(SPELL_SUMMON_PHOENIX_EGG); -- We do a manual summon for now. Feel free to move it to spelleffect_dbc
|
||||
if (Creature* egg = DoSummon(NPC_PHOENIX_EGG, me->GetPosition(), 0s))
|
||||
|
||||
@@ -421,7 +421,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
|
||||
//time to make her lootable and complete event if she died before lackeys
|
||||
if (!delrissa->IsAlive())
|
||||
{
|
||||
delrissa->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
delrissa->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
|
||||
instance->SetBossState(DATA_PRIESTESS_DELRISSA, DONE);
|
||||
}
|
||||
|
||||
@@ -573,7 +573,7 @@ public:
|
||||
|
||||
me->RestoreFaction();
|
||||
CombatAI::Reset();
|
||||
me->AddUnitFlag(UNIT_FLAG_CAN_SWIM);
|
||||
me->SetUnitFlag(UNIT_FLAG_CAN_SWIM);
|
||||
}
|
||||
|
||||
void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
|
||||
@@ -931,7 +931,7 @@ public:
|
||||
|
||||
deathcharger->RestoreFaction();
|
||||
deathcharger->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
|
||||
deathcharger->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
deathcharger->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
if (!me->GetVehicle() && deathcharger->IsVehicle() && deathcharger->GetVehicleKit()->HasEmptySeat(0))
|
||||
me->EnterVehicle(deathcharger);
|
||||
}
|
||||
@@ -944,7 +944,7 @@ public:
|
||||
|
||||
if (killer->GetTypeId() == TYPEID_PLAYER && deathcharger->GetTypeId() == TYPEID_UNIT && deathcharger->IsVehicle())
|
||||
{
|
||||
deathcharger->AddNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
|
||||
deathcharger->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
|
||||
deathcharger->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
deathcharger->SetFaction(FACTION_SCARLET_CRUSADE_2);
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ struct npc_koltira_deathweaver : public ScriptedAI
|
||||
void Reset() override
|
||||
{
|
||||
me->SetImmuneToNPC(true);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
me->RemoveAllAuras();
|
||||
|
||||
@@ -203,7 +203,7 @@ struct npc_koltira_deathweaver : public ScriptedAI
|
||||
case EVENT_INTRO_6:
|
||||
Talk(SAY_KOLTIRA_3);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
_eventGossip = true;
|
||||
|
||||
break;
|
||||
|
||||
@@ -759,7 +759,7 @@ public:
|
||||
case 15: // summon gate
|
||||
if (Creature* temp = me->SummonCreature(NPC_HIGHLORD_ALEXANDROS_MOGRAINE, LightofDawnLoc[22], TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 5min))
|
||||
{
|
||||
temp->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
temp->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
temp->CastSpell(temp, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true);
|
||||
temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN06);
|
||||
uiAlexandrosGUID = temp->GetGUID();
|
||||
|
||||
@@ -197,7 +197,7 @@ struct npc_headless_horseman_head : public PassiveAI
|
||||
void HandleInitialSetup()
|
||||
{
|
||||
DoCastSelf(SPELL_HEADLESS_HORSEMAN_C_HEAD_STUN);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
_phase = PHASE_1;
|
||||
_events.SetPhase(PHASE_1);
|
||||
}
|
||||
@@ -309,11 +309,11 @@ struct npc_headless_horseman_head : public PassiveAI
|
||||
DoCast(horseman, SPELL_HEADLESS_HORSEMAN_C_RETURN_HEAD, true);
|
||||
me->RemoveAllAttackers();
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
break;
|
||||
case EVENT_RAIN_OF_TREATS:
|
||||
DoCastSelf(SPELL_RAIN_OF_TREATS);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
_instance->SetData(DATA_PREPARE_RESET, 0);
|
||||
if (GameObject* pumpkin = me->SummonGameObject(GO_PUMPKIN_SHRINE, GOPumpkinSpawnPosition, GOPumpkinSpawnQuat, 7_days))
|
||||
me->RemoveGameObject(pumpkin, false);
|
||||
@@ -706,7 +706,7 @@ struct npc_sir_thomas : public PassiveAI
|
||||
void Reset() override
|
||||
{
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
DoCastSelf(SPELL_HEADLESS_HORSEMAN_WISP_INVIS);
|
||||
|
||||
_scheduler.Schedule(9s, [this](TaskContext /*context*/)
|
||||
@@ -720,7 +720,7 @@ struct npc_sir_thomas : public PassiveAI
|
||||
if (spellInfo->Id == SPELL_HEADLESS_HORSEMAN_WISP_FLIGHT_PORT)
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->RemoveAurasDueToSpell(SPELL_HEADLESS_HORSEMAN_WISP_INVIS);
|
||||
DoCastSelf(SPELL_HEADLESS_HORSEMAN_C_GHOST_VISUAL, true);
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ public:
|
||||
_killYellTimer.Reset(0s);
|
||||
|
||||
DoCastSelf(SPELL_RETRIBUTION_AURA, true);
|
||||
me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
@@ -168,7 +168,7 @@ public:
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->RemoveAllAuras();
|
||||
me->ClearAllReactives();
|
||||
me->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
me->SetReactState(REACT_PASSIVE); // prevent Mograine from attacking while fake death
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ class instance_scarlet_monastery : public InstanceMapScript
|
||||
_horsemanState = IN_PROGRESS;
|
||||
for (uint32 data : {DATA_PUMPKIN_SHRINE, DATA_LOOSELY_TURNED_SOIL})
|
||||
if (GameObject* gob = GetGameObject(data))
|
||||
gob->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
gob->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
|
||||
instance->SummonCreature(NPC_HEADLESS_HORSEMAN_HEAD, HeadlessHorsemanHeadSpawnPosition);
|
||||
instance->SummonCreature(NPC_FLAME_BUNNY, BunnySpawnPosition);
|
||||
|
||||
@@ -90,7 +90,7 @@ public:
|
||||
break;
|
||||
case EVENT_ILLUSION:
|
||||
DoCast(SPELL_ILLUSION);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetDisplayId(11686); // Invisible Model
|
||||
ModifyThreatByPercent(me->GetVictim(), -99);
|
||||
events.ScheduleEvent(EVENT_SET_VISIBILITY, 3s);
|
||||
|
||||
@@ -128,7 +128,7 @@ class boss_kirtonos_the_herald : public CreatureScript
|
||||
events.ScheduleEvent(INTRO_1, 500ms);
|
||||
me->SetDisableGravity(true);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE));
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
|
||||
Talk(EMOTE_SUMMONED);
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ class boss_kirtonos_the_herald : public CreatureScript
|
||||
case INTRO_5:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||
me->SetVirtualItem(0, uint32(WEAPON_KIRTONOS_STAFF));
|
||||
me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE));
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(INTRO_6, 5s);
|
||||
break;
|
||||
|
||||
@@ -148,7 +148,7 @@ struct boss_apothecary_hummel : public BossAI
|
||||
_isDead = true;
|
||||
me->RemoveAurasDueToSpell(SPELL_ALLURING_PERFUME);
|
||||
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH, true);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
Talk(SAY_HUMMEL_DEATH);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ class instance_stratholme : public InstanceMapScript
|
||||
break;
|
||||
case GO_GAUNTLET_GATE1:
|
||||
//weird, but unless flag is set, client will not respond as expected. DB bug?
|
||||
go->AddFlag(GO_FLAG_LOCKED);
|
||||
go->SetFlag(GO_FLAG_LOCKED);
|
||||
gauntletGate1GUID = go->GetGUID();
|
||||
break;
|
||||
case GO_ZIGGURAT1:
|
||||
@@ -279,7 +279,7 @@ class instance_stratholme : public InstanceMapScript
|
||||
ysida->CastSpell(nullptr, SPELL_YSIDA_SAVED, true);
|
||||
ysida->SetWalk(true);
|
||||
ysida->AI()->Talk(SAY_YSIDA_SAVED);
|
||||
ysida->AddNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
ysida->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
ysida->GetClosePoint(x, y, z, ysida->GetObjectScale() / 3, 4.0f);
|
||||
ysida->GetMotionMaster()->MovePoint(1, x, y, z);
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ public:
|
||||
void UseStatue(GameObject* go)
|
||||
{
|
||||
go->SummonGameObject(GO_ATALAI_LIGHT1, *go, QuaternionData::fromEulerAnglesZYX(go->GetOrientation(), 0.0f, 0.0f), 0s);
|
||||
go->AddFlag(GO_FLAG_INTERACT_COND);
|
||||
go->SetFlag(GO_FLAG_INTERACT_COND);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
IsIntro = true;
|
||||
Madrigosa->SetMaxHealth(me->GetMaxHealth());
|
||||
Madrigosa->SetHealth(me->GetMaxHealth());
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->Attack(Madrigosa, true);
|
||||
Madrigosa->Attack(me, true);
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ public:
|
||||
{
|
||||
Initialize();
|
||||
me->SetDisableGravity(true);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->setActive(true);
|
||||
me->SetFarVisible(true);
|
||||
|
||||
@@ -444,8 +444,8 @@ public:
|
||||
|
||||
void InitializeAI() override
|
||||
{
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->AddUnitState(UNIT_STATE_STUNNED);
|
||||
|
||||
ScriptedAI::InitializeAI();
|
||||
@@ -617,8 +617,8 @@ public:
|
||||
{
|
||||
if (summoned->GetEntry() == NPC_ARMAGEDDON_TARGET)
|
||||
{
|
||||
summoned->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
summoned->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
summoned->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
summoned->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
// summoned->SetVisibility(VISIBILITY_OFF); //with this we cant see the armageddon visuals
|
||||
}
|
||||
else
|
||||
@@ -1038,7 +1038,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summoned) override
|
||||
|
||||
@@ -279,7 +279,7 @@ struct boss_muru : public BossAI
|
||||
_phase = PHASE_TWO;
|
||||
me->RemoveAllAuras();
|
||||
DoCast(me, SPELL_OPEN_ALL_PORTALS, true);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
|
||||
scheduler.Schedule(Seconds(6), [this](TaskContext /*context*/)
|
||||
{
|
||||
|
||||
@@ -101,7 +101,7 @@ class boss_archaedas : public CreatureScript
|
||||
|
||||
instance->SetData(0, 5); // respawn any dead minions
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->AddAura(SPELL_FREEZE_ANIM, me);
|
||||
}
|
||||
@@ -264,7 +264,7 @@ class npc_archaedas_minions : public CreatureScript
|
||||
Initialize();
|
||||
|
||||
me->SetFaction(35);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->RemoveAllAuras();
|
||||
me->AddAura(SPELL_MINION_FREEZE_ANIM, me);
|
||||
@@ -353,7 +353,7 @@ class npc_stonekeepers : public CreatureScript
|
||||
void Reset() override
|
||||
{
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->RemoveAllAuras();
|
||||
me->AddAura(SPELL_MINION_FREEZE_ANIM, me);
|
||||
|
||||
@@ -122,7 +122,7 @@ class instance_uldaman : public InstanceMapScript
|
||||
|
||||
case GO_ANCIENT_VAULT_DOOR:
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
go->ReplaceAllFlags(GameObjectFlags(GO_FLAG_IN_USE | GO_FLAG_NODESPAWN));
|
||||
go->ReplaceAllFlags(GO_FLAG_IN_USE | GO_FLAG_NODESPAWN);
|
||||
ancientVaultDoor = go->GetGUID();
|
||||
|
||||
if (m_auiEncounter[1] == DONE)
|
||||
@@ -142,7 +142,7 @@ class instance_uldaman : public InstanceMapScript
|
||||
if (m_auiEncounter[2] == DONE)
|
||||
{
|
||||
HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
go->AddFlag(GO_FLAG_INTERACT_COND);
|
||||
go->SetFlag(GO_FLAG_INTERACT_COND);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -152,7 +152,7 @@ class instance_uldaman : public InstanceMapScript
|
||||
{
|
||||
creature->SetFaction(FACTION_FRIENDLY);
|
||||
creature->RemoveAllAuras();
|
||||
creature->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
creature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
creature->SetControlled(true, UNIT_STATE_ROOT);
|
||||
creature->AddAura(SPELL_MINION_FREEZE_ANIM, creature);
|
||||
}
|
||||
@@ -172,7 +172,7 @@ class instance_uldaman : public InstanceMapScript
|
||||
if (!go)
|
||||
return;
|
||||
|
||||
go->AddFlag(GO_FLAG_INTERACT_COND);
|
||||
go->SetFlag(GO_FLAG_INTERACT_COND);
|
||||
}
|
||||
|
||||
void ActivateStoneKeepers()
|
||||
|
||||
@@ -91,7 +91,7 @@ class npc_voljin_zulaman : public CreatureScript
|
||||
{
|
||||
me->SetDisplayFromModel(0);
|
||||
if (_instance->GetData(DATA_ZULAMAN_STATE) == NOT_STARTED)
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
@@ -158,7 +158,7 @@ class npc_voljin_zulaman : public CreatureScript
|
||||
case EVENT_START_DOOR_OPENING_2:
|
||||
me->SetVirtualItem(0, uint32(0));
|
||||
if (GameObject* strangeGong = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(DATA_STRANGE_GONG)))
|
||||
strangeGong->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
strangeGong->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
_events.ScheduleEvent(EVENT_START_DOOR_OPENING_3, 500ms);
|
||||
break;
|
||||
case EVENT_START_DOOR_OPENING_3:
|
||||
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
{
|
||||
_tapped = true;
|
||||
_playerGUID = caster->GetGUID();
|
||||
me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
_events.ScheduleEvent(EVENT_TURN_TO_PLAYER, Seconds(2));
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ struct npc_thalorien_dawnseeker : public ScriptedAI
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
_summons.DespawnAll();
|
||||
_playerGUID.Clear();
|
||||
_morlenGUID.Clear();
|
||||
@@ -376,7 +376,7 @@ struct npc_thalorien_dawnseeker : public ScriptedAI
|
||||
thalorien->DespawnOrUnsummon(5s);
|
||||
}
|
||||
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ struct npc_tiger_matriarch : public ScriptedAI
|
||||
if (HealthBelowPct(20))
|
||||
{
|
||||
damage = 0;
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Unit* vehSummoner = attacker->ToTempSummon()->GetSummonerUnit())
|
||||
{
|
||||
vehSummoner->AddAura(SPELL_SUMMON_ZENTABRA_TRIGGER, vehSummoner);
|
||||
|
||||
@@ -56,7 +56,7 @@ struct go_blackfathom_fire : public GameObjectAI
|
||||
bool OnGossipHello(Player* /*player*/) override
|
||||
{
|
||||
me->SetGoState(GO_STATE_ACTIVE);
|
||||
me->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
instance->SetData(DATA_FIRE, instance->GetData(DATA_FIRE) + 1);
|
||||
return true;
|
||||
}
|
||||
@@ -185,7 +185,7 @@ struct npc_morridune : public EscortAI
|
||||
case 4:
|
||||
SetEscortPaused(true);
|
||||
me->SetFacingTo(1.775791f);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
Talk(SAY_MORRIDUNE_2);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -105,12 +105,12 @@ public:
|
||||
case GO_SHRINE_OF_GELIHAST:
|
||||
shrineOfGelihastGUID = go->GetGUID();
|
||||
if (GetBossState(DATA_GELIHAST) != DONE)
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case GO_ALTAR_OF_THE_DEEPS:
|
||||
altarOfTheDeepsGUID = go->GetGUID();
|
||||
if (GetBossState(DATA_AKU_MAI) != DONE)
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case GO_AKU_MAI_DOOR:
|
||||
if (GetBossState(DATA_AKU_MAI) == DONE)
|
||||
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
|
||||
ArchimondeGUID = instance->GetGuidData(DATA_ARCHIMONDE);
|
||||
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override { }
|
||||
|
||||
@@ -404,7 +404,7 @@ void hyjalAI::Reset()
|
||||
}
|
||||
|
||||
//Flags
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
//Reset Instance Data for trash count
|
||||
if ((!instance->GetData(DATA_ALLIANCE_RETREAT) && me->GetEntry() == JAINA) || (instance->GetData(DATA_ALLIANCE_RETREAT) && me->GetEntry() == THRALL))
|
||||
@@ -835,7 +835,7 @@ void hyjalAI::UpdateAI(uint32 diff)
|
||||
}
|
||||
EventBegun = false;
|
||||
CheckTimer = 0;
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
BossGUID[i].Clear();
|
||||
instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0); // Reset world state for enemies to disable it
|
||||
}
|
||||
@@ -998,7 +998,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
||||
{
|
||||
(*itr)->CastSpell(*itr, SPELL_TELEPORT_VISUAL, true);
|
||||
(*itr)->SetFaction(FACTION_FRIENDLY);//make them friendly so mobs won't attack them
|
||||
(*itr)->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
(*itr)->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
}
|
||||
DoCast(me, SPELL_TELEPORT_VISUAL);
|
||||
|
||||
@@ -420,7 +420,7 @@ public:
|
||||
CanMove = false;
|
||||
Delay = rand32() % 30000;
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetDisplayId(MODEL_INVIS);
|
||||
go = false;
|
||||
Initialize();
|
||||
|
||||
@@ -576,7 +576,7 @@ public:
|
||||
|
||||
// Adjust gossip flag based on whether we have a gossip menu or not
|
||||
if (target.HasGossip)
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
else
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
@@ -1465,7 +1465,7 @@ public:
|
||||
case RP5_EVENT_CHROMIE_SPAWN:
|
||||
if (Creature* chromie = instance->instance->SummonCreature(NPC_CHROMIE_3, ArthasPositions[RP5_CHROMIE_SPAWN]))
|
||||
{
|
||||
chromie->RemoveNpcFlag(NPCFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER));
|
||||
chromie->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
Movement::PointsArray path(ChromieSplinePos, ChromieSplinePos + chromiePathSize);
|
||||
Movement::MoveSplineInit init(chromie);
|
||||
init.SetFly();
|
||||
@@ -1483,7 +1483,7 @@ public:
|
||||
{
|
||||
chromie->CastSpell(chromie, SPELL_CHROMIE_3_TRANSFORM);
|
||||
chromie->AI()->Talk(RP5_LINE_CHROMIE0);
|
||||
chromie->AddNpcFlag(NPCFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER));
|
||||
chromie->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -265,7 +265,7 @@ public:
|
||||
break;
|
||||
case 30:
|
||||
SetEscortPaused(true);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
SetRun(false);
|
||||
break;
|
||||
case 31:
|
||||
@@ -289,7 +289,7 @@ public:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
//make horsie run off
|
||||
SetEscortPaused(true);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
instance->SetData(TYPE_THRALL_PART2, DONE);
|
||||
SetRun();
|
||||
break;
|
||||
|
||||
@@ -90,7 +90,7 @@ public:
|
||||
// we make Immolthar non attackable, otherwise players with pets can pull him out of the forcefield
|
||||
// TODO: this change isnt correct but since of today (13.09.2020) mmaps dont support doors
|
||||
if (GetBossState(DATA_FORCEFIELD) != DONE)
|
||||
creature->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -412,7 +412,7 @@ class npc_brann_bronzebeard_anraphet : public CreatureScript
|
||||
break;
|
||||
case EVENT_BRANN_SAY_GET_IT:
|
||||
Talk(BRANN_SAY_GET_IT);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
break;
|
||||
case EVENT_BRANN_SET_ORIENTATION_4:
|
||||
me->SetFacingTo(3.141593f);
|
||||
|
||||
@@ -293,8 +293,8 @@ public:
|
||||
{
|
||||
if (Unit* ptah = GetCaster())
|
||||
{
|
||||
ptah->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT));
|
||||
ptah->AddUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
ptah->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
||||
ptah->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@ public:
|
||||
{
|
||||
if (Unit* ptah = GetCaster())
|
||||
{
|
||||
ptah->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT));
|
||||
ptah->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
||||
ptah->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
//me->m_canMove = true;
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
// Invisible Model
|
||||
me->SetDisplayId(11686);
|
||||
SummonAdds(me->GetVictim());
|
||||
|
||||
@@ -71,7 +71,7 @@ public:
|
||||
case GO_GONG:
|
||||
goGongGUID = gameObject->GetGUID();
|
||||
if (GetBossState(DATA_TUTEN_KASH) == DONE)
|
||||
gameObject->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
gameObject->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case GO_IDOL_OVEN_FIRE:
|
||||
case GO_IDOL_CUP_FIRE:
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
case IN_PROGRESS:
|
||||
{
|
||||
if (GameObject* go = instance->GetGameObject(goGongGUID))
|
||||
go->AddFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
|
||||
switch (gongWave)
|
||||
{
|
||||
|
||||
@@ -104,7 +104,7 @@ public:
|
||||
channeling = false;
|
||||
eventProgress = 0;
|
||||
spawnerCount = 0;
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
if (WardKeeperDeath == WARD_KEEPERS_NR)
|
||||
if (GameObject* go = instance->GetGameObject(DoorWardGUID))
|
||||
{
|
||||
go->AddFlag(GameObjectFlags(GO_FLAG_IN_USE | GO_FLAG_NODESPAWN));
|
||||
go->SetFlag(GO_FLAG_IN_USE | GO_FLAG_NODESPAWN);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ public:
|
||||
break;
|
||||
case 45:
|
||||
Talk(SAY_WIN, player);
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
player->GroupEventHappens(QUEST_WILLIX_THE_IMPORTER, me);
|
||||
break;
|
||||
case 46:
|
||||
|
||||
@@ -209,7 +209,7 @@ public:
|
||||
//Reset flags
|
||||
me->RemoveAurasDueToSpell(SPELL_RED_COLORATION);
|
||||
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
|
||||
me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetVisible(true);
|
||||
|
||||
//Reset Phase
|
||||
@@ -420,7 +420,7 @@ public:
|
||||
me->RemoveAurasDueToSpell(SPELL_RED_COLORATION);
|
||||
|
||||
//Reset to normal emote state and prevent select and attack
|
||||
me->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
//Remove Target field
|
||||
me->SetTarget(ObjectGuid::Empty);
|
||||
@@ -523,7 +523,7 @@ public:
|
||||
|
||||
//Reset flags
|
||||
me->RemoveAurasDueToSpell(SPELL_TRANSFORM);
|
||||
me->AddUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetVisible(false);
|
||||
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_NOT_STARTED);
|
||||
@@ -632,7 +632,7 @@ public:
|
||||
me->SetFullHealth();
|
||||
|
||||
me->SetVisible(true);
|
||||
me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE));
|
||||
me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
//Emerging phase
|
||||
//AttackStart(ObjectAccessor::GetUnit(*me, HoldpPlayer));
|
||||
|
||||
@@ -112,7 +112,7 @@ public:
|
||||
{
|
||||
//Cast
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
DoCast(me, SPELL_DIRTMOUND_PASSIVE);
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ struct boss_twinemperorsAI : public BossAI
|
||||
if (ohealth <= 0)
|
||||
{
|
||||
pOtherBoss->setDeathState(JUST_DIED);
|
||||
pOtherBoss->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
pOtherBoss->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -132,7 +132,7 @@ struct boss_twinemperorsAI : public BossAI
|
||||
{
|
||||
pOtherBoss->SetHealth(0);
|
||||
pOtherBoss->setDeathState(JUST_DIED);
|
||||
pOtherBoss->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
pOtherBoss->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
ENSURE_AI(boss_twinemperorsAI, pOtherBoss->AI())->DontYellWhenDead = true;
|
||||
}
|
||||
if (!DontYellWhenDead) // I hope AI is not threaded
|
||||
|
||||
@@ -84,8 +84,8 @@ public:
|
||||
|
||||
DoCastSelf(SPELL_IRRIDATION, true);
|
||||
|
||||
me->AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||
me->AddUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
me->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||
me->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
me->SetHealth(me->CountPctFromMaxHealth(10));
|
||||
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
||||
}
|
||||
@@ -200,7 +200,7 @@ public:
|
||||
{
|
||||
Initialize();
|
||||
NormFaction = creature->GetFaction();
|
||||
NpcFlags = NPCFlags(creature->m_unitData->NpcFlags[0]);
|
||||
NpcFlags = creature->GetNpcFlags();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
@@ -290,7 +290,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->AddUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
me->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||
me->SetHealth(me->CountPctFromMaxHealth(15));
|
||||
switch (urand(0, 1))
|
||||
{
|
||||
|
||||
@@ -101,7 +101,7 @@ public:
|
||||
}
|
||||
else if (spellInfo->Id == SPELL_KODO_KOMBO_GOSSIP)
|
||||
{
|
||||
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
me->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
}
|
||||
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
|
||||
|
||||
@@ -363,7 +363,7 @@ public:
|
||||
{
|
||||
Initialize();
|
||||
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
void HandleAnimation()
|
||||
|
||||
@@ -376,8 +376,8 @@ public:
|
||||
if (!creature)
|
||||
continue;
|
||||
creature->SetFaction(35);
|
||||
creature->AddUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
creature->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
creature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
|
||||
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
creature->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||
AffrayChallenger[i] = creature->GetGUID();
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user