Core/GameObjects: Reduce differences between branches part 3 - gameobject updatefield accessors

This commit is contained in:
Shauren
2022-03-30 18:01:24 +02:00
parent e334fdf3ad
commit 5eea9883c2
61 changed files with 222 additions and 196 deletions
@@ -240,7 +240,7 @@ void BattlegroundIC::StartingEventOpenDoors()
DoorOpen(BG_IC_GO_DOODAD_VR_PORTCULLIS01_2);
for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; ++i)
GetBGObject(BG_IC_Teleporters[i].type)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
GetBGObject(BG_IC_Teleporters[i].type)->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS; ++i)
GetBGObject(BG_IC_TeleporterEffects[i].type)->SetGoState(GO_STATE_ACTIVE);
@@ -809,12 +809,12 @@ void BattlegroundIC::DestroyGate(Player* player, GameObject* go)
if (player->GetTeamId() == TEAM_ALLIANCE)
{
DoorOpen(BG_IC_GO_HORDE_KEEP_PORTCULLIS);
GetBGObject(BG_IC_GO_HORDE_BANNER)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
GetBGObject(BG_IC_GO_HORDE_BANNER)->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
else
{
DoorOpen(BG_IC_GO_DOODAD_PORTCULLISACTIVE02);
GetBGObject(BG_IC_GO_ALLIANCE_BANNER)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
GetBGObject(BG_IC_GO_ALLIANCE_BANNER)->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
uint32 textId;
@@ -766,9 +766,9 @@ void BattlegroundSA::UpdateObjectInteractionFlags(uint32 objectId)
if (GameObject* go = GetBGObject(objectId))
{
if (CanInteractWithObject(objectId))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
else
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
}
@@ -323,7 +323,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
if (GameObjectOverride const* goOverride = GetGameObjectOverride())
{
SetFaction(goOverride->Faction);
SetUInt32Value(GAMEOBJECT_FLAGS, goOverride->Flags);
ReplaceAllFlags(GameObjectFlags(goOverride->Flags));
}
SetEntry(goinfo->entry);
@@ -333,7 +333,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
SetDisplayId(goinfo->displayId);
m_model = CreateModel();
CreateModel();
// GAMEOBJECT_BYTES_1, index at 0, 1, 2 and 3
SetGoType(GameobjectTypes(goinfo->type));
m_prevGoState = go_state;
@@ -352,7 +352,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
SetGoAnimProgress(255);
break;
case GAMEOBJECT_TYPE_TRANSPORT:
SetUInt32Value(GAMEOBJECT_LEVEL, goinfo->transport.pause);
SetLevel(goinfo->transport.pause);
SetGoState(goinfo->transport.startOpen ? GO_STATE_ACTIVE : GO_STATE_READY);
SetGoAnimProgress(animprogress);
m_goValue.Transport.PathProgress = 0;
@@ -505,7 +505,7 @@ void GameObject::Update(uint32 diff)
if (caster && caster->GetTypeId() == TYPEID_PLAYER)
{
SetGoState(GO_STATE_ACTIVE);
SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
ReplaceAllFlags(GO_FLAG_NODESPAWN);
UpdateData udata;
WorldPacket packet;
@@ -694,7 +694,7 @@ void GameObject::Update(uint32 diff)
case GAMEOBJECT_TYPE_GOOBER:
if (GameTime::GetGameTimeMS() >= m_cooldownTime)
{
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
RemoveFlag(GO_FLAG_IN_USE);
SetLootState(GO_JUST_DEACTIVATED);
}
break;
@@ -823,7 +823,7 @@ void GameObject::Update(uint32 diff)
SendObjectDeSpawnAnim(GetGUID());
//reset flags
if (GameObjectOverride const* goOverride = GetGameObjectOverride())
SetUInt32Value(GAMEOBJECT_FLAGS, goOverride->Flags);
ReplaceAllFlags(GameObjectFlags(goOverride->Flags));
}
if (!m_respawnDelayTime)
@@ -918,7 +918,7 @@ void GameObject::Delete()
SetGoState(GO_STATE_READY);
if (GameObjectOverride const* goOverride = GetGameObjectOverride())
SetUInt32Value(GAMEOBJECT_FLAGS, goOverride->Flags);
ReplaceAllFlags(GameObjectFlags(goOverride->Flags));
uint32 poolid = GetSpawnId() ? sPoolMgr->IsPartOfAPool<GameObject>(GetSpawnId()) : 0;
if (poolid)
@@ -1069,7 +1069,7 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap
if (!GetGOInfo()->GetDespawnPossibility() && !GetGOInfo()->IsDespawnAtAction())
{
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
SetFlag(GO_FLAG_NODESPAWN);
m_respawnDelayTime = 0;
m_respawnTime = 0;
}
@@ -1411,7 +1411,7 @@ void GameObject::ResetDoorOrButton()
if (m_lootState == GO_READY || m_lootState == GO_JUST_DEACTIVATED)
return;
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
RemoveFlag(GO_FLAG_IN_USE);
SetGoState(m_prevGoState);
SetLootState(GO_JUST_DEACTIVATED);
@@ -1452,8 +1452,10 @@ void GameObject::ActivateObject(GameObjectActions action, WorldObject* spellCast
Use(unitCaster);
break;
case GameObjectActions::Unlock:
RemoveFlag(GO_FLAG_LOCKED);
break;
case GameObjectActions::Lock:
ApplyModFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED, action == GameObjectActions::Lock);
SetFlag(GO_FLAG_LOCKED);
break;
case GameObjectActions::Open:
if (unitCaster)
@@ -1463,7 +1465,7 @@ void GameObject::ActivateObject(GameObjectActions action, WorldObject* spellCast
if (unitCaster)
{
UseDoorOrButton(0, false, unitCaster);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
RemoveFlag(GO_FLAG_LOCKED);
}
break;
case GameObjectActions::Close:
@@ -1486,12 +1488,14 @@ void GameObject::ActivateObject(GameObjectActions action, WorldObject* spellCast
DespawnOrUnsummon();
break;
case GameObjectActions::MakeInert:
SetFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GameObjectActions::MakeActive:
ApplyModFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE, action == GameObjectActions::MakeInert);
RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GameObjectActions::CloseAndLock:
ResetDoorOrButton();
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
SetFlag(GO_FLAG_LOCKED);
break;
case GameObjectActions::UseArtKit0:
case GameObjectActions::UseArtKit1:
@@ -1548,9 +1552,9 @@ void GameObject::SetGoArtKit(uint8 artkit, GameObject* go, ObjectGuid::LowType l
void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false */)
{
if (activate)
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
SetFlag(GO_FLAG_IN_USE);
else
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
RemoveFlag(GO_FLAG_IN_USE);
if (GetGoState() == GO_STATE_READY) //if closed -> open
SetGoState(alternative ? GO_STATE_DESTROYED : GO_STATE_ACTIVE);
@@ -1749,7 +1753,7 @@ void GameObject::Use(Unit* user)
if (uint32 trapEntry = info->goober.linkedTrapId)
TriggeringLinkedGameObject(trapEntry, user);
SetFlag(GAMEOBJECT_FLAGS, 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)
@@ -2351,7 +2355,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb
switch (state)
{
case GO_DESTRUCTIBLE_INTACT:
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_DESTROYED);
RemoveFlag(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED);
SetDisplayId(m_goInfo->displayId);
if (setHealth)
{
@@ -2365,8 +2369,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb
EventInform(m_goInfo->building.damagedEvent, attackerOrHealer);
AI()->Damaged(attackerOrHealer, m_goInfo->building.damagedEvent);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
RemoveFlag(GO_FLAG_DESTROYED);
SetFlag(GO_FLAG_DAMAGED);
uint32 modelId = m_goInfo->displayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
@@ -2394,8 +2398,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb
if (Battleground* bg = player->GetBattleground())
bg->DestroyGate(player, this);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
RemoveFlag(GO_FLAG_DAMAGED);
SetFlag(GO_FLAG_DESTROYED);
uint32 modelId = m_goInfo->displayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
@@ -2414,7 +2418,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb
case GO_DESTRUCTIBLE_REBUILDING:
{
EventInform(m_goInfo->building.rebuildingEvent, attackerOrHealer);
RemoveFlag(GAMEOBJECT_FLAGS, 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->building.destructibleData))
@@ -2527,7 +2531,7 @@ void GameObject::UpdateModel()
if (GetMap()->ContainsGameObjectModel(*m_model))
GetMap()->RemoveGameObjectModel(*m_model);
delete m_model;
m_model = CreateModel();
CreateModel();
if (m_model)
GetMap()->InsertGameObjectModel(*m_model);
}
@@ -2762,9 +2766,9 @@ private:
GameObject* _owner;
};
GameObjectModel* GameObject::CreateModel()
void GameObject::CreateModel()
{
return GameObjectModel::Create(std::make_unique<GameObjectModelOwnerImpl>(this), sWorld->GetDataPath());
m_model = GameObjectModel::Create(std::make_unique<GameObjectModelOwnerImpl>(this), sWorld->GetDataPath());
}
std::string GameObject::GetDebugInfo() const
@@ -20,7 +20,6 @@
#include "Object.h"
#include "GridObject.h"
#include "DatabaseEnvFwd.h"
#include "GameObjectData.h"
#include "Loot.h"
#include "MapObject.h"
@@ -116,7 +115,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
QuaternionData GetWorldRotation() const;
// overwrite WorldObject function for proper name localization
std::string const& GetNameForLocaleIdx(LocaleConstant locale_idx) const override;
std::string const& GetNameForLocaleIdx(LocaleConstant locale) const override;
void SaveToDB();
void SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask);
@@ -126,7 +125,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void SetOwnerGUID(ObjectGuid owner)
{
// Owner already found and different than expected owner - remove object from old owner
if (owner && GetOwnerGUID() && GetOwnerGUID() != owner)
if (!owner.IsEmpty() && !GetOwnerGUID().IsEmpty() && GetOwnerGUID() != owner)
{
ABORT();
}
@@ -161,6 +160,13 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void Delete();
void getFishLoot(Loot* loot, Player* loot_owner);
void getFishLootJunk(Loot* loot, Player* loot_owner);
bool HasFlag(GameObjectFlags flags) const { return Object::HasFlag(GAMEOBJECT_FLAGS, flags); }
void SetFlag(GameObjectFlags flags) { Object::SetFlag(GAMEOBJECT_FLAGS, flags); }
void RemoveFlag(GameObjectFlags flags) { Object::RemoveFlag(GAMEOBJECT_FLAGS, flags); }
void ReplaceAllFlags(GameObjectFlags flags) { SetUInt32Value(GAMEOBJECT_FLAGS, flags); }
void SetLevel(uint32 level) { SetUInt32Value(GAMEOBJECT_LEVEL, level); }
GameobjectTypes GetGoType() const { return GameobjectTypes(GetByteValue(GAMEOBJECT_BYTES_1, 1)); }
void SetGoType(GameobjectTypes type) { SetByteValue(GAMEOBJECT_BYTES_1, 1, type); }
GOState GetGoState() const { return GOState(GetByteValue(GAMEOBJECT_BYTES_1, 0)); }
@@ -191,14 +197,10 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void SetLootGenerationTime();
uint32 GetLootGenerationTime() const { return m_lootGenerationTime; }
void AddToSkillupList(ObjectGuid::LowType PlayerGuidLow) { m_SkillupList.push_back(PlayerGuidLow); }
bool IsInSkillupList(ObjectGuid::LowType PlayerGuidLow) const
void AddToSkillupList(ObjectGuid const& PlayerGuidLow) { m_SkillupList.insert(PlayerGuidLow); }
bool IsInSkillupList(ObjectGuid const& playerGuid) const
{
for (std::list<ObjectGuid::LowType>::const_iterator i = m_SkillupList.begin(); i != m_SkillupList.end(); ++i)
if (*i == PlayerGuidLow)
return true;
return false;
return m_SkillupList.count(playerGuid) > 0;
}
void ClearSkillupList() { m_SkillupList.clear(); }
@@ -206,7 +208,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void AddUse() { ++m_usetimes; }
uint32 GetUseCount() const { return m_usetimes; }
uint32 GetUniqueUseCount() const { return m_unique_users.size(); }
uint32 GetUniqueUseCount() const { return uint32(m_unique_users.size()); }
void SaveRespawnTime(uint32 forceDelay = 0);
@@ -234,7 +236,6 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void TriggeringLinkedGameObject(uint32 trapEntry, Unit* target);
bool IsNeverVisible() const override;
bool IsAlwaysVisibleFor(WorldObject const* seer) const override;
bool IsInvisibleDueToDespawn() const override;
@@ -250,9 +251,9 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void SetDestructibleState(GameObjectDestructibleState state, WorldObject* attackerOrHealer = nullptr, bool setHealth = false);
GameObjectDestructibleState GetDestructibleState() const
{
if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED))
if (HasFlag(GO_FLAG_DESTROYED))
return GO_DESTRUCTIBLE_DESTROYED;
if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED))
if (HasFlag(GO_FLAG_DAMAGED))
return GO_DESTRUCTIBLE_DAMAGED;
return GO_DESTRUCTIBLE_INTACT;
}
@@ -303,7 +304,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
std::string GetDebugInfo() const override;
protected:
GameObjectModel* CreateModel();
void CreateModel();
void UpdateModel(); // updates model in case displayId were changed
uint32 m_spellId;
time_t m_respawnTime; // (secs) time of next respawn (or despawn if GO have owner()),
@@ -318,9 +319,9 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
// For traps this: spell casting cooldown, for doors/buttons: reset time.
GOState m_prevGoState; // What state to set whenever resetting
std::list<ObjectGuid::LowType> m_SkillupList;
GuidSet m_SkillupList;
ObjectGuid m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_SUMMONING_RITUAL where GO is not summoned (no owner)
ObjectGuid m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_RITUAL where GO is not summoned (no owner)
GuidSet m_unique_users;
uint32 m_usetimes;
@@ -355,6 +356,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
//! Following check does check 3d distance
return IsInRange(obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ(), dist2compare);
}
GameObjectAI* m_AI;
bool m_respawnCompatibilityMode;
};
@@ -87,7 +87,7 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, uint32 mapid,
if (GameObjectOverride const* goOverride = GetGameObjectOverride())
{
SetFaction(goOverride->Faction);
SetUInt32Value(GAMEOBJECT_FLAGS, goOverride->Flags);
ReplaceAllFlags(GameObjectFlags(goOverride->Flags));
}
m_goValue.Transport.PathProgress = 0;
@@ -102,7 +102,7 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, uint32 mapid,
SetLocalRotation(0.0f, 0.0f, 0.0f, 1.0f);
SetParentRotation(QuaternionData());
m_model = CreateModel();
CreateModel();
return true;
}
@@ -80,7 +80,7 @@ class TC_GAME_API Transport : public GameObject, public TransportBase
}
uint32 GetTransportPeriod() const override { return GetUInt32Value(GAMEOBJECT_LEVEL); }
void SetPeriod(uint32 period) { SetUInt32Value(GAMEOBJECT_LEVEL, period); }
void SetPeriod(uint32 period) { SetLevel(period); }
uint32 GetTimer() const { return GetGOValue()->Transport.PathProgress; }
KeyFrameVec const& GetKeyFrames() const { return _transportInfo->keyFrames; }
+4 -4
View File
@@ -1871,9 +1871,9 @@ void Spell::EffectOpenLock()
if (gameObjTarget)
{
// Allow one skill-up until respawned
if (!gameObjTarget->IsInSkillupList(player->GetGUID().GetCounter()) &&
if (!gameObjTarget->IsInSkillupList(player->GetGUID()) &&
player->UpdateGatherSkill(skillId, pureSkillValue, reqSkillValue))
gameObjTarget->AddToSkillupList(player->GetGUID().GetCounter());
gameObjTarget->AddToSkillupList(player->GetGUID());
}
else if (itemTarget)
{
@@ -3657,7 +3657,7 @@ void Spell::EffectDuel()
}
pGameObj->SetFaction(caster->GetFaction());
pGameObj->SetUInt32Value(GAMEOBJECT_LEVEL, caster->GetLevel() + 1);
pGameObj->SetLevel(caster->GetLevel() + 1);
int32 duration = m_spellInfo->GetDuration();
pGameObj->SetRespawnTime(duration > 0 ? duration/IN_MILLISECONDS : 0);
pGameObj->SetSpellId(m_spellInfo->Id);
@@ -4000,7 +4000,7 @@ void Spell::EffectSummonObject()
}
go->SetFaction(unitCaster->GetFaction());
go->SetUInt32Value(GAMEOBJECT_LEVEL, unitCaster->GetLevel());
go->SetLevel(unitCaster->GetLevel());
int32 duration = m_spellInfo->GetDuration();
go->SetRespawnTime(duration > 0 ? duration / IN_MILLISECONDS : 0);
go->SetSpellId(m_spellInfo->Id);
@@ -571,7 +571,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->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE | GO_FLAG_NOT_SELECTABLE);
relic->SetFlag(GO_FLAG_IN_USE | GO_FLAG_NOT_SELECTABLE);
m_titansRelicGUID = relic->GetGUID();
}
else
@@ -1495,7 +1495,7 @@ void BfWGGameObjectBuilding::Destroyed()
go->SetGoState(GO_STATE_ACTIVE);
_wg->SetRelicInteractible(true);
if (_wg->GetRelic())
_wg->GetRelic()->RemoveFlag(GAMEOBJECT_FLAGS, 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;
+24 -7
View File
@@ -610,14 +610,31 @@ public:
if (!objectState)
return false;
if (objectType < 4)
object->SetByteValue(GAMEOBJECT_BYTES_1, objectType, *objectState);
else if (objectType == 4)
switch (objectType)
{
WorldPacket data(SMSG_GAMEOBJECT_CUSTOM_ANIM, 8+4);
data << object->GetGUID();
data << static_cast<uint32>(*objectState);
object->SendMessageToSet(&data, true);
case 0:
object->SetGoState(GOState(*objectState));
break;
case 1:
object->SetGoType(GameobjectTypes(*objectState));
break;
case 2:
object->SetGoArtKit(*objectState);
break;
case 3:
object->SetGoAnimProgress(*objectState);
break;
case 4:
object->SendCustomAnim(*objectState);
break;
case 5:
if (*objectState > GO_DESTRUCTIBLE_REBUILDING)
return false;
object->SetDestructibleState(GameObjectDestructibleState(*objectState));
break;
default:
break;
}
handler->PSendSysMessage("Set gobject type %d state %u", objectType, *objectState);
return true;
@@ -194,7 +194,7 @@ struct go_suppression_device : public GameObjectAI
if (me->GetGoState() == GO_STATE_ACTIVE)
me->SetGoState(GO_STATE_READY);
me->SetLootState(GO_READY);
me->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
_events.ScheduleEvent(EVENT_SUPPRESSION_CAST, 0s);
}
@@ -204,7 +204,7 @@ struct go_suppression_device : public GameObjectAI
return;
_active = false;
me->SetGoState(GO_STATE_ACTIVE);
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
_events.CancelEvent(EVENT_SUPPRESSION_CAST);
}
@@ -303,7 +303,7 @@ struct go_chromaggus_lever : public GameObjectAI
_instance->HandleGameObject(ObjectGuid::Empty, true, go);
}
me->SetFlag(GAMEOBJECT_FLAGS, 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;
@@ -185,7 +185,7 @@ class instance_deadmines : public InstanceMapScript
void LeverStucked()
{
if (GameObject* pDoorLever = instance->GetGameObject(DoorLeverGUID))
pDoorLever->SetUInt32Value(GAMEOBJECT_FLAGS, 4);
pDoorLever->SetFlag(GO_FLAG_INTERACT_COND);
}
void OnCreatureCreate(Creature* creature) override
@@ -312,7 +312,7 @@ public:
if (GameObject* go = me->SummonGameObject(183410, -533.140f, -105.322f, -156.016f, 0.f, QuaternionData(), 1s))
{
GoSummonList.push_back(go->GetGUID());
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it!
go->SetFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
}
Summon(3);
break;
@@ -327,7 +327,7 @@ public:
if (GameObject* go = me->SummonGameObject(183410, -542.199f, -96.854f, -155.790f, 0.f, QuaternionData(), 1s))
{
GoSummonList.push_back(go->GetGUID());
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
case 5:
@@ -341,7 +341,7 @@ public:
if (GameObject* go = me->SummonGameObject(183410, -507.820f, -103.333f, -151.353f, 0.f, QuaternionData(), 1s))
{
GoSummonList.push_back(go->GetGUID());
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it!
go->SetFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
Summon(5);
}
break;
@@ -349,7 +349,7 @@ public:
if (GameObject* go = me->SummonGameObject(183410, -511.829f, -86.249f, -151.431f, 0.f, QuaternionData(), 1s))
{
GoSummonList.push_back(go->GetGUID());
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it!
go->SetFlag(GO_FLAG_NOT_SELECTABLE); //We can't use it!
}
break;
case 8:
@@ -130,7 +130,7 @@ public:
me->SetDisableGravity(true);
HandleTerraceDoors(true);
if (GameObject* urn = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_GO_BLACKENED_URN)))
urn->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
urn->RemoveFlag(GO_FLAG_IN_USE);
}
void EnterEvadeMode(EvadeReason why) override
@@ -430,7 +430,7 @@ class go_blackened_urn : public GameObjectScript
bool OnGossipHello(Player* /*player*/) override
{
if (me->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE))
if (me->HasFlag(GO_FLAG_IN_USE))
return false;
if (instance->GetBossState(DATA_NIGHTBANE) == DONE || instance->GetBossState(DATA_NIGHTBANE) == IN_PROGRESS)
@@ -438,7 +438,7 @@ class go_blackened_urn : public GameObjectScript
if (Creature* nightbane = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_NIGHTBANE)))
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
me->SetFlag(GO_FLAG_IN_USE);
nightbane->AI()->DoAction(ACTION_SUMMON);
}
return false;
@@ -162,7 +162,7 @@ public:
HandleGameObject(StageDoorLeftGUID, true);
HandleGameObject(StageDoorRightGUID, true);
if (GameObject* sideEntrance = instance->GetGameObject(SideEntranceDoor))
sideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
sideEntrance->RemoveFlag(GO_FLAG_LOCKED);
UpdateEncounterStateForKilledCreature(16812, nullptr);
}
break;
@@ -224,9 +224,9 @@ public:
case GO_SIDE_ENTRANCE_DOOR:
SideEntranceDoor = go->GetGUID();
if (GetBossState(DATA_OPERA_PERFORMANCE) == DONE)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
go->SetFlag(GO_FLAG_LOCKED);
else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
go->RemoveFlag(GO_FLAG_LOCKED);
break;
case GO_DUST_COVERED_CHEST:
DustCoveredChest = go->GetGUID();
@@ -159,7 +159,7 @@ class instance_magisters_terrace : public InstanceMapScript
{
case GO_ESCAPE_ORB:
if (GetBossState(DATA_KAELTHAS_SUNSTRIDER) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -201,7 +201,7 @@ class instance_magisters_terrace : public InstanceMapScript
case DATA_KAELTHAS_SUNSTRIDER:
if (state == DONE)
if (GameObject* orb = GetGameObject(DATA_ESCAPE_ORB))
orb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
orb->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -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->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
gob->SetFlag(GO_FLAG_NOT_SELECTABLE);
instance->SummonCreature(NPC_HEADLESS_HORSEMAN_HEAD, HeadlessHorsemanHeadSpawnPosition);
instance->SummonCreature(NPC_FLAME_BUNNY, BunnySpawnPosition);
@@ -198,7 +198,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->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
go->SetFlag(GO_FLAG_LOCKED);
gauntletGate1GUID = go->GetGUID();
break;
case GO_ZIGGURAT1:
@@ -178,7 +178,7 @@ public:
void UseStatue(GameObject* go)
{
go->SummonGameObject(GO_ATALAI_LIGHT1, *go, QuaternionData(), 0s);
go->SetUInt32Value(GAMEOBJECT_FLAGS, 4);
go->SetFlag(GO_FLAG_INTERACT_COND);
}
void UseLastStatue(GameObject* go)
@@ -121,7 +121,7 @@ class instance_uldaman : public InstanceMapScript
case GO_ANCIENT_VAULT_DOOR:
go->SetGoState(GO_STATE_READY);
go->SetUInt32Value(GAMEOBJECT_FLAGS, 33);
go->ReplaceAllFlags(GO_FLAG_IN_USE | GO_FLAG_NODESPAWN);
ancientVaultDoor = go->GetGUID();
if (m_auiEncounter[1] == DONE)
@@ -141,7 +141,7 @@ class instance_uldaman : public InstanceMapScript
if (m_auiEncounter[2] == DONE)
{
HandleGameObject(ObjectGuid::Empty, true, go);
go->SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND);
go->SetFlag(GO_FLAG_INTERACT_COND);
}
break;
}
@@ -171,7 +171,7 @@ class instance_uldaman : public InstanceMapScript
if (!go)
return;
go->SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND);
go->SetFlag(GO_FLAG_INTERACT_COND);
}
void ActivateStoneKeepers()
@@ -244,14 +244,14 @@ class npc_harrison_jones : public CreatureScript
break;
case GONG_EVENT_3:
if (GameObject* gong = instance->GetGameObject(GO_STRANGE_GONG))
gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
gong->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
_gongEvent = GONG_EVENT_4;
_gongTimer = 105000;
break;
case GONG_EVENT_4:
me->RemoveAura(SPELL_BANGING_THE_GONG);
if (GameObject* gong = instance->GetGameObject(GO_STRANGE_GONG))
gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
gong->SetFlag(GO_FLAG_NOT_SELECTABLE);
// trigger or gong will need to be scripted to set IN_PROGRESS after enough hits.
// This is temp workaround.
@@ -160,7 +160,7 @@ struct boss_arlokk : public BossAI
{
BossAI::EnterEvadeMode(why);
if (GameObject* object = instance->GetGameObject(DATA_GONG_BETHEKK))
object->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
object->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
me->DespawnOrUnsummon(4s);
}
@@ -426,7 +426,7 @@ struct go_gong_of_bethekk : public GameObjectAI
bool OnGossipHello(Player* /*player*/) override
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
me->SendCustomAnim(0);
me->SummonCreature(NPC_ARLOKK, PosSummonArlokk[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10min);
return true;
@@ -73,9 +73,9 @@ class instance_zulgurub : public InstanceMapScript
{
case GO_GONG_OF_BETHEKK:
if (GetBossState(DATA_ARLOKK) == DONE)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -57,7 +57,7 @@ struct go_blackfathom_fire : public GameObjectAI
bool OnGossipHello(Player* /*player*/) override
{
me->SetGoState(GO_STATE_ACTIVE);
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
instance->SetData(DATA_FIRE, instance->GetData(DATA_FIRE) + 1);
return true;
}
@@ -106,12 +106,12 @@ public:
case GO_SHRINE_OF_GELIHAST:
shrineOfGelihastGUID = go->GetGUID();
if (GetBossState(DATA_GELIHAST) != DONE)
go->SetFlag(GAMEOBJECT_FLAGS, 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->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_AKU_MAI_DOOR:
if (GetBossState(DATA_AKU_MAI) == DONE)
@@ -189,13 +189,13 @@ public:
case DATA_GELIHAST:
if (state == DONE)
if (GameObject* go = instance->GetGameObject(shrineOfGelihastGUID))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case DATA_AKU_MAI:
if (state == DONE)
if (GameObject* go = instance->GetGameObject(altarOfTheDeepsGUID))
{
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
go->SummonCreature(NPC_MORRIDUNE, SpawnsLocation[10], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5min);
}
break;
@@ -1419,7 +1419,7 @@ public:
malganis->CastSpell(malganis, SPELL_MALGANIS_QUEST_CREDIT, true);
malganis->CastSpell(malganis, SPELL_MALGANIS_KILL_CREDIT, true);
if (GameObject* chest = malganis->FindNearestGameObject(RAID_MODE(GO_CHEST_NORMAL, GO_CHEST_HEROIC), 100.0f))
chest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
chest->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
events.ScheduleEvent(RP5_EVENT_MALGANIS12, 3s);
events.ScheduleEvent(RP5_EVENT_MALGANIS_LEAVE, 19s);
@@ -72,7 +72,7 @@ public:
case GO_GONG:
goGongGUID = gameObject->GetGUID();
if (GetBossState(DATA_TUTEN_KASH) == DONE)
gameObject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
gameObject->SetFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_IDOL_OVEN_FIRE:
case GO_IDOL_CUP_FIRE:
@@ -115,7 +115,7 @@ public:
case IN_PROGRESS:
{
if (GameObject* go = instance->GetGameObject(goGongGUID))
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
switch (gongWave)
{
@@ -153,7 +153,7 @@ public:
{
fiendsKilled = 0;
if (GameObject* go = instance->GetGameObject(goGongGUID))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
case NPC_TOMB_REAVER:
@@ -161,7 +161,7 @@ public:
{
reaversKilled = 0;
if (GameObject* go = instance->GetGameObject(goGongGUID))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
}
@@ -79,7 +79,7 @@ public:
if (WardKeeperDeath == WARD_KEEPERS_NR)
if (GameObject* go = instance->GetGameObject(DoorWardGUID))
{
go->SetUInt32Value(GAMEOBJECT_FLAGS, 33);
go->ReplaceAllFlags(GO_FLAG_IN_USE | GO_FLAG_NODESPAWN);
go->SetGoState(GO_STATE_ACTIVE);
}
}
@@ -258,7 +258,7 @@ public:
if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_NAGA_BRAZIER, INTERACTION_DISTANCE*2))
{
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
SetEscortPaused(true);
}
break;
@@ -1418,7 +1418,7 @@ class go_wind_stone : public GameObjectScript
void Reset() override
{
// Allow despawning
me->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
me->RemoveFlag(GO_FLAG_NODESPAWN);
isSummoning = false;
}
};
@@ -308,13 +308,13 @@ public:
{
if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_ELUNE_ALTAR, 10.0f))
{
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
me->SetFacingToObject(go);
_altarGUID = go->GetGUID();
}
}
else if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_ELUNE_FIRE, 10.0f))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
// Yell and set escort to pause
Talk(SAY_REACH_TORCH);
@@ -585,7 +585,7 @@ public:
if (npc_ranshalla::npc_ranshallaAI* escortAI = dynamic_cast<npc_ranshalla::npc_ranshallaAI*>(ranshalla->AI()))
escortAI->DoContinueEscort(isAltar);
}
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
return false;
}
};
@@ -387,7 +387,7 @@ struct go_prince_taldaram_sphere : public GameObjectAI
Creature* princeTaldaram = instance->GetCreature(DATA_PRINCE_TALDARAM);
if (princeTaldaram && princeTaldaram->IsAlive())
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
me->SetGoState(GO_STATE_ACTIVE);
switch (me->GetEntry())
@@ -83,19 +83,19 @@ class instance_ahnkahet : public InstanceMapScript
if (SpheresState[0])
{
go->SetGoState(GO_STATE_ACTIVE);
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_SPHERE_2:
if (SpheresState[1])
{
go->SetGoState(GO_STATE_ACTIVE);
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -210,7 +210,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_CHAMPIONS_KILLED_IN_MINUTE);
DoRespawnGameObject(GetGuidData(DATA_CRUSADERS_CHEST), 7_days);
if (GameObject* cache = GetGameObject(DATA_CRUSADERS_CHEST))
cache->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cache->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
if (Creature* fordring = GetCreature(DATA_FORDRING))
fordring->AI()->DoAction(ACTION_CHAMPIONS_DEFEATED);
EventStage = 3100;
@@ -340,7 +340,7 @@ class instance_halls_of_reflection : public InstanceMapScript
break;
case DONE:
if (GameObject* chest = instance->GetGameObject(CaptainsChestGUID))
chest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
chest->RemoveFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
DoUseDoorOrButton(CaveInGUID, 15);
@@ -99,7 +99,7 @@ class instance_gundrak : public InstanceMapScript
if (GetBossState(DATA_SLAD_RAN) == DONE)
{
if (SladRanStatueState == GO_STATE_ACTIVE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
else
go->SetGoState(GO_STATE_ACTIVE);
}
@@ -108,7 +108,7 @@ class instance_gundrak : public InstanceMapScript
if (GetBossState(DATA_MOORABI) == DONE)
{
if (MoorabiStatueState == GO_STATE_ACTIVE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
else
go->SetGoState(GO_STATE_ACTIVE);
}
@@ -117,7 +117,7 @@ class instance_gundrak : public InstanceMapScript
if (GetBossState(DATA_DRAKKARI_COLOSSUS) == DONE)
{
if (DrakkariColossusStatueState == GO_STATE_ACTIVE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
else
go->SetGoState(GO_STATE_ACTIVE);
}
@@ -173,17 +173,17 @@ class instance_gundrak : public InstanceMapScript
case DATA_SLAD_RAN:
if (state == DONE)
if (GameObject* go = GetGameObject(DATA_SLAD_RAN_ALTAR))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case DATA_DRAKKARI_COLOSSUS:
if (state == DONE)
if (GameObject* go = GetGameObject(DATA_DRAKKARI_COLOSSUS_ALTAR))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case DATA_MOORABI:
if (state == DONE)
if (GameObject* go = GetGameObject(DATA_MOORABI_ALTAR))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -357,7 +357,7 @@ struct go_gundrak_altar : public GameObjectAI
bool OnGossipHello(Player* /*player*/) override
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
me->SetGoState(GO_STATE_ACTIVE);
instance->SetData(DATA_STATUE_ACTIVATE, me->GetEntry());
@@ -757,7 +757,7 @@ struct npc_icc_orb_controller : public ScriptedAI
UpdateValidGuids();
ScheduleVisualChannel(true);
if (GameObject* orb = me->FindNearestGameObject(GO_EMPOWERING_BLOOD_ORB, 5.0f))
orb->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
orb->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
}
@@ -825,7 +825,7 @@ struct DarkFallenAI : public ScriptedAI
{
if (action == ACTION_SIPHON_INTERRUPTED)
if (GameObject* orb = me->FindNearestGameObject(GO_EMPOWERING_BLOOD_ORB, 10.0f))
orb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
orb->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
void SetGUID(ObjectGuid const& guid, int32 id) override
@@ -1132,7 +1132,7 @@ struct go_empowering_blood_orb : public GameObjectAI
void HandleObjectUse()
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
me->SetFlag(GO_FLAG_IN_USE);
me->SetGoAnimProgress(255);
me->SetGoState(GO_STATE_DESTROYED);
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _triggerGuid))
@@ -165,12 +165,12 @@ class instance_icecrown_citadel : public InstanceMapScript
{
if (usable)
{
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
go->SetGoState(GO_STATE_ACTIVE);
}
else
{
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
go->SetGoState(GO_STATE_READY);
}
}
@@ -535,7 +535,7 @@ class instance_icecrown_citadel : public InstanceMapScript
LadyDeathwisperElevatorGUID = go->GetGUID();
if (GetBossState(DATA_LADY_DEATHWHISPER) == DONE)
{
go->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
go->SetLevel(0);
go->SetGoState(GO_STATE_READY);
}
break;
@@ -648,7 +648,7 @@ class instance_icecrown_citadel : public InstanceMapScript
case GO_CACHE_OF_THE_DREAMWALKER_25H:
if (Creature* valithria = instance->GetCreature(ValithriaDreamwalkerGUID))
go->SetLootRecipient(valithria->GetLootRecipient(), valithria->GetLootRecipientGroup());
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
go->RemoveFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
break;
case GO_ARTHAS_PLATFORM:
// this enables movement at The Frozen Throne, when printed this value is 0.000000f
@@ -880,7 +880,7 @@ class instance_icecrown_citadel : public InstanceMapScript
if (GameObject* elevator = instance->GetGameObject(LadyDeathwisperElevatorGUID))
{
elevator->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
elevator->SetLevel(0);
elevator->SetGoState(GO_STATE_READY);
}
@@ -895,7 +895,7 @@ class instance_icecrown_citadel : public InstanceMapScript
SetTeleporterState(teleporter, true);
if (GameObject* loot = instance->GetGameObject(GunshipArmoryGUID))
loot->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
loot->RemoveFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
}
else if (state == FAIL)
Events.ScheduleEvent(EVENT_RESPAWN_GUNSHIP, 30s);
@@ -909,7 +909,7 @@ class instance_icecrown_citadel : public InstanceMapScript
{
if (Creature* deathbringer = instance->GetCreature(DeathbringerSaurfangGUID))
loot->SetLootRecipient(deathbringer->GetLootRecipient(), deathbringer->GetLootRecipientGroup());
loot->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
loot->RemoveFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
}
if (GameObject* teleporter = instance->GetGameObject(TeleporterUpperSpireGUID))
@@ -214,23 +214,23 @@ class instance_naxxramas : public InstanceMapScript
break;
case GO_NAXX_PORTAL_ARACHNID:
if (GetBossState(BOSS_MAEXXNA) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_NAXX_PORTAL_CONSTRUCT:
if (GetBossState(BOSS_THADDIUS) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_NAXX_PORTAL_PLAGUE:
if (GetBossState(BOSS_LOATHEB) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_NAXX_PORTAL_MILITARY:
if (GetBossState(BOSS_HORSEMEN) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_KELTHUZAD_THRONE:
if (GetBossState(BOSS_KELTHUZAD) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_BIRTH:
if (hadSapphironBirth || GetBossState(BOSS_SAPPHIRON) == DONE)
@@ -355,7 +355,7 @@ class instance_naxxramas : public InstanceMapScript
if (state == DONE)
{
if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_ARACHNID))
teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
}
@@ -364,7 +364,7 @@ class instance_naxxramas : public InstanceMapScript
if (state == DONE)
{
if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_PLAGUE))
teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
}
@@ -373,7 +373,7 @@ class instance_naxxramas : public InstanceMapScript
if (state == DONE)
{
if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_CONSTRUCT))
teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
}
@@ -388,11 +388,11 @@ class instance_naxxramas : public InstanceMapScript
if (GameObject* horsemenChest = instance->GetGameObject(HorsemenChestGUID))
{
horsemenChest->SetRespawnTime(horsemenChest->GetRespawnDelay());
horsemenChest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
horsemenChest->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_MILITARY))
teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
}
@@ -405,7 +405,7 @@ class instance_naxxramas : public InstanceMapScript
case BOSS_KELTHUZAD:
if (state == DONE)
if (GameObject* throne = GetGameObject(DATA_KELTHUZAD_THRONE))
throne->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
throne->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -1898,7 +1898,7 @@ class spell_alexstrasza_bunny_destroy_platform_event : public SpellScript
Creature* caster = GetCaster()->ToCreature();
if (InstanceScript* instance = caster->GetInstanceScript())
if (GameObject* platform = caster->GetMap()->GetGameObject(instance->GetGuidData(DATA_PLATFORM)))
platform->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
platform->SetFlag(GO_FLAG_DESTROYED);
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2119,13 +2119,13 @@ private:
if (Creature* target = GetTarget()->ToCreature())
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
{
_alexstraszaGift->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
_alexstraszaGift->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
if (GameObject* heartMagic = target->GetMap()->GetGameObject(instance->GetGuidData(DATA_HEART_OF_MAGIC_GUID)))
{
heartMagic->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
heartMagic->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
// TO DO: This is hack, core doesn't have support for these flags,
// remove line below if it ever gets supported otherwise object won't be accessible.
heartMagic->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND);
heartMagic->RemoveFlag(GO_FLAG_INTERACT_COND);
}
}
}
@@ -83,7 +83,7 @@ public:
SpawnGameObject(GO_EXIT_PORTAL, exitPortalPosition);
if (GameObject* platform = instance->GetGameObject(platformGUID))
platform->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
platform->RemoveFlag(GO_FLAG_DESTROYED);
}
else if (state == DONE)
SpawnGameObject(GO_EXIT_PORTAL, exitPortalPosition);
@@ -173,7 +173,7 @@ public:
alexstraszaBunny->CastSpell(alexstraszaBunny, SPELL_IRIS_OPENED);
if (GameObject* iris = instance->GetGameObject(irisGUID))
iris->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
iris->SetFlag(GO_FLAG_IN_USE);
if (Creature* malygos = instance->GetCreature(malygosGUID))
malygos->AI()->DoAction(0); // ACTION_LAND_ENCOUNTER_START
@@ -220,7 +220,7 @@ struct containment_sphere : public GameObjectAI
if (keristrasza && keristrasza->IsAlive())
{
// maybe these are hacks :(
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
me->SetGoState(GO_STATE_ACTIVE);
ENSURE_AI(boss_keristrasza, keristrasza->AI())->CheckContainmentSpheres(true);
@@ -101,17 +101,17 @@ class instance_nexus : public InstanceMapScript
case GO_ANOMALUS_CONTAINMENT_SPHERE:
AnomalusContainmentSphere = go->GetGUID();
if (GetBossState(DATA_ANOMALUS) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_ORMOROKS_CONTAINMENT_SPHERE:
OrmoroksContainmentSphere = go->GetGUID();
if (GetBossState(DATA_ORMOROK) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_TELESTRAS_CONTAINMENT_SPHERE:
TelestrasContainmentSphere = go->GetGUID();
if (GetBossState(DATA_MAGUS_TELESTRA) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -129,21 +129,21 @@ class instance_nexus : public InstanceMapScript
if (state == DONE)
{
if (GameObject* sphere = instance->GetGameObject(TelestrasContainmentSphere))
sphere->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
sphere->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
case DATA_ANOMALUS:
if (state == DONE)
{
if (GameObject* sphere = instance->GetGameObject(AnomalusContainmentSphere))
sphere->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
sphere->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
case DATA_ORMOROK:
if (state == DONE)
{
if (GameObject* sphere = instance->GetGameObject(OrmoroksContainmentSphere))
sphere->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
sphere->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
default:
@@ -212,7 +212,7 @@ class instance_oculus : public InstanceMapScript
if (GameObject* cache = instance->GetGameObject(EregosCacheGUID))
{
cache->SetRespawnTime(cache->GetRespawnDelay());
cache->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cache->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
}
break;
@@ -95,7 +95,7 @@ class instance_halls_of_stone : public InstanceMapScript
case GO_TRIBUNAL_CHEST_HERO:
TribunalChestGUID = go->GetGUID();
if (GetBossState(DATA_TRIBUNAL_OF_AGES) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case GO_TRIBUNAL_SKY_FLOOR:
TribunalSkyFloorGUID = go->GetGUID();
@@ -149,7 +149,7 @@ class instance_halls_of_stone : public InstanceMapScript
if (state == DONE)
{
if (GameObject* go = instance->GetGameObject(TribunalChestGUID))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
default:
@@ -974,7 +974,7 @@ struct go_celestial_planetarium_access : public GameObjectAI
bool OnReportUse(Player* player) override
{
if (me->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE))
if (me->HasFlag(GO_FLAG_IN_USE))
return true;
bool hasKey = true;
@@ -998,7 +998,7 @@ struct go_celestial_planetarium_access : public GameObjectAI
return false;
// Start Algalon event
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
me->SetFlag(GO_FLAG_IN_USE);
_events.ScheduleEvent(EVENT_DESPAWN_CONSOLE, 5s);
if (Creature* brann = me->SummonCreature(NPC_BRANN_BRONZBEARD_ALG, BrannIntroSpawnPos))
brann->AI()->DoAction(ACTION_START_INTRO);
@@ -432,7 +432,7 @@ class boss_mimiron : public CreatureScript
DoCast(me->GetVehicleBase(), SPELL_SEAT_6);
if (GameObject* button = instance->GetGameObject(DATA_MIMIRON_BUTTON))
button->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
button->SetFlag(GO_FLAG_NOT_SELECTABLE);
if (_fireFighter)
events.ScheduleEvent(EVENT_SUMMON_FLAMES, 3s);
@@ -474,7 +474,7 @@ class boss_mimiron : public CreatureScript
if (GameObject* button = instance->GetGameObject(DATA_MIMIRON_BUTTON))
{
button->SetGoState(GO_STATE_READY);
button->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
button->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
_fireFighter = false;
@@ -1683,14 +1683,14 @@ class go_mimiron_hardmode_button : public GameObjectScript
bool OnGossipHello(Player* /*player*/) override
{
if (me->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE))
if (me->HasFlag(GO_FLAG_NOT_SELECTABLE))
return true;
if (Creature* computer = instance->GetCreature(DATA_COMPUTER))
computer->AI()->DoAction(DO_ACTIVATE_COMPUTER);
me->SetGoState(GO_STATE_ACTIVE);
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
return true;
}
};
@@ -1515,7 +1515,7 @@ public:
bool OnGossipHello(Player* /*player*/) override
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
if (Creature* controller = me->FindNearestCreature(NPC_RAZORSCALE_CONTROLLER, 5.0f))
{
// Prevent 2 players clicking at "same time"
@@ -1555,7 +1555,7 @@ public:
void Reset() override
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
_scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/)
{
me->UseDoorOrButton();
@@ -488,7 +488,7 @@ class boss_thorim : public CreatureScript
me->SummonCreature(s.entry, s.pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3s);
if (GameObject* lever = instance->GetGameObject(DATA_THORIM_LEVER))
lever->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
lever->SetFlag(GO_FLAG_NOT_SELECTABLE);
// Remove trigger auras
if (Creature* pillar = ObjectAccessor::GetCreature(*me, _activePillarGUID))
@@ -636,7 +636,7 @@ class boss_thorim : public CreatureScript
}
if (GameObject* lever = instance->GetGameObject(DATA_THORIM_LEVER))
lever->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
lever->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
// Summon Sif
me->SummonCreature(NPC_SIF, SifSpawnPosition);
@@ -511,7 +511,7 @@ class instance_ulduar : public InstanceMapScript
case GO_CELESTIAL_PLANETARIUM_ACCESS_10:
case GO_CELESTIAL_PLANETARIUM_ACCESS_25:
if (_algalonSummoned)
gameObject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
gameObject->SetFlag(GO_FLAG_IN_USE);
break;
case GO_DOODAD_UL_SIGILDOOR_01:
case GO_DOODAD_UL_SIGILDOOR_02:
@@ -646,7 +646,7 @@ class instance_ulduar : public InstanceMapScript
if (GameObject* gameObject = instance->GetGameObject(KologarnChestGUID))
{
gameObject->SetRespawnTime(gameObject->GetRespawnDelay());
gameObject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
gameObject->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
HandleGameObject(KologarnBridgeGUID, false);
}
@@ -656,7 +656,7 @@ class instance_ulduar : public InstanceMapScript
{
if (GameObject* HodirRareCache = instance->GetGameObject(HodirRareCacheGUID))
if (GetData(DATA_HODIR_RARE_CACHE))
HodirRareCache->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
HodirRareCache->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
if (GameObject* HodirChest = instance->GetGameObject(HodirChestGUID))
HodirChest->SetRespawnTime(HodirChest->GetRespawnDelay());
@@ -672,7 +672,7 @@ class instance_ulduar : public InstanceMapScript
{
cache->SetLootRecipient(thorim->GetLootRecipient());
cache->SetRespawnTime(cache->GetRespawnDelay());
cache->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
cache->RemoveFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
}
}
@@ -202,7 +202,7 @@ struct boss_palehoof : public BossAI
if (GameObject* go = instance->GetGameObject(DATA_GORTOK_PALEHOOF_SPHERE))
{
go->SetGoState(GO_STATE_READY);
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
}
}
@@ -512,7 +512,7 @@ struct go_palehoof_sphere : public GameObjectAI
{
if (palehoof->IsAlive() && instance->GetBossState(DATA_GORTOK_PALEHOOF) != DONE)
{
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
me->SetGoState(GO_STATE_ACTIVE);
palehoof->AI()->DoAction(ACTION_START_ENCOUNTER);
}
@@ -78,7 +78,7 @@ class instance_utgarde_pinnacle : public InstanceMapScript
if (go->GetEntry() == GO_GORTOK_PALEHOOF_SPHERE)
if (GetBossState(DATA_GORTOK_PALEHOOF) == DONE)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
void SetGuidData(uint32 type, ObjectGuid data) override
@@ -409,7 +409,7 @@ class instance_violet_hold : public InstanceMapScript
for (uint8 i = 0; i < ActivationCrystalCount; ++i)
if (GameObject* crystal = instance->GetGameObject(ActivationCrystalGUIDs[i]))
crystal->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
crystal->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
Scheduler.Schedule(Seconds(3), [this](TaskContext task)
{
@@ -422,7 +422,7 @@ class instance_violet_hold : public InstanceMapScript
if (GameObject* mainDoor = GetGameObject(DATA_MAIN_DOOR))
{
mainDoor->SetGoState(GO_STATE_ACTIVE);
mainDoor->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
mainDoor->RemoveFlag(GO_FLAG_LOCKED);
}
DoUpdateWorldState(WORLD_STATE_VH_SHOW, 0);
@@ -431,21 +431,21 @@ class instance_violet_hold : public InstanceMapScript
for (uint8 i = 0; i < ActivationCrystalCount; ++i)
if (GameObject* crystal = instance->GetGameObject(ActivationCrystalGUIDs[i]))
crystal->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
crystal->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
else if (data == DONE)
{
if (GameObject* mainDoor = GetGameObject(DATA_MAIN_DOOR))
{
mainDoor->SetGoState(GO_STATE_ACTIVE);
mainDoor->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
mainDoor->RemoveFlag(GO_FLAG_LOCKED);
}
DoUpdateWorldState(WORLD_STATE_VH_SHOW, 0);
for (uint8 i = 0; i < ActivationCrystalCount; ++i)
if (GameObject* crystal = instance->GetGameObject(ActivationCrystalGUIDs[i]))
crystal->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
crystal->SetFlag(GO_FLAG_NOT_SELECTABLE);
if (Creature* sinclari = GetCreature(DATA_SINCLARI))
sinclari->AI()->DoAction(ACTION_SINCLARI_OUTRO);
@@ -502,7 +502,7 @@ struct npc_sinclari_vh : public ScriptedAI
if (GameObject* mainDoor = _instance->GetGameObject(DATA_MAIN_DOOR))
{
mainDoor->SetGoState(GO_STATE_READY);
mainDoor->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
mainDoor->SetFlag(GO_FLAG_LOCKED);
}
task.Repeat(Seconds(5));
break;
@@ -73,7 +73,7 @@ class instance_sethekk_halls : public InstanceMapScript
/// gameobject should have GO_DYNFLAG_LO_ACTIVATE too, which makes gobs interactable with GO_FLAG_INTERACT_COND
/// so just removed GO_FLAG_INTERACT_COND
if (GameObject* coffer = GetGameObject(DATA_TALON_KING_COFFER))
coffer->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
coffer->RemoveFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
}
break;
default:
@@ -33,7 +33,7 @@ struct go_main_chambers_access_panel : public GameObjectAI
if (Creature* controller = _instance->GetCreature(DATA_DOOR_CONTROLLER))
controller->AI()->Talk(CONTROLLER_TEXT_ACESS_USED);
_instance->SetData(ACTION_OPEN_DOOR, 0);
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
me->SetFlag(GO_FLAG_NOT_SELECTABLE);
me->SetGoState(GO_STATE_ACTIVE);
return true;
}
@@ -91,7 +91,7 @@ class instance_steam_vault : public InstanceMapScript
if (GameObject* mainDoor = GetGameObject(DATA_MAIN_DOOR))
{
HandleGameObject(ObjectGuid::Empty, true, mainDoor);
mainDoor->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
mainDoor->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
}
}
@@ -121,12 +121,12 @@ class instance_steam_vault : public InstanceMapScript
case DATA_HYDROMANCER_THESPIA:
if (state == DONE)
if (GameObject* panel = GetGameObject(DATA_ACCESS_PANEL_HYDRO))
panel->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
panel->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
case DATA_MEKGINEER_STEAMRIGGER:
if (state == DONE)
if (GameObject* panel = GetGameObject(DATA_ACCESS_PANEL_MEK))
panel->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
panel->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -132,7 +132,7 @@ class boss_broggok : public CreatureScript
instance->SetBossState(DATA_BROGGOK, NOT_STARTED);
if (GameObject * lever = instance->GetGameObject(DATA_BROGGOK_LEVER))
{
lever->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE);
lever->RemoveFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE);
lever->SetGoState(GO_STATE_READY);
}
break;
@@ -261,7 +261,7 @@ class go_broggok_lever : public GameObjectScript
broggok->AI()->DoAction(ACTION_PREPARE_BROGGOK);
}
me->SetFlag(GAMEOBJECT_FLAGS, 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;
@@ -63,7 +63,7 @@ class instance_ramparts : public InstanceMapScript
case DATA_NAZAN:
if (GetBossState(DATA_VAZRUDEN) == DONE && GetBossState(DATA_NAZAN) == DONE)
if (GameObject* chest = instance->GetGameObject(felIronChestGUID))
chest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
chest->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -105,9 +105,9 @@ class instance_magtheridons_lair : public InstanceMapScript
if (GameObject* cube = instance->GetGameObject(gobGUID))
{
if (value == ACTION_ENABLE)
cube->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cube->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
else
cube->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cube->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
break;
case DATA_COLLAPSE:
@@ -595,7 +595,7 @@ class npc_simon_bunny : public CreatureScript
_events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2s);
if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
relic->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
relic->SetFlag(GO_FLAG_NOT_SELECTABLE);
}
// Called when despawning the bunny. Sets all the node GOs to their default states.
@@ -605,14 +605,14 @@ class npc_simon_bunny : public CreatureScript
for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++)
if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], searchDistance))
cluster->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cluster->SetFlag(GO_FLAG_NOT_SELECTABLE);
for (uint32 auraId = GO_AURA_BLUE; auraId <= GO_AURA_YELLOW; auraId++)
if (GameObject* auraGo = me->FindNearestGameObject(auraId, searchDistance))
auraGo->RemoveFromWorld();
if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
relic->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
relic->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
me->DespawnOrUnsummon(1s);
}
@@ -655,7 +655,7 @@ class npc_simon_bunny : public CreatureScript
{
for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++)
if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], searchDistance))
cluster->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cluster->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
if (clustersOnly)
return;
@@ -709,7 +709,7 @@ class npc_simon_bunny : public CreatureScript
{
if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], 2.0f*searchDistance))
{
cluster->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
cluster->SetFlag(GO_FLAG_NOT_SELECTABLE);
// break since we don't need glowing auras for large clusters
if (large)
+3
View File
@@ -20,6 +20,7 @@
#include "DBCEnums.h"
#include "Define.h"
#include "EnumFlag.h"
#include "SmartEnum.h"
float const GROUND_HEIGHT_TOLERANCE = 0.05f; // Extra tolerance to z position to check if it is in air or on ground.
@@ -1639,6 +1640,8 @@ enum GameObjectFlags
GO_FLAG_DESTROYED = 0x00000400
};
DEFINE_ENUM_FLAG(GameObjectFlags);
enum GameObjectDynamicLowFlags
{
GO_DYNFLAG_LO_ACTIVATE = 0x01, // enables interaction with GO