Merge branch 'azerothcore:master' into Playerbot

This commit is contained in:
ZhengPeiRu21
2022-04-07 08:55:50 -06:00
committed by GitHub
143 changed files with 665 additions and 546 deletions
@@ -0,0 +1,31 @@
-- DB update 2022_04_03_00 -> 2022_04_05_00
DROP PROCEDURE IF EXISTS `updateDb`;
DELIMITER //
CREATE PROCEDURE updateDb ()
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
SELECT COUNT(*) INTO @COLEXISTS
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_04_03_00';
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
START TRANSACTION;
ALTER TABLE version_db_world CHANGE COLUMN 2022_04_03_00 2022_04_05_00 bit;
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648906248199850600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
--
-- START UPDATING QUERIES
--
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648906248199850600');
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=20038;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(13,1,20038,0,0,31,0,4,0,0,0,0,0,'','Explosion targets players');
--
-- END UPDATING QUERIES
--
UPDATE version_db_world SET date = '2022_04_05_00' WHERE sql_rev = '1648906248199850600';
COMMIT;
END //
DELIMITER ;
CALL updateDb();
DROP PROCEDURE IF EXISTS `updateDb`;
@@ -0,0 +1,29 @@
-- DB update 2022_04_05_00 -> 2022_04_07_00
DROP PROCEDURE IF EXISTS `updateDb`;
DELIMITER //
CREATE PROCEDURE updateDb ()
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
SELECT COUNT(*) INTO @COLEXISTS
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_04_05_00';
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
START TRANSACTION;
ALTER TABLE version_db_world CHANGE COLUMN 2022_04_05_00 2022_04_07_00 bit;
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1648972434572977796'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
--
-- START UPDATING QUERIES
--
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648972434572977796');
UPDATE `creature_template_locale` SET `Title` = 'Лавка редких товаров ярмарки Новолуния' WHERE `entry` = 14846 AND `locale` = 'ruRU';
--
-- END UPDATING QUERIES
--
UPDATE version_db_world SET date = '2022_04_07_00' WHERE sql_rev = '1648972434572977796';
COMMIT;
END //
DELIMITER ;
CALL updateDb();
DROP PROCEDURE IF EXISTS `updateDb`;
@@ -0,0 +1,28 @@
-- DB update 2022_04_07_00 -> 2022_04_07_01
DROP PROCEDURE IF EXISTS `updateDb`;
DELIMITER //
CREATE PROCEDURE updateDb ()
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
SELECT COUNT(*) INTO @COLEXISTS
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2022_04_07_00';
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
START TRANSACTION;
ALTER TABLE version_db_world CHANGE COLUMN 2022_04_07_00 2022_04_07_01 bit;
SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1649325436095486698'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
--
-- START UPDATING QUERIES
--
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1649325436095486698');
UPDATE `creature_template` SET `mechanic_immune_mask` = 650854235 WHERE (`entry` = 12435);
--
-- END UPDATING QUERIES
--
UPDATE version_db_world SET date = '2022_04_07_01' WHERE sql_rev = '1649325436095486698';
COMMIT;
END //
DELIMITER ;
CALL updateDb();
DROP PROCEDURE IF EXISTS `updateDb`;
+1 -1
View File
@@ -53,7 +53,7 @@ namespace FactorySelector
ai_factory = ai_registry.GetRegistryItem("VehicleAI"); ai_factory = ai_registry.GetRegistryItem("VehicleAI");
else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER) else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)
ai_factory = ai_registry.GetRegistryItem("PetAI"); ai_factory = ai_registry.GetRegistryItem("PetAI");
else if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK)) else if (creature->HasNpcFlag(UNIT_NPC_FLAG_SPELLCLICK))
ai_factory = ai_registry.GetRegistryItem("NullCreatureAI"); ai_factory = ai_registry.GetRegistryItem("NullCreatureAI");
else if (creature->IsGuard()) else if (creature->IsGuard())
ai_factory = ai_registry.GetRegistryItem("GuardAI"); ai_factory = ai_registry.GetRegistryItem("GuardAI");
@@ -496,7 +496,7 @@ void npc_escortAI::Start(bool isActiveAttacker /* = true*/, bool run /* = false
} }
//disable npcflags //disable npcflags
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
if (me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC)) if (me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
{ {
HasImmuneToNPCFlags = true; HasImmuneToNPCFlags = true;
@@ -293,7 +293,7 @@ void FollowerAI::StartFollow(Player* player, uint32 factionForFollower, const Qu
LOG_DEBUG("scripts.ai", "FollowerAI start with WAYPOINT_MOTION_TYPE, set to MoveIdle."); LOG_DEBUG("scripts.ai", "FollowerAI start with WAYPOINT_MOTION_TYPE, set to MoveIdle.");
} }
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
AddFollowState(STATE_FOLLOW_INPROGRESS); AddFollowState(STATE_FOLLOW_INPROGRESS);
+3 -3
View File
@@ -199,8 +199,8 @@ void SmartAI::StartPath(bool run, uint32 path, bool repeat, Unit* invoker)
if (invoker && invoker->GetTypeId() == TYPEID_PLAYER) if (invoker && invoker->GetTypeId() == TYPEID_PLAYER)
{ {
mEscortNPCFlags = me->GetUInt32Value(UNIT_NPC_FLAGS); mEscortNPCFlags = me->GetNpcFlags();
me->SetUInt32Value(UNIT_NPC_FLAGS, 0); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
} }
Movement::PointsArray pathPoints; Movement::PointsArray pathPoints;
@@ -287,7 +287,7 @@ void SmartAI::EndPath(bool fail)
if (mEscortNPCFlags) if (mEscortNPCFlags)
{ {
me->SetUInt32Value(UNIT_NPC_FLAGS, mEscortNPCFlags); me->ReplaceAllNpcFlags(NPCFlags(mEscortNPCFlags));
mEscortNPCFlags = 0; mEscortNPCFlags = 0;
} }
@@ -2167,7 +2167,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsCreature(*itr)) if (IsCreature(*itr))
(*itr)->ToUnit()->SetUInt32Value(UNIT_NPC_FLAGS, e.action.flag.flag); (*itr)->ToUnit()->ReplaceAllNpcFlags(NPCFlags(e.action.flag.flag));
delete targets; delete targets;
break; break;
@@ -2180,7 +2180,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsCreature(*itr)) if (IsCreature(*itr))
(*itr)->ToUnit()->SetFlag(UNIT_NPC_FLAGS, e.action.flag.flag); (*itr)->ToUnit()->SetNpcFlag(NPCFlags(e.action.flag.flag));
delete targets; delete targets;
break; break;
@@ -2193,7 +2193,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsCreature(*itr)) if (IsCreature(*itr))
(*itr)->ToUnit()->RemoveFlag(UNIT_NPC_FLAGS, e.action.flag.flag); (*itr)->ToUnit()->RemoveNpcFlag(NPCFlags(e.action.flag.flag));
delete targets; delete targets;
break; break;
@@ -2680,7 +2680,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsGameObject(*itr)) if (IsGameObject(*itr))
(*itr)->ToGameObject()->SetUInt32Value(GAMEOBJECT_FLAGS, e.action.goFlag.flag); (*itr)->ToGameObject()->ReplaceAllGameObjectFlags((GameObjectFlags)e.action.goFlag.flag);
delete targets; delete targets;
break; break;
@@ -2693,7 +2693,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsGameObject(*itr)) if (IsGameObject(*itr))
(*itr)->ToGameObject()->SetFlag(GAMEOBJECT_FLAGS, e.action.goFlag.flag); (*itr)->ToGameObject()->SetGameObjectFlag((GameObjectFlags)e.action.goFlag.flag);
delete targets; delete targets;
break; break;
@@ -2706,7 +2706,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
if (IsGameObject(*itr)) if (IsGameObject(*itr))
(*itr)->ToGameObject()->RemoveFlag(GAMEOBJECT_FLAGS, e.action.goFlag.flag); (*itr)->ToGameObject()->RemoveGameObjectFlag((GameObjectFlags)e.action.goFlag.flag);
delete targets; delete targets;
break; break;
@@ -225,7 +225,7 @@ void BattlefieldWG::OnBattleStart()
// Update faction of relic, only attacker can click on // Update faction of relic, only attacker can click on
go->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetAttackerTeam()]); go->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetAttackerTeam()]);
// Set in use (not allow to click on before last door is broken) // Set in use (not allow to click on before last door is broken)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
// save guid // save guid
m_titansRelic = go->GetGUID(); m_titansRelic = go->GetGUID();
@@ -1208,7 +1208,7 @@ struct BfWGGameObjectBuilding
case BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST: case BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST:
m_WG->SetRelicInteractible(true); m_WG->SetRelicInteractible(true);
if (GameObject* go = m_WG->GetRelic()) if (GameObject* go = m_WG->GetRelic())
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
else else
LOG_ERROR("bg.battlefield", "BattlefieldWG: Relic not found."); LOG_ERROR("bg.battlefield", "BattlefieldWG: Relic not found.");
break; break;
@@ -1077,7 +1077,7 @@ void Battleground::StartBattleground()
void Battleground::AddPlayer(Player* player) void Battleground::AddPlayer(Player* player)
{ {
// remove afk from player // remove afk from player
if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK)) if (player->HasPlayerFlag(PLAYER_FLAGS_AFK))
player->ToggleAFK(); player->ToggleAFK();
sScriptMgr->OnBattlegroundBeforeAddPlayer(this, player); sScriptMgr->OnBattlegroundBeforeAddPlayer(this, player);
@@ -293,7 +293,7 @@ void BattlegroundIC::StartingEventOpenDoors()
DoorOpen(BG_IC_GO_DOODAD_VR_PORTCULLIS01_2); DoorOpen(BG_IC_GO_DOODAD_VR_PORTCULLIS01_2);
for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; ++i) 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)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS; ++i) for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS; ++i)
GetBGObject(BG_IC_TeleporterEffects[i].type)->SetGoState(GO_STATE_ACTIVE); GetBGObject(BG_IC_TeleporterEffects[i].type)->SetGoState(GO_STATE_ACTIVE);
@@ -125,7 +125,7 @@ void BattlegroundRV::PostUpdateImpl(uint32 diff)
uint32 objects[2] = { BG_RV_OBJECT_ELEVATOR_1, BG_RV_OBJECT_ELEVATOR_2 }; uint32 objects[2] = { BG_RV_OBJECT_ELEVATOR_1, BG_RV_OBJECT_ELEVATOR_2 };
for (uint8 i = 0; i < 2; ++i) for (uint8 i = 0; i < 2; ++i)
if (GameObject* go = GetBGObject(objects[i])) if (GameObject* go = GetBGObject(objects[i]))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_TRANSPORT); go->RemoveGameObjectFlag(GO_FLAG_TRANSPORT);
} }
break; break;
} }
@@ -853,9 +853,9 @@ void BattlegroundSA::UpdateObjectInteractionFlags(uint32 objectId)
if (GameObject* go = GetBGObject(objectId)) if (GameObject* go = GetBGObject(objectId))
{ {
if (CanInteractWithObject(objectId)) if (CanInteractWithObject(objectId))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND | GO_FLAG_IN_USE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND | GO_FLAG_IN_USE);
else else
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
} }
} }
@@ -492,9 +492,9 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele
ObjectMgr::ChooseCreatureFlags(cInfo, npcflag, unit_flags, dynamicflags, data); ObjectMgr::ChooseCreatureFlags(cInfo, npcflag, unit_flags, dynamicflags, data);
if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT) if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT)
SetUInt32Value(UNIT_NPC_FLAGS, npcflag | sGameEventMgr->GetNPCFlag(this)); ReplaceAllNpcFlags(NPCFlags(npcflag | sGameEventMgr->GetNPCFlag(this)));
else else
SetUInt32Value(UNIT_NPC_FLAGS, npcflag); ReplaceAllNpcFlags(NPCFlags(npcflag));
// Xinef: NPC is in combat, keep this flag! // Xinef: NPC is in combat, keep this flag!
unit_flags &= ~UNIT_FLAG_IN_COMBAT; unit_flags &= ~UNIT_FLAG_IN_COMBAT;
@@ -1302,7 +1302,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
data.spawnId = m_spawnId; data.spawnId = m_spawnId;
uint32 displayId = GetNativeDisplayId(); uint32 displayId = GetNativeDisplayId();
uint32 npcflag = GetUInt32Value(UNIT_NPC_FLAGS); uint32 npcflag = GetNpcFlags();
uint32 unit_flags = GetUnitFlags(); uint32 unit_flags = GetUnitFlags();
uint32 dynamicflags = GetDynamicFlags(); uint32 dynamicflags = GetDynamicFlags();
@@ -1847,7 +1847,7 @@ void Creature::setDeathState(DeathState s, bool despawn)
SaveRespawnTime(); SaveRespawnTime();
SetTarget(); // remove target selection in any cases (can be set at aura remove in Unit::setDeathState) SetTarget(); // remove target selection in any cases (can be set at aura remove in Unit::setDeathState)
SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
Dismount(); // if creature is mounted on a virtual mount, remove it at death Dismount(); // if creature is mounted on a virtual mount, remove it at death
@@ -1889,7 +1889,7 @@ void Creature::setDeathState(DeathState s, bool despawn)
UpdateMovementFlags(); UpdateMovementFlags();
SetUInt32Value(UNIT_NPC_FLAGS, cinfo->npcflag); ReplaceAllNpcFlags(NPCFlags(cinfo->npcflag));
ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~(UNIT_STATE_IGNORE_PATHFINDING | UNIT_STATE_NO_ENVIRONMENT_UPD))); ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~(UNIT_STATE_IGNORE_PATHFINDING | UNIT_STATE_NO_ENVIRONMENT_UPD)));
SetMeleeDamageSchool(SpellSchools(cinfo->dmgschool)); SetMeleeDamageSchool(SpellSchools(cinfo->dmgschool));
@@ -319,7 +319,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
if (GameObjectTemplateAddon const* templateAddon = GetTemplateAddon()) if (GameObjectTemplateAddon const* templateAddon = GetTemplateAddon())
{ {
SetUInt32Value(GAMEOBJECT_FACTION, templateAddon->faction); SetUInt32Value(GAMEOBJECT_FACTION, templateAddon->faction);
SetUInt32Value(GAMEOBJECT_FLAGS, templateAddon->flags); ReplaceAllGameObjectFlags((GameObjectFlags)templateAddon->flags);
} }
SetEntry(goinfo->entry); SetEntry(goinfo->entry);
@@ -479,7 +479,7 @@ void GameObject::Update(uint32 diff)
if (caster && caster->GetTypeId() == TYPEID_PLAYER) if (caster && caster->GetTypeId() == TYPEID_PLAYER)
{ {
SetGoState(GO_STATE_ACTIVE); SetGoState(GO_STATE_ACTIVE);
SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN); ReplaceAllGameObjectFlags(GO_FLAG_NODESPAWN);
UpdateData udata; UpdateData udata;
WorldPacket packet; WorldPacket packet;
@@ -721,7 +721,7 @@ void GameObject::Update(uint32 diff)
case GAMEOBJECT_TYPE_GOOBER: case GAMEOBJECT_TYPE_GOOBER:
if (GameTime::GetGameTimeMS().count() >= m_cooldownTime) if (GameTime::GetGameTimeMS().count() >= m_cooldownTime)
{ {
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); RemoveGameObjectFlag(GO_FLAG_IN_USE);
SetLootState(GO_JUST_DEACTIVATED); SetLootState(GO_JUST_DEACTIVATED);
} }
@@ -826,7 +826,7 @@ void GameObject::Update(uint32 diff)
SendObjectDeSpawnAnim(GetGUID()); SendObjectDeSpawnAnim(GetGUID());
//reset flags //reset flags
if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) if (GameObjectTemplateAddon const* addon = GetTemplateAddon())
SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags);
} }
if (!m_respawnDelayTime) if (!m_respawnDelayTime)
@@ -908,7 +908,7 @@ void GameObject::DespawnOrUnsummon(Milliseconds delay, Seconds forceRespawnTime)
if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) if (GameObjectTemplateAddon const* addon = GetTemplateAddon())
{ {
SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags);
} }
uint32 poolid = m_spawnId ? sPoolMgr->IsPartOfAPool<GameObject>(m_spawnId) : 0; uint32 poolid = m_spawnId ? sPoolMgr->IsPartOfAPool<GameObject>(m_spawnId) : 0;
@@ -930,7 +930,7 @@ void GameObject::Delete()
SetGoState(GO_STATE_READY); SetGoState(GO_STATE_READY);
if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) if (GameObjectTemplateAddon const* addon = GetTemplateAddon())
SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags);
// Xinef: if ritual gameobject is removed, clear anim spells // Xinef: if ritual gameobject is removed, clear anim spells
if (GetGOInfo()->type == GAMEOBJECT_TYPE_SUMMONING_RITUAL) if (GetGOInfo()->type == GAMEOBJECT_TYPE_SUMMONING_RITUAL)
@@ -1097,7 +1097,7 @@ bool GameObject::LoadGameObjectFromDB(ObjectGuid::LowType spawnId, Map* map, boo
if (!GetGOInfo()->GetDespawnPossibility() && !GetGOInfo()->IsDespawnAtAction()) if (!GetGOInfo()->GetDespawnPossibility() && !GetGOInfo()->IsDespawnAtAction())
{ {
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN); SetGameObjectFlag(GO_FLAG_NODESPAWN);
m_respawnDelayTime = 0; m_respawnDelayTime = 0;
m_respawnTime = 0; m_respawnTime = 0;
} }
@@ -1411,9 +1411,9 @@ void GameObject::SetGoArtKit(uint8 artkit, GameObject* go, ObjectGuid::LowType l
void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false */) void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false */)
{ {
if (activate) if (activate)
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); SetGameObjectFlag(GO_FLAG_IN_USE);
else else
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); RemoveGameObjectFlag(GO_FLAG_IN_USE);
if (GetGoState() == GO_STATE_READY) //if closed -> open if (GetGoState() == GO_STATE_READY) //if closed -> open
SetGoState(alternative ? GO_STATE_ACTIVE_ALTERNATIVE : GO_STATE_ACTIVE); SetGoState(alternative ? GO_STATE_ACTIVE_ALTERNATIVE : GO_STATE_ACTIVE);
@@ -1424,7 +1424,7 @@ void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false *
void GameObject::Use(Unit* user) void GameObject::Use(Unit* user)
{ {
// Xinef: we cannot use go with not selectable flags // Xinef: we cannot use go with not selectable flags
if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE)) if (HasGameObjectFlag(GO_FLAG_NOT_SELECTABLE))
return; return;
// by default spell caster is user // by default spell caster is user
@@ -1578,7 +1578,7 @@ void GameObject::Use(Unit* user)
GameObjectTemplate const* info = GetGOInfo(); GameObjectTemplate const* info = GetGOInfo();
// xinef: Goober cannot be used with this flag, skip // xinef: Goober cannot be used with this flag, skip
if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE)) if (HasGameObjectFlag(GO_FLAG_IN_USE))
return; return;
if (user->GetTypeId() == TYPEID_PLAYER) if (user->GetTypeId() == TYPEID_PLAYER)
@@ -1639,7 +1639,7 @@ void GameObject::Use(Unit* user)
if (info->GetAutoCloseTime()) if (info->GetAutoCloseTime())
{ {
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); SetGameObjectFlag(GO_FLAG_IN_USE);
SetLootState(GO_ACTIVATED, user); SetLootState(GO_ACTIVATED, user);
if (!info->goober.customAnim) if (!info->goober.customAnim)
SetGoState(GO_STATE_ACTIVE); SetGoState(GO_STATE_ACTIVE);
@@ -2283,7 +2283,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
switch (state) switch (state)
{ {
case GO_DESTRUCTIBLE_INTACT: case GO_DESTRUCTIBLE_INTACT:
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_DESTROYED); RemoveGameObjectFlag(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED);
SetDisplayId(m_goInfo->displayId); SetDisplayId(m_goInfo->displayId);
if (setHealth) if (setHealth)
{ {
@@ -2302,8 +2302,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
if (Battleground* bg = bgMap->GetBG()) if (Battleground* bg = bgMap->GetBG())
bg->EventPlayerDamagedGO(eventInvoker, this, m_goInfo->building.damagedEvent); bg->EventPlayerDamagedGO(eventInvoker, this, m_goInfo->building.damagedEvent);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED); RemoveGameObjectFlag(GO_FLAG_DESTROYED);
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); SetGameObjectFlag(GO_FLAG_DAMAGED);
uint32 modelId = m_goInfo->building.damagedDisplayId; uint32 modelId = m_goInfo->building.damagedDisplayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData)) if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
@@ -2337,8 +2337,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
} }
} }
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); RemoveGameObjectFlag(GO_FLAG_DAMAGED);
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED); SetGameObjectFlag(GO_FLAG_DESTROYED);
uint32 modelId = m_goInfo->building.destroyedDisplayId; uint32 modelId = m_goInfo->building.destroyedDisplayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData)) if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
@@ -2357,7 +2357,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
case GO_DESTRUCTIBLE_REBUILDING: case GO_DESTRUCTIBLE_REBUILDING:
{ {
EventInform(m_goInfo->building.rebuildingEvent); EventInform(m_goInfo->building.rebuildingEvent);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_DESTROYED); RemoveGameObjectFlag(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED);
uint32 modelId = m_goInfo->displayId; uint32 modelId = m_goInfo->displayId;
if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData)) if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
@@ -857,6 +857,12 @@ public:
void SetPhaseMask(uint32 newPhaseMask, bool update) override; void SetPhaseMask(uint32 newPhaseMask, bool update) override;
void EnableCollision(bool enable); void EnableCollision(bool enable);
GameObjectFlags GetGameObjectFlags() const { return GameObjectFlags(GetUInt32Value(GAMEOBJECT_FLAGS)); }
bool HasGameObjectFlag(GameObjectFlags flags) const { return HasFlag(GAMEOBJECT_FLAGS, flags) != 0; }
void SetGameObjectFlag(GameObjectFlags flags) { SetFlag(GAMEOBJECT_FLAGS, flags); }
void RemoveGameObjectFlag(GameObjectFlags flags) { RemoveFlag(GAMEOBJECT_FLAGS, flags); }
void ReplaceAllGameObjectFlags(GameObjectFlags flags) { SetUInt32Value(GAMEOBJECT_FLAGS, flags); }
void Use(Unit* user); void Use(Unit* user);
[[nodiscard]] LootState getLootState() const { return m_lootState; } [[nodiscard]] LootState getLootState() const { return m_lootState; }
@@ -933,9 +939,9 @@ public:
void SetDestructibleState(GameObjectDestructibleState state, Player* eventInvoker = nullptr, bool setHealth = false); void SetDestructibleState(GameObjectDestructibleState state, Player* eventInvoker = nullptr, bool setHealth = false);
[[nodiscard]] GameObjectDestructibleState GetDestructibleState() const [[nodiscard]] GameObjectDestructibleState GetDestructibleState() const
{ {
if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED)) if (HasGameObjectFlag(GO_FLAG_DESTROYED))
return GO_DESTRUCTIBLE_DESTROYED; return GO_DESTRUCTIBLE_DESTROYED;
if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED)) if (HasGameObjectFlag(GO_FLAG_DAMAGED))
return GO_DESTRUCTIBLE_DAMAGED; return GO_DESTRUCTIBLE_DAMAGED;
return GO_DESTRUCTIBLE_INTACT; return GO_DESTRUCTIBLE_INTACT;
} }
+2 -2
View File
@@ -290,7 +290,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
SetNativeDisplayId(petInfo->DisplayId); SetNativeDisplayId(petInfo->DisplayId);
UpdatePositionData(); UpdatePositionData();
uint8 petlevel = petInfo->Level; uint8 petlevel = petInfo->Level;
SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
SetName(petInfo->Name); SetName(petInfo->Name);
switch (getPetType()) switch (getPetType())
@@ -991,7 +991,7 @@ bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map, uint32 phas
SetUInt32Value(UNIT_FIELD_PET_NAME_TIMESTAMP, 0); SetUInt32Value(UNIT_FIELD_PET_NAME_TIMESTAMP, 0);
SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0);
SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32(sObjectMgr->GetXPForLevel(getLevel() + 1)* sWorld->getRate(RATE_XP_PET_NEXT_LEVEL))); SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32(sObjectMgr->GetXPForLevel(getLevel() + 1)* sWorld->getRate(RATE_XP_PET_NEXT_LEVEL)));
SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
if (cinfo->type == CREATURE_TYPE_BEAST) if (cinfo->type == CREATURE_TYPE_BEAST)
{ {
+21 -21
View File
@@ -894,7 +894,7 @@ void Player::HandleDrowning(uint32 time_diff)
uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel() - 1); uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel() - 1);
EnvironmentalDamage(DAMAGE_EXHAUSTED, damage); EnvironmentalDamage(DAMAGE_EXHAUSTED, damage);
} }
else if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) // Teleport ghost to graveyard else if (HasPlayerFlag(PLAYER_FLAGS_GHOST)) // Teleport ghost to graveyard
RepopAtGraveyard(); RepopAtGraveyard();
} }
else if (!(m_MirrorTimerFlagsLast & UNDERWATER_INDARKWATER)) else if (!(m_MirrorTimerFlagsLast & UNDERWATER_INDARKWATER))
@@ -1066,14 +1066,14 @@ void Player::SetRestState(uint32 triggerId)
{ {
_innTriggerId = triggerId; _innTriggerId = triggerId;
_restTime = GameTime::GetGameTime().count(); _restTime = GameTime::GetGameTime().count();
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); SetPlayerFlag(PLAYER_FLAGS_RESTING);
} }
void Player::RemoveRestState() void Player::RemoveRestState()
{ {
_innTriggerId = 0; _innTriggerId = 0;
_restTime = 0; _restTime = 0;
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); RemovePlayerFlag(PLAYER_FLAGS_RESTING);
} }
bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data)
@@ -2062,7 +2062,7 @@ Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask)
return nullptr; return nullptr;
// appropriate npc type // appropriate npc type
if (npcflagmask && !creature->HasFlag(UNIT_NPC_FLAGS, npcflagmask)) if (npcflagmask && !creature->HasNpcFlag(NPCFlags(npcflagmask)))
return nullptr; return nullptr;
// not allow interaction under control, but allow with own pets // not allow interaction under control, but allow with own pets
@@ -2172,7 +2172,7 @@ void Player::SetGameMaster(bool on)
m_ExtraFlags |= PLAYER_EXTRA_GM_ON; m_ExtraFlags |= PLAYER_EXTRA_GM_ON;
if (AccountMgr::IsGMAccount(GetSession()->GetSecurity())) if (AccountMgr::IsGMAccount(GetSession()->GetSecurity()))
SetFaction(FACTION_FRIENDLY); SetFaction(FACTION_FRIENDLY);
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM); SetPlayerFlag(PLAYER_FLAGS_GM);
SetUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); SetUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
if (Pet* pet = GetPet()) if (Pet* pet = GetPet())
@@ -2203,7 +2203,7 @@ void Player::SetGameMaster(bool on)
m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON; m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON;
SetFactionForRace(getRace(true)); SetFactionForRace(getRace(true));
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM); RemovePlayerFlag(PLAYER_FLAGS_GM);
RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
if (Pet* pet = GetPet()) if (Pet* pet = GetPet())
@@ -2337,7 +2337,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate, bool isLFGReward)
return; return;
} }
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN)) if (HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN))
{ {
return; return;
} }
@@ -2654,7 +2654,7 @@ void Player::InitStatsForLevel(bool reapplyMods)
SetUnitFlag2(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. // cleanup player flags (will be re-applied if need at aura load), to avoid have ghost flag without ghost aura, for example.
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST | PLAYER_ALLOW_ONLY_ABILITY); RemovePlayerFlag(PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST | PLAYER_ALLOW_ONLY_ABILITY);
RemoveStandFlags(UNIT_STAND_FLAGS_ALL); // one form stealth modified bytes RemoveStandFlags(UNIT_STAND_FLAGS_ALL); // one form stealth modified bytes
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY); RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY);
@@ -4499,9 +4499,9 @@ Corpse* Player::CreateCorpse()
corpse->SetUInt32Value(CORPSE_FIELD_BYTES_2, _cfb2); corpse->SetUInt32Value(CORPSE_FIELD_BYTES_2, _cfb2);
uint32 flags = CORPSE_FLAG_UNK2; uint32 flags = CORPSE_FLAG_UNK2;
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM)) if (HasPlayerFlag(PLAYER_FLAGS_HIDE_HELM))
flags |= CORPSE_FLAG_HIDE_HELM; flags |= CORPSE_FLAG_HIDE_HELM;
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK)) if (HasPlayerFlag(PLAYER_FLAGS_HIDE_CLOAK))
flags |= CORPSE_FLAG_HIDE_CLOAK; flags |= CORPSE_FLAG_HIDE_CLOAK;
// Xinef: Player can loop corpses while in BG or in WG // Xinef: Player can loop corpses while in BG or in WG
@@ -4844,7 +4844,7 @@ void Player::RepopAtGraveyard()
else if (GetPositionZ() < GetMap()->GetMinHeight(GetPositionX(), GetPositionY())) else if (GetPositionZ() < GetMap()->GetMinHeight(GetPositionX(), GetPositionY()))
TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, GetOrientation()); TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, GetOrientation());
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_IS_OUT_OF_BOUNDS); RemovePlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS);
} }
bool Player::CanJoinConstantChannelInZone(ChatChannelsEntry const* channel, AreaTableEntry const* zone) bool Player::CanJoinConstantChannelInZone(ChatChannelsEntry const* channel, AreaTableEntry const* zone)
@@ -7545,7 +7545,7 @@ void Player::SendQuestGiverStatusMultiple()
Creature* questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*this, *itr); Creature* questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*this, *itr);
if (!questgiver || questgiver->IsHostileTo(this)) if (!questgiver || questgiver->IsHostileTo(this))
continue; continue;
if (!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER)) if (!questgiver->HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER))
continue; continue;
questStatus = GetQuestDialogStatus(questgiver); questStatus = GetQuestDialogStatus(questgiver);
@@ -8828,7 +8828,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
pet->SetCreatorGUID(GetGUID()); pet->SetCreatorGUID(GetGUID());
pet->SetFaction(GetFaction()); pet->SetFaction(GetFaction());
pet->setPowerType(POWER_MANA); pet->setPowerType(POWER_MANA);
pet->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); pet->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
pet->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pet->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pet->InitStatsForLevel(getLevel()); pet->InitStatsForLevel(getLevel());
@@ -13878,7 +13878,7 @@ bool Player::CanResummonPet(uint32 spellid)
bool Player::CanSeeSpellClickOn(Creature const* c) const bool Player::CanSeeSpellClickOn(Creature const* c) const
{ {
if (!c->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK)) if (!c->HasNpcFlag(UNIT_NPC_FLAG_SPELLCLICK))
return false; return false;
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(c->GetEntry()); SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(c->GetEntry());
@@ -13901,7 +13901,7 @@ bool Player::CanSeeSpellClickOn(Creature const* c) const
bool Player::CanSeeVendor(Creature const* creature) const bool Player::CanSeeVendor(Creature const* creature) const
{ {
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_VENDOR)) if (!creature->HasNpcFlag(UNIT_NPC_FLAG_VENDOR))
return true; return true;
ConditionList conditions = sConditionMgr->GetConditionsForNpcVendorEvent(creature->GetEntry(), 0); ConditionList conditions = sConditionMgr->GetConditionsForNpcVendorEvent(creature->GetEntry(), 0);
@@ -14313,7 +14313,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans)
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0));
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2));
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3));
stmt->SetData(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->SetData(index++, (uint32)GetPlayerFlags());
stmt->SetData(index++, (uint16)GetMapId()); stmt->SetData(index++, (uint16)GetMapId());
stmt->SetData(index++, (uint32)GetInstanceId()); stmt->SetData(index++, (uint32)GetInstanceId());
stmt->SetData(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4)); stmt->SetData(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4));
@@ -14344,7 +14344,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans)
stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]); stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]);
stmt->SetData(index++, finiteAlways(_restBonus)); stmt->SetData(index++, finiteAlways(_restBonus));
stmt->SetData(index++, uint32(GameTime::GetGameTime().count())); stmt->SetData(index++, uint32(GameTime::GetGameTime().count()));
stmt->SetData(index++, (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) ? 1 : 0)); stmt->SetData(index++, (HasPlayerFlag(PLAYER_FLAGS_RESTING) ? 1 : 0));
//save, far from tavern/city //save, far from tavern/city
//save, but in tavern/city //save, but in tavern/city
stmt->SetData(index++, m_resetTalentsCost); stmt->SetData(index++, m_resetTalentsCost);
@@ -14430,7 +14430,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans)
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0));
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2));
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3));
stmt->SetData(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->SetData(index++, GetPlayerFlags());
if (!IsBeingTeleported()) if (!IsBeingTeleported())
{ {
@@ -14483,7 +14483,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans)
stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]); stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]);
stmt->SetData(index++, finiteAlways(_restBonus)); stmt->SetData(index++, finiteAlways(_restBonus));
stmt->SetData(index++, uint32(GameTime::GetGameTime().count())); stmt->SetData(index++, uint32(GameTime::GetGameTime().count()));
stmt->SetData(index++, (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) ? 1 : 0)); stmt->SetData(index++, (HasPlayerFlag(PLAYER_FLAGS_RESTING) ? 1 : 0));
//save, far from tavern/city //save, far from tavern/city
//save, but in tavern/city //save, but in tavern/city
stmt->SetData(index++, m_resetTalentsCost); stmt->SetData(index++, m_resetTalentsCost);
@@ -15745,7 +15745,7 @@ void Player::SetRestFlag(RestFlag restFlag, uint32 triggerId /*= 0*/)
if (!oldRestMask && _restFlagMask) // only set flag/time on the first rest state if (!oldRestMask && _restFlagMask) // only set flag/time on the first rest state
{ {
_restTime = GameTime::GetGameTime().count(); _restTime = GameTime::GetGameTime().count();
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); SetPlayerFlag(PLAYER_FLAGS_RESTING);
} }
if (triggerId) if (triggerId)
@@ -15760,7 +15760,7 @@ void Player::RemoveRestFlag(RestFlag restFlag)
if (oldRestMask && !_restFlagMask) // only remove flag/time on the last rest state remove if (oldRestMask && !_restFlagMask) // only remove flag/time on the last rest state remove
{ {
_restTime = 0; _restTime = 0;
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); RemovePlayerFlag(PLAYER_FLAGS_RESTING);
} }
} }
+14 -5
View File
@@ -24,6 +24,7 @@
#include "CinematicMgr.h" #include "CinematicMgr.h"
#include "DBCStores.h" #include "DBCStores.h"
#include "DatabaseEnvFwd.h" #include "DatabaseEnvFwd.h"
#include "EnumFlag.h"
#include "GroupReference.h" #include "GroupReference.h"
#include "InstanceSaveMgr.h" #include "InstanceSaveMgr.h"
#include "Item.h" #include "Item.h"
@@ -464,7 +465,7 @@ enum DrunkenState
#define MAX_DRUNKEN 4 #define MAX_DRUNKEN 4
enum PlayerFlags enum PlayerFlags : uint32
{ {
PLAYER_FLAGS_GROUP_LEADER = 0x00000001, PLAYER_FLAGS_GROUP_LEADER = 0x00000001,
PLAYER_FLAGS_AFK = 0x00000002, PLAYER_FLAGS_AFK = 0x00000002,
@@ -500,6 +501,8 @@ enum PlayerFlags
PLAYER_FLAGS_UNK31 = 0x80000000, PLAYER_FLAGS_UNK31 = 0x80000000,
}; };
DEFINE_ENUM_FLAG(PlayerFlags);
enum PlayerBytesOffsets //@todo: Implement enum PlayerBytesOffsets //@todo: Implement
{ {
PLAYER_BYTES_OFFSET_SKIN_ID = 0, PLAYER_BYTES_OFFSET_SKIN_ID = 0,
@@ -1078,6 +1081,12 @@ public:
void Update(uint32 time) override; void Update(uint32 time) override;
PlayerFlags GetPlayerFlags() const { return PlayerFlags(GetUInt32Value(PLAYER_FLAGS)); }
bool HasPlayerFlag(PlayerFlags flags) const { return HasFlag(PLAYER_FLAGS, flags) != 0; }
void SetPlayerFlag(PlayerFlags flags) { SetFlag(PLAYER_FLAGS, flags); }
void RemovePlayerFlag(PlayerFlags flags) { RemoveFlag(PLAYER_FLAGS, flags); }
void ReplaceAllPlayerFlags(PlayerFlags flags) { SetUInt32Value(PLAYER_FLAGS, flags); }
static bool BuildEnumData(PreparedQueryResult result, WorldPacket* data); static bool BuildEnumData(PreparedQueryResult result, WorldPacket* data);
void SetInWater(bool apply); void SetInWater(bool apply);
@@ -1097,8 +1106,8 @@ public:
void ToggleAFK(); void ToggleAFK();
void ToggleDND(); void ToggleDND();
[[nodiscard]] bool isAFK() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK); } [[nodiscard]] bool isAFK() const { return HasPlayerFlag(PLAYER_FLAGS_AFK); }
[[nodiscard]] bool isDND() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND); } [[nodiscard]] bool isDND() const { return HasPlayerFlag(PLAYER_FLAGS_DND); }
[[nodiscard]] uint8 GetChatTag() const; [[nodiscard]] uint8 GetChatTag() const;
std::string autoReplyMsg; std::string autoReplyMsg;
@@ -1114,7 +1123,7 @@ public:
void ContinueTaxiFlight(); void ContinueTaxiFlight();
// mount_id can be used in scripting calls // mount_id can be used in scripting calls
[[nodiscard]] bool IsDeveloper() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DEVELOPER); } [[nodiscard]] bool IsDeveloper() const { return HasPlayerFlag(PLAYER_FLAGS_DEVELOPER); }
void SetDeveloper(bool on) { ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_DEVELOPER, on); } void SetDeveloper(bool on) { ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_DEVELOPER, on); }
[[nodiscard]] bool isAcceptWhispers() const { return m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS; } [[nodiscard]] bool isAcceptWhispers() const { return m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS; }
void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; } void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; }
@@ -1803,7 +1812,7 @@ public:
void ResetContestedPvP() void ResetContestedPvP()
{ {
ClearUnitState(UNIT_STATE_ATTACK_PLAYER); ClearUnitState(UNIT_STATE_ATTACK_PLAYER);
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP); RemovePlayerFlag(PLAYER_FLAGS_CONTESTED_PVP);
m_contestedPvPTimer = 0; m_contestedPvPTimer = 0;
} }
@@ -45,7 +45,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
if (source->GetTypeId() == TYPEID_UNIT) if (source->GetTypeId() == TYPEID_UNIT)
{ {
npcflags = source->GetUInt32Value(UNIT_NPC_FLAGS); npcflags = source->ToUnit()->GetNpcFlags();
if (showQuests && npcflags & UNIT_NPC_FLAG_QUESTGIVER) if (showQuests && npcflags & UNIT_NPC_FLAG_QUESTGIVER)
PrepareQuestMenu(source->GetGUID()); PrepareQuestMenu(source->GetGUID());
} }
@@ -215,7 +215,7 @@ void Player::SendPreparedGossip(WorldObject* source)
if (source->GetTypeId() == TYPEID_UNIT) if (source->GetTypeId() == TYPEID_UNIT)
{ {
// in case no gossip flag and quest menu not empty, open quest menu (client expect gossip menu with this flag) // in case no gossip flag and quest menu not empty, open quest menu (client expect gossip menu with this flag)
if (!source->ToCreature()->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) && !PlayerTalkClass->GetQuestMenu().Empty()) if (!source->ToCreature()->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP) && !PlayerTalkClass->GetQuestMenu().Empty())
{ {
SendPreparedQuest(source->GetGUID()); SendPreparedQuest(source->GetGUID());
return; return;
@@ -259,7 +259,7 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men
if (sWorld->getIntConfig(CONFIG_INSTANT_TAXI) == 2 && source->GetTypeId() == TYPEID_UNIT) if (sWorld->getIntConfig(CONFIG_INSTANT_TAXI) == 2 && source->GetTypeId() == TYPEID_UNIT)
{ {
if (gossipOptionId == GOSSIP_ACTION_TOGGLE_INSTANT_FLIGHT && source->GetUInt32Value(UNIT_NPC_FLAGS) & UNIT_NPC_FLAG_FLIGHTMASTER) if (gossipOptionId == GOSSIP_ACTION_TOGGLE_INSTANT_FLIGHT && source->ToUnit()->GetNpcFlags() & UNIT_NPC_FLAG_FLIGHTMASTER)
{ {
ToggleInstantFlight(); ToggleInstantFlight();
@@ -353,8 +353,8 @@ void Player::UpdatePvPFlag(time_t currTime)
if (currTime < (pvpInfo.EndTimer + 300 + 5)) if (currTime < (pvpInfo.EndTimer + 300 + 5))
{ {
if (currTime > (pvpInfo.EndTimer + 4) && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER)) if (currTime > (pvpInfo.EndTimer + 4) && !HasPlayerFlag(PLAYER_FLAGS_PVP_TIMER))
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER); SetPlayerFlag(PLAYER_FLAGS_PVP_TIMER);
return; return;
} }
@@ -5053,7 +5053,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons
SetByteValue(PLAYER_BYTES_2, 3, fields[15].Get<uint8>()); SetByteValue(PLAYER_BYTES_2, 3, fields[15].Get<uint8>());
SetByteValue(PLAYER_BYTES_3, 0, fields[5].Get<uint8>()); SetByteValue(PLAYER_BYTES_3, 0, fields[5].Get<uint8>());
SetByteValue(PLAYER_BYTES_3, 1, fields[54].Get<uint8>()); SetByteValue(PLAYER_BYTES_3, 1, fields[54].Get<uint8>());
SetUInt32Value(PLAYER_FLAGS, fields[16].Get<uint32>()); ReplaceAllPlayerFlags((PlayerFlags)fields[16].Get<uint32>());
SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[53].Get<uint32>()); SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[53].Get<uint32>());
SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[52].Get<uint64>()); SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[52].Get<uint64>());
@@ -5460,7 +5460,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons
_LoadGlyphAuras(); _LoadGlyphAuras();
_LoadAuras(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_AURAS), time_diff); _LoadAuras(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_AURAS), time_diff);
// add ghost flag (must be after aura load: PLAYER_FLAGS_GHOST set in aura) // add ghost flag (must be after aura load: PLAYER_FLAGS_GHOST set in aura)
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) if (HasPlayerFlag(PLAYER_FLAGS_GHOST))
{ {
m_deathState = DEAD; m_deathState = DEAD;
AddUnitState(UNIT_STATE_ISOLATED); AddUnitState(UNIT_STATE_ISOLATED);
@@ -6514,7 +6514,7 @@ void Player::_LoadGroup()
{ {
if (group->IsLeader(GetGUID())) if (group->IsLeader(GetGUID()))
{ {
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER);
} }
uint8 subgroup = group->GetMemberGroup(GetGUID()); uint8 subgroup = group->GetMemberGroup(GetGUID());
@@ -6528,7 +6528,7 @@ void Player::_LoadGroup()
} }
if (!GetGroup() || !GetGroup()->IsLeader(GetGUID())) if (!GetGroup() || !GetGroup()->IsLeader(GetGUID()))
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); RemovePlayerFlag(PLAYER_FLAGS_GROUP_LEADER);
} }
void Player::BindToInstance() void Player::BindToInstance()
@@ -232,7 +232,7 @@ void Player::Update(uint32 p_time)
} }
} }
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING)) if (HasPlayerFlag(PLAYER_FLAGS_RESTING))
{ {
if (now > lastTick && _restTime > 0) // freeze update if (now > lastTick && _restTime > 0) // freeze update
{ {
@@ -1386,7 +1386,7 @@ void Player::UpdatePvPState()
} }
else // in friendly area else // in friendly area
{ {
if (IsPvP() && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP) && if (IsPvP() && !HasPlayerFlag(PLAYER_FLAGS_IN_PVP) &&
pvpInfo.EndTimer == 0) pvpInfo.EndTimer == 0)
pvpInfo.EndTimer = GameTime::GetGameTime().count(); // start toggle-off pvpInfo.EndTimer = GameTime::GetGameTime().count(); // start toggle-off
} }
@@ -1474,7 +1474,7 @@ void Player::UpdatePvP(bool state, bool _override)
SetPvP(state); SetPvP(state);
} }
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER); RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER);
sScriptMgr->OnPlayerPVPFlagChange(this, state); sScriptMgr->OnPlayerPVPFlagChange(this, state);
} }
@@ -1741,7 +1741,7 @@ void Player::UpdateForQuestWorldObjects()
continue; continue;
// check if this unit requires quest specific flags // check if this unit requires quest specific flags
if (!obj->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK)) if (!obj->HasNpcFlag(UNIT_NPC_FLAG_SPELLCLICK))
continue; continue;
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(obj->GetEntry()); SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(obj->GetEntry());
@@ -84,7 +84,7 @@ bool MotionTransport::CreateMoTrans(ObjectGuid::LowType guidlow, uint32 entry, u
if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) if (GameObjectTemplateAddon const* addon = GetTemplateAddon())
{ {
SetUInt32Value(GAMEOBJECT_FACTION, addon->faction); SetUInt32Value(GAMEOBJECT_FACTION, addon->faction);
SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags);
} }
SetObjectScale(goinfo->size); SetObjectScale(goinfo->size);
@@ -727,7 +727,7 @@ bool StaticTransport::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* m
if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) if (GameObjectTemplateAddon const* addon = GetTemplateAddon())
{ {
SetUInt32Value(GAMEOBJECT_FACTION, addon->faction); SetUInt32Value(GAMEOBJECT_FACTION, addon->faction);
SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags);
} }
SetEntry(goinfo->entry); SetEntry(goinfo->entry);
+5 -5
View File
@@ -9675,7 +9675,7 @@ ReputationRank Unit::GetReactionTo(Unit const* target, bool checkOriginalFaction
{ {
// check contested flags // check contested flags
if (targetFactionTemplateEntry->factionFlags & FACTION_TEMPLATE_FLAG_ATTACK_PVP_ACTIVE_PLAYERS if (targetFactionTemplateEntry->factionFlags & FACTION_TEMPLATE_FLAG_ATTACK_PVP_ACTIVE_PLAYERS
&& selfPlayerOwner->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP)) && selfPlayerOwner->HasPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP))
return REP_HOSTILE; return REP_HOSTILE;
// if faction has reputation, hostile state depends only from AtWar state // if faction has reputation, hostile state depends only from AtWar state
@@ -9748,7 +9748,7 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem
{ {
// check contested flags // check contested flags
if (factionTemplateEntry->factionFlags & FACTION_TEMPLATE_FLAG_ATTACK_PVP_ACTIVE_PLAYERS if (factionTemplateEntry->factionFlags & FACTION_TEMPLATE_FLAG_ATTACK_PVP_ACTIVE_PLAYERS
&& targetPlayerOwner->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP)) && targetPlayerOwner->HasPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP))
return REP_HOSTILE; return REP_HOSTILE;
if (ReputationRank const* repRank = targetPlayerOwner->GetReputationMgr().GetForcedRankIfAny(factionTemplateEntry)) if (ReputationRank const* repRank = targetPlayerOwner->GetReputationMgr().GetForcedRankIfAny(factionTemplateEntry))
return *repRank; return *repRank;
@@ -13269,7 +13269,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
if (Player const* playerAttacker = ToPlayer()) if (Player const* playerAttacker = ToPlayer())
{ {
if (playerAttacker->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_UBER) || playerAttacker->IsSpectator()) if (playerAttacker->HasPlayerFlag(PLAYER_FLAGS_UBER) || playerAttacker->IsSpectator())
return false; return false;
} }
// check flags // check flags
@@ -16796,7 +16796,7 @@ void Unit::SetContestedPvP(Player* attackedPlayer, bool lookForNearContestedGuar
if (!player->HasUnitState(UNIT_STATE_ATTACK_PLAYER)) if (!player->HasUnitState(UNIT_STATE_ATTACK_PLAYER))
{ {
player->AddUnitState(UNIT_STATE_ATTACK_PLAYER); player->AddUnitState(UNIT_STATE_ATTACK_PLAYER);
player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP); player->SetPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP);
// call MoveInLineOfSight for nearby contested guards // call MoveInLineOfSight for nearby contested guards
AddToNotify(NOTIFY_AI_RELOCATION); AddToNotify(NOTIFY_AI_RELOCATION);
} }
@@ -18203,7 +18203,7 @@ void Unit::RemoveVehicleKit()
m_updateFlag &= ~UPDATEFLAG_VEHICLE; m_updateFlag &= ~UPDATEFLAG_VEHICLE;
m_unitTypeMask &= ~UNIT_MASK_VEHICLE; m_unitTypeMask &= ~UNIT_MASK_VEHICLE;
RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE); RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE);
} }
Unit* Unit::GetVehicleBase() const Unit* Unit::GetVehicleBase() const
+24 -15
View File
@@ -540,6 +540,8 @@ enum NPCFlags : uint32
UNIT_NPC_FLAG_VENDOR_MASK = UNIT_NPC_FLAG_VENDOR | UNIT_NPC_FLAG_VENDOR_AMMO | UNIT_NPC_FLAG_VENDOR_POISON | UNIT_NPC_FLAG_VENDOR_REAGENT UNIT_NPC_FLAG_VENDOR_MASK = UNIT_NPC_FLAG_VENDOR | UNIT_NPC_FLAG_VENDOR_AMMO | UNIT_NPC_FLAG_VENDOR_POISON | UNIT_NPC_FLAG_VENDOR_REAGENT
}; };
DEFINE_ENUM_FLAG(NPCFlags);
enum MovementFlags enum MovementFlags
{ {
MOVEMENTFLAG_NONE = 0x00000000, MOVEMENTFLAG_NONE = 0x00000000,
@@ -1491,6 +1493,7 @@ public:
else else
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP); RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP);
} }
[[nodiscard]] uint32 GetCreatureType() const; [[nodiscard]] uint32 GetCreatureType() const;
[[nodiscard]] uint32 GetCreatureTypeMask() const [[nodiscard]] uint32 GetCreatureTypeMask() const
{ {
@@ -1607,20 +1610,26 @@ public:
MeleeHitOutcome RollMeleeOutcomeAgainst (Unit const* victim, WeaponAttackType attType) const; MeleeHitOutcome RollMeleeOutcomeAgainst (Unit const* victim, WeaponAttackType attType) const;
MeleeHitOutcome RollMeleeOutcomeAgainst (Unit const* victim, WeaponAttackType attType, int32 crit_chance, int32 miss_chance, int32 dodge_chance, int32 parry_chance, int32 block_chance) const; MeleeHitOutcome RollMeleeOutcomeAgainst (Unit const* victim, WeaponAttackType attType, int32 crit_chance, int32 miss_chance, int32 dodge_chance, int32 parry_chance, int32 block_chance) const;
[[nodiscard]] bool IsVendor() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_VENDOR); } NPCFlags GetNpcFlags() const { return NPCFlags(GetUInt32Value(UNIT_NPC_FLAGS)); }
[[nodiscard]] bool IsTrainer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TRAINER); } bool HasNpcFlag(NPCFlags flags) const { return HasFlag(UNIT_NPC_FLAGS, flags) != 0; }
[[nodiscard]] bool IsQuestGiver() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); } void SetNpcFlag(NPCFlags flags) { SetFlag(UNIT_NPC_FLAGS, flags); }
[[nodiscard]] bool IsGossip() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); } void RemoveNpcFlag(NPCFlags flags) { RemoveFlag(UNIT_NPC_FLAGS, flags); }
[[nodiscard]] bool IsTaxi() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_FLIGHTMASTER); } void ReplaceAllNpcFlags(NPCFlags flags) { SetUInt32Value(UNIT_NPC_FLAGS, flags); }
[[nodiscard]] bool IsGuildMaster() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PETITIONER); }
[[nodiscard]] bool IsBattleMaster() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BATTLEMASTER); } [[nodiscard]] bool IsVendor() const { return HasNpcFlag(UNIT_NPC_FLAG_VENDOR); }
[[nodiscard]] bool IsBanker() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BANKER); } [[nodiscard]] bool IsTrainer() const { return HasNpcFlag(UNIT_NPC_FLAG_TRAINER); }
[[nodiscard]] bool IsInnkeeper() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_INNKEEPER); } [[nodiscard]] bool IsQuestGiver() const { return HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); }
[[nodiscard]] bool IsSpiritHealer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER); } [[nodiscard]] bool IsGossip() const { return HasNpcFlag(UNIT_NPC_FLAG_GOSSIP); }
[[nodiscard]] bool IsSpiritGuide() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITGUIDE); } [[nodiscard]] bool IsTaxi() const { return HasNpcFlag(UNIT_NPC_FLAG_FLIGHTMASTER); }
[[nodiscard]] bool IsTabardDesigner()const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TABARDDESIGNER); } [[nodiscard]] bool IsGuildMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_PETITIONER); }
[[nodiscard]] bool IsAuctioner() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_AUCTIONEER); } [[nodiscard]] bool IsBattleMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_BATTLEMASTER); }
[[nodiscard]] bool IsArmorer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_REPAIR); } [[nodiscard]] bool IsBanker() const { return HasNpcFlag(UNIT_NPC_FLAG_BANKER); }
[[nodiscard]] bool IsInnkeeper() const { return HasNpcFlag(UNIT_NPC_FLAG_INNKEEPER); }
[[nodiscard]] bool IsSpiritHealer() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER); }
[[nodiscard]] bool IsSpiritGuide() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITGUIDE); }
[[nodiscard]] bool IsTabardDesigner()const { return HasNpcFlag(UNIT_NPC_FLAG_TABARDDESIGNER); }
[[nodiscard]] bool IsAuctioner() const { return HasNpcFlag(UNIT_NPC_FLAG_AUCTIONEER); }
[[nodiscard]] bool IsArmorer() const { return HasNpcFlag(UNIT_NPC_FLAG_REPAIR); }
[[nodiscard]] bool IsServiceProvider() const [[nodiscard]] bool IsServiceProvider() const
{ {
return HasFlag(UNIT_NPC_FLAGS, return HasFlag(UNIT_NPC_FLAGS,
@@ -1629,7 +1638,7 @@ public:
UNIT_NPC_FLAG_INNKEEPER | UNIT_NPC_FLAG_SPIRITHEALER | 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);
} }
[[nodiscard]] bool IsSpiritService() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE); } [[nodiscard]] bool IsSpiritService() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE); }
[[nodiscard]] bool IsCritter() const { return GetCreatureType() == CREATURE_TYPE_CRITTER; } [[nodiscard]] bool IsCritter() const { return GetCreatureType() == CREATURE_TYPE_CRITTER; }
[[nodiscard]] bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); } [[nodiscard]] bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); }
+5 -5
View File
@@ -119,14 +119,14 @@ void Vehicle::Reset(bool evading /*= false*/)
if (_me->GetTypeId() == TYPEID_PLAYER) if (_me->GetTypeId() == TYPEID_PLAYER)
{ {
if (_usableSeatNum) if (_usableSeatNum)
_me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PLAYER_VEHICLE); _me->SetNpcFlag(UNIT_NPC_FLAG_PLAYER_VEHICLE);
} }
else else
{ {
ApplyAllImmunities(); ApplyAllImmunities();
InstallAllAccessories(evading); InstallAllAccessories(evading);
if (_usableSeatNum) if (_usableSeatNum)
_me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); _me->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
} }
if (GetBase()->GetTypeId() == TYPEID_UNIT) if (GetBase()->GetTypeId() == TYPEID_UNIT)
@@ -355,9 +355,9 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId)
if (!_usableSeatNum) if (!_usableSeatNum)
{ {
if (_me->GetTypeId() == TYPEID_PLAYER) if (_me->GetTypeId() == TYPEID_PLAYER)
_me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PLAYER_VEHICLE); _me->RemoveNpcFlag(UNIT_NPC_FLAG_PLAYER_VEHICLE);
else else
_me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); _me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
} }
} }
@@ -460,7 +460,7 @@ void Vehicle::RemovePassenger(Unit* unit)
unit->GetName(), _me->GetEntry(), _vehicleInfo->m_ID, _me->GetGUID().ToString(), (int32)seat->first); unit->GetName(), _me->GetEntry(), _vehicleInfo->m_ID, _me->GetGUID().ToString(), (int32)seat->first);
if (seat->second.SeatInfo->CanEnterOrExit() && ++_usableSeatNum) if (seat->second.SeatInfo->CanEnterOrExit() && ++_usableSeatNum)
_me->SetFlag(UNIT_NPC_FLAGS, (_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));
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle // Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUnselectable) if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUnselectable)
+1 -1
View File
@@ -1289,7 +1289,7 @@ void GameEventMgr::UpdateEventNPCFlags(uint16 event_id)
if (CreatureTemplate const* creatureTemplate = creature->GetCreatureTemplate()) if (CreatureTemplate const* creatureTemplate = creature->GetCreatureTemplate())
npcflag |= creatureTemplate->npcflag; npcflag |= creatureTemplate->npcflag;
creature->SetUInt32Value(UNIT_NPC_FLAGS, npcflag); creature->ReplaceAllNpcFlags(NPCFlags(npcflag));
// reset gossip options, since the flag change might have added / removed some // reset gossip options, since the flag change might have added / removed some
//cr->ResetGossipOptions(); //cr->ResetGossipOptions();
} }
+3 -3
View File
@@ -112,7 +112,7 @@ bool Group::Create(Player* leader)
m_guid = ObjectGuid::Create<HighGuid::Group>(lowguid); m_guid = ObjectGuid::Create<HighGuid::Group>(lowguid);
m_leaderGuid = leaderGuid; m_leaderGuid = leaderGuid;
m_leaderName = leader->GetName(); m_leaderName = leader->GetName();
leader->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); leader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER);
if (isBGGroup() || isBFGroup()) if (isBGGroup() || isBFGroup())
m_groupType = GROUPTYPE_BGRAID; m_groupType = GROUPTYPE_BGRAID;
@@ -725,9 +725,9 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid)
} }
if (Player* oldLeader = ObjectAccessor::FindConnectedPlayer(m_leaderGuid)) if (Player* oldLeader = ObjectAccessor::FindConnectedPlayer(m_leaderGuid))
oldLeader->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); oldLeader->RemovePlayerFlag(PLAYER_FLAGS_GROUP_LEADER);
newLeader->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); newLeader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER);
m_leaderGuid = newLeader->GetGUID(); m_leaderGuid = newLeader->GetGUID();
m_leaderName = newLeader->GetName(); m_leaderName = newLeader->GetName();
ToggleGroupMemberFlag(slot, MEMBER_FLAG_ASSISTANT, false); ToggleGroupMemberFlag(slot, MEMBER_FLAG_ASSISTANT, false);
@@ -942,10 +942,10 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder)
} }
// Set FFA PvP for non GM in non-rest mode // Set FFA PvP for non GM in non-rest mode
if (sWorld->IsFFAPvPRealm() && !pCurrChar->IsGameMaster() && !pCurrChar->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING)) if (sWorld->IsFFAPvPRealm() && !pCurrChar->IsGameMaster() && !pCurrChar->HasPlayerFlag(PLAYER_FLAGS_RESTING))
pCurrChar->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP); pCurrChar->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
if (pCurrChar->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP)) if (pCurrChar->HasPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP))
{ {
pCurrChar->SetContestedPvP(nullptr, false); pCurrChar->SetContestedPvP(nullptr, false);
} }
@@ -1056,8 +1056,8 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder)
} }
// pussywizard: pvp mode // pussywizard: pvp mode
pCurrChar->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER); pCurrChar->RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER);
if (pCurrChar->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP)) if (pCurrChar->HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
pCurrChar->UpdatePvP(true, true); pCurrChar->UpdatePvP(true, true);
// pussywizard: on login it's not possible to go back to arena as a spectator, HandleMoveWorldportAckOpcode is not sent, so call it here // pussywizard: on login it's not possible to go back to arena as a spectator, HandleMoveWorldportAckOpcode is not sent, so call it here
@@ -1301,17 +1301,17 @@ void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket& recvData)
void WorldSession::HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet) void WorldSession::HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet)
{ {
if (packet.ShowHelm) if (packet.ShowHelm)
_player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); _player->RemovePlayerFlag(PLAYER_FLAGS_HIDE_HELM);
else else
_player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); _player->SetPlayerFlag(PLAYER_FLAGS_HIDE_HELM);
} }
void WorldSession::HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet) void WorldSession::HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet)
{ {
if (packet.ShowCloak) if (packet.ShowCloak)
_player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); _player->RemovePlayerFlag(PLAYER_FLAGS_HIDE_CLOAK);
else else
_player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); _player->SetPlayerFlag(PLAYER_FLAGS_HIDE_CLOAK);
} }
void WorldSession::HandleCharRenameOpcode(WorldPacket& recvData) void WorldSession::HandleCharRenameOpcode(WorldPacket& recvData)
+2 -2
View File
@@ -812,7 +812,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
if (!player->IsAlive()) if (!player->IsAlive())
{ {
if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) if (player->HasPlayerFlag(PLAYER_FLAGS_GHOST))
playerStatus |= MEMBER_STATUS_GHOST; playerStatus |= MEMBER_STATUS_GHOST;
else else
playerStatus |= MEMBER_STATUS_DEAD; playerStatus |= MEMBER_STATUS_DEAD;
@@ -1014,7 +1014,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData)
if (!player->IsAlive()) if (!player->IsAlive())
{ {
if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) if (player->HasPlayerFlag(PLAYER_FLAGS_GHOST))
playerStatus |= MEMBER_STATUS_GHOST; playerStatus |= MEMBER_STATUS_GHOST;
else else
playerStatus |= MEMBER_STATUS_DEAD; playerStatus |= MEMBER_STATUS_DEAD;
+6 -6
View File
@@ -60,7 +60,7 @@ void WorldSession::HandleRepopRequestOpcode(WorldPacket& recv_data)
recv_data.read_skip<uint8>(); recv_data.read_skip<uint8>();
if (GetPlayer()->IsAlive() || GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) if (GetPlayer()->IsAlive() || GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_GHOST))
return; return;
if (GetPlayer()->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) if (GetPlayer()->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION))
@@ -417,7 +417,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ
DoLootRelease(lguid); DoLootRelease(lguid);
bool instantLogout = ((GetSecurity() >= 0 && uint32(GetSecurity()) >= sWorld->getIntConfig(CONFIG_INSTANT_LOGOUT)) bool instantLogout = ((GetSecurity() >= 0 && uint32(GetSecurity()) >= sWorld->getIntConfig(CONFIG_INSTANT_LOGOUT))
|| (GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) && !GetPlayer()->IsInCombat())) || GetPlayer()->IsInFlight(); || (GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING) && !GetPlayer()->IsInCombat())) || GetPlayer()->IsInFlight();
bool preventAfkSanctuaryLogout = sWorld->getIntConfig(CONFIG_AFK_PREVENT_LOGOUT) == 1 bool preventAfkSanctuaryLogout = sWorld->getIntConfig(CONFIG_AFK_PREVENT_LOGOUT) == 1
&& GetPlayer()->isAFK() && sAreaTableStore.LookupEntry(GetPlayer()->GetAreaId())->IsSanctuary(); && GetPlayer()->isAFK() && sAreaTableStore.LookupEntry(GetPlayer()->GetAreaId())->IsSanctuary();
@@ -426,7 +426,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ
&& GetPlayer()->isAFK(); && GetPlayer()->isAFK();
/// TODO: Possibly add RBAC permission to log out in combat /// TODO: Possibly add RBAC permission to log out in combat
bool canLogoutInCombat = GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); bool canLogoutInCombat = GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING);
uint32 reason = 0; uint32 reason = 0;
if (GetPlayer()->IsInCombat() && !canLogoutInCombat) if (GetPlayer()->IsInCombat() && !canLogoutInCombat)
@@ -501,7 +501,7 @@ void WorldSession::HandleTogglePvP(WorldPacket& recv_data)
else else
GetPlayer()->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP); GetPlayer()->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP);
if (GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP)) if (GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
GetPlayer()->UpdatePvP(true, true); GetPlayer()->UpdatePvP(true, true);
else if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP()) // pussywizard: in pvp mode, but doesn't want to be and not in hostile territory, so start timer else if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP()) // pussywizard: in pvp mode, but doesn't want to be and not in hostile territory, so start timer
GetPlayer()->UpdatePvP(true, false); GetPlayer()->UpdatePvP(true, false);
@@ -645,7 +645,7 @@ void WorldSession::HandleReclaimCorpseOpcode(WorldPacket& recv_data)
return; return;
// body not released yet // body not released yet
if (!_player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) if (!_player->HasPlayerFlag(PLAYER_FLAGS_GHOST))
return; return;
Corpse* corpse = _player->GetCorpse(); Corpse* corpse = _player->GetCorpse();
@@ -1549,7 +1549,7 @@ void WorldSession::HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data)
uint8 mode; uint8 mode;
recv_data >> mode; recv_data >> mode;
mode ? _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_TAXI_BENCHMARK) : _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_TAXI_BENCHMARK); mode ? _player->SetPlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK) : _player->RemovePlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK);
LOG_DEBUG("network", "Client used \"/timetest {}\" command", mode); LOG_DEBUG("network", "Client used \"/timetest {}\" command", mode);
} }
+4 -4
View File
@@ -237,7 +237,7 @@ void WorldSession::HandleMoveWorldportAck()
GetPlayer()->CastSpell(GetPlayer(), 2479, true); GetPlayer()->CastSpell(GetPlayer(), 2479, true);
// in friendly area // in friendly area
else if (GetPlayer()->IsPvP() && !GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP)) else if (GetPlayer()->IsPvP() && !GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
GetPlayer()->UpdatePvP(false, false); GetPlayer()->UpdatePvP(false, false);
// resummon pet // resummon pet
@@ -297,7 +297,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData)
plMover->CastSpell(plMover, 2479, true); plMover->CastSpell(plMover, 2479, true);
// in friendly area // in friendly area
else if (plMover->IsPvP() && !plMover->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP)) else if (plMover->IsPvP() && !plMover->HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
plMover->UpdatePvP(false, false); plMover->UpdatePvP(false, false);
} }
} }
@@ -570,13 +570,13 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData)
{ {
if (plrMover->IsAlive()) if (plrMover->IsAlive())
{ {
plrMover->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_IS_OUT_OF_BOUNDS); plrMover->SetPlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS);
plrMover->EnvironmentalDamage(DAMAGE_FALL_TO_VOID, GetPlayer()->GetMaxHealth()); plrMover->EnvironmentalDamage(DAMAGE_FALL_TO_VOID, GetPlayer()->GetMaxHealth());
// player can be alive if GM // player can be alive if GM
if (plrMover->IsAlive()) if (plrMover->IsAlive())
plrMover->KillPlayer(); plrMover->KillPlayer();
} }
else if (!plrMover->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IS_OUT_OF_BOUNDS)) else if (!plrMover->HasPlayerFlag(PLAYER_FLAGS_IS_OUT_OF_BOUNDS))
{ {
GraveyardStruct const* grave = sGraveyard->GetClosestGraveyard(plrMover, plrMover->GetTeamId()); GraveyardStruct const* grave = sGraveyard->GetClosestGraveyard(plrMover, plrMover->GetTeamId());
if (grave) if (grave)
+2 -2
View File
@@ -286,11 +286,11 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData)
} }
// xinef: check if we have ANY npc flags // xinef: check if we have ANY npc flags
if (unit->GetUInt32Value(UNIT_NPC_FLAGS) == UNIT_NPC_FLAG_NONE) if (unit->GetNpcFlags() == UNIT_NPC_FLAG_NONE)
return; return;
// xinef: do not allow to open gossip when npc is in combat // xinef: do not allow to open gossip when npc is in combat
if (unit->GetUInt32Value(UNIT_NPC_FLAGS) == UNIT_NPC_FLAG_GOSSIP && unit->IsInCombat()) // should work on all flags? if (unit->GetNpcFlags() == UNIT_NPC_FLAG_GOSSIP && unit->IsInCombat()) // should work on all flags?
return; return;
// set faction visible if needed // set faction visible if needed
+2 -2
View File
@@ -689,9 +689,9 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPacket& recvData)
// Display items in visible slots // Display items in visible slots
for (EquipmentSlots const* itr = &itemSlots[0]; *itr != EQUIPMENT_SLOT_END; ++itr) for (EquipmentSlots const* itr = &itemSlots[0]; *itr != EQUIPMENT_SLOT_END; ++itr)
{ {
if (*itr == EQUIPMENT_SLOT_HEAD && player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM)) if (*itr == EQUIPMENT_SLOT_HEAD && player->HasPlayerFlag(PLAYER_FLAGS_HIDE_HELM))
data << uint32(0); data << uint32(0);
else if (*itr == EQUIPMENT_SLOT_BACK && player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK)) else if (*itr == EQUIPMENT_SLOT_BACK && player->HasPlayerFlag(PLAYER_FLAGS_HIDE_CLOAK))
data << uint32(0); data << uint32(0);
else if (Item const* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, *itr)) else if (Item const* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, *itr))
{ {
@@ -328,7 +328,7 @@ void FlightPathMovementGenerator::DoFinalize(Player* player)
player->SetFallInformation(GameTime::GetGameTime().count(), player->GetPositionZ()); player->SetFallInformation(GameTime::GetGameTime().count(), player->GetPositionZ());
} }
player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_TAXI_BENCHMARK); player->RemovePlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK);
} }
#define PLAYER_FLIGHT_SPEED 32.0f #define PLAYER_FLIGHT_SPEED 32.0f
@@ -1764,7 +1764,7 @@ void AuraEffect::HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool
if (apply) if (apply)
{ {
target->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST); target->ToPlayer()->SetPlayerFlag(PLAYER_FLAGS_GHOST);
target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST);
target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST);
} }
@@ -1773,7 +1773,7 @@ void AuraEffect::HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool
if (target->HasAuraType(SPELL_AURA_GHOST)) if (target->HasAuraType(SPELL_AURA_GHOST))
return; return;
target->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST); target->ToPlayer()->RemovePlayerFlag(PLAYER_FLAGS_GHOST);
target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); target->m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE);
target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); target->m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE);
} }
@@ -2671,13 +2671,13 @@ void AuraEffect::HandleAuraAllowOnlyAbility(AuraApplication const* aurApp, uint8
if (target->GetTypeId() == TYPEID_PLAYER) if (target->GetTypeId() == TYPEID_PLAYER)
{ {
if (apply) if (apply)
target->SetFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY); target->ToPlayer()->SetPlayerFlag(PLAYER_ALLOW_ONLY_ABILITY);
else else
{ {
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
if (target->HasAuraType(SPELL_AURA_ALLOW_ONLY_ABILITY)) if (target->HasAuraType(SPELL_AURA_ALLOW_ONLY_ABILITY))
return; return;
target->RemoveFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY); target->ToPlayer()->RemovePlayerFlag(PLAYER_ALLOW_ONLY_ABILITY);
} }
} }
} }
+1 -1
View File
@@ -5392,7 +5392,7 @@ SpellCastResult Spell::CheckCast(bool strict)
if (m_caster->GetTypeId() == TYPEID_PLAYER) if (m_caster->GetTypeId() == TYPEID_PLAYER)
{ {
//can cast triggered (by aura only?) spells while have this flag //can cast triggered (by aura only?) spells while have this flag
if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CASTER_AURASTATE) && m_caster->ToPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY)) if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CASTER_AURASTATE) && m_caster->ToPlayer()->HasPlayerFlag(PLAYER_ALLOW_ONLY_ABILITY))
return SPELL_FAILED_SPELL_IN_PROGRESS; return SPELL_FAILED_SPELL_IN_PROGRESS;
if (!(_triggeredCastFlags & TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD) && m_caster->ToPlayer()->HasSpellCooldown(m_spellInfo->Id)) if (!(_triggeredCastFlags & TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD) && m_caster->ToPlayer()->HasSpellCooldown(m_spellInfo->Id))
+2 -2
View File
@@ -2412,7 +2412,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
return; return;
summon->SelectLevel(); // some summoned creaters have different from 1 DB data for level/hp summon->SelectLevel(); // some summoned creaters have different from 1 DB data for level/hp
summon->SetUInt32Value(UNIT_NPC_FLAGS, summon->GetCreatureTemplate()->npcflag); summon->ReplaceAllNpcFlags(NPCFlags(summon->GetCreatureTemplate()->npcflag));
summon->ReplaceAllUnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); summon->ReplaceAllUnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
summon->SetReactState(REACT_PASSIVE); summon->SetReactState(REACT_PASSIVE);
@@ -4230,7 +4230,7 @@ void Spell::EffectStuck(SpellEffIndex /*effIndex*/)
return; return;
// xinef: player is in corpse // xinef: player is in corpse
if (!target->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) if (!target->HasPlayerFlag(PLAYER_FLAGS_GHOST))
target->BuildPlayerRepop(); target->BuildPlayerRepop();
target->RepopAtGraveyard(); target->RepopAtGraveyard();
return; return;
@@ -4252,6 +4252,8 @@ void SpellMgr::LoadSpellInfoCorrections()
ApplySpellFix({ 20038 }, [](SpellInfo* spellInfo) ApplySpellFix({ 20038 }, [](SpellInfo* spellInfo)
{ {
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_50000_YARDS); spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_50000_YARDS);
spellInfo->Attributes |= SPELL_ATTR0_NO_IMMUNITIES;
spellInfo->AttributesEx2 |= SPELL_ATTR2_IGNORE_LINE_OF_SIGHT;
}); });
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
+5 -5
View File
@@ -266,7 +266,7 @@ public:
{ {
uint32 factionid = target->GetFaction(); uint32 factionid = target->GetFaction();
uint32 flag = target->GetUnitFlags(); uint32 flag = target->GetUnitFlags();
uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS); uint32 npcflag = target->GetNpcFlags();
uint32 dyflag = target->GetDynamicFlags(); uint32 dyflag = target->GetDynamicFlags();
handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag); handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag);
return true; return true;
@@ -274,7 +274,7 @@ public:
uint32 factionid = factionID.value(); uint32 factionid = factionID.value();
UnitFlags flag; UnitFlags flag;
uint32 npcflag; NPCFlags npcflag;
uint32 dyflag; uint32 dyflag;
auto pflag = flagID; auto pflag = flagID;
@@ -285,9 +285,9 @@ public:
auto pnpcflag = npcFlagID; auto pnpcflag = npcFlagID;
if (!pnpcflag) if (!pnpcflag)
npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS); npcflag = target->GetNpcFlags();
else else
npcflag = *npcFlagID; npcflag = NPCFlags(*npcFlagID);
auto pdyflag = dynamicFlagID; auto pdyflag = dynamicFlagID;
if (!pdyflag) if (!pdyflag)
@@ -306,7 +306,7 @@ public:
target->SetFaction(factionid); target->SetFaction(factionid);
target->ReplaceAllUnitFlags(flag); target->ReplaceAllUnitFlags(flag);
target->SetUInt32Value(UNIT_NPC_FLAGS, npcflag); target->ReplaceAllNpcFlags(npcflag);
target->ReplaceAllDynamicFlags(dyflag); target->ReplaceAllDynamicFlags(dyflag);
return true; return true;
+2 -2
View File
@@ -524,7 +524,7 @@ public:
return false; return false;
} }
creature->SetUInt32Value(UNIT_NPC_FLAGS, NPCFlags(npcFlags)); creature->ReplaceAllNpcFlags(NPCFlags(npcFlags));
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_NPCFLAG); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_NPCFLAG);
@@ -589,7 +589,7 @@ public:
CreatureTemplate const* cInfo = target->GetCreatureTemplate(); CreatureTemplate const* cInfo = target->GetCreatureTemplate();
uint32 faction = target->GetFaction(); uint32 faction = target->GetFaction();
uint32 npcflags = target->GetUInt32Value(UNIT_NPC_FLAGS); uint32 npcflags = target->GetNpcFlags();
uint32 mechanicImmuneMask = cInfo->MechanicImmuneMask; uint32 mechanicImmuneMask = cInfo->MechanicImmuneMask;
uint32 spellSchoolImmuneMask = cInfo->SpellSchoolImmuneMask; uint32 spellSchoolImmuneMask = cInfo->SpellSchoolImmuneMask;
uint32 displayid = target->GetDisplayId(); uint32 displayid = target->GetDisplayId();
@@ -136,7 +136,7 @@ public:
break; break;
case GOSSIP_ACTION_INFO_DEF+2: case GOSSIP_ACTION_INFO_DEF+2:
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
// Start encounter // Start encounter
InstanceScript* instance = creature->GetInstanceScript(); InstanceScript* instance = creature->GetInstanceScript();
if (instance) if (instance)
@@ -183,11 +183,11 @@ public:
if (instance->GetData(TYPE_TOMB_OF_SEVEN) == DONE) // what is this trying to do? Probably some kind of crash recovery if (instance->GetData(TYPE_TOMB_OF_SEVEN) == DONE) // what is this trying to do? Probably some kind of crash recovery
{ {
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
} }
else else
{ {
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP);
} }
} }
@@ -220,7 +220,7 @@ class go_suppression_device : public GameObjectScript
if (me->GetGoState() == GO_STATE_ACTIVE) if (me->GetGoState() == GO_STATE_ACTIVE)
me->SetGoState(GO_STATE_READY); me->SetGoState(GO_STATE_READY);
me->SetLootState(GO_READY); me->SetLootState(GO_READY);
me->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); me->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
_events.ScheduleEvent(EVENT_SUPPRESSION_CAST, 5000); _events.ScheduleEvent(EVENT_SUPPRESSION_CAST, 5000);
me->Respawn(); me->Respawn();
} }
@@ -231,7 +231,7 @@ class go_suppression_device : public GameObjectScript
return; return;
_active = false; _active = false;
me->SetGoState(GO_STATE_ACTIVE); me->SetGoState(GO_STATE_ACTIVE);
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
_events.CancelEvent(EVENT_SUPPRESSION_CAST); _events.CancelEvent(EVENT_SUPPRESSION_CAST);
} }
@@ -343,7 +343,7 @@ class go_chromaggus_lever : public GameObjectScript
_instance->HandleGameObject(ObjectGuid::Empty, true, go); _instance->HandleGameObject(ObjectGuid::Empty, true, go);
} }
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE); me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE);
me->SetGoState(GO_STATE_ACTIVE); me->SetGoState(GO_STATE_ACTIVE);
} }
@@ -256,7 +256,7 @@ public:
me->SetVisible(true); me->SetVisible(true);
me->SetPhaseMask(1, true); me->SetPhaseMask(1, true);
me->SetUInt32Value(UNIT_NPC_FLAGS, 1); me->ReplaceAllNpcFlags(NPCFlags(1));
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR); me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR);
me->RemoveAura(SPELL_NEFARIANS_BARRIER); me->RemoveAura(SPELL_NEFARIANS_BARRIER);
@@ -472,7 +472,7 @@ public:
Talk(SAY_GAMESBEGIN_1); Talk(SAY_GAMESBEGIN_1);
events.ScheduleEvent(EVENT_START_EVENT, 4000); events.ScheduleEvent(EVENT_START_EVENT, 4000);
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK); me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
me->SetUInt32Value(UNIT_NPC_FLAGS, 0); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
me->SetStandState(UNIT_STAND_STATE_STAND); me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE); me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
// Due to Nefarius despawning himself on Vael, we need to update the guid on instance to prevent unwanted behaviours as encounter not resetting at all. // Due to Nefarius despawning himself on Vael, we need to update the guid on instance to prevent unwanted behaviours as encounter not resetting at all.
@@ -79,7 +79,6 @@ public:
void Reset() override void Reset() override
{ {
_Reset(); _Reset();
_died = false;
_charmerGUID.Clear(); _charmerGUID.Clear();
secondPhase = false; secondPhase = false;
summons.DespawnAll(); summons.DespawnAll();
@@ -92,11 +91,23 @@ public:
{ {
_JustDied(); _JustDied();
} }
else
{
// Respawn shorty in case of failure during phase 1.
me->SetCorpseRemoveTime(25);
me->SetRespawnTime(30);
me->SaveRespawnTime();
// Might not be required, safe measure.
me->SetLootRecipient(nullptr);
instance->SetData(DATA_EGG_EVENT, FAIL);
}
} }
bool CanAIAttack(Unit const* target) const override bool CanAIAttack(Unit const* target) const override
{ {
return !(target->GetTypeId() == TYPEID_UNIT && !secondPhase); return !(target->GetTypeId() == TYPEID_UNIT && !secondPhase) && !target->HasAura(SPELL_CONFLAGRATION);
} }
void EnterCombat(Unit* /*victim*/) override void EnterCombat(Unit* /*victim*/) override
@@ -191,24 +202,11 @@ public:
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
{ {
if (!secondPhase && damage >= me->GetHealth() && !_died) if (!secondPhase && damage >= me->GetHealth())
{ {
// This is required because he kills himself with the explosion spell, causing a loop.
_died = true;
Talk(SAY_DEATH); Talk(SAY_DEATH);
DoCastAOE(SPELL_EXPLODE_ORB); DoCastAOE(SPELL_EXPLODE_ORB);
DoCastAOE(SPELL_EXPLOSION); DoCastAOE(SPELL_EXPLOSION);
// Respawn shorty in case of failure during phase 1.
me->SetCorpseRemoveTime(25);
me->SetRespawnTime(30);
me->SaveRespawnTime();
// Might not be required, safe measure.
me->SetLootRecipient(nullptr);
instance->SetData(DATA_EGG_EVENT, FAIL);
} }
} }
@@ -256,7 +254,6 @@ public:
private: private:
bool secondPhase; bool secondPhase;
bool _died;
ObjectGuid _charmerGUID; ObjectGuid _charmerGUID;
GuidVector _summonGUIDS; GuidVector _summonGUIDS;
}; };
@@ -89,8 +89,8 @@ public:
HasYelled = false; HasYelled = false;
_introDone = false; _introDone = false;
_burningAdrenalineCast = 0; _burningAdrenalineCast = 0;
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
} }
@@ -132,7 +132,7 @@ public:
void BeginSpeech(Unit* target) void BeginSpeech(Unit* target)
{ {
PlayerGUID = target->GetGUID(); PlayerGUID = target->GetGUID();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
_eventsIntro.ScheduleEvent(EVENT_SPEECH_1, 1000); _eventsIntro.ScheduleEvent(EVENT_SPEECH_1, 1000);
} }
@@ -169,7 +169,7 @@ public:
case GO_PORTCULLIS_CHROMAGGUS: case GO_PORTCULLIS_CHROMAGGUS:
AddDoor(go, true); AddDoor(go, true);
chromaggusDoorGUID = go->GetGUID(); chromaggusDoorGUID = go->GetGUID();
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
default: default:
break; break;
@@ -181,7 +181,7 @@ public:
{ {
events.SetPhase(PHASE_NONE); events.SetPhase(PHASE_NONE);
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC); me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetFaction(FACTION_MAJORDOMO_FRIENDLY); me->SetFaction(FACTION_MAJORDOMO_FRIENDLY);
} }
} }
@@ -504,7 +504,7 @@ public:
{ {
if (events.IsInPhase(PHASE_DEFEAT_OUTRO) && spellInfo->Id == SPELL_TELEPORT_SELF) if (events.IsInPhase(PHASE_DEFEAT_OUTRO) && spellInfo->Id == SPELL_TELEPORT_SELF)
{ {
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetHomePosition(MajordomoRagnaros); me->SetHomePosition(MajordomoRagnaros);
me->NearTeleportTo(MajordomoRagnaros.GetPositionX(), MajordomoRagnaros.GetPositionY(), MajordomoRagnaros.GetPositionZ(), MajordomoRagnaros.GetOrientation()); me->NearTeleportTo(MajordomoRagnaros.GetPositionX(), MajordomoRagnaros.GetPositionY(), MajordomoRagnaros.GetPositionZ(), MajordomoRagnaros.GetOrientation());
events.SetPhase(PHASE_NONE); events.SetPhase(PHASE_NONE);
@@ -558,7 +558,7 @@ public:
case GOSSIP_ACTION_INFO_DEF+3: case GOSSIP_ACTION_INFO_DEF+3:
{ {
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
creature->AI()->Talk(SAY_RAG_SUM_1, player); creature->AI()->Talk(SAY_RAG_SUM_1, player);
creature->AI()->DoAction(ACTION_START_RAGNAROS_INTRO); creature->AI()->DoAction(ACTION_START_RAGNAROS_INTRO);
break; break;
@@ -143,7 +143,7 @@ public:
HandleGameObject(m_uiStageDoorLeftGUID, true); HandleGameObject(m_uiStageDoorLeftGUID, true);
HandleGameObject(m_uiStageDoorRightGUID, true); HandleGameObject(m_uiStageDoorRightGUID, true);
if (GameObject* sideEntrance = instance->GetGameObject(m_uiSideEntranceDoor)) if (GameObject* sideEntrance = instance->GetGameObject(m_uiSideEntranceDoor))
sideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); sideEntrance->RemoveGameObjectFlag(GO_FLAG_LOCKED);
instance->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, 16812, nullptr); instance->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, 16812, nullptr);
} }
break; break;
@@ -187,9 +187,9 @@ public:
case GO_MASSIVE_DOOR: case GO_MASSIVE_DOOR:
m_uiMassiveDoor = go->GetGUID(); m_uiMassiveDoor = go->GetGUID();
if (GetBossState(DATA_ARAN) != IN_PROGRESS) if (GetBossState(DATA_ARAN) != IN_PROGRESS)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); go->SetGameObjectFlag(GO_FLAG_LOCKED);
else else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); go->RemoveGameObjectFlag(GO_FLAG_LOCKED);
break; break;
case GO_GAMESMAN_HALL_DOOR: case GO_GAMESMAN_HALL_DOOR:
m_uiGamesmansDoor = go->GetGUID(); m_uiGamesmansDoor = go->GetGUID();
@@ -200,9 +200,9 @@ public:
case GO_NETHERSPACE_DOOR: case GO_NETHERSPACE_DOOR:
m_uiNetherspaceDoor = go->GetGUID(); m_uiNetherspaceDoor = go->GetGUID();
if (GetBossState(DATA_PRINCE) != IN_PROGRESS) if (GetBossState(DATA_PRINCE) != IN_PROGRESS)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); go->SetGameObjectFlag(GO_FLAG_LOCKED);
else else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); go->RemoveGameObjectFlag(GO_FLAG_LOCKED);
break; break;
case GO_MASTERS_TERRACE_DOOR: case GO_MASTERS_TERRACE_DOOR:
MastersTerraceDoor[0] = go->GetGUID(); MastersTerraceDoor[0] = go->GetGUID();
@@ -213,9 +213,9 @@ public:
case GO_SIDE_ENTRANCE_DOOR: case GO_SIDE_ENTRANCE_DOOR:
m_uiSideEntranceDoor = go->GetGUID(); m_uiSideEntranceDoor = go->GetGUID();
if (GetBossState(DATA_OPERA_PERFORMANCE) == DONE) if (GetBossState(DATA_OPERA_PERFORMANCE) == DONE)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); go->SetGameObjectFlag(GO_FLAG_LOCKED);
else else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); go->RemoveGameObjectFlag(GO_FLAG_LOCKED);
break; break;
case GO_DUST_COVERED_CHEST: case GO_DUST_COVERED_CHEST:
DustCoveredChest = go->GetGUID(); DustCoveredChest = go->GetGUID();
@@ -89,7 +89,7 @@ public:
HandleGameObject(KaelDoorGUID, data != IN_PROGRESS); HandleGameObject(KaelDoorGUID, data != IN_PROGRESS);
if (data == DONE) if (data == DONE)
if (GameObject* escapeOrb = instance->GetGameObject(EscapeOrbGUID)) if (GameObject* escapeOrb = instance->GetGameObject(EscapeOrbGUID))
escapeOrb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); escapeOrb->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
Encounter[identifier] = data; Encounter[identifier] = data;
break; break;
} }
@@ -144,7 +144,7 @@ public:
break; break;
case GO_ESCAPE_ORB: case GO_ESCAPE_ORB:
if (GetData(DATA_KAELTHAS_EVENT) == DONE) if (GetData(DATA_KAELTHAS_EVENT) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
EscapeOrbGUID = go->GetGUID(); EscapeOrbGUID = go->GetGUID();
break; break;
} }
@@ -547,7 +547,7 @@ public:
summons.DespawnAll(); summons.DespawnAll();
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
me->SetStandState(UNIT_STAND_STATE_STAND); me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetVisible(true); me->SetVisible(true);
me->setActive(true); me->setActive(true);
@@ -623,7 +623,7 @@ public:
break; break;
case EVENT_START_COUNTDOWN_5: case EVENT_START_COUNTDOWN_5:
battleStarted = ENCOUNTER_STATE_FIGHT; battleStarted = ENCOUNTER_STATE_FIGHT;
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
Talk(SAY_LIGHT_OF_DAWN04); // Wrong order in DB! Talk(SAY_LIGHT_OF_DAWN04); // Wrong order in DB!
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 0); SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 0);
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_ENABLE, 0); SendUpdateWorldState(WORLD_STATE_COUNTDOWN_ENABLE, 0);
@@ -1131,7 +1131,7 @@ public:
if (i->GetSource()->IsAlive() && me->IsWithinDistInMap(i->GetSource(), 100)) if (i->GetSource()->IsAlive() && me->IsWithinDistInMap(i->GetSource(), 100))
i->GetSource()->CastSpell(i->GetSource(), SPELL_THE_LIGHT_OF_DAWN_Q, false); i->GetSource()->CastSpell(i->GetSource(), SPELL_THE_LIGHT_OF_DAWN_Q, false);
} }
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
break; break;
} }
case EVENT_OUTRO_SCENE_61: case EVENT_OUTRO_SCENE_61:
@@ -781,7 +781,7 @@ public:
if (player->HasAura(AURA_ASHBRINGER) && !SayAshbringer) if (player->HasAura(AURA_ASHBRINGER) && !SayAshbringer)
{ {
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetSheath(SHEATH_STATE_UNARMED); me->SetSheath(SHEATH_STATE_UNARMED);
me->CastSpell(me, 57767, true); me->CastSpell(me, 57767, true);
me->SetDisplayId(16179); me->SetDisplayId(16179);
@@ -97,7 +97,7 @@ public:
{ {
if (menuId == GOSSIP_MENU_HUMMEL && gossipListId == GOSSIP_OPTION_START) if (menuId == GOSSIP_MENU_HUMMEL && gossipListId == GOSSIP_OPTION_START)
{ {
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
DoAction(ACTION_START_EVENT); DoAction(ACTION_START_EVENT);
} }
@@ -112,7 +112,7 @@ public:
summons.DespawnAll(); summons.DespawnAll();
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->SummonCreatureGroup(1); me->SummonCreatureGroup(1);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
void JustSummoned(Creature* summon) override void JustSummoned(Creature* summon) override
@@ -84,7 +84,7 @@ public:
if (gameobject->GetEntry() < GO_ATALAI_STATUE1 + _statuePhase) if (gameobject->GetEntry() < GO_ATALAI_STATUE1 + _statuePhase)
{ {
instance->SummonGameObject(GO_ATALAI_LIGHT2, gameobject->GetPositionX(), gameobject->GetPositionY(), gameobject->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); instance->SummonGameObject(GO_ATALAI_LIGHT2, gameobject->GetPositionX(), gameobject->GetPositionY(), gameobject->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
gameobject->SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->ReplaceAllGameObjectFlags(GO_FLAG_NOT_SELECTABLE);
} }
break; break;
case GO_ATALAI_IDOL: case GO_ATALAI_IDOL:
@@ -93,7 +93,7 @@ public:
break; break;
case GO_IDOL_OF_HAKKAR: case GO_IDOL_OF_HAKKAR:
if (_encounters[TYPE_ATAL_ALARION] == DONE) if (_encounters[TYPE_ATAL_ALARION] == DONE)
gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case GO_FORCEFIELD: case GO_FORCEFIELD:
_forcefieldGUID = gameobject->GetGUID(); _forcefieldGUID = gameobject->GetGUID();
@@ -184,7 +184,7 @@ public:
{ {
for (uint8 i = 0; i < 4; ++i) for (uint8 i = 0; i < 4; ++i)
if (GameObject* orb = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 + i))) if (GameObject* orb = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 + i)))
orb->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); orb->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
} }
void Reset() override void Reset() override
@@ -643,9 +643,9 @@ public:
{ {
if (GameObject* orb = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 + i))) if (GameObject* orb = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 + i)))
{ {
if (orb->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE)) if (orb->HasGameObjectFlag(GO_FLAG_NOT_SELECTABLE))
{ {
orb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); orb->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
if (Creature* trigger = me->SummonTrigger(orb->GetPositionX(), orb->GetPositionY(), orb->GetPositionZ(), 0, 10 * MINUTE * IN_MILLISECONDS)) if (Creature* trigger = me->SummonTrigger(orb->GetPositionX(), orb->GetPositionY(), orb->GetPositionZ(), 0, 10 * MINUTE * IN_MILLISECONDS))
{ {
trigger->CastSpell(trigger, SPELL_RING_OF_BLUE_FLAMES, true, nullptr, nullptr, trigger->GetGUID()); trigger->CastSpell(trigger, SPELL_RING_OF_BLUE_FLAMES, true, nullptr, nullptr, trigger->GetGUID());
@@ -55,7 +55,7 @@ public:
if (_encounters[DATA_IRONAYA_DOORS] == DONE) if (_encounters[DATA_IRONAYA_DOORS] == DONE)
{ {
HandleGameObject(ObjectGuid::Empty, true, gameobject); HandleGameObject(ObjectGuid::Empty, true, gameobject);
gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
} }
break; break;
case GO_TEMPLE_DOOR: case GO_TEMPLE_DOOR:
@@ -195,7 +195,7 @@ public:
if (Unit* Hostage = i_pl->SummonCreature(HostageInfo[num].npc, HostageInfo[num].x, HostageInfo[num].y, HostageInfo[num].z, HostageInfo[num].o, TEMPSUMMON_DEAD_DESPAWN, 0)) if (Unit* Hostage = i_pl->SummonCreature(HostageInfo[num].npc, HostageInfo[num].x, HostageInfo[num].y, HostageInfo[num].z, HostageInfo[num].o, TEMPSUMMON_DEAD_DESPAWN, 0))
{ {
Hostage->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); Hostage->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
Hostage->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); Hostage->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
} }
} }
@@ -503,10 +503,10 @@ public:
if (action == GOSSIP_ACTION_INFO_DEF + 1) if (action == GOSSIP_ACTION_INFO_DEF + 1)
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
InstanceScript* instance = creature->GetInstanceScript(); InstanceScript* instance = creature->GetInstanceScript();
if (instance) if (instance)
@@ -626,7 +626,7 @@ public:
{ {
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
me->SetFacingToObject(player); me->SetFacingToObject(player);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_HARRISON_0); Talk(SAY_HARRISON_0);
_gongEvent = GONG_EVENT_1; _gongEvent = GONG_EVENT_1;
_gongTimer = 4000; _gongTimer = 4000;
@@ -671,14 +671,14 @@ public:
break; break;
case GONG_EVENT_3: case GONG_EVENT_3:
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetGuidData(GO_STRANGE_GONG))) if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetGuidData(GO_STRANGE_GONG)))
gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gong->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
_gongEvent = GONG_EVENT_4; _gongEvent = GONG_EVENT_4;
_gongTimer = 105000; _gongTimer = 105000;
break; break;
case GONG_EVENT_4: case GONG_EVENT_4:
me->RemoveAura(SPELL_BANGING_THE_GONG); me->RemoveAura(SPELL_BANGING_THE_GONG);
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetGuidData(GO_STRANGE_GONG))) if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetGuidData(GO_STRANGE_GONG)))
gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gong->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
// trigger or gong will need to be scripted to set IN_PROGRESS after enough hits. // trigger or gong will need to be scripted to set IN_PROGRESS after enough hits.
// This is temp workaround. // This is temp workaround.
@@ -763,7 +763,7 @@ public:
_gongTimer = 6000; _gongTimer = 6000;
break; break;
case GONG_EVENT_11: case GONG_EVENT_11:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
instance->SetData(DATA_GONGEVENT, NOT_STARTED); instance->SetData(DATA_GONGEVENT, NOT_STARTED);
_gongEvent = 0; _gongEvent = 0;
@@ -154,7 +154,7 @@ public:
{ {
BossAI::EnterEvadeMode(); BossAI::EnterEvadeMode();
if (GameObject* object = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_GONG_OF_BETHEKK))) if (GameObject* object = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_GONG_OF_BETHEKK)))
object->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); object->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
me->DespawnOrUnsummon(4000); me->DespawnOrUnsummon(4000);
} }
@@ -428,7 +428,7 @@ public:
{ {
if (go->GetInstanceScript() && !go->FindNearestCreature(NPC_ARLOKK, 25.0f)) if (go->GetInstanceScript() && !go->FindNearestCreature(NPC_ARLOKK, 25.0f))
{ {
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
go->SendCustomAnim(0); go->SendCustomAnim(0);
go->SummonCreature(NPC_ARLOKK, PosSummonArlokk[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 600000); go->SummonCreature(NPC_ARLOKK, PosSummonArlokk[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 600000);
} }
@@ -83,9 +83,9 @@ public:
case GO_GONG_OF_BETHEKK: case GO_GONG_OF_BETHEKK:
_goGongOfBethekkGUID = go->GetGUID(); _goGongOfBethekkGUID = go->GetGUID();
if (GetBossState(DATA_ARLOKK) == DONE) if (GetBossState(DATA_ARLOKK) == DONE)
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
else else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
default: default:
break; break;
@@ -102,7 +102,7 @@ public:
_playerGUID.Clear(); _playerGUID.Clear();
events.Reset(); events.Reset();
summons.DespawnAll(); summons.DespawnAll();
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
} }
void SetData(uint32 faction, uint32) override void SetData(uint32 faction, uint32) override
@@ -113,7 +113,7 @@ public:
void SetGUID(ObjectGuid guid, int32) override void SetGUID(ObjectGuid guid, int32) override
{ {
_playerGUID = guid; _playerGUID = guid;
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
events.Reset(); events.Reset();
summons.DespawnAll(); summons.DespawnAll();
@@ -146,7 +146,7 @@ public:
morlenGUID.Clear(); morlenGUID.Clear();
summons.DespawnAll(); summons.DespawnAll();
if (Creature* c = me->FindNearestCreature(NPC_THALORIEN_REMAINS, 100.0f, true)) if (Creature* c = me->FindNearestCreature(NPC_THALORIEN_REMAINS, 100.0f, true))
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.Reset(); events.Reset();
events.ScheduleEvent(EVENT_CHECK_PLAYER, 5000); events.ScheduleEvent(EVENT_CHECK_PLAYER, 5000);
events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0); events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0);
@@ -611,7 +611,7 @@ public:
if (Creature* c = me->FindNearestCreature(NPC_SUNWELL_VISUAL_BUNNY, 60.0f, true)) if (Creature* c = me->FindNearestCreature(NPC_SUNWELL_VISUAL_BUNNY, 60.0f, true))
c->DespawnOrUnsummon(1); c->DespawnOrUnsummon(1);
if (GameObject* go = me->FindNearestGameObject(GO_QUEL_DELAR, 60.0f)) if (GameObject* go = me->FindNearestGameObject(GO_QUEL_DELAR, 60.0f))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
me->SetWalk(true); me->SetWalk(true);
if (me->GetCreatureData()) if (me->GetCreatureData())
me->GetMotionMaster()->MovePoint(0, me->GetCreatureData()->posX, me->GetCreatureData()->posY, me->GetCreatureData()->posZ); me->GetMotionMaster()->MovePoint(0, me->GetCreatureData()->posX, me->GetCreatureData()->posY, me->GetCreatureData()->posZ);
@@ -1031,7 +1031,7 @@ public:
{ {
me->SetCorpseDelay(1); me->SetCorpseDelay(1);
me->SetRespawnTime(1); me->SetRespawnTime(1);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
bStepping = false; bStepping = false;
step = 0; step = 0;
@@ -2376,7 +2376,7 @@ public:
me->Mount(MODEL_WHITE_WULF); me->Mount(MODEL_WHITE_WULF);
me->SetCorpseDelay(1); me->SetCorpseDelay(1);
me->SetRespawnTime(1); me->SetRespawnTime(1);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true); me->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
bStepping = false; bStepping = false;
@@ -3899,8 +3899,8 @@ public:
JumpToNextStep(5 * IN_MILLISECONDS); JumpToNextStep(5 * IN_MILLISECONDS);
break; break;
case 163: case 163:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
Talk(THRALL_SAY_THRONE_11); Talk(THRALL_SAY_THRONE_11);
UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_FIGHT_H, 0); UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_FIGHT_H, 0);
UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_FIGHT_H, 0); UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_FIGHT_H, 0);
@@ -141,7 +141,7 @@ public:
case 17: case 17:
SetEscortPaused(true); SetEscortPaused(true);
player->GroupEventHappens(QUEST_TOME_VALOR, me); player->GroupEventHappens(QUEST_TOME_VALOR, me);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->DespawnOrUnsummon(1s, 1s); me->DespawnOrUnsummon(1s, 1s);
break; break;
} }
@@ -72,17 +72,17 @@ public:
case GO_FIRE_OF_AKU_MAI_4: case GO_FIRE_OF_AKU_MAI_4:
if (_encounters[TYPE_AKU_MAI_EVENT] == DONE) if (_encounters[TYPE_AKU_MAI_EVENT] == DONE)
{ {
gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); gameobject->SetGameObjectFlag(GO_FLAG_IN_USE);
gameobject->SetGoState(GO_STATE_ACTIVE); gameobject->SetGoState(GO_STATE_ACTIVE);
} }
break; break;
case GO_SHRINE_OF_GELIHAST: case GO_SHRINE_OF_GELIHAST:
if (_encounters[TYPE_GELIHAST] == DONE) if (_encounters[TYPE_GELIHAST] == DONE)
gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case GO_ALTAR_OF_THE_DEEPS: case GO_ALTAR_OF_THE_DEEPS:
if (_encounters[TYPE_AKU_MAI] == DONE) if (_encounters[TYPE_AKU_MAI] == DONE)
gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case GO_AKU_MAI_DOOR: case GO_AKU_MAI_DOOR:
if (IsFireEventDone() && _encounters[TYPE_AKU_MAI_EVENT] == DONE) if (IsFireEventDone() && _encounters[TYPE_AKU_MAI_EVENT] == DONE)
@@ -387,7 +387,7 @@ void hyjalAI::Reset()
Debug = false; Debug = false;
//Flags //Flags
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
//Initialize spells //Initialize spells
memset(Spells, 0, sizeof(Spell) * HYJAL_AI_MAX_SPELLS); memset(Spells, 0, sizeof(Spell) * HYJAL_AI_MAX_SPELLS);
@@ -587,7 +587,7 @@ void hyjalAI::StartEvent(Player* player)
CheckTimer = 5000; CheckTimer = 5000;
PlayerGUID = player->GetGUID(); PlayerGUID = player->GetGUID();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
instance->DoUpdateWorldState(WORLD_STATE_WAVES, 0); instance->DoUpdateWorldState(WORLD_STATE_WAVES, 0);
instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0); instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0);
@@ -619,7 +619,7 @@ void hyjalAI::Retreat()
Creature* JainaDummy = me->SummonCreature(JAINA, JainaDummySpawn[0][0], JainaDummySpawn[0][1], JainaDummySpawn[0][2], JainaDummySpawn[0][3], TEMPSUMMON_TIMED_DESPAWN, 60000); Creature* JainaDummy = me->SummonCreature(JAINA, JainaDummySpawn[0][0], JainaDummySpawn[0][1], JainaDummySpawn[0][2], JainaDummySpawn[0][3], TEMPSUMMON_TIMED_DESPAWN, 60000);
if (JainaDummy) if (JainaDummy)
{ {
JainaDummy->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); JainaDummy->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
CAST_AI(hyjalAI, JainaDummy->AI())->IsDummy = true; CAST_AI(hyjalAI, JainaDummy->AI())->IsDummy = true;
DummyGuid = JainaDummy->GetGUID(); DummyGuid = JainaDummy->GetGUID();
} }
@@ -629,7 +629,7 @@ void hyjalAI::Retreat()
} }
SpawnVeins(); SpawnVeins();
Overrun = true; Overrun = true;
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);//cant talk after overrun event started me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);//cant talk after overrun event started
} }
void hyjalAI::SpawnVeins() void hyjalAI::SpawnVeins()
@@ -823,7 +823,7 @@ void hyjalAI::UpdateAI(uint32 diff)
} }
EventBegun = false; EventBegun = false;
CheckTimer = 0; CheckTimer = 0;
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
BossGUID[i].Clear(); BossGUID[i].Clear();
instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0); // Reset world state for enemies to disable it instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0); // Reset world state for enemies to disable it
} }
@@ -292,13 +292,13 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{ {
if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{ {
switch (action) switch (action)
{ {
case GOSSIP_ACTION_INFO_DEF+1: case GOSSIP_ACTION_INFO_DEF+1:
creature->AI()->DoAction(ACTION_START_CITY); creature->AI()->DoAction(ACTION_START_CITY);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
break; break;
case GOSSIP_ACTION_INFO_DEF+2: case GOSSIP_ACTION_INFO_DEF+2:
@@ -309,24 +309,24 @@ public:
case GOSSIP_ACTION_INFO_DEF+3: case GOSSIP_ACTION_INFO_DEF+3:
// Start Town Hall part // Start Town Hall part
creature->AI()->DoAction(ACTION_START_TOWN_HALL); creature->AI()->DoAction(ACTION_START_TOWN_HALL);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
break; break;
case GOSSIP_ACTION_INFO_DEF+4: case GOSSIP_ACTION_INFO_DEF+4:
// After killing epoch // After killing epoch
creature->AI()->DoAction(ACTION_START_SECRET_PASSAGE); creature->AI()->DoAction(ACTION_START_SECRET_PASSAGE);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
creature->SetTarget(); creature->SetTarget();
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
break; break;
case GOSSIP_ACTION_INFO_DEF+5: case GOSSIP_ACTION_INFO_DEF+5:
creature->AI()->DoAction(ACTION_START_LAST_CITY); creature->AI()->DoAction(ACTION_START_LAST_CITY);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
break; break;
case GOSSIP_ACTION_INFO_DEF+6: case GOSSIP_ACTION_INFO_DEF+6:
creature->AI()->DoAction(ACTION_START_MALGANIS); creature->AI()->DoAction(ACTION_START_MALGANIS);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
break; break;
} }
@@ -509,7 +509,7 @@ public:
waveKillCount = 0; waveKillCount = 0;
timeRiftId = 0; timeRiftId = 0;
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
if (pInstance) if (pInstance)
{ {
@@ -543,7 +543,7 @@ public:
break; break;
// Reached City // Reached City
case 8: case 8:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
SetEscortPaused(true); SetEscortPaused(true);
if (pInstance) if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED_INTRO); pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED_INTRO);
@@ -577,7 +577,7 @@ public:
case 20: case 20:
if (pInstance) if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_REACHED_TOWN_HALL); pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_REACHED_TOWN_HALL);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
SetRun(false); SetRun(false);
SetEscortPaused(true); SetEscortPaused(true);
break; break;
@@ -628,7 +628,7 @@ public:
// Behind secred passage // Behind secred passage
case 45: case 45:
SetRun(true); SetRun(true);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
SetEscortPaused(true); SetEscortPaused(true);
if (pInstance) if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_LAST_CITY); pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_LAST_CITY);
@@ -650,7 +650,7 @@ public:
if (pInstance) if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_BEFORE_MALGANIS); pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_BEFORE_MALGANIS);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
SetEscortPaused(true); SetEscortPaused(true);
break; break;
// Infront of malganis // Infront of malganis
@@ -1123,7 +1123,7 @@ public:
if (pInstance) if (pInstance)
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_KILLED_EPOCH); pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_KILLED_EPOCH);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
eventInRun = false; eventInRun = false;
break; break;
case EVENT_ACTION_PHASE5: case EVENT_ACTION_PHASE5:
@@ -1258,7 +1258,7 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
{ {
case COS_PROGRESS_FINISHED_INTRO: case COS_PROGRESS_FINISHED_INTRO:
SetNextWaypoint(9, false); SetNextWaypoint(9, false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case COS_PROGRESS_FINISHED_CITY_INTRO: case COS_PROGRESS_FINISHED_CITY_INTRO:
case COS_PROGRESS_KILLED_MEATHOOK: case COS_PROGRESS_KILLED_MEATHOOK:
@@ -1285,19 +1285,19 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
break; break;
case COS_PROGRESS_REACHED_TOWN_HALL: case COS_PROGRESS_REACHED_TOWN_HALL:
SetNextWaypoint(21, false); SetNextWaypoint(21, false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case COS_PROGRESS_KILLED_EPOCH: case COS_PROGRESS_KILLED_EPOCH:
SetNextWaypoint(32, false); SetNextWaypoint(32, false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case COS_PROGRESS_LAST_CITY: case COS_PROGRESS_LAST_CITY:
SetNextWaypoint(46, false); SetNextWaypoint(46, false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case COS_PROGRESS_BEFORE_MALGANIS: case COS_PROGRESS_BEFORE_MALGANIS:
SetNextWaypoint(55, false); SetNextWaypoint(55, false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
} }
@@ -116,7 +116,7 @@ public:
{ {
case GO_BARREL: case GO_BARREL:
if (_encounterProgress >= ENCOUNTER_PROGRESS_BARRELS) if (_encounterProgress >= ENCOUNTER_PROGRESS_BARRELS)
gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case GO_PRISON_DOOR: case GO_PRISON_DOOR:
if (_encounterProgress >= ENCOUNTER_PROGRESS_THRALL_ARMORED) if (_encounterProgress >= ENCOUNTER_PROGRESS_THRALL_ARMORED)
@@ -162,7 +162,7 @@ public:
} }
case DATA_THRALL_ADD_FLAG: case DATA_THRALL_ADD_FLAG:
if (Creature* thrall = instance->GetCreature(_thrallGUID)) if (Creature* thrall = instance->GetCreature(_thrallGUID))
thrall->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); thrall->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
} }
} }
@@ -229,7 +229,7 @@ public:
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
creature->AI()->DoAction(instance->GetData(DATA_ESCORT_PROGRESS)); creature->AI()->DoAction(instance->GetData(DATA_ESCORT_PROGRESS));
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
return true; return true;
} }
@@ -365,7 +365,7 @@ public:
SetEscortPaused(true); SetEscortPaused(true);
SetRun(true); SetRun(true);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case 64: case 64:
SetRun(false); SetRun(false);
@@ -413,7 +413,7 @@ public:
break; break;
case 103: case 103:
if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION)) if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION))
erozion->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); erozion->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_FINISHED); instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_FINISHED);
me->SetVisible(false); me->SetVisible(false);
break; break;
@@ -468,7 +468,7 @@ public:
combatEvents.Reset(); combatEvents.Reset();
summons.DespawnAll(); summons.DespawnAll();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
instance->SetData(DATA_THRALL_REPOSITION, 1); instance->SetData(DATA_THRALL_REPOSITION, 1);
uint32 data = instance->GetData(DATA_ESCORT_PROGRESS); uint32 data = instance->GetData(DATA_ESCORT_PROGRESS);
@@ -615,7 +615,7 @@ public:
break; break;
case EVENT_THRALL_TALK: case EVENT_THRALL_TALK:
Talk(SAY_MEET_TARETHA); Talk(SAY_MEET_TARETHA);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case EVENT_SUMMON_CHRONO: case EVENT_SUMMON_CHRONO:
if (Creature* epoch = me->SummonCreature(NPC_EPOCH_HUNTER, 2640.49f, 696.15f, 64.31f, 4.51f, TEMPSUMMON_MANUAL_DESPAWN)) if (Creature* epoch = me->SummonCreature(NPC_EPOCH_HUNTER, 2640.49f, 696.15f, 64.31f, 4.51f, TEMPSUMMON_MANUAL_DESPAWN))
@@ -730,7 +730,7 @@ public:
break; break;
case EVENT_SUMMON_EROZION: case EVENT_SUMMON_EROZION:
if (Creature* erozion = me->SummonCreature(NPC_EROZION, 2646.31f, 680.01f, 55.36f, 3.76f, TEMPSUMMON_MANUAL_DESPAWN)) if (Creature* erozion = me->SummonCreature(NPC_EROZION, 2646.31f, 680.01f, 55.36f, 3.76f, TEMPSUMMON_MANUAL_DESPAWN))
erozion->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); erozion->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
break; break;
case EVENT_EROZION_TALK_1: case EVENT_EROZION_TALK_1:
if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION)) if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION))
@@ -808,7 +808,7 @@ public:
SetEscortPaused(true); SetEscortPaused(true);
SetDespawnAtEnd(false); SetDespawnAtEnd(false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
if (data < ENCOUNTER_PROGRESS_THRALL_ARMORED) if (data < ENCOUNTER_PROGRESS_THRALL_ARMORED)
{ {
@@ -903,7 +903,7 @@ public:
void Reset() override void Reset() override
{ {
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
me->CastSpell(me, SPELL_SHADOW_PRISON, true); me->CastSpell(me, SPELL_SHADOW_PRISON, true);
} }
@@ -49,7 +49,7 @@ public:
break; break;
case GO_GONG: case GO_GONG:
if (_gongPhase == DONE) if (_gongPhase == DONE)
gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); gameobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
} }
} }
@@ -90,7 +90,7 @@ public:
channeling = false; channeling = false;
eventProgress = 0; eventProgress = 0;
spawnerCount = 0; spawnerCount = 0;
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
} }
} }
@@ -119,7 +119,7 @@ public:
{ {
eventInProgress = true; eventInProgress = true;
Talk(SAY_QUEST_ACCEPTED); Talk(SAY_QUEST_ACCEPTED);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE); me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
me->GetMotionMaster()->MovePath(PATH_ESCORT, false); me->GetMotionMaster()->MovePath(PATH_ESCORT, false);
} }
@@ -68,7 +68,7 @@ public:
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
postGossipStep = 0; postGossipStep = 0;
Text_Timer = 0; Text_Timer = 0;
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
InstanceScript* instance; InstanceScript* instance;
@@ -285,7 +285,7 @@ public:
{ {
case NPC_BLY: case NPC_BLY:
case NPC_WEEGLI: case NPC_WEEGLI:
crew->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); crew->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
default: default:
break; break;
@@ -345,7 +345,7 @@ public:
void InitializeAI() override void InitializeAI() override
{ {
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
Reset(); Reset();
} }
@@ -435,7 +435,7 @@ public:
else if (instance->GetData(DATA_PYRAMID) == PYRAMID_KILLED_ALL_TROLLS) else if (instance->GetData(DATA_PYRAMID) == PYRAMID_KILLED_ALL_TROLLS)
{ {
instance->SetData(DATA_PYRAMID, PYRAMID_MOVED_DOWNSTAIRS); instance->SetData(DATA_PYRAMID, PYRAMID_MOVED_DOWNSTAIRS);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
else if (instance->GetData(DATA_PYRAMID) == PYRAMID_DESTROY_GATES) else if (instance->GetData(DATA_PYRAMID) == PYRAMID_DESTROY_GATES)
{ {
@@ -458,7 +458,7 @@ public:
else if (instance->GetData(DATA_PYRAMID) == PYRAMID_KILLED_ALL_TROLLS) else if (instance->GetData(DATA_PYRAMID) == PYRAMID_KILLED_ALL_TROLLS)
{ {
instance->SetData(DATA_PYRAMID, PYRAMID_MOVED_DOWNSTAIRS); instance->SetData(DATA_PYRAMID, PYRAMID_MOVED_DOWNSTAIRS);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
else if (instance->GetData(DATA_PYRAMID) == PYRAMID_DESTROY_GATES) else if (instance->GetData(DATA_PYRAMID) == PYRAMID_DESTROY_GATES)
{ {
@@ -478,7 +478,7 @@ public:
instance->SetData(DATA_PYRAMID, PYRAMID_DESTROY_GATES); instance->SetData(DATA_PYRAMID, PYRAMID_DESTROY_GATES);
if (Creature* sergeantBly = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BLY))) if (Creature* sergeantBly = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BLY)))
{ {
sergeantBly->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); sergeantBly->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
} }
} }
@@ -64,7 +64,7 @@ public:
{ {
me->RemoveAurasDueToSpell(SPELL_MARK_OF_FROST_AURA); me->RemoveAurasDueToSpell(SPELL_MARK_OF_FROST_AURA);
_scheduler.CancelAll(); _scheduler.CancelAll();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->RestoreFaction(); me->RestoreFaction();
me->GetMap()->DoForAllPlayers([&](Player* p) me->GetMap()->DoForAllPlayers([&](Player* p)
{ {
@@ -135,7 +135,7 @@ public:
if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_NAGA_BRAZIER, INTERACTION_DISTANCE * 2)) if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_NAGA_BRAZIER, INTERACTION_DISTANCE * 2))
{ {
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
SetEscortPaused(true); SetEscortPaused(true);
} }
break; break;
+1 -1
View File
@@ -355,7 +355,7 @@ public:
if (me->IsWithinDist(player, 10) && me->GetPositionX() > player->GetPositionX() && !Reached) if (me->IsWithinDist(player, 10) && me->GetPositionX() > player->GetPositionX() && !Reached)
{ {
Talk(SAY_RIZZLE_FINAL); Talk(SAY_RIZZLE_FINAL);
me->SetUInt32Value(UNIT_NPC_FLAGS, 1); me->ReplaceAllNpcFlags(NPCFlags(1));
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MoveIdle();
me->RemoveAurasDueToSpell(SPELL_PERIODIC_DEPTH_CHARGE); me->RemoveAurasDueToSpell(SPELL_PERIODIC_DEPTH_CHARGE);
@@ -147,7 +147,7 @@ public:
_faction = faction; _faction = faction;
SetEscortPaused(false); SetEscortPaused(false);
if (Creature* active = !headNorth ? me : ObjectAccessor::GetCreature(*me, summons[0])) if (Creature* active = !headNorth ? me : ObjectAccessor::GetCreature(*me, summons[0]))
active->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); active->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
events.CancelEvent(EVENT_WAIT_FOR_ASSIST); events.CancelEvent(EVENT_WAIT_FOR_ASSIST);
} }
@@ -192,11 +192,11 @@ public:
void SummonHelpers() void SummonHelpers()
{ {
RemoveSummons(); RemoveSummons();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (Creature* cr = me->SummonCreature(NPC_RIGGER_GIZELTON, *me)) if (Creature* cr = me->SummonCreature(NPC_RIGGER_GIZELTON, *me))
{ {
cr->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); cr->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
summons[0] = cr->GetGUID(); summons[0] = cr->GetGUID();
} }
if (Creature* cr = me->SummonCreature(NPC_CARAVAN_KODO, *me)) if (Creature* cr = me->SummonCreature(NPC_CARAVAN_KODO, *me))
@@ -291,7 +291,7 @@ public:
// North -> South - hire // North -> South - hire
case 77: case 77:
SetEscortPaused(true); SetEscortPaused(true);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
Talk(SAY_CARAVAN_HIRE); Talk(SAY_CARAVAN_HIRE);
events.ScheduleEvent(EVENT_WAIT_FOR_ASSIST, TIME_HIRE_STOP); events.ScheduleEvent(EVENT_WAIT_FOR_ASSIST, TIME_HIRE_STOP);
break; break;
@@ -300,7 +300,7 @@ public:
SetEscortPaused(true); SetEscortPaused(true);
if (Creature* rigger = ObjectAccessor::GetCreature(*me, summons[0])) if (Creature* rigger = ObjectAccessor::GetCreature(*me, summons[0]))
{ {
rigger->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); rigger->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
rigger->AI()->Talk(SAY_CARAVAN_HIRE); rigger->AI()->Talk(SAY_CARAVAN_HIRE);
} }
events.ScheduleEvent(EVENT_WAIT_FOR_ASSIST, TIME_HIRE_STOP); events.ScheduleEvent(EVENT_WAIT_FOR_ASSIST, TIME_HIRE_STOP);
@@ -403,7 +403,7 @@ public:
case EVENT_WAIT_FOR_ASSIST: case EVENT_WAIT_FOR_ASSIST:
SetEscortPaused(false); SetEscortPaused(false);
if (Creature* active = !headNorth ? me : ObjectAccessor::GetCreature(*me, summons[0])) if (Creature* active = !headNorth ? me : ObjectAccessor::GetCreature(*me, summons[0]))
active->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); active->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
break; break;
case EVENT_RESTART_ESCORT: case EVENT_RESTART_ESCORT:
CheckCaravan(); CheckCaravan();
@@ -484,7 +484,7 @@ public:
} }
else if (spell->Id == SPELL_KODO_KOMBO_GOSSIP) else if (spell->Id == SPELL_KODO_KOMBO_GOSSIP)
{ {
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->DespawnOrUnsummon(60000); me->DespawnOrUnsummon(60000);
} }
} }
+2 -2
View File
@@ -98,7 +98,7 @@ public:
void InitializeAI() override void InitializeAI() override
{ {
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->RestoreFaction(); me->RestoreFaction();
@@ -202,7 +202,7 @@ public:
Talk(TALK_0, player); Talk(TALK_0, player);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE); me->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
me->GetMotionMaster()->MoveFollow(player, 3.f, M_PI); me->GetMotionMaster()->MoveFollow(player, 3.f, M_PI);
@@ -258,7 +258,7 @@ public:
{ {
if (action == ACTION_START_TALKING) if (action == ACTION_START_TALKING)
{ {
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->GetMap()->LoadGrid(heraldOfThrallPos.GetPositionX(), heraldOfThrallPos.GetPositionY()); me->GetMap()->LoadGrid(heraldOfThrallPos.GetPositionX(), heraldOfThrallPos.GetPositionY());
me->SummonCreature(NPC_HERALD_OF_THRALL, heraldOfThrallPos, TEMPSUMMON_TIMED_DESPAWN, 20 * IN_MILLISECONDS); me->SummonCreature(NPC_HERALD_OF_THRALL, heraldOfThrallPos, TEMPSUMMON_TIMED_DESPAWN, 20 * IN_MILLISECONDS);
_scheduler.Schedule(2s, [this](TaskContext /*context*/) _scheduler.Schedule(2s, [this](TaskContext /*context*/)
@@ -272,7 +272,7 @@ public:
.Schedule(15s, [this](TaskContext /*context*/) .Schedule(15s, [this](TaskContext /*context*/)
{ {
DoCastAOE(SPELL_WARCHIEF_BLESSING, true); DoCastAOE(SPELL_WARCHIEF_BLESSING, true);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->GetMap()->DoForAllPlayers([&](Player* p) me->GetMap()->DoForAllPlayers([&](Player* p)
{ {
if (p->IsAlive() && !p->IsGameMaster()) if (p->IsAlive() && !p->IsGameMaster())
@@ -915,7 +915,7 @@ public:
if (Merithra) if (Merithra)
{ {
Merithra->SetUInt32Value(UNIT_NPC_FLAGS, 0); Merithra->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
Merithra->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); Merithra->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
Merithra->SetUInt32Value(UNIT_FIELD_DISPLAYID, 15420); Merithra->SetUInt32Value(UNIT_FIELD_DISPLAYID, 15420);
Merithra->SetFaction(FACTION_FRIENDLY); Merithra->SetFaction(FACTION_FRIENDLY);
@@ -923,7 +923,7 @@ public:
if (Caelestrasz) if (Caelestrasz)
{ {
Caelestrasz->SetUInt32Value(UNIT_NPC_FLAGS, 0); Caelestrasz->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
Caelestrasz->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); Caelestrasz->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
Caelestrasz->SetUInt32Value(UNIT_FIELD_DISPLAYID, 15419); Caelestrasz->SetUInt32Value(UNIT_FIELD_DISPLAYID, 15419);
Caelestrasz->SetFaction(FACTION_FRIENDLY); Caelestrasz->SetFaction(FACTION_FRIENDLY);
@@ -931,7 +931,7 @@ public:
if (Arygos) if (Arygos)
{ {
Arygos->SetUInt32Value(UNIT_NPC_FLAGS, 0); Arygos->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
Arygos->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); Arygos->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
Arygos->SetUInt32Value(UNIT_FIELD_DISPLAYID, 15418); Arygos->SetUInt32Value(UNIT_FIELD_DISPLAYID, 15418);
Arygos->SetFaction(FACTION_FRIENDLY); Arygos->SetFaction(FACTION_FRIENDLY);
@@ -1031,7 +1031,7 @@ public:
void InitializeAI() override void InitializeAI() override
{ {
me->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); me->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
} }
bool GossipHello(Player* player, bool reportUse) override bool GossipHello(Player* player, bool reportUse) override
@@ -1164,7 +1164,7 @@ public:
} }
me->DespawnOrUnsummon(5000ms, respawnTimer); // Despawn in 5 Seconds for respawnTimer value me->DespawnOrUnsummon(5000ms, respawnTimer); // Despawn in 5 Seconds for respawnTimer value
me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
return false; return false;
} }
@@ -263,8 +263,8 @@ public:
if (me->GetFaction() != NormFaction) if (me->GetFaction() != NormFaction)
me->SetFaction(NormFaction); me->SetFaction(NormFaction);
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
DoCast(me, SPELL_PLUCKY_CHICKEN, false); DoCast(me, SPELL_PLUCKY_CHICKEN, false);
} }
@@ -276,19 +276,19 @@ public:
if (TextEmote == TEXT_EMOTE_BECKON) if (TextEmote == TEXT_EMOTE_BECKON)
{ {
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
DoCast(me, SPELL_PLUCKY_HUMAN, false); DoCast(me, SPELL_PLUCKY_HUMAN, false);
} }
} }
if (TextEmote == TEXT_EMOTE_CHICKEN) if (TextEmote == TEXT_EMOTE_CHICKEN)
{ {
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return; return;
else else
{ {
me->SetFaction(FACTION_FRIENDLY); me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
DoCast(me, SPELL_PLUCKY_HUMAN, false); DoCast(me, SPELL_PLUCKY_HUMAN, false);
me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE); me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE);
} }
@@ -297,14 +297,14 @@ public:
void UpdateAI(uint32 Diff) override void UpdateAI(uint32 Diff) override
{ {
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{ {
if (ResetTimer <= Diff) if (ResetTimer <= Diff)
{ {
if (!me->GetVictim()) if (!me->GetVictim())
EnterEvadeMode(); EnterEvadeMode();
else else
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
return; return;
} }
@@ -354,13 +354,13 @@ public:
{ {
if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_ELUNE_ALTAR, 10.0f)) if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_ELUNE_ALTAR, 10.0f))
{ {
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
me->SetFacingToObject(go); me->SetFacingToObject(go);
_altarGUID = go->GetGUID(); _altarGUID = go->GetGUID();
} }
} }
else if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_ELUNE_FIRE, 10.0f)) else if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_ELUNE_FIRE, 10.0f))
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
// Yell and set escort to pause // Yell and set escort to pause
Talk(SAY_REACH_TORCH); Talk(SAY_REACH_TORCH);
@@ -610,7 +610,7 @@ public:
escortAI->DoContinueEscort(isAltar); escortAI->DoContinueEscort(isAltar);
} }
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
return false; return false;
} }
@@ -507,7 +507,7 @@ public:
return true; return true;
} }
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
go->SetGoState(GO_STATE_ACTIVE); go->SetGoState(GO_STATE_ACTIVE);
uint32 const objectIndex = go->GetEntry() == GO_TELDARAM_SPHERE1 ? DATA_TELDRAM_SPHERE1 : DATA_TELDRAM_SPHERE2; uint32 const objectIndex = go->GetEntry() == GO_TELDARAM_SPHERE1 ? DATA_TELDRAM_SPHERE1 : DATA_TELDRAM_SPHERE2;
@@ -77,11 +77,11 @@ public:
if (teldaramSpheres.at(pGo->GetEntry() == GO_TELDARAM_SPHERE1 ? 0 : 1) == DONE || GetBossState(DATA_PRINCE_TALDARAM) == DONE) if (teldaramSpheres.at(pGo->GetEntry() == GO_TELDARAM_SPHERE1 ? 0 : 1) == DONE || GetBossState(DATA_PRINCE_TALDARAM) == DONE)
{ {
pGo->SetGoState(GO_STATE_ACTIVE); pGo->SetGoState(GO_STATE_ACTIVE);
pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); pGo->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
} }
else else
{ {
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); pGo->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
} }
break; break;
@@ -377,7 +377,7 @@ public:
void Reset() override void Reset() override
{ {
_events.Reset(); _events.Reset();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
// Xinef: after soft reset npc is no longer present // Xinef: after soft reset npc is no longer present
if (me->GetInstanceScript()->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE) if (me->GetInstanceScript()->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
@@ -439,7 +439,7 @@ public:
Talk(SAY_XERESTRASZA_EVENT_6); Talk(SAY_XERESTRASZA_EVENT_6);
break; break;
case EVENT_XERESTRASZA_EVENT_7: case EVENT_XERESTRASZA_EVENT_7:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
Talk(SAY_XERESTRASZA_EVENT_7); Talk(SAY_XERESTRASZA_EVENT_7);
me->setActive(false); me->setActive(false);
break; break;
@@ -158,7 +158,7 @@ public:
me->getThreatMgr().clearReferences(); me->getThreatMgr().clearReferences();
me->SetRegeneratingHealth(false); me->SetRegeneratingHealth(false);
_EnterEvadeMode(); _EnterEvadeMode();
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( pInstance ) if( pInstance )
pInstance->SetData(BOSS_ARGENT_CHALLENGE, DONE); pInstance->SetData(BOSS_ARGENT_CHALLENGE, DONE);
} }
@@ -305,7 +305,7 @@ public:
me->getThreatMgr().clearReferences(); me->getThreatMgr().clearReferences();
me->SetRegeneratingHealth(false); me->SetRegeneratingHealth(false);
_EnterEvadeMode(); _EnterEvadeMode();
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( pInstance ) if( pInstance )
{ {
pInstance->SetData(BOSS_ARGENT_CHALLENGE, DONE); pInstance->SetData(BOSS_ARGENT_CHALLENGE, DONE);
@@ -404,6 +404,7 @@ public:
events.Reset(); events.Reset();
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
me->SetObjectScale(0.01f); me->SetObjectScale(0.01f);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
events.ScheduleEvent(EVENT_MEMORY_SCALE, 500); events.ScheduleEvent(EVENT_MEMORY_SCALE, 500);
} }
@@ -439,7 +440,7 @@ public:
break; break;
case EVENT_MEMORY_START_ATTACK: case EVENT_MEMORY_START_ATTACK:
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = me->SelectNearestTarget(200.0f) ) if( Unit* target = me->SelectNearestTarget(200.0f) )
{ {
AttackStart(target); AttackStart(target);
@@ -120,7 +120,7 @@ public:
summons.DespawnAll(); summons.DespawnAll();
Phase = 1; Phase = 1;
me->SetDisplayId(me->GetNativeDisplayId()); me->SetDisplayId(me->GetNativeDisplayId());
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
if( pInstance ) if( pInstance )
pInstance->SetData(BOSS_BLACK_KNIGHT, NOT_STARTED); pInstance->SetData(BOSS_BLACK_KNIGHT, NOT_STARTED);
@@ -193,7 +193,7 @@ public:
{ {
case SPELL_BLACK_KNIGHT_RES: case SPELL_BLACK_KNIGHT_RES:
me->SetHealth(me->GetMaxHealth()); me->SetHealth(me->GetMaxHealth());
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->SetControlled(false, UNIT_STATE_STUNNED); me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
@@ -342,6 +342,7 @@ public:
{ {
Start(false, true, ObjectGuid::Empty, nullptr); Start(false, true, ObjectGuid::Empty, nullptr);
SetDespawnAtEnd(true); SetDespawnAtEnd(true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
} }
void DoAction(int32 param) override void DoAction(int32 param) override
@@ -361,7 +361,6 @@ public:
BossOrder = 0; BossOrder = 0;
NewMountGUID.Clear(); NewMountGUID.Clear();
me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true); me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true);
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
events.Reset(); events.Reset();
events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500, 4000)); events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500, 4000));
@@ -401,7 +400,7 @@ public:
{ {
DoAction(1); DoAction(1);
DoAction(2); DoAction(2);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0); me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
} }
@@ -489,7 +488,7 @@ public:
me->SetRegeneratingHealth(true); me->SetRegeneratingHealth(true);
me->RemoveUnitFlag(UNIT_FLAG_PACIFIED); me->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
me->SetSpeed(MOVE_RUN, 1.0f, false); me->SetSpeed(MOVE_RUN, 1.0f, false);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
me->RemoveAllAuras(); me->RemoveAllAuras();
AddCreatureAddonAuras(); AddCreatureAddonAuras();
@@ -557,7 +556,7 @@ public:
me->StopMoving(); me->StopMoving();
me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0); me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
me->SetRegeneratingHealth(false); me->SetRegeneratingHealth(false);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
if( pInstance ) if( pInstance )
{ {
@@ -575,6 +574,7 @@ public:
{ {
if( damage >= me->GetHealth() ) if( damage >= me->GetHealth() )
{ {
MountPhase = true;
events.Reset(); events.Reset();
damage = me->GetHealth() - 1; damage = me->GetHealth() - 1;
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
@@ -584,7 +584,7 @@ public:
me->CombatStop(true); me->CombatStop(true);
me->GetMotionMaster()->Clear(); me->GetMotionMaster()->Clear();
me->SetRegeneratingHealth(false); me->SetRegeneratingHealth(false);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( pInstance ) if( pInstance )
pInstance->SetData(DATA_GRAND_CHAMPION_DIED, BossOrder); pInstance->SetData(DATA_GRAND_CHAMPION_DIED, BossOrder);
} }
@@ -627,7 +627,7 @@ public:
events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000, 8000)); events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000, 8000));
events.ScheduleEvent(EVENT_THRUST, urand(3000, 5000)); events.ScheduleEvent(EVENT_THRUST, urand(3000, 5000));
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = me->SelectNearestTarget(200.0f) ) if( Unit* target = me->SelectNearestTarget(200.0f) )
AttackStart(target); AttackStart(target);
DoZoneInCombat(); DoZoneInCombat();
@@ -720,7 +720,7 @@ public:
{ {
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
NewMountGUID = mount->GetGUID(); NewMountGUID = mount->GetGUID();
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
me->GetMotionMaster()->MovePoint(7, *mount); me->GetMotionMaster()->MovePoint(7, *mount);
events.RepeatEvent(200); events.RepeatEvent(200);
break; break;
@@ -156,6 +156,7 @@ public:
// Coliseum Announcer: // Coliseum Announcer:
case NPC_JAEREN: case NPC_JAEREN:
case NPC_ARELAS:
NPC_AnnouncerGUID = creature->GetGUID(); NPC_AnnouncerGUID = creature->GetGUID();
//if( TeamIdInInstance == TEAM_ALLIANCE ) //if( TeamIdInInstance == TEAM_ALLIANCE )
// creature->UpdateEntry(NPC_ARELAS); // creature->UpdateEntry(NPC_ARELAS);
@@ -316,7 +317,7 @@ public:
c->SetHomePosition(748.309f, 619.488f, 411.172f, 4.71239f); c->SetHomePosition(748.309f, 619.488f, 411.172f, 4.71239f);
c->SetPosition(748.309f, 619.488f, 411.172f, 4.71239f); c->SetPosition(748.309f, 619.488f, 411.172f, 4.71239f);
c->SetRespawnTime(3); c->SetRespawnTime(3);
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
InstanceProgress = INSTANCE_PROGRESS_INITIAL; InstanceProgress = INSTANCE_PROGRESS_INITIAL;
} }
@@ -329,7 +330,7 @@ public:
announcer->SetHomePosition(735.81f, 661.92f, 412.39f, 4.714f); announcer->SetHomePosition(735.81f, 661.92f, 412.39f, 4.714f);
announcer->SetPosition(735.81f, 661.92f, 412.39f, 4.714f); announcer->SetPosition(735.81f, 661.92f, 412.39f, 4.714f);
announcer->SetRespawnTime(3); announcer->SetRespawnTime(3);
announcer->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); announcer->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
for( uint8 i = 0; i < 3; ++i ) for( uint8 i = 0; i < 3; ++i )
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) ) if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
@@ -387,7 +388,7 @@ public:
c->SetHomePosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetHomePosition(743.14f, 628.77f, 411.2f, 4.71239f);
c->SetPosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetPosition(743.14f, 628.77f, 411.2f, 4.71239f);
c->SetRespawnTime(3); c->SetRespawnTime(3);
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
NPC_MemoryEntry = 0; NPC_MemoryEntry = 0;
InstanceProgress = INSTANCE_PROGRESS_CHAMPIONS_DEAD; InstanceProgress = INSTANCE_PROGRESS_CHAMPIONS_DEAD;
@@ -411,7 +412,7 @@ public:
c->SetHomePosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetHomePosition(743.14f, 628.77f, 411.2f, 4.71239f);
c->SetPosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetPosition(743.14f, 628.77f, 411.2f, 4.71239f);
c->SetRespawnTime(3); c->SetRespawnTime(3);
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
InstanceProgress = INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED; InstanceProgress = INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED;
} }
@@ -731,17 +732,19 @@ public:
if( Creature* pBoss = instance->SummonCreature(CHAMPION_TO_SUMMON, SpawnPos) ) if( Creature* pBoss = instance->SummonCreature(CHAMPION_TO_SUMMON, SpawnPos) )
{ {
NPC_GrandChampionGUID[BossOrder] = pBoss->GetGUID(); NPC_GrandChampionGUID[BossOrder] = pBoss->GetGUID();
pBoss->ToCreature()->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2);
pBoss->ToCreature()->SetReactState(REACT_PASSIVE); pBoss->ToCreature()->SetReactState(REACT_PASSIVE);
pBoss->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_PACIFIED);
pBoss->ToCreature()->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2);
pBoss->AI()->SetData(BossOrder, (shortver ? 1 : 0)); pBoss->AI()->SetData(BossOrder, (shortver ? 1 : 0));
for( uint8 i = 0; i < 3; ++i ) for( uint8 i = 0; i < 3; ++i )
if( Creature* pAdd = instance->SummonCreature(MINION_TO_SUMMON, SpawnPos) ) if( Creature* pAdd = instance->SummonCreature(MINION_TO_SUMMON, SpawnPos) )
{ {
NPC_GrandChampionMinionsGUID[BossOrder][i] = pAdd->GetGUID(); NPC_GrandChampionMinionsGUID[BossOrder][i] = pAdd->GetGUID();
pAdd->SetReactState(REACT_PASSIVE);
pAdd->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
pAdd->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2); pAdd->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2);
pAdd->GetMotionMaster()->MoveFollow(pBoss, 2.0f, (i + 1)*M_PI / 2); pAdd->GetMotionMaster()->MoveFollow(pBoss, 2.0f, (i + 1)*M_PI / 2);
pAdd->SetReactState(REACT_PASSIVE);
} }
} }
@@ -836,7 +839,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[1][i]) ) if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[1][i]) )
{ {
c->SetReactState(REACT_AGGRESSIVE); c->SetReactState(REACT_AGGRESSIVE);
c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = c->SelectNearestTarget(200.0f) ) if( Unit* target = c->SelectNearestTarget(200.0f) )
c->AI()->AttackStart(target); c->AI()->AttackStart(target);
c->AI()->DoZoneInCombat(); c->AI()->DoZoneInCombat();
@@ -862,7 +865,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[0][i]) ) if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[0][i]) )
{ {
c->SetReactState(REACT_AGGRESSIVE); c->SetReactState(REACT_AGGRESSIVE);
c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = c->SelectNearestTarget(200.0f) ) if( Unit* target = c->SelectNearestTarget(200.0f) )
c->AI()->AttackStart(target); c->AI()->AttackStart(target);
c->AI()->DoZoneInCombat(); c->AI()->DoZoneInCombat();
@@ -887,7 +890,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[2][i]) ) if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[2][i]) )
{ {
c->SetReactState(REACT_AGGRESSIVE); c->SetReactState(REACT_AGGRESSIVE);
c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = c->SelectNearestTarget(200.0f) ) if( Unit* target = c->SelectNearestTarget(200.0f) )
c->AI()->AttackStart(target); c->AI()->AttackStart(target);
c->AI()->DoZoneInCombat(); c->AI()->DoZoneInCombat();
@@ -912,7 +915,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) ) if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
{ {
c->SetReactState(REACT_AGGRESSIVE); c->SetReactState(REACT_AGGRESSIVE);
c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = c->SelectNearestTarget(200.0f) ) if( Unit* target = c->SelectNearestTarget(200.0f) )
c->AI()->AttackStart(target); c->AI()->AttackStart(target);
c->AI()->DoZoneInCombat(); c->AI()->DoZoneInCombat();
@@ -949,7 +952,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) ) if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
{ {
c->SetReactState(REACT_AGGRESSIVE); c->SetReactState(REACT_AGGRESSIVE);
c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = c->SelectNearestTarget(200.0f) ) if( Unit* target = c->SelectNearestTarget(200.0f) )
c->AI()->AttackStart(target); c->AI()->AttackStart(target);
c->AI()->DoZoneInCombat(); c->AI()->DoZoneInCombat();
@@ -968,7 +971,7 @@ public:
case EVENT_RESTORE_ANNOUNCER_GOSSIP: case EVENT_RESTORE_ANNOUNCER_GOSSIP:
{ {
if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) ) if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) )
announcer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); announcer->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
break; break;
case EVENT_START_ARGENT_CHALLENGE_INTRO: case EVENT_START_ARGENT_CHALLENGE_INTRO:
@@ -1053,7 +1056,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_ArgentSoldierGUID[i][j]) ) if( Creature* c = instance->GetCreature(NPC_ArgentSoldierGUID[i][j]) )
{ {
c->SetReactState(REACT_AGGRESSIVE); c->SetReactState(REACT_AGGRESSIVE);
c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
//c->AI()->DoZoneInCombat(); //c->AI()->DoZoneInCombat();
} }
if( Creature* tirion = instance->GetCreature(NPC_TirionGUID) ) if( Creature* tirion = instance->GetCreature(NPC_TirionGUID) )
@@ -1074,7 +1077,7 @@ public:
if( Creature* boss = instance->GetCreature(NPC_ArgentChampionGUID) ) if( Creature* boss = instance->GetCreature(NPC_ArgentChampionGUID) )
{ {
boss->SetReactState(REACT_AGGRESSIVE); boss->SetReactState(REACT_AGGRESSIVE);
boss->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); boss->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
if( Unit* target = boss->SelectNearestTarget(200.0f) ) if( Unit* target = boss->SelectNearestTarget(200.0f) )
boss->AI()->AttackStart(target); boss->AI()->AttackStart(target);
boss->AI()->DoZoneInCombat(); boss->AI()->DoZoneInCombat();
@@ -33,7 +33,7 @@ public:
bool OnGossipHello(Player* player, Creature* creature) override bool OnGossipHello(Player* player, Creature* creature) override
{ {
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
InstanceScript* pInstance = creature->GetInstanceScript(); InstanceScript* pInstance = creature->GetInstanceScript();
@@ -76,7 +76,7 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{ {
if(!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if(!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
InstanceScript* pInstance = creature->GetInstanceScript(); InstanceScript* pInstance = creature->GetInstanceScript();
@@ -86,7 +86,7 @@ public:
if(uiAction == GOSSIP_ACTION_INFO_DEF + 1338 || uiAction == GOSSIP_ACTION_INFO_DEF + 1341 || uiAction == GOSSIP_ACTION_INFO_DEF + 1339 || uiAction == GOSSIP_ACTION_INFO_DEF + 1340) if(uiAction == GOSSIP_ACTION_INFO_DEF + 1338 || uiAction == GOSSIP_ACTION_INFO_DEF + 1341 || uiAction == GOSSIP_ACTION_INFO_DEF + 1339 || uiAction == GOSSIP_ACTION_INFO_DEF + 1340)
{ {
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 1341 ? 1 : 0)); pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 1341 ? 1 : 0));
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
@@ -767,7 +767,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_TirionGUID) ) if( Creature* c = instance->GetCreature(NPC_TirionGUID) )
c->AI()->Talk(SAY_STAGE_0_06); c->AI()->Talk(SAY_STAGE_0_06);
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
} }
case EVENT_SCENE_101: case EVENT_SCENE_101:
@@ -946,7 +946,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_TirionGUID) ) if( Creature* c = instance->GetCreature(NPC_TirionGUID) )
c->AI()->Talk(SAY_STAGE_1_11); c->AI()->Talk(SAY_STAGE_1_11);
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
} }
case EVENT_SCENE_201: case EVENT_SCENE_201:
@@ -1120,7 +1120,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_TirionGUID) ) if( Creature* c = instance->GetCreature(NPC_TirionGUID) )
c->AI()->Talk(SAY_STAGE_2_06); c->AI()->Talk(SAY_STAGE_2_06);
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
} }
case EVENT_SCENE_301: case EVENT_SCENE_301:
@@ -1435,11 +1435,11 @@ public:
{ {
case INSTANCE_PROGRESS_INITIAL: case INSTANCE_PROGRESS_INITIAL:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case INSTANCE_PROGRESS_INTRO_DONE: case INSTANCE_PROGRESS_INTRO_DONE:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
if( Creature* c = instance->GetCreature(NPC_GormokGUID) ) if( Creature* c = instance->GetCreature(NPC_GormokGUID) )
{ {
c->AI()->DoAction(-1); // despawn summons c->AI()->DoAction(-1); // despawn summons
@@ -1459,7 +1459,7 @@ public:
break; break;
case INSTANCE_PROGRESS_BEASTS_DEAD: case INSTANCE_PROGRESS_BEASTS_DEAD:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
if( Creature* c = instance->GetCreature(NPC_FizzlebangGUID) ) if( Creature* c = instance->GetCreature(NPC_FizzlebangGUID) )
c->DespawnOrUnsummon(); c->DespawnOrUnsummon();
NPC_FizzlebangGUID.Clear(); NPC_FizzlebangGUID.Clear();
@@ -1478,7 +1478,7 @@ public:
c->DespawnOrUnsummon(); c->DespawnOrUnsummon();
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
{ {
c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
if( Creature* jaraxxus = c->SummonCreature(NPC_JARAXXUS, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY(), Locs[LOC_CENTER].GetPositionZ(), Locs[LOC_CENTER].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 630000000) ) if( Creature* jaraxxus = c->SummonCreature(NPC_JARAXXUS, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY(), Locs[LOC_CENTER].GetPositionZ(), Locs[LOC_CENTER].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 630000000) )
{ {
jaraxxus->CastSpell(jaraxxus, 67924, true); jaraxxus->CastSpell(jaraxxus, 67924, true);
@@ -1490,7 +1490,7 @@ public:
break; break;
case INSTANCE_PROGRESS_JARAXXUS_DEAD: case INSTANCE_PROGRESS_JARAXXUS_DEAD:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
for (ObjectGuid const& guid : NPC_ChampionGUIDs) for (ObjectGuid const& guid : NPC_ChampionGUIDs)
if (Creature* c = instance->GetCreature(guid)) if (Creature* c = instance->GetCreature(guid))
c->DespawnOrUnsummon(); c->DespawnOrUnsummon();
@@ -1498,7 +1498,7 @@ public:
break; break;
case INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD: case INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
if( Creature* c = instance->GetCreature(NPC_DarkbaneGUID) ) if( Creature* c = instance->GetCreature(NPC_DarkbaneGUID) )
{ {
c->AI()->DoAction(-1); c->AI()->DoAction(-1);
@@ -1521,11 +1521,11 @@ public:
if (InstanceProgress == INSTANCE_PROGRESS_ANUB_ARAK) if (InstanceProgress == INSTANCE_PROGRESS_ANUB_ARAK)
{ {
c->SetVisible(false); c->SetVisible(false);
c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
else else
{ {
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
c->SetVisible(true); c->SetVisible(true);
c->SetFacingTo(c->GetOrientation()); c->SetFacingTo(c->GetOrientation());
} }
@@ -1550,7 +1550,7 @@ public:
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
{ {
c->SetVisible(false); c->SetVisible(false);
c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
break; break;
} }
@@ -1566,7 +1566,7 @@ public:
if( instance->IsHeroic() && AttemptsLeft == 0 ) if( instance->IsHeroic() && AttemptsLeft == 0 )
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
HandleGameObject(GO_MainGateGUID, false); HandleGameObject(GO_MainGateGUID, false);
HandleGameObject(GO_EnterGateGUID, true); HandleGameObject(GO_EnterGateGUID, true);
@@ -36,7 +36,7 @@ public:
bool OnGossipHello(Player* player, Creature* creature) override bool OnGossipHello(Player* player, Creature* creature) override
{ {
if(!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if(!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
InstanceScript* pInstance = creature->GetInstanceScript(); InstanceScript* pInstance = creature->GetInstanceScript();
@@ -59,7 +59,7 @@ public:
gossipTextId = MSG_CRUSADERS; gossipTextId = MSG_CRUSADERS;
break; break;
case INSTANCE_PROGRESS_DONE: case INSTANCE_PROGRESS_DONE:
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
return true; return true;
default: default:
return true; return true;
@@ -72,7 +72,7 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 uiAction) override bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 uiAction) override
{ {
if( !creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) ) if( !creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP) )
return true; return true;
InstanceScript* pInstance = creature->GetInstanceScript(); InstanceScript* pInstance = creature->GetInstanceScript();
@@ -82,7 +82,7 @@ public:
if( uiAction == GOSSIP_ACTION_INFO_DEF + 1337 ) if( uiAction == GOSSIP_ACTION_INFO_DEF + 1337 )
{ {
pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0); pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
} }
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
@@ -69,9 +69,9 @@ public:
void DoAction(int32 a) override void DoAction(int32 a) override
{ {
if (a == 1) if (a == 1)
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{ {
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.Reset(); events.Reset();
events.ScheduleEvent(1, 1000); events.ScheduleEvent(1, 1000);
} }
@@ -190,7 +190,7 @@ public:
if (creature->IsQuestGiver()) if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID()); player->PrepareQuestMenu(creature->GetGUID());
if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{ {
if (creature->GetEntry() == NPC_JAINA_PART1) if (creature->GetEntry() == NPC_JAINA_PART1)
AddGossipItemFor(player, GOSSIP_JAINA_INTRO, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); AddGossipItemFor(player, GOSSIP_JAINA_INTRO, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
@@ -232,14 +232,14 @@ public:
{ {
npc_fos_leader_secondAI(Creature* creature) : ScriptedAI(creature) npc_fos_leader_secondAI(Creature* creature) : ScriptedAI(creature)
{ {
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
} }
void MovementInform(uint32 type, uint32 id) override void MovementInform(uint32 type, uint32 id) override
{ {
if (type == POINT_MOTION_TYPE && id == 1) if (type == POINT_MOTION_TYPE && id == 1)
{ {
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (me->GetEntry() == NPC_JAINA_PART1) if (me->GetEntry() == NPC_JAINA_PART1)
Talk(SAY_JAINA_OUTRO); Talk(SAY_JAINA_OUTRO);
else else
@@ -91,7 +91,7 @@ public:
bool OnGossipHello(Player* player, Creature* creature) override bool OnGossipHello(Player* player, Creature* creature) override
{ {
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
if (creature->IsQuestGiver()) if (creature->IsQuestGiver())
@@ -134,7 +134,7 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{ {
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
InstanceScript* instance = creature->GetInstanceScript(); InstanceScript* instance = creature->GetInstanceScript();
@@ -154,13 +154,13 @@ public:
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
if (creature->AI()) if (creature->AI())
creature->AI()->DoAction(ACTION_START_INTRO); creature->AI()->DoAction(ACTION_START_INTRO);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
break; break;
case GOSSIP_ACTION_INFO_DEF+2: case GOSSIP_ACTION_INFO_DEF+2:
CloseGossipMenuFor(player); CloseGossipMenuFor(player);
if (creature->AI()) if (creature->AI())
creature->AI()->DoAction(ACTION_SKIP_INTRO); creature->AI()->DoAction(ACTION_SKIP_INTRO);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
break; break;
} }
@@ -233,7 +233,7 @@ public:
me->GetMotionMaster()->MovePoint(0, SpawnPos); me->GetMotionMaster()->MovePoint(0, SpawnPos);
break; break;
case EVENT_PRE_INTRO_3: case EVENT_PRE_INTRO_3:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_2 : SAY_SYLVANAS_INTRO_1); Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_2 : SAY_SYLVANAS_INTRO_1);
me->SetFacingTo(0.89f); me->SetFacingTo(0.89f);
break; break;
@@ -1619,7 +1619,7 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/) override bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/) override
{ {
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true; return true;
ClearGossipMenuFor(player); ClearGossipMenuFor(player);
@@ -1627,7 +1627,7 @@ public:
if (InstanceScript* pInstance = creature->GetInstanceScript()) if (InstanceScript* pInstance = creature->GetInstanceScript())
if (!pInstance->GetData(DATA_LICH_KING)) if (!pInstance->GetData(DATA_LICH_KING))
{ {
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->AI()->DoAction(ACTION_START_LK_FIGHT_REAL); creature->AI()->DoAction(ACTION_START_LK_FIGHT_REAL);
return true; return true;
} }
@@ -1748,7 +1748,7 @@ public:
case EVENT_ADD_GOSSIP: case EVENT_ADD_GOSSIP:
me->RemoveAura(me->GetEntry() == NPC_JAINA_PART2 ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS); me->RemoveAura(me->GetEntry() == NPC_JAINA_PART2 ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS);
me->SetFacingTo(LeaderEscapePos.GetOrientation()); me->SetFacingTo(LeaderEscapePos.GetOrientation());
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break; break;
case EVENT_START_RUN: case EVENT_START_RUN:
{ {
@@ -221,7 +221,7 @@ public:
NPC_LeaderIntroGUID = creature->GetGUID(); NPC_LeaderIntroGUID = creature->GetGUID();
if (TeamIdInInstance == TEAM_ALLIANCE) if (TeamIdInInstance == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JAINA_PART1); creature->UpdateEntry(NPC_JAINA_PART1);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
break; break;
case NPC_DARK_RANGER_LORALEN: case NPC_DARK_RANGER_LORALEN:
@@ -313,7 +313,7 @@ public:
if (!(EncounterMask & (1 << DATA_LK_INTRO))) if (!(EncounterMask & (1 << DATA_LK_INTRO)))
{ {
creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H); creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->CastSpell(creature, TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS, true); creature->CastSpell(creature, TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS, true);
if (TeamIdInInstance != TEAM_ALLIANCE) if (TeamIdInInstance != TEAM_ALLIANCE)
{ {
@@ -323,8 +323,8 @@ public:
} }
else if (!(EncounterMask & (1 << DATA_LICH_KING))) else if (!(EncounterMask & (1 << DATA_LICH_KING)))
{ {
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); creature->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
creature->UpdatePosition(LeaderEscapePos, true); creature->UpdatePosition(LeaderEscapePos, true);
creature->StopMovingOnCurrentPos(); creature->StopMovingOnCurrentPos();
} }
@@ -530,8 +530,8 @@ public:
c->GetMotionMaster()->MoveIdle(); c->GetMotionMaster()->MoveIdle();
c->UpdatePosition(LeaderEscapePos, true); c->UpdatePosition(LeaderEscapePos, true);
c->StopMovingOnCurrentPos(); c->StopMovingOnCurrentPos();
c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); c->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
c->SetHealth(c->GetMaxHealth() / 20); c->SetHealth(c->GetMaxHealth() / 20);
c->AI()->Reset(); c->AI()->Reset();
c->setActive(false); c->setActive(false);
@@ -1153,7 +1153,7 @@ public:
for (uint8 i = 0; i < 3; ++i) for (uint8 i = 0; i < 3; ++i)
if (StairsPos[index][i].GetPositionX()) if (StairsPos[index][i].GetPositionX())
if (GameObject* go = leader->SummonGameObject(TeamIdInInstance == TEAM_ALLIANCE ? GO_STAIRS_ALLIANCE : GO_STAIRS_HORDE, StairsPos[index][i].GetPositionX(), StairsPos[index][i].GetPositionY(), StairsPos[index][i].GetPositionZ(), StairsPos[index][i].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400, false)) if (GameObject* go = leader->SummonGameObject(TeamIdInInstance == TEAM_ALLIANCE ? GO_STAIRS_ALLIANCE : GO_STAIRS_HORDE, StairsPos[index][i].GetPositionX(), StairsPos[index][i].GetPositionY(), StairsPos[index][i].GetPositionZ(), StairsPos[index][i].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400, false))
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
//Position pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyPortalPos : HordePortalPos; //Position pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyPortalPos : HordePortalPos;
//leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400); //leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400);
@@ -1196,7 +1196,7 @@ public:
break; break;
case 11: case 11:
if (Creature* c = instance->GetCreature(NPC_LeaderGUID)) if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); c->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
++outroStep; ++outroStep;
outroTimer = 300 * 1000; outroTimer = 300 * 1000;
break; break;
@@ -1150,7 +1150,7 @@ public:
pInstance = me->GetInstanceScript(); pInstance = me->GetInstanceScript();
barrierGUID.Clear(); barrierGUID.Clear();
events.Reset(); events.Reset();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (pInstance) if (pInstance)
{ {
@@ -1206,7 +1206,7 @@ public:
Talk(SAY_JAINA_OUTRO_3); Talk(SAY_JAINA_OUTRO_3);
break; break;
case 6: case 6:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (GameObject* g = me->FindNearestGameObject(GO_HOR_PORTCULLIS, 50.0f)) if (GameObject* g = me->FindNearestGameObject(GO_HOR_PORTCULLIS, 50.0f))
g->SetGoState(GO_STATE_ACTIVE); g->SetGoState(GO_STATE_ACTIVE);
break; break;
@@ -176,15 +176,15 @@ public:
{ {
case DATA_SLAD_RAN: case DATA_SLAD_RAN:
if (GameObject* altar = instance->GetGameObject(_sladRanAltarGUID)) if (GameObject* altar = instance->GetGameObject(_sladRanAltarGUID))
altar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case DATA_MOORABI: case DATA_MOORABI:
if (GameObject* altar = instance->GetGameObject(_moorabiAltarGUID)) if (GameObject* altar = instance->GetGameObject(_moorabiAltarGUID))
altar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case DATA_DRAKKARI_COLOSSUS: case DATA_DRAKKARI_COLOSSUS:
if (GameObject* altar = instance->GetGameObject(_drakkariAltarGUID)) if (GameObject* altar = instance->GetGameObject(_drakkariAltarGUID))
altar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
break; break;
case DATA_ECK_THE_FEROCIOUS_INIT: case DATA_ECK_THE_FEROCIOUS_INIT:
{ {
@@ -531,7 +531,7 @@ public:
void Reset() override void Reset() override
{ {
_events.Reset(); _events.Reset();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
} }
@@ -558,7 +558,7 @@ public:
for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr) for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->SetData(0, x++); (*itr)->AI()->SetData(0, x++);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_INTRO_HORDE_1); Talk(SAY_INTRO_HORDE_1);
_events.SetPhase(PHASE_INTRO_H); _events.SetPhase(PHASE_INTRO_H);
_events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H); _events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H);
@@ -568,7 +568,7 @@ public:
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG))) if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
{ {
_instance->HandleGameObject(ObjectGuid::Empty, false, teleporter); _instance->HandleGameObject(ObjectGuid::Empty, false, teleporter);
teleporter->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); teleporter->SetGameObjectFlag(GO_FLAG_IN_USE);
} }
deathbringer->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); deathbringer->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
@@ -792,7 +792,7 @@ public:
void Reset() override void Reset() override
{ {
_events.Reset(); _events.Reset();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
} }
@@ -819,7 +819,7 @@ public:
for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr) for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->SetData(0, x++); (*itr)->AI()->SetData(0, x++);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_INTRO_ALLIANCE_1); Talk(SAY_INTRO_ALLIANCE_1);
_events.SetPhase(PHASE_INTRO_A); _events.SetPhase(PHASE_INTRO_A);
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500, 0, PHASE_INTRO_A); _events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500, 0, PHASE_INTRO_A);
@@ -830,7 +830,7 @@ public:
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG))) if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
{ {
_instance->HandleGameObject(ObjectGuid::Empty, false, teleporter); _instance->HandleGameObject(ObjectGuid::Empty, false, teleporter);
teleporter->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); teleporter->SetGameObjectFlag(GO_FLAG_IN_USE);
} }
deathbringer->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); deathbringer->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);

Some files were not shown because too many files have changed in this diff Show More