From 5df8fd9ad78850a97bba79e8a5ac216110c27a8e Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 5 Apr 2022 10:28:27 +0200 Subject: [PATCH 01/13] fix(Scripts/BlackwingLair): Razorgore should not attack units with Conflagrate. (#11272) Fixes #11183 --- .../BlackrockMountain/BlackwingLair/boss_razorgore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp index 398fe167f..4029ab9f0 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp @@ -96,7 +96,7 @@ public: 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 From 95ee81ae2a982a76d1074b7e83cf452259eda822 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 5 Apr 2022 10:29:36 +0200 Subject: [PATCH 02/13] fix(Core/Spells): Razorgore's Explosion ignores LoS. (#11253) * fix(Core/Spells): Razorgore's Explosion ignores LoS. Fixes #11180 * Update. * Update. * Update. --- .../rev_1648906248199850600.sql | 5 ++++ .../game/Spells/SpellInfoCorrections.cpp | 2 ++ .../BlackwingLair/boss_razorgore.cpp | 29 +++++++++---------- 3 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1648906248199850600.sql diff --git a/data/sql/updates/pending_db_world/rev_1648906248199850600.sql b/data/sql/updates/pending_db_world/rev_1648906248199850600.sql new file mode 100644 index 000000000..aa7a34ce2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1648906248199850600.sql @@ -0,0 +1,5 @@ +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'); diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index c7f494b15..4c1a95971 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4252,6 +4252,8 @@ void SpellMgr::LoadSpellInfoCorrections() ApplySpellFix({ 20038 }, [](SpellInfo* spellInfo) { 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) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp index 4029ab9f0..fb1ab43cd 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp @@ -79,7 +79,6 @@ public: void Reset() override { _Reset(); - _died = false; _charmerGUID.Clear(); secondPhase = false; summons.DespawnAll(); @@ -92,6 +91,18 @@ public: { _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 @@ -191,24 +202,11 @@ public: 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); DoCastAOE(SPELL_EXPLODE_ORB); 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: bool secondPhase; - bool _died; ObjectGuid _charmerGUID; GuidVector _summonGUIDS; }; From e2370446a57cf97b7757e5a4075ab3b0305d8df9 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 5 Apr 2022 08:31:33 +0000 Subject: [PATCH 03/13] chore(DB): import pending files Referenced commit(s): 95ee81ae2a982a76d1074b7e83cf452259eda822 --- data/sql/updates/db_world/2022_04_05_00.sql | 31 +++++++++++++++++++ .../rev_1648906248199850600.sql | 5 --- 2 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/db_world/2022_04_05_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1648906248199850600.sql diff --git a/data/sql/updates/db_world/2022_04_05_00.sql b/data/sql/updates/db_world/2022_04_05_00.sql new file mode 100644 index 000000000..6ca8c32aa --- /dev/null +++ b/data/sql/updates/db_world/2022_04_05_00.sql @@ -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`; diff --git a/data/sql/updates/pending_db_world/rev_1648906248199850600.sql b/data/sql/updates/pending_db_world/rev_1648906248199850600.sql deleted file mode 100644 index aa7a34ce2..000000000 --- a/data/sql/updates/pending_db_world/rev_1648906248199850600.sql +++ /dev/null @@ -1,5 +0,0 @@ -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'); From edb7cac19bb0acd2389c1c5a937b6a6d1b093028 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 5 Apr 2022 13:52:42 +0200 Subject: [PATCH 04/13] feat(Core/Unit): NPCFlags helpers (#11286) * cherry-pick commit (TrinityCore/TrinityCore@d611925) Co-Authored-By: Shauren --- src/server/game/AI/CreatureAISelector.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedEscortAI.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedFollowerAI.cpp | 2 +- src/server/game/AI/SmartScripts/SmartAI.cpp | 6 +-- .../game/AI/SmartScripts/SmartScript.cpp | 6 +-- .../game/Entities/Creature/Creature.cpp | 10 ++--- src/server/game/Entities/Pet/Pet.cpp | 4 +- src/server/game/Entities/Player/Player.cpp | 10 ++--- .../game/Entities/Player/PlayerGossip.cpp | 6 +-- .../game/Entities/Player/PlayerUpdates.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 2 +- src/server/game/Entities/Unit/Unit.h | 38 +++++++++++-------- src/server/game/Entities/Vehicle/Vehicle.cpp | 10 ++--- src/server/game/Events/GameEventMgr.cpp | 2 +- src/server/game/Handlers/NPCHandler.cpp | 4 +- src/server/game/Spells/SpellEffects.cpp | 2 +- src/server/scripts/Commands/cs_modify.cpp | 10 ++--- src/server/scripts/Commands/cs_npc.cpp | 4 +- .../BlackrockDepths/boss_tomb_of_seven.cpp | 6 +-- .../BlackwingLair/boss_nefarian.cpp | 4 +- .../BlackwingLair/boss_vaelastrasz.cpp | 6 +-- .../MoltenCore/boss_majordomo_executus.cpp | 6 +-- .../ScarletEnclave/chapter5.cpp | 6 +-- .../instance_scarlet_monastery.cpp | 2 +- .../ShadowfangKeep/boss_apothecary_hummel.cpp | 4 +- .../ZulAman/instance_zulaman.cpp | 2 +- .../EasternKingdoms/ZulAman/zulaman.cpp | 8 ++-- .../zone_eastern_plaguelands.cpp | 4 +- .../zone_isle_of_queldanas.cpp | 2 +- .../EasternKingdoms/zone_undercity.cpp | 8 ++-- .../scripts/EasternKingdoms/zone_westfall.cpp | 2 +- .../BattleForMountHyjal/hyjalAI.cpp | 10 ++--- .../culling_of_stratholme.cpp | 34 ++++++++--------- .../instance_old_hillsbrad.cpp | 2 +- .../EscapeFromDurnholdeKeep/old_hillsbrad.cpp | 16 ++++---- .../Kalimdor/RazorfenDowns/razorfen_downs.cpp | 4 +- .../scripts/Kalimdor/ZulFarrak/zulfarrak.cpp | 12 +++--- src/server/scripts/Kalimdor/boss_azuregos.cpp | 2 +- src/server/scripts/Kalimdor/zone_azshara.cpp | 2 +- src/server/scripts/Kalimdor/zone_desolace.cpp | 14 +++---- src/server/scripts/Kalimdor/zone_feralas.cpp | 4 +- .../scripts/Kalimdor/zone_orgrimmar.cpp | 4 +- src/server/scripts/Kalimdor/zone_silithus.cpp | 6 +-- .../Kalimdor/zone_thousand_needles.cpp | 14 +++---- .../boss_baltharus_the_warborn.cpp | 4 +- .../instance_trial_of_the_champion.cpp | 10 ++--- .../trial_of_the_champion.cpp | 6 +-- .../instance_trial_of_the_crusader.cpp | 26 ++++++------- .../trial_of_the_crusader.cpp | 8 ++-- .../ForgeOfSouls/forge_of_souls.cpp | 10 ++--- .../HallsOfReflection/halls_of_reflection.cpp | 16 ++++---- .../instance_halls_of_reflection.cpp | 14 +++---- .../FrozenHalls/PitOfSaron/pit_of_saron.cpp | 4 +- .../boss_deathbringer_saurfang.cpp | 8 ++-- .../boss_icecrown_gunship_battle.cpp | 8 ++-- .../IcecrownCitadel/boss_the_lich_king.cpp | 8 ++-- .../scripts/Northrend/Nexus/Oculus/oculus.cpp | 4 +- .../Ulduar/HallsOfStone/brann_bronzebeard.cpp | 18 ++++----- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 2 +- .../Northrend/Ulduar/Ulduar/ulduar.cpp | 4 +- .../scripts/Northrend/isle_of_conquest.cpp | 6 +-- .../scripts/Northrend/zone_borean_tundra.cpp | 22 +++++------ src/server/scripts/Northrend/zone_dalaran.cpp | 4 +- .../scripts/Northrend/zone_dragonblight.cpp | 2 +- .../scripts/Northrend/zone_grizzly_hills.cpp | 6 +-- .../scripts/Northrend/zone_icecrown.cpp | 8 ++-- src/server/scripts/Northrend/zone_zuldrak.cpp | 4 +- .../Outland/BlackTemple/boss_illidan.cpp | 8 ++-- .../BlackTemple/boss_shade_of_akama.cpp | 6 +-- .../Outland/TempestKeep/arcatraz/arcatraz.cpp | 2 +- .../Outland/zone_hellfire_peninsula.cpp | 4 +- .../scripts/Outland/zone_netherstorm.cpp | 16 ++++---- src/server/scripts/Pet/pet_generic.cpp | 12 +++--- .../scripts/World/npc_stave_of_ancients.cpp | 14 +++---- src/server/scripts/World/npcs_special.cpp | 8 ++-- 75 files changed, 293 insertions(+), 285 deletions(-) diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp index 9cdb548ab..25d0037c4 100644 --- a/src/server/game/AI/CreatureAISelector.cpp +++ b/src/server/game/AI/CreatureAISelector.cpp @@ -53,7 +53,7 @@ namespace FactorySelector ai_factory = ai_registry.GetRegistryItem("VehicleAI"); else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER) 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"); else if (creature->IsGuard()) ai_factory = ai_registry.GetRegistryItem("GuardAI"); diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index 35105512a..296947788 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -496,7 +496,7 @@ void npc_escortAI::Start(bool isActiveAttacker /* = true*/, bool run /* = false } //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)) { HasImmuneToNPCFlags = true; diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp index 78df9b767..73ca312d8 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -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."); } - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); AddFollowState(STATE_FOLLOW_INPROGRESS); diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index c46ec8299..0ebb8c6ad 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -199,8 +199,8 @@ void SmartAI::StartPath(bool run, uint32 path, bool repeat, Unit* invoker) if (invoker && invoker->GetTypeId() == TYPEID_PLAYER) { - mEscortNPCFlags = me->GetUInt32Value(UNIT_NPC_FLAGS); - me->SetUInt32Value(UNIT_NPC_FLAGS, 0); + mEscortNPCFlags = me->GetNpcFlags(); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); } Movement::PointsArray pathPoints; @@ -287,7 +287,7 @@ void SmartAI::EndPath(bool fail) if (mEscortNPCFlags) { - me->SetUInt32Value(UNIT_NPC_FLAGS, mEscortNPCFlags); + me->ReplaceAllNpcFlags(NPCFlags(mEscortNPCFlags)); mEscortNPCFlags = 0; } diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 0abc8898f..a3d06d286 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -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) if (IsCreature(*itr)) - (*itr)->ToUnit()->SetUInt32Value(UNIT_NPC_FLAGS, e.action.flag.flag); + (*itr)->ToUnit()->ReplaceAllNpcFlags(NPCFlags(e.action.flag.flag)); delete targets; 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) if (IsCreature(*itr)) - (*itr)->ToUnit()->SetFlag(UNIT_NPC_FLAGS, e.action.flag.flag); + (*itr)->ToUnit()->SetNpcFlag(NPCFlags(e.action.flag.flag)); delete targets; 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) if (IsCreature(*itr)) - (*itr)->ToUnit()->RemoveFlag(UNIT_NPC_FLAGS, e.action.flag.flag); + (*itr)->ToUnit()->RemoveNpcFlag(NPCFlags(e.action.flag.flag)); delete targets; break; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index edf6b96a6..4eb0a571f 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -492,9 +492,9 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele ObjectMgr::ChooseCreatureFlags(cInfo, npcflag, unit_flags, dynamicflags, data); if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT) - SetUInt32Value(UNIT_NPC_FLAGS, npcflag | sGameEventMgr->GetNPCFlag(this)); + ReplaceAllNpcFlags(NPCFlags(npcflag | sGameEventMgr->GetNPCFlag(this))); else - SetUInt32Value(UNIT_NPC_FLAGS, npcflag); + ReplaceAllNpcFlags(NPCFlags(npcflag)); // Xinef: NPC is in combat, keep this flag! unit_flags &= ~UNIT_FLAG_IN_COMBAT; @@ -1301,7 +1301,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask) CreatureData& data = sObjectMgr->NewOrExistCreatureData(m_spawnId); uint32 displayId = GetNativeDisplayId(); - uint32 npcflag = GetUInt32Value(UNIT_NPC_FLAGS); + uint32 npcflag = GetNpcFlags(); uint32 unit_flags = GetUnitFlags(); uint32 dynamicflags = GetDynamicFlags(); @@ -1846,7 +1846,7 @@ void Creature::setDeathState(DeathState s, bool despawn) SaveRespawnTime(); 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 @@ -1888,7 +1888,7 @@ void Creature::setDeathState(DeathState s, bool despawn) 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))); SetMeleeDamageSchool(SpellSchools(cinfo->dmgschool)); diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index e05984e05..bb92bee02 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -290,7 +290,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c SetNativeDisplayId(petInfo->DisplayId); UpdatePositionData(); uint8 petlevel = petInfo->Level; - SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); SetName(petInfo->Name); 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_PETEXPERIENCE, 0); 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) { diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 791cc371a..a3e77b584 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2062,7 +2062,7 @@ Creature* Player::GetNPCIfCanInteractWith(ObjectGuid guid, uint32 npcflagmask) return nullptr; // appropriate npc type - if (npcflagmask && !creature->HasFlag(UNIT_NPC_FLAGS, npcflagmask)) + if (npcflagmask && !creature->HasNpcFlag(NPCFlags(npcflagmask))) return nullptr; // not allow interaction under control, but allow with own pets @@ -7543,7 +7543,7 @@ void Player::SendQuestGiverStatusMultiple() Creature* questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*this, *itr); if (!questgiver || questgiver->IsHostileTo(this)) continue; - if (!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER)) + if (!questgiver->HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER)) continue; questStatus = GetQuestDialogStatus(questgiver); @@ -8826,7 +8826,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy pet->SetCreatorGUID(GetGUID()); pet->SetFaction(GetFaction()); 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->InitStatsForLevel(getLevel()); @@ -13866,7 +13866,7 @@ bool Player::CanResummonPet(uint32 spellid) 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; SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(c->GetEntry()); @@ -13889,7 +13889,7 @@ bool Player::CanSeeSpellClickOn(Creature const* c) 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; ConditionList conditions = sConditionMgr->GetConditionsForNpcVendorEvent(creature->GetEntry(), 0); diff --git a/src/server/game/Entities/Player/PlayerGossip.cpp b/src/server/game/Entities/Player/PlayerGossip.cpp index ee20e38cd..ed1e45a1c 100644 --- a/src/server/game/Entities/Player/PlayerGossip.cpp +++ b/src/server/game/Entities/Player/PlayerGossip.cpp @@ -45,7 +45,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool if (source->GetTypeId() == TYPEID_UNIT) { - npcflags = source->GetUInt32Value(UNIT_NPC_FLAGS); + npcflags = source->ToUnit()->GetNpcFlags(); if (showQuests && npcflags & UNIT_NPC_FLAG_QUESTGIVER) PrepareQuestMenu(source->GetGUID()); } @@ -215,7 +215,7 @@ void Player::SendPreparedGossip(WorldObject* source) 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) - 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()); 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 (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(); diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index c7d74e889..a00e17238 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -1739,7 +1739,7 @@ void Player::UpdateForQuestWorldObjects() continue; // 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; SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(obj->GetEntry()); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index fad2d4730..2278439f3 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -18183,7 +18183,7 @@ void Unit::RemoveVehicleKit() m_updateFlag &= ~UPDATEFLAG_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 diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index ea608b1a7..4594adb1a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -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 }; +DEFINE_ENUM_FLAG(NPCFlags); + enum MovementFlags { MOVEMENTFLAG_NONE = 0x00000000, @@ -1606,20 +1608,26 @@ public: 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; - [[nodiscard]] bool IsVendor() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_VENDOR); } - [[nodiscard]] bool IsTrainer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TRAINER); } - [[nodiscard]] bool IsQuestGiver() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); } - [[nodiscard]] bool IsGossip() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); } - [[nodiscard]] bool IsTaxi() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_FLIGHTMASTER); } - [[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 IsBanker() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BANKER); } - [[nodiscard]] bool IsInnkeeper() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_INNKEEPER); } - [[nodiscard]] bool IsSpiritHealer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER); } - [[nodiscard]] bool IsSpiritGuide() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITGUIDE); } - [[nodiscard]] bool IsTabardDesigner()const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_TABARDDESIGNER); } - [[nodiscard]] bool IsAuctioner() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_AUCTIONEER); } - [[nodiscard]] bool IsArmorer() const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_REPAIR); } + NPCFlags GetNpcFlags() const { return NPCFlags(GetUInt32Value(UNIT_NPC_FLAGS)); } + bool HasNpcFlag(NPCFlags flags) const { return HasFlag(UNIT_NPC_FLAGS, flags) != 0; } + void SetNpcFlag(NPCFlags flags) { SetFlag(UNIT_NPC_FLAGS, flags); } + void RemoveNpcFlag(NPCFlags flags) { RemoveFlag(UNIT_NPC_FLAGS, flags); } + void ReplaceAllNpcFlags(NPCFlags flags) { SetUInt32Value(UNIT_NPC_FLAGS, flags); } + + [[nodiscard]] bool IsVendor() const { return HasNpcFlag(UNIT_NPC_FLAG_VENDOR); } + [[nodiscard]] bool IsTrainer() const { return HasNpcFlag(UNIT_NPC_FLAG_TRAINER); } + [[nodiscard]] bool IsQuestGiver() const { return HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); } + [[nodiscard]] bool IsGossip() const { return HasNpcFlag(UNIT_NPC_FLAG_GOSSIP); } + [[nodiscard]] bool IsTaxi() const { return HasNpcFlag(UNIT_NPC_FLAG_FLIGHTMASTER); } + [[nodiscard]] bool IsGuildMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_PETITIONER); } + [[nodiscard]] bool IsBattleMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_BATTLEMASTER); } + [[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 { return HasFlag(UNIT_NPC_FLAGS, @@ -1628,7 +1636,7 @@ public: UNIT_NPC_FLAG_INNKEEPER | UNIT_NPC_FLAG_SPIRITHEALER | 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 IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); } diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index d108ffbff..2ee067675 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -119,14 +119,14 @@ void Vehicle::Reset(bool evading /*= false*/) if (_me->GetTypeId() == TYPEID_PLAYER) { if (_usableSeatNum) - _me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PLAYER_VEHICLE); + _me->SetNpcFlag(UNIT_NPC_FLAG_PLAYER_VEHICLE); } else { ApplyAllImmunities(); InstallAllAccessories(evading); if (_usableSeatNum) - _me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + _me->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); } if (GetBase()->GetTypeId() == TYPEID_UNIT) @@ -355,9 +355,9 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId) if (!_usableSeatNum) { if (_me->GetTypeId() == TYPEID_PLAYER) - _me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_PLAYER_VEHICLE); + _me->RemoveNpcFlag(UNIT_NPC_FLAG_PLAYER_VEHICLE); 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); 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 if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUnselectable) diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 54787a29b..450a8a424 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -1289,7 +1289,7 @@ void GameEventMgr::UpdateEventNPCFlags(uint16 event_id) if (CreatureTemplate const* creatureTemplate = creature->GetCreatureTemplate()) 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 //cr->ResetGossipOptions(); } diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index c2f8bbb91..61d1feaa1 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -286,11 +286,11 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData) } // 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; // 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; // set faction visible if needed diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 79c08121e..15dcd29b4 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2412,7 +2412,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex) return; 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->SetReactState(REACT_PASSIVE); diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index 403dec75c..9ab6bcb6e 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -266,7 +266,7 @@ public: { uint32 factionid = target->GetFaction(); uint32 flag = target->GetUnitFlags(); - uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS); + uint32 npcflag = target->GetNpcFlags(); uint32 dyflag = target->GetDynamicFlags(); handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag); return true; @@ -274,7 +274,7 @@ public: uint32 factionid = factionID.value(); UnitFlags flag; - uint32 npcflag; + NPCFlags npcflag; uint32 dyflag; auto pflag = flagID; @@ -285,9 +285,9 @@ public: auto pnpcflag = npcFlagID; if (!pnpcflag) - npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS); + npcflag = target->GetNpcFlags(); else - npcflag = *npcFlagID; + npcflag = NPCFlags(*npcFlagID); auto pdyflag = dynamicFlagID; if (!pdyflag) @@ -306,7 +306,7 @@ public: target->SetFaction(factionid); target->ReplaceAllUnitFlags(flag); - target->SetUInt32Value(UNIT_NPC_FLAGS, npcflag); + target->ReplaceAllNpcFlags(npcflag); target->ReplaceAllDynamicFlags(dyflag); return true; diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index b12688ca7..2490c1d40 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -523,7 +523,7 @@ public: return false; } - creature->SetUInt32Value(UNIT_NPC_FLAGS, NPCFlags(npcFlags)); + creature->ReplaceAllNpcFlags(NPCFlags(npcFlags)); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_NPCFLAG); @@ -588,7 +588,7 @@ public: CreatureTemplate const* cInfo = target->GetCreatureTemplate(); uint32 faction = target->GetFaction(); - uint32 npcflags = target->GetUInt32Value(UNIT_NPC_FLAGS); + uint32 npcflags = target->GetNpcFlags(); uint32 mechanicImmuneMask = cInfo->MechanicImmuneMask; uint32 spellSchoolImmuneMask = cInfo->SpellSchoolImmuneMask; uint32 displayid = target->GetDisplayId(); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp index 9aea5bb11..8b21317dc 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp @@ -136,7 +136,7 @@ public: break; case GOSSIP_ACTION_INFO_DEF+2: CloseGossipMenuFor(player); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); // Start encounter InstanceScript* instance = creature->GetInstanceScript(); 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 { - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); } else { - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP); } } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index 6001af2ae..bee157c66 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -256,7 +256,7 @@ public: me->SetVisible(true); me->SetPhaseMask(1, true); - me->SetUInt32Value(UNIT_NPC_FLAGS, 1); + me->ReplaceAllNpcFlags(NPCFlags(1)); me->SetFaction(FACTION_FRIENDLY); me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR); me->RemoveAura(SPELL_NEFARIANS_BARRIER); @@ -472,7 +472,7 @@ public: Talk(SAY_GAMESBEGIN_1); events.ScheduleEvent(EVENT_START_EVENT, 4000); me->SetFaction(FACTION_DRAGONFLIGHT_BLACK); - me->SetUInt32Value(UNIT_NPC_FLAGS, 0); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); me->SetStandState(UNIT_STAND_STATE_STAND); 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. diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp index 807199a26..aed80f54f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp @@ -89,8 +89,8 @@ public: HasYelled = false; _introDone = false; _burningAdrenalineCast = 0; - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); me->SetFaction(FACTION_FRIENDLY); me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); } @@ -132,7 +132,7 @@ public: void BeginSpeech(Unit* target) { PlayerGUID = target->GetGUID(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); _eventsIntro.ScheduleEvent(EVENT_SPEECH_1, 1000); } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp index f6ce13dca..bc8ec18bb 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp @@ -181,7 +181,7 @@ public: { events.SetPhase(PHASE_NONE); 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); } } @@ -504,7 +504,7 @@ public: { 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->NearTeleportTo(MajordomoRagnaros.GetPositionX(), MajordomoRagnaros.GetPositionY(), MajordomoRagnaros.GetPositionZ(), MajordomoRagnaros.GetOrientation()); events.SetPhase(PHASE_NONE); @@ -558,7 +558,7 @@ public: case GOSSIP_ACTION_INFO_DEF+3: { 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()->DoAction(ACTION_START_RAGNAROS_INTRO); break; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 42005240b..c10e8543a 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -547,7 +547,7 @@ public: summons.DespawnAll(); 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->SetVisible(true); me->setActive(true); @@ -623,7 +623,7 @@ public: break; case EVENT_START_COUNTDOWN_5: 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! SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 0); SendUpdateWorldState(WORLD_STATE_COUNTDOWN_ENABLE, 0); @@ -1131,7 +1131,7 @@ public: if (i->GetSource()->IsAlive() && me->IsWithinDistInMap(i->GetSource(), 100)) 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; } case EVENT_OUTRO_SCENE_61: diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp index b07fceace..7e8d14e30 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp @@ -781,7 +781,7 @@ public: if (player->HasAura(AURA_ASHBRINGER) && !SayAshbringer) { 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->CastSpell(me, 57767, true); me->SetDisplayId(16179); diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp index 371c6ec1d..07b19f003 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp @@ -97,7 +97,7 @@ public: { 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); DoAction(ACTION_START_EVENT); } @@ -112,7 +112,7 @@ public: summons.DespawnAll(); me->SetFaction(FACTION_FRIENDLY); me->SummonCreatureGroup(1); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } void JustSummoned(Creature* summon) override diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index d5a60188c..c54148ddf 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -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)) { Hostage->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - Hostage->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Hostage->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } } } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 74702c7c8..9c60402b2 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -503,10 +503,10 @@ public: if (action == GOSSIP_ACTION_INFO_DEF + 1) CloseGossipMenuFor(player); - if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) + if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP)) return true; - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); InstanceScript* instance = creature->GetInstanceScript(); if (instance) @@ -626,7 +626,7 @@ public: { CloseGossipMenuFor(player); me->SetFacingToObject(player); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); Talk(SAY_HARRISON_0); _gongEvent = GONG_EVENT_1; _gongTimer = 4000; @@ -763,7 +763,7 @@ public: _gongTimer = 6000; break; 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); _gongEvent = 0; diff --git a/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp index c906b1fe5..1e879fb17 100644 --- a/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp @@ -102,7 +102,7 @@ public: _playerGUID.Clear(); events.Reset(); 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 @@ -113,7 +113,7 @@ public: void SetGUID(ObjectGuid guid, int32) override { _playerGUID = guid; - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); events.Reset(); summons.DespawnAll(); diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp index f5e4b3321..4d73e2522 100644 --- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp @@ -146,7 +146,7 @@ public: morlenGUID.Clear(); summons.DespawnAll(); 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.ScheduleEvent(EVENT_CHECK_PLAYER, 5000); events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0); diff --git a/src/server/scripts/EasternKingdoms/zone_undercity.cpp b/src/server/scripts/EasternKingdoms/zone_undercity.cpp index 8e3b7055b..636d3bdf9 100644 --- a/src/server/scripts/EasternKingdoms/zone_undercity.cpp +++ b/src/server/scripts/EasternKingdoms/zone_undercity.cpp @@ -1031,7 +1031,7 @@ public: { me->SetCorpseDelay(1); me->SetRespawnTime(1); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); bStepping = false; step = 0; @@ -2376,7 +2376,7 @@ public: me->Mount(MODEL_WHITE_WULF); me->SetCorpseDelay(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); bStepping = false; @@ -3899,8 +3899,8 @@ public: JumpToNextStep(5 * IN_MILLISECONDS); break; case 163: - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); Talk(THRALL_SAY_THRONE_11); UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_FIGHT_H, 0); UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_FIGHT_H, 0); diff --git a/src/server/scripts/EasternKingdoms/zone_westfall.cpp b/src/server/scripts/EasternKingdoms/zone_westfall.cpp index 316a8fff8..870cb76c9 100644 --- a/src/server/scripts/EasternKingdoms/zone_westfall.cpp +++ b/src/server/scripts/EasternKingdoms/zone_westfall.cpp @@ -141,7 +141,7 @@ public: case 17: SetEscortPaused(true); 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); break; } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index f46a664c2..014f3862c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -387,7 +387,7 @@ void hyjalAI::Reset() Debug = false; //Flags - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); //Initialize spells memset(Spells, 0, sizeof(Spell) * HYJAL_AI_MAX_SPELLS); @@ -587,7 +587,7 @@ void hyjalAI::StartEvent(Player* player) CheckTimer = 5000; 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_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); if (JainaDummy) { - JainaDummy->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + JainaDummy->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); CAST_AI(hyjalAI, JainaDummy->AI())->IsDummy = true; DummyGuid = JainaDummy->GetGUID(); } @@ -629,7 +629,7 @@ void hyjalAI::Retreat() } SpawnVeins(); 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() @@ -823,7 +823,7 @@ void hyjalAI::UpdateAI(uint32 diff) } EventBegun = false; CheckTimer = 0; - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); BossGUID[i].Clear(); instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0); // Reset world state for enemies to disable it } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 51e921a76..d664c4c3a 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -292,13 +292,13 @@ public: 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) { case GOSSIP_ACTION_INFO_DEF+1: creature->AI()->DoAction(ACTION_START_CITY); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); CloseGossipMenuFor(player); break; case GOSSIP_ACTION_INFO_DEF+2: @@ -309,24 +309,24 @@ public: case GOSSIP_ACTION_INFO_DEF+3: // Start Town Hall part creature->AI()->DoAction(ACTION_START_TOWN_HALL); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); CloseGossipMenuFor(player); break; case GOSSIP_ACTION_INFO_DEF+4: // After killing epoch creature->AI()->DoAction(ACTION_START_SECRET_PASSAGE); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); creature->SetTarget(); CloseGossipMenuFor(player); break; case GOSSIP_ACTION_INFO_DEF+5: creature->AI()->DoAction(ACTION_START_LAST_CITY); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); CloseGossipMenuFor(player); break; case GOSSIP_ACTION_INFO_DEF+6: creature->AI()->DoAction(ACTION_START_MALGANIS); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); CloseGossipMenuFor(player); break; } @@ -509,7 +509,7 @@ public: waveKillCount = 0; timeRiftId = 0; - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); if (pInstance) { @@ -543,7 +543,7 @@ public: break; // Reached City case 8: - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); SetEscortPaused(true); if (pInstance) pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED_INTRO); @@ -577,7 +577,7 @@ public: case 20: if (pInstance) 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); SetEscortPaused(true); break; @@ -628,7 +628,7 @@ public: // Behind secred passage case 45: SetRun(true); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); SetEscortPaused(true); if (pInstance) pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_LAST_CITY); @@ -650,7 +650,7 @@ public: if (pInstance) 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); break; // Infront of malganis @@ -1123,7 +1123,7 @@ public: if (pInstance) 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; break; case EVENT_ACTION_PHASE5: @@ -1258,7 +1258,7 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data) { case COS_PROGRESS_FINISHED_INTRO: SetNextWaypoint(9, false); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case COS_PROGRESS_FINISHED_CITY_INTRO: case COS_PROGRESS_KILLED_MEATHOOK: @@ -1285,19 +1285,19 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data) break; case COS_PROGRESS_REACHED_TOWN_HALL: SetNextWaypoint(21, false); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case COS_PROGRESS_KILLED_EPOCH: SetNextWaypoint(32, false); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case COS_PROGRESS_LAST_CITY: SetNextWaypoint(46, false); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case COS_PROGRESS_BEFORE_MALGANIS: SetNextWaypoint(55, false); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp index e3d3d919b..460453af2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp @@ -162,7 +162,7 @@ public: } case DATA_THRALL_ADD_FLAG: if (Creature* thrall = instance->GetCreature(_thrallGUID)) - thrall->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + thrall->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 97c39bf3d..f56e34b1d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -229,7 +229,7 @@ public: CloseGossipMenuFor(player); 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; } @@ -365,7 +365,7 @@ public: SetEscortPaused(true); SetRun(true); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case 64: SetRun(false); @@ -413,7 +413,7 @@ public: break; case 103: 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); me->SetVisible(false); break; @@ -468,7 +468,7 @@ public: combatEvents.Reset(); 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); uint32 data = instance->GetData(DATA_ESCORT_PROGRESS); @@ -615,7 +615,7 @@ public: break; case EVENT_THRALL_TALK: Talk(SAY_MEET_TARETHA); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case EVENT_SUMMON_CHRONO: 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; case EVENT_SUMMON_EROZION: 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; case EVENT_EROZION_TALK_1: if (Creature* erozion = summons.GetCreatureWithEntry(NPC_EROZION)) @@ -808,7 +808,7 @@ public: SetEscortPaused(true); 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) { @@ -903,7 +903,7 @@ public: 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); } diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp index 975ad14c9..6eeb72eb9 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp @@ -90,7 +90,7 @@ public: channeling = false; eventProgress = 0; spawnerCount = 0; - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); me->SetReactState(REACT_AGGRESSIVE); } } @@ -119,7 +119,7 @@ public: { eventInProgress = true; 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->GetMotionMaster()->MovePath(PATH_ESCORT, false); } diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index f9f59db28..608b9446b 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -68,7 +68,7 @@ public: me->SetFaction(FACTION_FRIENDLY); postGossipStep = 0; Text_Timer = 0; - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } InstanceScript* instance; @@ -285,7 +285,7 @@ public: { case NPC_BLY: case NPC_WEEGLI: - crew->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + crew->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; default: break; @@ -345,7 +345,7 @@ public: void InitializeAI() override { - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); Reset(); } @@ -435,7 +435,7 @@ public: else if (instance->GetData(DATA_PYRAMID) == PYRAMID_KILLED_ALL_TROLLS) { 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) { @@ -458,7 +458,7 @@ public: else if (instance->GetData(DATA_PYRAMID) == PYRAMID_KILLED_ALL_TROLLS) { 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) { @@ -478,7 +478,7 @@ public: instance->SetData(DATA_PYRAMID, PYRAMID_DESTROY_GATES); 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); } } } diff --git a/src/server/scripts/Kalimdor/boss_azuregos.cpp b/src/server/scripts/Kalimdor/boss_azuregos.cpp index 69436098e..8a14d4b2f 100644 --- a/src/server/scripts/Kalimdor/boss_azuregos.cpp +++ b/src/server/scripts/Kalimdor/boss_azuregos.cpp @@ -64,7 +64,7 @@ public: { me->RemoveAurasDueToSpell(SPELL_MARK_OF_FROST_AURA); _scheduler.CancelAll(); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->RestoreFaction(); me->GetMap()->DoForAllPlayers([&](Player* p) { diff --git a/src/server/scripts/Kalimdor/zone_azshara.cpp b/src/server/scripts/Kalimdor/zone_azshara.cpp index 3b8cc404d..4dbd81639 100644 --- a/src/server/scripts/Kalimdor/zone_azshara.cpp +++ b/src/server/scripts/Kalimdor/zone_azshara.cpp @@ -355,7 +355,7 @@ public: if (me->IsWithinDist(player, 10) && me->GetPositionX() > player->GetPositionX() && !Reached) { Talk(SAY_RIZZLE_FINAL); - me->SetUInt32Value(UNIT_NPC_FLAGS, 1); + me->ReplaceAllNpcFlags(NPCFlags(1)); me->SetFaction(FACTION_FRIENDLY); me->GetMotionMaster()->MoveIdle(); me->RemoveAurasDueToSpell(SPELL_PERIODIC_DEPTH_CHARGE); diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp index cc87909d7..6f941b136 100644 --- a/src/server/scripts/Kalimdor/zone_desolace.cpp +++ b/src/server/scripts/Kalimdor/zone_desolace.cpp @@ -147,7 +147,7 @@ public: _faction = faction; SetEscortPaused(false); 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); } @@ -192,11 +192,11 @@ public: void SummonHelpers() { 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)) { - cr->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + cr->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); summons[0] = cr->GetGUID(); } if (Creature* cr = me->SummonCreature(NPC_CARAVAN_KODO, *me)) @@ -291,7 +291,7 @@ public: // North -> South - hire case 77: SetEscortPaused(true); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); Talk(SAY_CARAVAN_HIRE); events.ScheduleEvent(EVENT_WAIT_FOR_ASSIST, TIME_HIRE_STOP); break; @@ -300,7 +300,7 @@ public: SetEscortPaused(true); 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); } events.ScheduleEvent(EVENT_WAIT_FOR_ASSIST, TIME_HIRE_STOP); @@ -403,7 +403,7 @@ public: case EVENT_WAIT_FOR_ASSIST: SetEscortPaused(false); 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; case EVENT_RESTART_ESCORT: CheckCaravan(); @@ -484,7 +484,7 @@ public: } 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); } } diff --git a/src/server/scripts/Kalimdor/zone_feralas.cpp b/src/server/scripts/Kalimdor/zone_feralas.cpp index 6d0c5bdfd..ff507e4f2 100644 --- a/src/server/scripts/Kalimdor/zone_feralas.cpp +++ b/src/server/scripts/Kalimdor/zone_feralas.cpp @@ -98,7 +98,7 @@ public: 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->RestoreFaction(); @@ -202,7 +202,7 @@ public: 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->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE); me->GetMotionMaster()->MoveFollow(player, 3.f, M_PI); diff --git a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp index b73c5cc54..b5aadc711 100644 --- a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp @@ -258,7 +258,7 @@ public: { 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->SummonCreature(NPC_HERALD_OF_THRALL, heraldOfThrallPos, TEMPSUMMON_TIMED_DESPAWN, 20 * IN_MILLISECONDS); _scheduler.Schedule(2s, [this](TaskContext /*context*/) @@ -272,7 +272,7 @@ public: .Schedule(15s, [this](TaskContext /*context*/) { 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) { if (p->IsAlive() && !p->IsGameMaster()) diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 5cb27bc1d..7359a53f9 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -915,7 +915,7 @@ public: 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_DISPLAYID, 15420); Merithra->SetFaction(FACTION_FRIENDLY); @@ -923,7 +923,7 @@ public: 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_DISPLAYID, 15419); Caelestrasz->SetFaction(FACTION_FRIENDLY); @@ -931,7 +931,7 @@ public: 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_DISPLAYID, 15418); Arygos->SetFaction(FACTION_FRIENDLY); diff --git a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp index 265b6388e..1dff96f93 100644 --- a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp +++ b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp @@ -263,8 +263,8 @@ public: if (me->GetFaction() != NormFaction) me->SetFaction(NormFaction); - if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP)) + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); DoCast(me, SPELL_PLUCKY_CHICKEN, false); } @@ -276,19 +276,19 @@ public: if (TextEmote == TEXT_EMOTE_BECKON) { 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); } } if (TextEmote == TEXT_EMOTE_CHICKEN) { - if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) + if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP)) return; else { 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); me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE); } @@ -297,14 +297,14 @@ public: 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 (!me->GetVictim()) EnterEvadeMode(); else - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); return; } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index f129b9ebd..7b1ef38c7 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -377,7 +377,7 @@ public: void Reset() override { _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 if (me->GetInstanceScript()->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE) @@ -439,7 +439,7 @@ public: Talk(SAY_XERESTRASZA_EVENT_6); break; 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); me->setActive(false); break; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp index c48dfd8f4..c1c8d8dc6 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp @@ -316,7 +316,7 @@ public: c->SetHomePosition(748.309f, 619.488f, 411.172f, 4.71239f); c->SetPosition(748.309f, 619.488f, 411.172f, 4.71239f); c->SetRespawnTime(3); - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } InstanceProgress = INSTANCE_PROGRESS_INITIAL; } @@ -329,7 +329,7 @@ public: announcer->SetHomePosition(735.81f, 661.92f, 412.39f, 4.714f); announcer->SetPosition(735.81f, 661.92f, 412.39f, 4.714f); 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 ) if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) ) @@ -387,7 +387,7 @@ public: c->SetHomePosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetPosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetRespawnTime(3); - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } NPC_MemoryEntry = 0; InstanceProgress = INSTANCE_PROGRESS_CHAMPIONS_DEAD; @@ -411,7 +411,7 @@ public: c->SetHomePosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetPosition(743.14f, 628.77f, 411.2f, 4.71239f); c->SetRespawnTime(3); - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } InstanceProgress = INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED; } @@ -968,7 +968,7 @@ public: case EVENT_RESTORE_ANNOUNCER_GOSSIP: { if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) ) - announcer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + announcer->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } break; case EVENT_START_ARGENT_CHALLENGE_INTRO: diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp index 79f0149ba..cff5d065f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp @@ -33,7 +33,7 @@ public: 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; InstanceScript* pInstance = creature->GetInstanceScript(); @@ -76,7 +76,7 @@ public: 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; 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) { 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); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp index d4f4b87b6..c8d22f5c9 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp @@ -767,7 +767,7 @@ public: if( Creature* c = instance->GetCreature(NPC_TirionGUID) ) c->AI()->Talk(SAY_STAGE_0_06); if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; } case EVENT_SCENE_101: @@ -946,7 +946,7 @@ public: if( Creature* c = instance->GetCreature(NPC_TirionGUID) ) c->AI()->Talk(SAY_STAGE_1_11); if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; } case EVENT_SCENE_201: @@ -1120,7 +1120,7 @@ public: if( Creature* c = instance->GetCreature(NPC_TirionGUID) ) c->AI()->Talk(SAY_STAGE_2_06); if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; } case EVENT_SCENE_301: @@ -1435,11 +1435,11 @@ public: { case INSTANCE_PROGRESS_INITIAL: if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case INSTANCE_PROGRESS_INTRO_DONE: 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) ) { c->AI()->DoAction(-1); // despawn summons @@ -1459,7 +1459,7 @@ public: break; case INSTANCE_PROGRESS_BEASTS_DEAD: 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) ) c->DespawnOrUnsummon(); NPC_FizzlebangGUID.Clear(); @@ -1478,7 +1478,7 @@ public: c->DespawnOrUnsummon(); 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) ) { jaraxxus->CastSpell(jaraxxus, 67924, true); @@ -1490,7 +1490,7 @@ public: break; case INSTANCE_PROGRESS_JARAXXUS_DEAD: 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) if (Creature* c = instance->GetCreature(guid)) c->DespawnOrUnsummon(); @@ -1498,7 +1498,7 @@ public: break; case INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD: 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) ) { c->AI()->DoAction(-1); @@ -1521,11 +1521,11 @@ public: if (InstanceProgress == INSTANCE_PROGRESS_ANUB_ARAK) { c->SetVisible(false); - c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } else { - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); c->SetVisible(true); c->SetFacingTo(c->GetOrientation()); } @@ -1550,7 +1550,7 @@ public: if( Creature* c = instance->GetCreature(NPC_BarrettGUID) ) { c->SetVisible(false); - c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } break; } @@ -1566,7 +1566,7 @@ public: if( instance->IsHeroic() && AttemptsLeft == 0 ) 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_EnterGateGUID, true); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index 00d527e83..8861705ba 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -36,7 +36,7 @@ public: 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; InstanceScript* pInstance = creature->GetInstanceScript(); @@ -59,7 +59,7 @@ public: gossipTextId = MSG_CRUSADERS; break; case INSTANCE_PROGRESS_DONE: - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); return true; default: return true; @@ -72,7 +72,7 @@ public: 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; InstanceScript* pInstance = creature->GetInstanceScript(); @@ -82,7 +82,7 @@ public: if( uiAction == GOSSIP_ACTION_INFO_DEF + 1337 ) { pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } CloseGossipMenuFor(player); diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp index 5414368ad..dacea6bc7 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -69,9 +69,9 @@ public: void DoAction(int32 a) override { 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.ScheduleEvent(1, 1000); } @@ -190,7 +190,7 @@ public: if (creature->IsQuestGiver()) 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) 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) { - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); } void MovementInform(uint32 type, uint32 id) override { 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) Talk(SAY_JAINA_OUTRO); else diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 3d90c8743..40547bc6c 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -91,7 +91,7 @@ public: 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; if (creature->IsQuestGiver()) @@ -134,7 +134,7 @@ public: 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; InstanceScript* instance = creature->GetInstanceScript(); @@ -154,13 +154,13 @@ public: CloseGossipMenuFor(player); if (creature->AI()) 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; case GOSSIP_ACTION_INFO_DEF+2: CloseGossipMenuFor(player); if (creature->AI()) 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; } @@ -233,7 +233,7 @@ public: me->GetMotionMaster()->MovePoint(0, SpawnPos); break; 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); me->SetFacingTo(0.89f); break; @@ -1619,7 +1619,7 @@ public: 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; ClearGossipMenuFor(player); @@ -1627,7 +1627,7 @@ public: if (InstanceScript* pInstance = creature->GetInstanceScript()) 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); return true; } @@ -1748,7 +1748,7 @@ public: case EVENT_ADD_GOSSIP: me->RemoveAura(me->GetEntry() == NPC_JAINA_PART2 ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS); me->SetFacingTo(LeaderEscapePos.GetOrientation()); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; case EVENT_START_RUN: { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index 922da7465..13d71c1da 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -221,7 +221,7 @@ public: NPC_LeaderIntroGUID = creature->GetGUID(); if (TeamIdInInstance == TEAM_ALLIANCE) 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); break; case NPC_DARK_RANGER_LORALEN: @@ -313,7 +313,7 @@ public: if (!(EncounterMask & (1 << DATA_LK_INTRO))) { 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); if (TeamIdInInstance != TEAM_ALLIANCE) { @@ -323,8 +323,8 @@ public: } else if (!(EncounterMask & (1 << DATA_LICH_KING))) { - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); + creature->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); creature->UpdatePosition(LeaderEscapePos, true); creature->StopMovingOnCurrentPos(); } @@ -530,8 +530,8 @@ public: c->GetMotionMaster()->MoveIdle(); c->UpdatePosition(LeaderEscapePos, true); c->StopMovingOnCurrentPos(); - c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + c->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); + c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); c->SetHealth(c->GetMaxHealth() / 20); c->AI()->Reset(); c->setActive(false); @@ -1196,7 +1196,7 @@ public: break; case 11: if (Creature* c = instance->GetCreature(NPC_LeaderGUID)) - c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + c->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); ++outroStep; outroTimer = 300 * 1000; break; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index 8ab095f37..2de3f032e 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -1150,7 +1150,7 @@ public: pInstance = me->GetInstanceScript(); barrierGUID.Clear(); events.Reset(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); if (pInstance) { @@ -1206,7 +1206,7 @@ public: Talk(SAY_JAINA_OUTRO_3); break; 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)) g->SetGoState(GO_STATE_ACTIVE); break; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 64cb5b42c..c3685ded4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -531,7 +531,7 @@ public: void Reset() override { _events.Reset(); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetReactState(REACT_PASSIVE); } @@ -558,7 +558,7 @@ public: for (std::list::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr) (*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); _events.SetPhase(PHASE_INTRO_H); _events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H); @@ -792,7 +792,7 @@ public: void Reset() override { _events.Reset(); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetReactState(REACT_PASSIVE); } @@ -819,7 +819,7 @@ public: for (std::list::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr) (*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); _events.SetPhase(PHASE_INTRO_A); _events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500, 0, PHASE_INTRO_A); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 69784292b..f13532524 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -758,9 +758,9 @@ public: void sGossipSelect(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/) override { - if (!me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) + if (!me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP)) return; - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->GetTransport()->setActive(true); me->GetTransport()->ToMotionTransport()->EnableMovement(true); _events.ScheduleEvent(EVENT_INTRO_H_1, 5000); @@ -1093,9 +1093,9 @@ public: void sGossipSelect(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/) override { - if (!me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) + if (!me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP)) return; - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->GetTransport()->setActive(true); me->GetTransport()->ToMotionTransport()->EnableMovement(true); _events.ScheduleEvent(EVENT_INTRO_A_1, 5000); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index a29b1faad..c971109cc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -1285,7 +1285,7 @@ public: { _events.Reset(); if (_instance->GetBossState(DATA_THE_LICH_KING) == DONE || (me->GetMap()->IsHeroic() && !_instance->GetData(DATA_LK_HC_AVAILABLE))) - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetReactState(REACT_PASSIVE); } @@ -1357,18 +1357,18 @@ public: { ScriptedAI::JustReachedHome(); if (!(_instance->GetBossState(DATA_THE_LICH_KING) == DONE || (me->GetMap()->IsHeroic() && !_instance->GetData(DATA_LK_HC_AVAILABLE)))) - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); } void sGossipSelect(Player* /*player*/, uint32 sender, uint32 action) override { Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)); - if (me->GetCreatureTemplate()->GossipMenuId == sender && !action && me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) && theLichKing && !theLichKing->IsInEvadeMode()) + if (me->GetCreatureTemplate()->GossipMenuId == sender && !action && me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP) && theLichKing && !theLichKing->IsInEvadeMode()) { if (me->GetMap()->IsHeroic() && !_instance->GetData(DATA_LK_HC_AVAILABLE)) return; - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetWalk(true); me->GetMotionMaster()->MovePoint(POINT_TIRION_INTRO, TirionIntro); } diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index f0702d7c6..ca0adf671 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -132,7 +132,7 @@ public: } if (resetPosition) { - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); switch (me->GetEntry()) { case NPC_VERDISA: @@ -161,7 +161,7 @@ public: { Talk(SAY_BELGARISTRASZ); } - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); } }; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp index c87908a13..dd8a5e991 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp @@ -316,7 +316,7 @@ public: me->SetFaction(FACTION_FRIENDLY); me->SetReactState(REACT_PASSIVE); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); if(pInstance) { @@ -347,13 +347,13 @@ public: SetEscortPaused(false); InitializeEvent(); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); break; } case ACTION_GO_TO_SJONNIR: SetEscortPaused(false); ResetEvent(); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); break; case ACTION_START_SJONNIR_FIGHT: me->SetFaction(FACTION_FRIENDLY); @@ -377,7 +377,7 @@ public: Start(false, true, ObjectGuid::Empty, 0, true, false); SetNextWaypoint(20, false); ResetEvent(); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); break; case ACTION_OPEN_DOOR: if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR))) @@ -504,7 +504,7 @@ public: me->CastSpell(me, 59046, true); // credit } - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); // Spawn Chest and quest credit if (Player* plr = SelectTargetFromPlayerList(200.0f)) @@ -528,7 +528,7 @@ public: door->SetGoState(GO_STATE_ACTIVE); SetEscortPaused(false); ResetEvent(); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); break; } case EVENT_END: @@ -537,7 +537,7 @@ public: if (pInstance) pInstance->SetData(BRANN_BRONZEBEARD, 6); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); me->Yell("I'll use the forge to make batches o' earthen to stand guard... But our greatest challenge still remains: find and stop Loken!", LANG_UNIVERSAL); me->PlayDirectSound(14279); break; @@ -653,7 +653,7 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id) // Stop before stairs and ask to start case 9: SetEscortPaused(true); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); if (pInstance) pInstance->SetData(BRANN_BRONZEBEARD, 2); @@ -674,7 +674,7 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id) if(pInstance) { pInstance->SetData(BRANN_BRONZEBEARD, 5); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_SJONNIR))) cr->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetOrientation(3.132660f); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 40c7802cb..79439b8bb 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -873,7 +873,7 @@ public: if (me->GetVehicle()) { - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); if (Unit* player = me->GetVehicle()->GetPassenger(SEAT_PLAYER)) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp index 2d7e31a2d..fe4900a3e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp @@ -39,7 +39,7 @@ public: bool OnGossipSelect(Player* /*player*/, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/) override { - creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); + creature->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); uint8 _keeper = 0; switch (creature->GetEntry()) { @@ -285,7 +285,7 @@ public: me->SetReactState(REACT_PASSIVE); me->SetRegeneratingHealth(false); me->SetFaction(FACTION_PREY); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + me->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); me->CastSpell(me, 64770, true); } } diff --git a/src/server/scripts/Northrend/isle_of_conquest.cpp b/src/server/scripts/Northrend/isle_of_conquest.cpp index 0d66ec826..a75615c39 100644 --- a/src/server/scripts/Northrend/isle_of_conquest.cpp +++ b/src/server/scripts/Northrend/isle_of_conquest.cpp @@ -49,7 +49,7 @@ public: me->Respawn(); me->UpdateEntry(NPC_BROKEN_KEEP_CANNON, nullptr, false); me->RemoveVehicleKit(); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + me->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); } } @@ -61,7 +61,7 @@ public: if (faction) me->SetFaction(faction); me->CreateVehicleKit(510, NPC_KEEP_CANNON); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); events.ScheduleEvent(EVENT_RESTORE_FLAG, 4000); } } @@ -72,7 +72,7 @@ public: switch (events.ExecuteEvent()) { case EVENT_RESTORE_FLAG: - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + me->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); break; } diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 6defda0f8..7381c070c 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1181,7 +1181,7 @@ public: { Initialize(); _emoteState = creature->GetUInt32Value(UNIT_NPC_EMOTESTATE); - _npcFlags = creature->GetUInt32Value(UNIT_NPC_FLAGS); + _npcFlags = creature->GetNpcFlags(); } void Initialize() @@ -1198,7 +1198,7 @@ public: if (_npcFlags) { - me->SetUInt32Value(UNIT_NPC_FLAGS, _npcFlags); + me->ReplaceAllNpcFlags(_npcFlags); } Initialize(); @@ -1209,7 +1209,7 @@ public: void PreScript() { me->StopMoving(); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { @@ -1309,7 +1309,7 @@ public: private: EventMap _events; uint32 _emoteState; - uint32 _npcFlags; + NPCFlags _npcFlags; ObjectGuid _playerGUID; }; @@ -1562,8 +1562,8 @@ public: me->SetFaction(FACTION_VALIANCE_EXPEDITION_7); me->SetStandState(UNIT_STAND_STATE_STAND); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); Initialize(); } @@ -1674,7 +1674,7 @@ public: _arlosGUID = arlos->GetGUID(); arlos->SetWalk(true); arlos->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC); - arlos->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + arlos->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); arlos->GetMotionMaster()->MovePath(PATH_ARLOS, false); } if (Creature* leryssa = me->SummonCreature(NPC_LERYSSA, 3751.0986f, 3614.9219f, 473.4048f, 4.5029f, TEMPSUMMON_CORPSE_TIMED_DESPAWN)) @@ -1682,7 +1682,7 @@ public: _leryssaGUID = leryssa->GetGUID(); leryssa->SetWalk(true); leryssa->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC); - leryssa->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + leryssa->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); leryssa->GetMotionMaster()->MovePath(PATH_LERYSSA, false); } _events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_7, 7000); @@ -1798,8 +1798,8 @@ public: break; case EVENT_THASSARIAN_SCRIPT_19: // Leryssa set facing to me - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); if (Creature* leryssa = me->FindNearestCreature(NPC_LERYSSA, 50.0f, true)) { _leryssaGUID = leryssa->GetGUID(); @@ -1937,7 +1937,7 @@ public: { _playerGUID = player->GetGUID(); CloseGossipMenuFor(player); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->GetMotionMaster()->MovePath(PATH_THASSARIAN, false); } } diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index 9cdc8e1d0..08d6b0ce4 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -222,7 +222,7 @@ public: break; case EVENT_OUTRO_DH: me->GetMotionMaster()->MoveTargetedHome(); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); _events.Reset(); break; } @@ -261,7 +261,7 @@ public: { case GOSSIP_ACTION_INFO_DEF: CloseGossipMenuFor(player); - creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); + creature->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); creature->AI()->SetData(ACTION_SHANDY_INTRO, 0); break; } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 8563db0d5..e23b83d26 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -1791,7 +1791,7 @@ public: if (!tree || !player) return; - tree->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + tree->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); if (roll == 1) // friendly version { diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 0942baceb..1fc01e13e 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -859,7 +859,7 @@ public: _following = false; _runningScript = false; if (me->GetEntry() == NPC_LAKE_FROG_QUEST) - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } void UpdateAI(uint32 diff) override @@ -884,11 +884,11 @@ public: _events.ScheduleEvent(EVENT_LAKEFROG_3, 3000); break; case EVENT_LAKEFROG_3: - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); _events.ScheduleEvent(EVENT_LAKEFROG_4, 25000); break; case EVENT_LAKEFROG_4: - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); _events.ScheduleEvent(EVENT_LAKEFROG_5, 2000); break; case EVENT_LAKEFROG_5: diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 26002d86a..c6a267892 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -135,7 +135,7 @@ public: summons.DespawnAll(); playerGUID.Clear(); currentQuest = 0; - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); } void JustSummoned(Creature* creature) override @@ -340,7 +340,7 @@ public: npc_battle_at_valhalasAI* vAI = CAST_AI(npc_battle_at_valhalas::npc_battle_at_valhalasAI, creature->AI()); vAI->ResetData(); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); if (vAI) vAI->StartBattle(player->GetGUID(), quest->GetQuestId()); @@ -487,7 +487,7 @@ public: events.Reset(); events.RescheduleEvent(EVENT_START, 1000); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); me->SetWalk(true); me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->setActive(true); @@ -595,7 +595,7 @@ public: events.ScheduleEvent(EVENT_SCENE_10, 3000); break; case EVENT_SCENE_10: - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_QUESTGIVER); Talk(SAY_ARETE_6); me->DespawnOrUnsummon(60000); break; diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 062559c05..18bc5eba0 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -813,7 +813,7 @@ public: void Reset() override { - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER); _heading = me->GetOrientation(); } @@ -827,7 +827,7 @@ public: switch (eventId) { case EVENT_RECRUIT_1: - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); Talk(SAY_RECRUIT); _events.ScheduleEvent(EVENT_RECRUIT_2, 3000); diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 53a0f4d6f..2141af846 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -796,7 +796,7 @@ public: void Reset() override { me->SetReactState(REACT_AGGRESSIVE); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->setActive(false); me->SetVisible(instance->GetBossState(DATA_ILLIDARI_COUNCIL) == DONE && instance->GetBossState(DATA_ILLIDAN_STORMRAGE) != DONE); events.Reset(); @@ -806,7 +806,7 @@ public: void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/) override { CloseGossipMenuFor(player); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); me->setActive(true); if (instance->GetBossState(DATA_AKAMA_FINISHED) != DONE) @@ -835,7 +835,7 @@ public: void JustSummoned(Creature* summon) override { summons.Summon(summon); - summon->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); + summon->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); if (summon->GetEntry() == NPC_ILLIDARI_ELITE) { me->AddThreat(summon, 1000000.0f); @@ -864,7 +864,7 @@ public: } else if (pointId == POINT_ILLIDAN) { - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP); me->setActive(false); me->SetReactState(REACT_AGGRESSIVE); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 50ee9dade..1c017ddcb 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -294,11 +294,11 @@ public: { if (instance->GetBossState(DATA_SHADE_OF_AKAMA) == DONE) { - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); return; } - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->CastSpell(me, SPELL_STEALTH, true); events.Reset(); events2.Reset(); @@ -425,7 +425,7 @@ public: if (action == 0) { CloseGossipMenuFor(player); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); events2.ScheduleEvent(EVENT_AKAMA_START_ENCOUNTER, 0); } } diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp index 076fbb59a..82da67da2 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp @@ -347,7 +347,7 @@ public: { instance->DoCastSpellOnPlayers(SPELL_QID10886); creature->AI()->Talk(SAY_COMPLETE); - creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP); } } } diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index bb0163cad..4a6f01797 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -101,7 +101,7 @@ public: envelopingWinds_Timer = 9000; shock_Timer = 5000; - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); me->SetFaction(FACTION_FRIENDLY); Talk(SAY_SUMMON); @@ -125,7 +125,7 @@ public: if (HealthBelowPct(30)) { me->SetFaction(FACTION_FRIENDLY); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); me->RemoveAllAuras(); me->DeleteThreatList(); me->CombatStop(true); diff --git a/src/server/scripts/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp index 9dad3e491..3b8832319 100644 --- a/src/server/scripts/Outland/zone_netherstorm.cpp +++ b/src/server/scripts/Outland/zone_netherstorm.cpp @@ -265,7 +265,7 @@ public: if (action == GOSSIP_ACTION_INFO_DEF + 1) { CloseGossipMenuFor(player); - creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); creature->AI()->DoAction(EVENT_START_PLAYER_READY); if (Creature* orelis = creature->FindNearestCreature(EXARCH_ORELIS, 15.0f, true)) orelis->AI()->DoAction(EVENT_ORELIS_WALK); @@ -397,7 +397,7 @@ public: if (param == EVENT_KARJA_WALK) { me->GetMotionMaster()->MovePath(KARJA_PATH_ID, false); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } else if (param == RESET_DEATHBLOW_EVENT) { @@ -470,7 +470,7 @@ public: if (param == EVENT_ORELIS_WALK) { me->GetMotionMaster()->MovePath(ORELIS_PATH_ID, false); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } else if (param == RESET_DEATHBLOW_EVENT) { @@ -643,7 +643,7 @@ public: if (GetCreature(ISHANAH_HIGH_PRIESTESS)) { - ishanah->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + ishanah->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); ishanah->DespawnOrUnsummon(60000); } @@ -793,7 +793,7 @@ public: if (Creature* summonIshanah = me->SummonCreature(ISHANAH_HIGH_PRIESTESS, IshanahSpawnPosition, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000)) { summonIshanah->GetMotionMaster()->MovePath(ISHANAH_PATH_ID, false); - summonIshanah->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + summonIshanah->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); } break; case EVENT_ISHANAH_SAY_1: @@ -853,7 +853,7 @@ public: ishanah->Respawn(); ishanah->setActive(true); // ensure that Ishanah disappears, even when no player is near ishanah->DespawnOrUnsummon(600000); // ensure that Ishanah disappears after 10 minutes - ishanah->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); + ishanah->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); } _actionEvents.ScheduleEvent(EVENT_SOCRETHAR_SAY_6, 3000); break; @@ -1166,7 +1166,7 @@ public: { Talk(SAY_SAEED_2); SetEscortPaused(false); - me->SetUInt32Value(UNIT_NPC_FLAGS, 0); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); } } @@ -1208,7 +1208,7 @@ public: { case 16: Talk(SAY_SAEED_1); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP); SetEscortPaused(true); break; case 18: diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp index 497541d95..5467f548a 100644 --- a/src/server/scripts/Pet/pet_generic.cpp +++ b/src/server/scripts/Pet/pet_generic.cpp @@ -172,7 +172,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI _init = true; uint32 duration = 0; uint32 aura = 0; - me->SetUInt32Value(UNIT_NPC_FLAGS, 0); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); if (Unit* owner = me->GetCharmerOrOwner()) if (Player* player = owner->ToPlayer()) @@ -182,7 +182,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI aura = (player->GetTeamId(true) == TEAM_ALLIANCE ? SPELL_AURA_TIRED_S : SPELL_AURA_TIRED_G); duration = player->GetSpellCooldownDelay(aura); - me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP); for (uint8 i = 0; i < 3; ++i) { @@ -231,7 +231,7 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI { _mountTimer = 0; if (_state == ARGENT_PONY_STATE_NONE) - me->SetUInt32Value(UNIT_NPC_FLAGS, 0); + me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); else if (Unit* owner = me->GetCharmerOrOwner()) { if (owner->IsMounted() && !me->IsMounted()) @@ -294,20 +294,20 @@ struct npc_pet_gen_argent_pony_bridle : public ScriptedAI switch (action) { case GOSSIP_ACTION_TRADE: - creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_VENDOR); + creature->ReplaceAllNpcFlags(UNIT_NPC_FLAG_VENDOR); player->GetSession()->SendListInventory(creature->GetGUID()); spellId = player->GetTeamId(true) ? SPELL_AURA_SHOP_G : SPELL_AURA_SHOP_S; creature->AI()->DoAction(ARGENT_PONY_STATE_VENDOR); break; case GOSSIP_ACTION_BANK: - creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_BANKER); + creature->ReplaceAllNpcFlags(UNIT_NPC_FLAG_BANKER); player->GetSession()->SendShowBank(player->GetGUID()); spellId = player->GetTeamId(true) ? SPELL_AURA_BANK_G : SPELL_AURA_BANK_S; creature->AI()->DoAction(ARGENT_PONY_STATE_BANK); break; case GOSSIP_ACTION_MAILBOX: { - creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_MAILBOX); + creature->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_MAILBOX); player->GetSession()->SendShowMailBox(creature->GetGUID()); spellId = player->GetTeamId(true) ? SPELL_AURA_POSTMAN_G : SPELL_AURA_POSTMAN_S; creature->AI()->DoAction(ARGENT_PONY_STATE_MAILBOX); diff --git a/src/server/scripts/World/npc_stave_of_ancients.cpp b/src/server/scripts/World/npc_stave_of_ancients.cpp index d50bd55ff..81b36ccd9 100644 --- a/src/server/scripts/World/npc_stave_of_ancients.cpp +++ b/src/server/scripts/World/npc_stave_of_ancients.cpp @@ -157,7 +157,7 @@ void NPCStaveQuestAI::PrepareForEncounter() SetHomePosition(); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } void NPCStaveQuestAI::ClearLootIfUnfair(Unit* killer) @@ -233,7 +233,7 @@ void NPCStaveQuestAI::ResetState(uint32 aura = 0) if (InNormalForm()) { me->m_Events.KillAllEvents(true); - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); } me->RemoveAura(aura); @@ -294,7 +294,7 @@ public: void EnterCombat(Unit* victim) override { RevealForm(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); if (InNormalForm()) { @@ -480,7 +480,7 @@ public: void EnterCombat(Unit* /*victim*/) override { RevealForm(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } void UpdateAI(uint32 /*diff*/) override @@ -646,7 +646,7 @@ public: void EnterCombat(Unit* victim) override { RevealForm(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); if (!InNormalForm()) { @@ -878,7 +878,7 @@ public: void EnterCombat(Unit* victim) override { RevealForm(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); if (InNormalForm()) { @@ -1060,7 +1060,7 @@ public: void EnterCombat(Unit* victim) override { RevealForm(); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); if (!InNormalForm()) { diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index d37b1390e..19a40a4c7 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -675,7 +675,7 @@ public: { ResetFlagTimer = 120000; me->SetFaction(FACTION_PREY); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); } void EnterCombat(Unit* /*who*/) override { } @@ -683,7 +683,7 @@ public: void UpdateAI(uint32 diff) override { // Reset flags after a certain time has passed so that the next player has to start the 'event' again - if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER)) + if (me->HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER)) { if (ResetFlagTimer <= diff) { @@ -705,7 +705,7 @@ public: case TEXT_EMOTE_CHICKEN: if (player->GetQuestStatus(QUEST_CLUCK) == QUEST_STATUS_NONE && rand() % 30 == 1) { - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); me->SetFaction(FACTION_FRIENDLY); Talk(EMOTE_HELLO); } @@ -713,7 +713,7 @@ public: case TEXT_EMOTE_CHEER: if (player->GetQuestStatus(QUEST_CLUCK) == QUEST_STATUS_COMPLETE) { - me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); me->SetFaction(FACTION_FRIENDLY); Talk(EMOTE_CLUCK_TEXT); } From b41967a067ed38ea8b5d6555b53e955b39e17456 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 5 Apr 2022 13:52:58 +0200 Subject: [PATCH 05/13] feat(Core/GameObject): Gob flag helpers (#11287) --- .../game/AI/SmartScripts/SmartScript.cpp | 6 ++-- .../game/Battlefield/Zones/BattlefieldWG.cpp | 2 +- .../game/Battlefield/Zones/BattlefieldWG.h | 2 +- .../Battlegrounds/Zones/BattlegroundIC.cpp | 2 +- .../Battlegrounds/Zones/BattlegroundRV.cpp | 2 +- .../Battlegrounds/Zones/BattlegroundSA.cpp | 4 +-- .../game/Entities/GameObject/GameObject.cpp | 36 +++++++++---------- .../game/Entities/GameObject/GameObject.h | 10 ++++-- .../game/Entities/Transport/Transport.cpp | 4 +-- src/server/game/Entities/Unit/Unit.h | 1 + .../boss_broodlord_lashlayer.cpp | 4 +-- .../BlackwingLair/boss_chromaggus.cpp | 2 +- .../BlackwingLair/instance_blackwing_lair.cpp | 2 +- .../Karazhan/instance_karazhan.cpp | 14 ++++---- .../instance_magisters_terrace.cpp | 4 +-- .../SunkenTemple/instance_sunken_temple.cpp | 4 +-- .../SunwellPlateau/boss_kiljaeden.cpp | 6 ++-- .../Uldaman/instance_uldaman.cpp | 2 +- .../EasternKingdoms/ZulAman/zulaman.cpp | 4 +-- .../EasternKingdoms/ZulGurub/boss_arlokk.cpp | 4 +-- .../ZulGurub/instance_zulgurub.cpp | 4 +-- .../zone_isle_of_queldanas.cpp | 2 +- .../instance_blackfathom_deeps.cpp | 6 ++-- .../instance_old_hillsbrad.cpp | 2 +- .../RazorfenDowns/instance_razorfen_downs.cpp | 2 +- .../scripts/Kalimdor/zone_ashenvale.cpp | 2 +- src/server/scripts/Kalimdor/zone_silithus.cpp | 4 +-- .../scripts/Kalimdor/zone_winterspring.cpp | 6 ++-- .../ahnkahet/boss_prince_taldaram.cpp | 2 +- .../AzjolNerub/ahnkahet/instance_ahnkahet.cpp | 4 +-- .../instance_halls_of_reflection.cpp | 2 +- .../Northrend/Gundrak/instance_gundrak.cpp | 6 ++-- .../boss_deathbringer_saurfang.cpp | 4 +-- .../instance_icecrown_citadel.cpp | 20 +++++------ .../Naxxramas/instance_naxxramas.cpp | 16 ++++----- .../Northrend/Nexus/Nexus/instance_nexus.cpp | 8 ++--- .../Ulduar/HallsOfStone/brann_bronzebeard.cpp | 2 +- .../Ulduar/boss_algalon_the_observer.cpp | 4 +-- .../Northrend/Ulduar/Ulduar/boss_freya.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_kologarn.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 4 +-- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 6 ++-- .../Ulduar/Ulduar/instance_ulduar.cpp | 18 +++++----- .../UtgardePinnacle/boss_palehoof.cpp | 4 +-- .../VioletHold/instance_violet_hold.cpp | 6 ++-- .../scripts/Northrend/zone_dragonblight.cpp | 4 +-- .../SethekkHalls/instance_sethekk_halls.cpp | 2 +- .../SerpentShrine/instance_serpent_shrine.cpp | 4 +-- .../SteamVault/instance_steam_vault.cpp | 12 +++---- .../instance_hellfire_ramparts.cpp | 2 +- .../instance_magtheridons_lair.cpp | 4 +-- .../Outland/zone_blades_edge_mountains.cpp | 10 +++--- src/server/scripts/World/go_scripts.cpp | 4 +-- src/server/shared/SharedDefines.h | 5 ++- 54 files changed, 155 insertions(+), 145 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index a3d06d286..d6610c887 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -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) if (IsGameObject(*itr)) - (*itr)->ToGameObject()->SetUInt32Value(GAMEOBJECT_FLAGS, e.action.goFlag.flag); + (*itr)->ToGameObject()->ReplaceAllGameObjectFlags((GameObjectFlags)e.action.goFlag.flag); delete targets; 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) if (IsGameObject(*itr)) - (*itr)->ToGameObject()->SetFlag(GAMEOBJECT_FLAGS, e.action.goFlag.flag); + (*itr)->ToGameObject()->SetGameObjectFlag((GameObjectFlags)e.action.goFlag.flag); delete targets; 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) if (IsGameObject(*itr)) - (*itr)->ToGameObject()->RemoveFlag(GAMEOBJECT_FLAGS, e.action.goFlag.flag); + (*itr)->ToGameObject()->RemoveGameObjectFlag((GameObjectFlags)e.action.goFlag.flag); delete targets; break; diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index f1f46b28d..9b1bbc268 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -225,7 +225,7 @@ void BattlefieldWG::OnBattleStart() // Update faction of relic, only attacker can click on go->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[GetAttackerTeam()]); // 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 m_titansRelic = go->GetGUID(); diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index d0058d9a9..154e0a4cf 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -1208,7 +1208,7 @@ struct BfWGGameObjectBuilding case BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST: m_WG->SetRelicInteractible(true); if (GameObject* go = m_WG->GetRelic()) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); else LOG_ERROR("bg.battlefield", "BattlefieldWG: Relic not found."); break; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index d101730d5..e269f4c74 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -293,7 +293,7 @@ void BattlegroundIC::StartingEventOpenDoors() DoorOpen(BG_IC_GO_DOODAD_VR_PORTCULLIS01_2); for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; ++i) - GetBGObject(BG_IC_Teleporters[i].type)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + GetBGObject(BG_IC_Teleporters[i].type)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS; ++i) GetBGObject(BG_IC_TeleporterEffects[i].type)->SetGoState(GO_STATE_ACTIVE); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp index 0087d327f..7cb46a261 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp @@ -125,7 +125,7 @@ void BattlegroundRV::PostUpdateImpl(uint32 diff) uint32 objects[2] = { BG_RV_OBJECT_ELEVATOR_1, BG_RV_OBJECT_ELEVATOR_2 }; for (uint8 i = 0; i < 2; ++i) if (GameObject* go = GetBGObject(objects[i])) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_TRANSPORT); + go->RemoveGameObjectFlag(GO_FLAG_TRANSPORT); } break; } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index e6dbd02d4..8f16108f8 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -853,9 +853,9 @@ void BattlegroundSA::UpdateObjectInteractionFlags(uint32 objectId) if (GameObject* go = GetBGObject(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 - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 9b1b73690..249a2e82e 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -319,7 +319,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u if (GameObjectTemplateAddon const* templateAddon = GetTemplateAddon()) { SetUInt32Value(GAMEOBJECT_FACTION, templateAddon->faction); - SetUInt32Value(GAMEOBJECT_FLAGS, templateAddon->flags); + ReplaceAllGameObjectFlags((GameObjectFlags)templateAddon->flags); } SetEntry(goinfo->entry); @@ -479,7 +479,7 @@ void GameObject::Update(uint32 diff) if (caster && caster->GetTypeId() == TYPEID_PLAYER) { SetGoState(GO_STATE_ACTIVE); - SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN); + ReplaceAllGameObjectFlags(GO_FLAG_NODESPAWN); UpdateData udata; WorldPacket packet; @@ -721,7 +721,7 @@ void GameObject::Update(uint32 diff) case GAMEOBJECT_TYPE_GOOBER: if (GameTime::GetGameTimeMS().count() >= m_cooldownTime) { - RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + RemoveGameObjectFlag(GO_FLAG_IN_USE); SetLootState(GO_JUST_DEACTIVATED); } @@ -826,7 +826,7 @@ void GameObject::Update(uint32 diff) SendObjectDeSpawnAnim(GetGUID()); //reset flags if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) - SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); + ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags); } if (!m_respawnDelayTime) @@ -908,7 +908,7 @@ void GameObject::DespawnOrUnsummon(Milliseconds delay, Seconds forceRespawnTime) if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) { - SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); + ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags); } uint32 poolid = m_spawnId ? sPoolMgr->IsPartOfAPool(m_spawnId) : 0; @@ -930,7 +930,7 @@ void GameObject::Delete() SetGoState(GO_STATE_READY); if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) - SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); + ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags); // Xinef: if ritual gameobject is removed, clear anim spells if (GetGOInfo()->type == GAMEOBJECT_TYPE_SUMMONING_RITUAL) @@ -1096,7 +1096,7 @@ bool GameObject::LoadGameObjectFromDB(ObjectGuid::LowType spawnId, Map* map, boo if (!GetGOInfo()->GetDespawnPossibility() && !GetGOInfo()->IsDespawnAtAction()) { - SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN); + SetGameObjectFlag(GO_FLAG_NODESPAWN); m_respawnDelayTime = 0; m_respawnTime = 0; } @@ -1410,9 +1410,9 @@ void GameObject::SetGoArtKit(uint8 artkit, GameObject* go, ObjectGuid::LowType l void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false */) { if (activate) - SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + SetGameObjectFlag(GO_FLAG_IN_USE); else - RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + RemoveGameObjectFlag(GO_FLAG_IN_USE); if (GetGoState() == GO_STATE_READY) //if closed -> open SetGoState(alternative ? GO_STATE_ACTIVE_ALTERNATIVE : GO_STATE_ACTIVE); @@ -1423,7 +1423,7 @@ void GameObject::SwitchDoorOrButton(bool activate, bool alternative /* = false * void GameObject::Use(Unit* user) { // Xinef: we cannot use go with not selectable flags - if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE)) + if (HasGameObjectFlag(GO_FLAG_NOT_SELECTABLE)) return; // by default spell caster is user @@ -1577,7 +1577,7 @@ void GameObject::Use(Unit* user) GameObjectTemplate const* info = GetGOInfo(); // xinef: Goober cannot be used with this flag, skip - if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE)) + if (HasGameObjectFlag(GO_FLAG_IN_USE)) return; if (user->GetTypeId() == TYPEID_PLAYER) @@ -1638,7 +1638,7 @@ void GameObject::Use(Unit* user) if (info->GetAutoCloseTime()) { - SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + SetGameObjectFlag(GO_FLAG_IN_USE); SetLootState(GO_ACTIVATED, user); if (!info->goober.customAnim) SetGoState(GO_STATE_ACTIVE); @@ -2282,7 +2282,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player* switch (state) { case GO_DESTRUCTIBLE_INTACT: - RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_DESTROYED); + RemoveGameObjectFlag(GO_FLAG_DAMAGED | GO_FLAG_DESTROYED); SetDisplayId(m_goInfo->displayId); if (setHealth) { @@ -2301,8 +2301,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player* if (Battleground* bg = bgMap->GetBG()) bg->EventPlayerDamagedGO(eventInvoker, this, m_goInfo->building.damagedEvent); - RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED); - SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); + RemoveGameObjectFlag(GO_FLAG_DESTROYED); + SetGameObjectFlag(GO_FLAG_DAMAGED); uint32 modelId = m_goInfo->building.damagedDisplayId; if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData)) @@ -2336,8 +2336,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player* } } - RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); - SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED); + RemoveGameObjectFlag(GO_FLAG_DAMAGED); + SetGameObjectFlag(GO_FLAG_DESTROYED); uint32 modelId = m_goInfo->building.destroyedDisplayId; if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData)) @@ -2356,7 +2356,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player* case GO_DESTRUCTIBLE_REBUILDING: { 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; if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData)) diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 58c79e1b5..cd96cb194 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -856,6 +856,12 @@ public: void SetPhaseMask(uint32 newPhaseMask, bool update) override; 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); [[nodiscard]] LootState getLootState() const { return m_lootState; } @@ -932,9 +938,9 @@ public: void SetDestructibleState(GameObjectDestructibleState state, Player* eventInvoker = nullptr, bool setHealth = false); [[nodiscard]] GameObjectDestructibleState GetDestructibleState() const { - if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED)) + if (HasGameObjectFlag(GO_FLAG_DESTROYED)) return GO_DESTRUCTIBLE_DESTROYED; - if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED)) + if (HasGameObjectFlag(GO_FLAG_DAMAGED)) return GO_DESTRUCTIBLE_DAMAGED; return GO_DESTRUCTIBLE_INTACT; } diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 2c649b443..841dd1b69 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -84,7 +84,7 @@ bool MotionTransport::CreateMoTrans(ObjectGuid::LowType guidlow, uint32 entry, u if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) { SetUInt32Value(GAMEOBJECT_FACTION, addon->faction); - SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); + ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags); } SetObjectScale(goinfo->size); @@ -727,7 +727,7 @@ bool StaticTransport::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* m if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) { SetUInt32Value(GAMEOBJECT_FACTION, addon->faction); - SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); + ReplaceAllGameObjectFlags((GameObjectFlags)addon->flags); } SetEntry(goinfo->entry); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 4594adb1a..26c13d1a9 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1492,6 +1492,7 @@ public: else RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP); } + [[nodiscard]] uint32 GetCreatureType() const; [[nodiscard]] uint32 GetCreatureTypeMask() const { diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp index 91ac1c93c..a30828e30 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -220,7 +220,7 @@ class go_suppression_device : public GameObjectScript if (me->GetGoState() == GO_STATE_ACTIVE) me->SetGoState(GO_STATE_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); me->Respawn(); } @@ -231,7 +231,7 @@ class go_suppression_device : public GameObjectScript return; _active = false; me->SetGoState(GO_STATE_ACTIVE); - me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); _events.CancelEvent(EVENT_SUPPRESSION_CAST); } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp index d33f125de..7237c8cbe 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp @@ -343,7 +343,7 @@ class go_chromaggus_lever : public GameObjectScript _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); } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp index bd9651e53..4eead7ddf 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp @@ -169,7 +169,7 @@ public: case GO_PORTCULLIS_CHROMAGGUS: AddDoor(go, true); chromaggusDoorGUID = go->GetGUID(); - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index 63295adc1..1f56ef9d8 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -143,7 +143,7 @@ public: HandleGameObject(m_uiStageDoorLeftGUID, true); HandleGameObject(m_uiStageDoorRightGUID, true); 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); } break; @@ -187,9 +187,9 @@ public: case GO_MASSIVE_DOOR: m_uiMassiveDoor = go->GetGUID(); if (GetBossState(DATA_ARAN) != IN_PROGRESS) - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->SetGameObjectFlag(GO_FLAG_LOCKED); else - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->RemoveGameObjectFlag(GO_FLAG_LOCKED); break; case GO_GAMESMAN_HALL_DOOR: m_uiGamesmansDoor = go->GetGUID(); @@ -200,9 +200,9 @@ public: case GO_NETHERSPACE_DOOR: m_uiNetherspaceDoor = go->GetGUID(); if (GetBossState(DATA_PRINCE) != IN_PROGRESS) - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->SetGameObjectFlag(GO_FLAG_LOCKED); else - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->RemoveGameObjectFlag(GO_FLAG_LOCKED); break; case GO_MASTERS_TERRACE_DOOR: MastersTerraceDoor[0] = go->GetGUID(); @@ -213,9 +213,9 @@ public: case GO_SIDE_ENTRANCE_DOOR: m_uiSideEntranceDoor = go->GetGUID(); if (GetBossState(DATA_OPERA_PERFORMANCE) == DONE) - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->SetGameObjectFlag(GO_FLAG_LOCKED); else - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->RemoveGameObjectFlag(GO_FLAG_LOCKED); break; case GO_DUST_COVERED_CHEST: DustCoveredChest = go->GetGUID(); diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp index 10476d569..26e547c90 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp @@ -89,7 +89,7 @@ public: HandleGameObject(KaelDoorGUID, data != IN_PROGRESS); if (data == DONE) if (GameObject* escapeOrb = instance->GetGameObject(EscapeOrbGUID)) - escapeOrb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + escapeOrb->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); Encounter[identifier] = data; break; } @@ -144,7 +144,7 @@ public: break; case GO_ESCAPE_ORB: if (GetData(DATA_KAELTHAS_EVENT) == DONE) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); EscapeOrbGUID = go->GetGUID(); break; } diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp index 0c9c8ef71..7fbda2b8a 100644 --- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp +++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp @@ -84,7 +84,7 @@ public: 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); - gameobject->SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->ReplaceAllGameObjectFlags(GO_FLAG_NOT_SELECTABLE); } break; case GO_ATALAI_IDOL: @@ -93,7 +93,7 @@ public: break; case GO_IDOL_OF_HAKKAR: if (_encounters[TYPE_ATAL_ALARION] == DONE) - gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case GO_FORCEFIELD: _forcefieldGUID = gameobject->GetGUID(); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 2cdd4a8f4..76eca30d5 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -184,7 +184,7 @@ public: { for (uint8 i = 0; i < 4; ++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 @@ -643,9 +643,9 @@ public: { 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)) { trigger->CastSpell(trigger, SPELL_RING_OF_BLUE_FLAMES, true, nullptr, nullptr, trigger->GetGUID()); diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index a663b5735..499e2f566 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -55,7 +55,7 @@ public: if (_encounters[DATA_IRONAYA_DOORS] == DONE) { HandleGameObject(ObjectGuid::Empty, true, gameobject); - gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } break; case GO_TEMPLE_DOOR: diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 9c60402b2..aa883bb10 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -671,14 +671,14 @@ public: break; case GONG_EVENT_3: 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; _gongTimer = 105000; break; case GONG_EVENT_4: me->RemoveAura(SPELL_BANGING_THE_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. // This is temp workaround. diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 8c4007ed9..f1ee439d8 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -154,7 +154,7 @@ public: { BossAI::EnterEvadeMode(); 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); } @@ -428,7 +428,7 @@ public: { 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->SummonCreature(NPC_ARLOKK, PosSummonArlokk[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 600000); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 5d29229f5..fc04c4365 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -83,9 +83,9 @@ public: case GO_GONG_OF_BETHEKK: _goGongOfBethekkGUID = go->GetGUID(); if (GetBossState(DATA_ARLOKK) == DONE) - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); else - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp index 4d73e2522..497389cec 100644 --- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp @@ -611,7 +611,7 @@ public: if (Creature* c = me->FindNearestCreature(NPC_SUNWELL_VISUAL_BUNNY, 60.0f, true)) c->DespawnOrUnsummon(1); 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); if (me->GetCreatureData()) me->GetMotionMaster()->MovePoint(0, me->GetCreatureData()->posX, me->GetCreatureData()->posY, me->GetCreatureData()->posZ); diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp index 1b7e4df1e..24332165b 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp @@ -72,17 +72,17 @@ public: case GO_FIRE_OF_AKU_MAI_4: 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); } break; case GO_SHRINE_OF_GELIHAST: if (_encounters[TYPE_GELIHAST] == DONE) - gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case GO_ALTAR_OF_THE_DEEPS: if (_encounters[TYPE_AKU_MAI] == DONE) - gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case GO_AKU_MAI_DOOR: if (IsFireEventDone() && _encounters[TYPE_AKU_MAI_EVENT] == DONE) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp index 460453af2..7eaf5c633 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp @@ -116,7 +116,7 @@ public: { case GO_BARREL: if (_encounterProgress >= ENCOUNTER_PROGRESS_BARRELS) - gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case GO_PRISON_DOOR: if (_encounterProgress >= ENCOUNTER_PROGRESS_THRALL_ARMORED) diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp index 0d9e9076a..a22751437 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp @@ -49,7 +49,7 @@ public: break; case GO_GONG: if (_gongPhase == DONE) - gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; } } diff --git a/src/server/scripts/Kalimdor/zone_ashenvale.cpp b/src/server/scripts/Kalimdor/zone_ashenvale.cpp index 6480fb7d6..027692818 100644 --- a/src/server/scripts/Kalimdor/zone_ashenvale.cpp +++ b/src/server/scripts/Kalimdor/zone_ashenvale.cpp @@ -135,7 +135,7 @@ public: 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); } break; diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 7359a53f9..e21f08dfd 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -1031,7 +1031,7 @@ public: void InitializeAI() override { - me->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + me->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } bool GossipHello(Player* player, bool reportUse) override @@ -1164,7 +1164,7 @@ public: } 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); return false; } diff --git a/src/server/scripts/Kalimdor/zone_winterspring.cpp b/src/server/scripts/Kalimdor/zone_winterspring.cpp index b7e417cbb..1d8b1e5af 100644 --- a/src/server/scripts/Kalimdor/zone_winterspring.cpp +++ b/src/server/scripts/Kalimdor/zone_winterspring.cpp @@ -354,13 +354,13 @@ public: { 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); _altarGUID = go->GetGUID(); } } 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 Talk(SAY_REACH_TORCH); @@ -610,7 +610,7 @@ public: escortAI->DoContinueEscort(isAltar); } - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); return false; } diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp index b5a8a9797..345b80963 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp @@ -507,7 +507,7 @@ public: return true; } - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); go->SetGoState(GO_STATE_ACTIVE); uint32 const objectIndex = go->GetEntry() == GO_TELDARAM_SPHERE1 ? DATA_TELDRAM_SPHERE1 : DATA_TELDRAM_SPHERE2; diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp index 4924c4c8b..f26e66845 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp @@ -77,11 +77,11 @@ public: if (teldaramSpheres.at(pGo->GetEntry() == GO_TELDARAM_SPHERE1 ? 0 : 1) == DONE || GetBossState(DATA_PRINCE_TALDARAM) == DONE) { pGo->SetGoState(GO_STATE_ACTIVE); - pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + pGo->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } else { - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + pGo->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } break; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index 13d71c1da..e0839ad0b 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -1153,7 +1153,7 @@ public: for (uint8 i = 0; i < 3; ++i) 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)) - 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; //leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400); diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp index 8c72e14d6..db5e13761 100644 --- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp +++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp @@ -176,15 +176,15 @@ public: { case DATA_SLAD_RAN: if (GameObject* altar = instance->GetGameObject(_sladRanAltarGUID)) - altar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case DATA_MOORABI: if (GameObject* altar = instance->GetGameObject(_moorabiAltarGUID)) - altar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case DATA_DRAKKARI_COLOSSUS: if (GameObject* altar = instance->GetGameObject(_drakkariAltarGUID)) - altar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + altar->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case DATA_ECK_THE_FEROCIOUS_INIT: { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index c3685ded4..c40d9bc2a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -568,7 +568,7 @@ public: if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG))) { _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); @@ -830,7 +830,7 @@ public: if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG))) { _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); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index af6414c24..2e967bcff 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -758,12 +758,12 @@ public: case GO_GAS_RELEASE_VALVE: GasReleaseValveGUID = go->GetGUID(); if (GetBossState(DATA_FESTERGUT) != DONE) - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); break; case GO_OOZE_RELEASE_VALVE: OozeReleaseValveGUID = go->GetGUID(); if (GetBossState(DATA_ROTFACE) != DONE) - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); break; case GO_DRINK_ME: PutricideTableGUID = go->GetGUID(); @@ -774,7 +774,7 @@ public: case GO_CACHE_OF_THE_DREAMWALKER_25H: if (Creature* valithria = instance->GetCreature(ValithriaDreamwalkerGUID)) go->SetLootRecipient(valithria); - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN); + go->RemoveGameObjectFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN); break; case GO_SCOURGE_TRANSPORTER_LK: TheLichKingTeleportGUID = go->GetGUID(); @@ -819,7 +819,7 @@ public: AddDoor(go, true); ScourgeTransporterFirstGUID = go->GetGUID(); if (GetBossState(DATA_LORD_MARROWGAR) == DONE) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; default: break; @@ -1029,7 +1029,7 @@ public: WeeklyQuestId10 = RAND(QUEST_BLOOD_QUICKENING_10, QUEST_RESIDUE_RENDEZVOUS_10, QUEST_RESPITE_FOR_A_TORMENTED_SOUL_10, QUEST_DEPROGRAMMING_10, QUEST_SECURING_THE_RAMPARTS_10); SetData(DATA_WEEKLY_QUEST_ID, 0); // show required hidden npcs if (GameObject* transporter = instance->GetGameObject(ScourgeTransporterFirstGUID)) - transporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + transporter->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); SaveToDB(); } break; @@ -1043,7 +1043,7 @@ public: if (GameObject* loot = instance->GetGameObject(GunshipArmoryGUID)) { loot->SetLootRecipient(instance); - loot->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN); + loot->RemoveGameObjectFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN); } } else if (state == FAIL) @@ -1057,14 +1057,14 @@ public: { if (Creature* deathbringer = instance->GetCreature(DeathbringerSaurfangGUID)) loot->SetLootRecipient(deathbringer); - loot->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN); + loot->RemoveGameObjectFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN); } [[fallthrough]]; case NOT_STARTED: if (GameObject* teleporter = instance->GetGameObject(SaurfangTeleportGUID)) { HandleGameObject(SaurfangTeleportGUID, true, teleporter); - teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + teleporter->RemoveGameObjectFlag(GO_FLAG_IN_USE); } break; default: @@ -1075,7 +1075,7 @@ public: if (state == DONE) { if (GameObject* go = instance->GetGameObject(GasReleaseValveGUID)) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); if (GetBossState(DATA_ROTFACE) == DONE) HandleDropAttempt(false); } @@ -1084,7 +1084,7 @@ public: if (state == DONE) { if (GameObject* go = instance->GetGameObject(OozeReleaseValveGUID)) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE); if (GetBossState(DATA_FESTERGUT) == DONE) HandleDropAttempt(false); } diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index f36c12f2e..a4a99d270 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -403,7 +403,7 @@ public: if (GetBossState(BOSS_LOATHEB) == DONE) { pGo->SetGoState(GO_STATE_ACTIVE); - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + pGo->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } break; case GO_THADDIUS_PORTAL: @@ -411,7 +411,7 @@ public: if (GetBossState(BOSS_THADDIUS) == DONE) { pGo->SetGoState(GO_STATE_ACTIVE); - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + pGo->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } break; case GO_MAEXXNA_PORTAL: @@ -419,7 +419,7 @@ public: if (GetBossState(BOSS_MAEXXNA) == DONE) { pGo->SetGoState(GO_STATE_ACTIVE); - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + pGo->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } break; case GO_HORSEMAN_PORTAL: @@ -427,7 +427,7 @@ public: if (GetBossState(BOSS_HORSEMAN) == DONE) { pGo->SetGoState(GO_STATE_ACTIVE); - pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + pGo->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } break; @@ -844,7 +844,7 @@ public: if (GameObject* go = instance->GetGameObject(_loathebPortalGUID)) { go->SetGoState(GO_STATE_ACTIVE); - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } if (GameObject* go = instance->GetGameObject(_plagueEyePortalGUID)) { @@ -884,7 +884,7 @@ public: if (GameObject* go = instance->GetGameObject(_maexxnaPortalGUID)) { go->SetGoState(GO_STATE_ACTIVE); - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } if (GameObject* go = instance->GetGameObject(_spiderEyePortalGUID)) { @@ -917,7 +917,7 @@ public: if (GameObject* go = instance->GetGameObject(_thaddiusPortalGUID)) { go->SetGoState(GO_STATE_ACTIVE); - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } if (GameObject* go = instance->GetGameObject(_abomEyePortalGUID)) { @@ -933,7 +933,7 @@ public: if (GameObject* go = instance->GetGameObject(_horsemanPortalGUID)) { go->SetGoState(GO_STATE_ACTIVE); - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } if (GameObject* go = instance->GetGameObject(_deathknightEyePortalGUID)) { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp index 62bb7c042..9590056b0 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp @@ -91,17 +91,17 @@ public: { case GO_TELESTRA_SPHERE: if (GetBossState(DATA_TELESTRA_ORB) != DONE && GetBossState(DATA_MAGUS_TELESTRA_EVENT) == DONE) - gameObject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameObject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); AddDoor(gameObject, true); break; case GO_ANOMALUS_SPHERE: if (GetBossState(DATA_ANOMALUS_ORB) != DONE && GetBossState(DATA_ANOMALUS_EVENT) == DONE) - gameObject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameObject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); AddDoor(gameObject, true); break; case GO_ORMOROK_SPHERE: if (GetBossState(DATA_ORMOROK_ORB) != DONE && GetBossState(DATA_ORMOROK_EVENT) == DONE) - gameObject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gameObject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); AddDoor(gameObject, true); break; } @@ -148,7 +148,7 @@ public: BossInfo const* bossInfo = GetBossInfo(id + DATA_TELESTRA_ORB); for (DoorSet::const_iterator i = bossInfo->door[DOOR_TYPE_PASSAGE].begin(); i != bossInfo->door[DOOR_TYPE_PASSAGE].end(); ++i) - (*i)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + (*i)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); return true; } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp index dd8a5e991..b0c89d76b 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp @@ -513,7 +513,7 @@ public: { plr->RemoveGameObject(go, false); go->SetLootMode(1); - go->SetUInt32Value(GAMEOBJECT_FLAGS, 0); + go->ReplaceAllGameObjectFlags((GameObjectFlags)0); } plr->GroupEventHappens(QUEST_HALLS_OF_STONE, me); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index 7cce6e83b..aa7ec64a9 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -752,7 +752,7 @@ public: // Summon Chest if (GameObject* go = me->SummonGameObject(RAID_MODE(GO_ALGALON_CHEST, GO_ALGALON_CHEST_HERO), 1632.1f, -306.561f, 417.321f, 4.69494f, 0, 0, 0, 1, 0)) { - go->SetUInt32Value(GAMEOBJECT_FLAGS, 0); + go->ReplaceAllGameObjectFlags((GameObjectFlags)0); go->SetLootRecipient(me); } break; @@ -1132,7 +1132,7 @@ public: return false; _locked = true; // Start Algalon event - me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + me->SetGameObjectFlag(GO_FLAG_IN_USE); events.ScheduleEvent(EVENT_DESPAWN_CONSOLE, 5000); if (Creature* brann = me->SummonCreature(NPC_BRANN_BRONZBEARD_ALG, BrannIntroSpawnPos)) brann->AI()->DoAction(ACTION_START_INTRO); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 0804c106f..3c8091639 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -371,7 +371,7 @@ public: me->DespawnOrUnsummon(5000); if (GameObject* go = me->SummonGameObject(chestId, 2345.61f, -71.20f, 425.104f, 3.0f, 0, 0, 0, 0, 0)) { - go->SetUInt32Value(GAMEOBJECT_FLAGS, 0); + go->ReplaceAllGameObjectFlags((GameObjectFlags)0); go->SetLootRecipient(me->GetMap()); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index adbe39af7..175f11d86 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -318,7 +318,7 @@ public: { me->RemoveGameObject(go, false); go->SetSpellId(1); // hack to make it despawn - go->SetUInt32Value(GAMEOBJECT_FLAGS, 0); + go->ReplaceAllGameObjectFlags((GameObjectFlags)0); go->SetLootRecipient(me); } if (Creature* arm = ObjectAccessor::GetCreature(*me, _left)) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 7f534ab6b..ee83d724f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -822,7 +822,7 @@ public: { if (GameObject* go = me->SummonGameObject(chestId, 2744.65f, 2569.46f, 364.397f, 0, 0, 0, 0, 0, 0)) { - go->SetUInt32Value(GAMEOBJECT_FLAGS, 0); + go->ReplaceAllGameObjectFlags((GameObjectFlags)0); go->SetLootRecipient(me->GetMap()); } } @@ -906,7 +906,7 @@ public: { button->SetLootState(GO_READY); button->UseDoorOrButton(0, false); - button->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + button->RemoveGameObjectFlag(GO_FLAG_IN_USE); } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 14899f089..1677405d0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -420,7 +420,7 @@ public: GameObject* go; if ((go = GetThorimObject(DATA_THORIM_LEVER))) { - go->SetUInt32Value(GAMEOBJECT_FLAGS, 48); + go->ReplaceAllGameObjectFlags((GameObjectFlags)48); go->SetGoState(GO_STATE_READY); } if ((go = GetThorimObject(DATA_THORIM_FIRST_DOORS))) @@ -485,7 +485,7 @@ public: if (_trashCounter >= 6) { if (GameObject* go = GetThorimObject(DATA_THORIM_LEVER)) - go->RemoveFlag(GAMEOBJECT_FLAGS, 48); + go->RemoveGameObjectFlag((GameObjectFlags)48); events.SetPhase(EVENT_PHASE_START); events.ScheduleEvent(EVENT_THORIM_START_PHASE1, 20000); @@ -593,7 +593,7 @@ public: if ((go = me->SummonGameObject(chestId, 2134.73f, -286.32f, 419.51f, 0.0f, 0, 0, 0, 0, 0))) { - go->SetUInt32Value(GAMEOBJECT_FLAGS, 0); + go->ReplaceAllGameObjectFlags((GameObjectFlags)0); go->SetLootRecipient(me->GetMap()); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 84c740ed2..9672f8f95 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -230,7 +230,7 @@ public: normalChestPosition.GetOrientation(), 0, 0, 0, 0, 0)) { m_hodirNormalChest = go->GetGUID(); - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } } if (!m_hodirHardmodeChest) @@ -243,7 +243,7 @@ public: hardChestPosition.GetOrientation(), 0, 0, 0, 0, 0)) { m_hodirHardmodeChest = go->GetGUID(); - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); hmHodir = true; } } @@ -261,7 +261,7 @@ public: normalChestPosition.GetOrientation(), 0, 0, 0, 0, 0)) { m_hodirNormalChest = go->GetGUID(); - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } } if (!m_hodirHardmodeChest) @@ -274,7 +274,7 @@ public: hardChestPosition.GetOrientation(), 0, 0, 0, 0, 0)) { m_hodirHardmodeChest = go->GetGUID(); - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); hmHodir = true; } } @@ -543,7 +543,7 @@ public: if (GetData(TYPE_MIMIRON) == DONE && GetData(TYPE_FREYA) == DONE && GetData(TYPE_HODIR) == DONE && GetData(TYPE_THORIM) == DONE) { instance->LoadGrid(1903.0f, 248.0f); - gameObject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + gameObject->RemoveGameObjectFlag(GO_FLAG_LOCKED); } m_keepersgateGUID = gameObject->GetGUID(); @@ -590,7 +590,7 @@ public: case GO_CELESTIAL_PLANETARIUM_ACCESS_10: case GO_CELESTIAL_PLANETARIUM_ACCESS_25: if (m_algalonTimer) - gameObject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + gameObject->SetGameObjectFlag(GO_FLAG_IN_USE); break; case GO_DOODAD_UL_SIGILDOOR_01: m_algalonSigilDoorGUID[0] = gameObject->GetGUID(); @@ -640,13 +640,13 @@ public: { if (GameObject* go = instance->GetGameObject(m_hodirHardmodeChest)) { - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); go->SetLootRecipient(instance); } } if (GameObject* go = instance->GetGameObject(m_hodirNormalChest)) { - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); go->SetLootRecipient(instance); } break; @@ -694,7 +694,7 @@ public: if (GetData(TYPE_MIMIRON) == DONE && GetData(TYPE_FREYA) == DONE && GetData(TYPE_HODIR) == DONE && GetData(TYPE_THORIM) == DONE) { if (GameObject* go = instance->GetGameObject(m_keepersgateGUID)) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED); + go->RemoveGameObjectFlag(GO_FLAG_LOCKED); } if (type == TYPE_MIMIRON && data == IN_PROGRESS) // after reaching him without tram and starting the fight m_mimironTramUsed = true; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp index 2da3813cb..75509078b 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp @@ -166,7 +166,7 @@ public: // Reset statue if (GameObject* statisGenerator = m_pInstance->instance->GetGameObject(m_pInstance->GetGuidData(STATIS_GENERATOR))) { - statisGenerator->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + statisGenerator->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); statisGenerator->SetGoState(GO_STATE_READY); } @@ -802,7 +802,7 @@ public: if (pPalehoof && pPalehoof->IsAlive()) { // maybe these are hacks :( - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); go->SetGoState(GO_STATE_ACTIVE); pPalehoof->AI()->DoAction(ACTION_START_EVENT); diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 495e4d927..169729901 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -165,7 +165,7 @@ public: { case GO_ACTIVATION_CRYSTAL: HandleGameObject(ObjectGuid::Empty, false, go); // make go not used yet - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); // not useable at the beginning + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); // not useable at the beginning GO_ActivationCrystalGUID.push_back(go->GetGUID()); break; case GO_MAIN_DOOR: @@ -451,7 +451,7 @@ public: if (GameObject* go = instance->GetGameObject(guid)) { HandleGameObject(ObjectGuid::Empty, false, go); // not used yet - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); // make it useable + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); // make it useable } events.RescheduleEvent(EVENT_SUMMON_PORTAL, 4000); } @@ -545,7 +545,7 @@ public: if (GameObject* go = instance->GetGameObject(guid)) { HandleGameObject(ObjectGuid::Empty, false, go); // not used yet - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); // not useable at the beginning + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); // not useable at the beginning } // reset positions of Sinclari and Guards diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index e23b83d26..06ec7f26a 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -848,7 +848,7 @@ public: c->RemoveAllAuras(); c->CastSpell(c, SPELL_SAC_HOLY_ZONE_AURA, true); if (GameObject* go = me->FindNearestGameObject(GO_SAC_LIGHTS_VENGEANCE_3, 150.0f)) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); playerGUID.Clear(); events.RescheduleEvent(2, 60000); } @@ -967,7 +967,7 @@ public: c->CastSpell(c, SPELL_SAC_VEGARD_SUMMON_GHOULS_AURA, false); } if (GameObject* go = me->FindNearestGameObject(GO_SAC_LIGHTS_VENGEANCE_1, 150.0f)) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case 15: // remove light if (Creature* x = me->FindNearestCreature(NPC_SAC_LIGHTS_VENGEANCE_VEH_2, 150.0f, true)) diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp index 8d7d6a2c2..0faee5fd1 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp @@ -71,7 +71,7 @@ public: { DoUseDoorOrButton(m_uiIkissDoorGUID, DAY * IN_MILLISECONDS); if (GameObject* coffer = instance->GetGameObject(_talonKingsCofferGUID)) - coffer->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND); + coffer->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND); } break; case TYPE_ANZU_ENCOUNTER: diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp index 6afd9c831..8f7e47ec0 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp @@ -56,7 +56,7 @@ public: if (type == DATA_LADY_VASHJ) for (uint8 i = 0; i < 4; ++i) if (GameObject* gobject = instance->GetGameObject(ShieldGeneratorGUID[i])) - gobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gobject->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); return true; } @@ -158,7 +158,7 @@ public: for (uint8 i = 0; i < 4; ++i) if (GameObject* gobject = instance->GetGameObject(ShieldGeneratorGUID[i])) { - gobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + gobject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); vashj->SummonTrigger(gobject->GetPositionX(), gobject->GetPositionY(), gobject->GetPositionZ(), 0.0f, 0); } break; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp index 4c475dcfd..14093447a 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp @@ -33,14 +33,14 @@ public: if (go->GetEntry() == GO_ACCESS_PANEL_HYDRO) if (instance->GetData(TYPE_HYDROMANCER_THESPIA) == DONE) { - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); instance->SetData(TYPE_HYDROMANCER_THESPIA, SPECIAL); } if (go->GetEntry() == GO_ACCESS_PANEL_MEK) if (instance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE) { - go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); instance->SetData(TYPE_MEKGINEER_STEAMRIGGER, SPECIAL); } @@ -105,14 +105,14 @@ public: case GO_ACCESS_PANEL_HYDRO: AccessPanelHydro = go->GetGUID(); if (GetData(TYPE_HYDROMANCER_THESPIA) == DONE) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); else if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL) HandleGameObject(ObjectGuid::Empty, true, go); break; case GO_ACCESS_PANEL_MEK: AccessPanelMek = go->GetGUID(); if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE) - go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); else if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL) HandleGameObject(ObjectGuid::Empty, true, go); break; @@ -132,7 +132,7 @@ public: else if (data == DONE) { if (GameObject* panel = instance->GetGameObject(AccessPanelHydro)) - panel->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + panel->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } m_auiEncounter[type] = data; @@ -146,7 +146,7 @@ public: else if (data == DONE) { if (GameObject* panel = instance->GetGameObject(AccessPanelMek)) - panel->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + panel->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } m_auiEncounter[type] = data; diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp index ab45b91d2..b20442cca 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp @@ -51,7 +51,7 @@ public: if (type == DATA_VAZRUDEN && state == DONE) if (GameObject* chest = instance->GetGameObject(felIronChestGUID)) - chest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + chest->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); return true; } diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp index 5a8bc7865..1e474c21f 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp @@ -142,7 +142,7 @@ public: { for (ObjectGuid const& guid : _cubesSet) if (GameObject* cube = instance->GetGameObject(guid)) - cube->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + cube->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); if (state == NOT_STARTED) SetData(DATA_COLLAPSE, GO_READY); @@ -163,7 +163,7 @@ public: case DATA_ACTIVATE_CUBES: for (ObjectGuid const& guid : _cubesSet) if (GameObject* cube = instance->GetGameObject(guid)) - cube->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + cube->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); break; case DATA_COLLAPSE: for (ObjectGuid const& guid : _columnSet) diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index 25e685baa..21afa287e 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -772,7 +772,7 @@ public: _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2000); if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance)) - relic->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + relic->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } // Called when despawning the bunny. Sets all the node GOs to their default states. @@ -782,14 +782,14 @@ public: for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++) if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], searchDistance)) - cluster->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + cluster->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); for (uint32 auraId = GO_AURA_BLUE; auraId <= GO_AURA_YELLOW; auraId++) if (GameObject* auraGo = me->FindNearestGameObject(auraId, searchDistance)) auraGo->RemoveFromWorld(); if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance)) - relic->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + relic->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); me->DespawnOrUnsummon(1000); } @@ -832,7 +832,7 @@ public: { for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++) if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], searchDistance)) - cluster->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + cluster->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); if (clustersOnly) return; @@ -886,7 +886,7 @@ public: { if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], 2.0f * searchDistance)) { - cluster->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + cluster->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); // break since we don't need glowing auras for large clusters if (large) diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 4c05c2a39..04187bb0d 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -895,7 +895,7 @@ public: if (player->GetQuestStatus(QUEST_THE_FIRST_TRIAL) == QUEST_STATUS_INCOMPLETE) { _playerGUID = player->GetGUID(); - me->SetFlag(GAMEOBJECT_FLAGS, 1); + me->SetGameObjectFlag((GameObjectFlags)1); me->RemoveByteFlag(GAMEOBJECT_BYTES_1, 0, 1); _events.ScheduleEvent(EVENT_STILLBLADE_SPAWN, 1000); } @@ -922,7 +922,7 @@ public: } case EVENT_RESET_BRAZIER: { - me->RemoveFlag(GAMEOBJECT_FLAGS, 1); + me->RemoveGameObjectFlag((GameObjectFlags)1); me->SetByteFlag(GAMEOBJECT_BYTES_1, 0, 1); break; } diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index 7bc7f047f..5d24d3fb6 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -20,6 +20,7 @@ #include "Define.h" #include "DetourNavMesh.h" +#include "EnumFlag.h" #include float const GROUND_HEIGHT_TOLERANCE = 0.05f; // Extra tolerance to z position to check if it is in air or on ground. @@ -1570,7 +1571,7 @@ enum GameobjectTypes #define MAX_GAMEOBJECT_TYPE 36 // sending to client this or greater value can crash client. #define MAX_GAMEOBJECT_DATA 24 // Max number of uint32 vars in gameobject_template data field -enum GameObjectFlags +enum GameObjectFlags : uint32 { GO_FLAG_IN_USE = 0x00000001, // disables interaction while animated GO_FLAG_LOCKED = 0x00000002, // require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip @@ -1583,6 +1584,8 @@ enum GameObjectFlags GO_FLAG_DESTROYED = 0x00000400, }; +DEFINE_ENUM_FLAG(GameObjectFlags); + enum GameObjectDynamicLowFlags { GO_DYNFLAG_LO_ACTIVATE = 0x01, // enables interaction with GO From 8426da6e6b5f5c6a754429f026b879c84be7b076 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 5 Apr 2022 14:12:54 +0200 Subject: [PATCH 06/13] fix(Scripts/Ulduar): Sara's buffs should be casted randomly among the players. (#11255) Fixes #11240 --- src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp index 66b3abb3e..029127b32 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp @@ -795,7 +795,7 @@ public: case EVENT_SARA_P1_SPELLS: { uint32 spell = RAND(SPELL_SARAS_ANGER_TARGET_SELECTOR, SPELL_SARAS_BLESSING_TARGET_SELECTOR, SPELL_SARAS_FAVOR_TARGET_SELECTOR); - me->CastSpell(me, spell, false); + me->CastCustomSpell(spell, SPELLVALUE_MAX_TARGETS, 1, nullptr, false); SpellSounds(); events.RepeatEvent(me->GetMap()->Is25ManRaid() ? urand(0, 3000) : 4000 + urand(0, 2000)); break; From 9f234ea489a6952d151971676da0bff7c274a71f Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+benjymansy123@users.noreply.github.com> Date: Tue, 5 Apr 2022 09:17:42 -0400 Subject: [PATCH 07/13] fix(Core/Gossip): Leatherworking specialization --- src/server/scripts/World/npc_professions.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp index 002eabbbf..81291031e 100644 --- a/src/server/scripts/World/npc_professions.cpp +++ b/src/server/scripts/World/npc_professions.cpp @@ -1272,9 +1272,9 @@ public: { if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5141) || player->GetQuestRewardStatus(5143) || player->GetQuestRewardStatus(5144) || player->GetQuestRewardStatus(5145) || player->GetQuestRewardStatus(5146) || player->GetQuestRewardStatus(5148))) { - AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_DRAGONSCALE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); - AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); - AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); + AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_DRAGONSCALE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_ELEMENTAL, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 6); + AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_TRIBAL, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 7); } } From b709a22ddc4a12331fa9b3946d619a7211e0c570 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 5 Apr 2022 18:53:50 +0200 Subject: [PATCH 08/13] feat(Core/Players): PlayerFlag helpers (#11294) * feat(Core/Players): PlayerFlag helpers * Update Player.h * fix build --- .../game/Battlegrounds/Battleground.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 32 +++++++++---------- src/server/game/Entities/Player/Player.h | 19 ++++++++--- .../game/Entities/Player/PlayerMisc.cpp | 4 +-- .../game/Entities/Player/PlayerStorage.cpp | 8 ++--- .../game/Entities/Player/PlayerUpdates.cpp | 6 ++-- src/server/game/Entities/Unit/Unit.cpp | 8 ++--- src/server/game/Groups/Group.cpp | 6 ++-- src/server/game/Handlers/CharacterHandler.cpp | 16 +++++----- src/server/game/Handlers/GroupHandler.cpp | 4 +-- src/server/game/Handlers/MiscHandler.cpp | 12 +++---- src/server/game/Handlers/MovementHandler.cpp | 8 ++--- src/server/game/Handlers/SpellHandler.cpp | 4 +-- .../WaypointMovementGenerator.cpp | 2 +- .../game/Spells/Auras/SpellAuraEffects.cpp | 8 ++--- src/server/game/Spells/Spell.cpp | 2 +- src/server/game/Spells/SpellEffects.cpp | 2 +- .../scripts/OutdoorPvP/OutdoorPvPNA.cpp | 8 ++--- src/server/scripts/World/npcs_special.cpp | 6 ++-- 19 files changed, 83 insertions(+), 74 deletions(-) diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index fa8eb7596..1fb81dec7 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1077,7 +1077,7 @@ void Battleground::StartBattleground() void Battleground::AddPlayer(Player* player) { // remove afk from player - if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK)) + if (player->HasPlayerFlag(PLAYER_FLAGS_AFK)) player->ToggleAFK(); sScriptMgr->OnBattlegroundBeforeAddPlayer(this, player); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a3e77b584..e068615ab 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -894,7 +894,7 @@ void Player::HandleDrowning(uint32 time_diff) uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel() - 1); 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(); } else if (!(m_MirrorTimerFlagsLast & UNDERWATER_INDARKWATER)) @@ -1066,14 +1066,14 @@ void Player::SetRestState(uint32 triggerId) { _innTriggerId = triggerId; _restTime = GameTime::GetGameTime().count(); - SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); + SetPlayerFlag(PLAYER_FLAGS_RESTING); } void Player::RemoveRestState() { _innTriggerId = 0; _restTime = 0; - RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); + RemovePlayerFlag(PLAYER_FLAGS_RESTING); } bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) @@ -2172,7 +2172,7 @@ void Player::SetGameMaster(bool on) m_ExtraFlags |= PLAYER_EXTRA_GM_ON; if (AccountMgr::IsGMAccount(GetSession()->GetSecurity())) SetFaction(FACTION_FRIENDLY); - SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM); + SetPlayerFlag(PLAYER_FLAGS_GM); SetUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); if (Pet* pet = GetPet()) @@ -2203,7 +2203,7 @@ void Player::SetGameMaster(bool on) m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON; SetFactionForRace(getRace(true)); - RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM); + RemovePlayerFlag(PLAYER_FLAGS_GM); RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); if (Pet* pet = GetPet()) @@ -2337,7 +2337,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate, bool isLFGReward) return; } - if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN)) + if (HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN)) { return; } @@ -2654,7 +2654,7 @@ void Player::InitStatsForLevel(bool reapplyMods) 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. - 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 RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY); @@ -4497,9 +4497,9 @@ Corpse* Player::CreateCorpse() corpse->SetUInt32Value(CORPSE_FIELD_BYTES_2, _cfb2); uint32 flags = CORPSE_FLAG_UNK2; - if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM)) + if (HasPlayerFlag(PLAYER_FLAGS_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; // Xinef: Player can loop corpses while in BG or in WG @@ -4842,7 +4842,7 @@ void Player::RepopAtGraveyard() else if (GetPositionZ() < GetMap()->GetMinHeight(GetPositionX(), GetPositionY())) 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) @@ -14301,7 +14301,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2)); 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++, (uint32)GetInstanceId()); stmt->SetData(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4)); @@ -14332,7 +14332,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]); stmt->SetData(index++, finiteAlways(_restBonus)); 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, but in tavern/city stmt->SetData(index++, m_resetTalentsCost); @@ -14418,7 +14418,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2)); stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3)); - stmt->SetData(index++, GetUInt32Value(PLAYER_FLAGS)); + stmt->SetData(index++, GetPlayerFlags()); if (!IsBeingTeleported()) { @@ -14471,7 +14471,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]); stmt->SetData(index++, finiteAlways(_restBonus)); 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, but in tavern/city stmt->SetData(index++, m_resetTalentsCost); @@ -15733,7 +15733,7 @@ void Player::SetRestFlag(RestFlag restFlag, uint32 triggerId /*= 0*/) if (!oldRestMask && _restFlagMask) // only set flag/time on the first rest state { _restTime = GameTime::GetGameTime().count(); - SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); + SetPlayerFlag(PLAYER_FLAGS_RESTING); } if (triggerId) @@ -15748,7 +15748,7 @@ void Player::RemoveRestFlag(RestFlag restFlag) if (oldRestMask && !_restFlagMask) // only remove flag/time on the last rest state remove { _restTime = 0; - RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING); + RemovePlayerFlag(PLAYER_FLAGS_RESTING); } } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index a25221376..d79bac33d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -24,6 +24,7 @@ #include "CinematicMgr.h" #include "DBCStores.h" #include "DatabaseEnvFwd.h" +#include "EnumFlag.h" #include "GroupReference.h" #include "InstanceSaveMgr.h" #include "Item.h" @@ -464,7 +465,7 @@ enum DrunkenState #define MAX_DRUNKEN 4 -enum PlayerFlags +enum PlayerFlags : uint32 { PLAYER_FLAGS_GROUP_LEADER = 0x00000001, PLAYER_FLAGS_AFK = 0x00000002, @@ -500,6 +501,8 @@ enum PlayerFlags PLAYER_FLAGS_UNK31 = 0x80000000, }; +DEFINE_ENUM_FLAG(PlayerFlags); + enum PlayerBytesOffsets //@todo: Implement { PLAYER_BYTES_OFFSET_SKIN_ID = 0, @@ -1078,6 +1081,12 @@ public: 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); void SetInWater(bool apply); @@ -1097,8 +1106,8 @@ public: void ToggleAFK(); void ToggleDND(); - [[nodiscard]] bool isAFK() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK); } - [[nodiscard]] bool isDND() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND); } + [[nodiscard]] bool isAFK() const { return HasPlayerFlag(PLAYER_FLAGS_AFK); } + [[nodiscard]] bool isDND() const { return HasPlayerFlag(PLAYER_FLAGS_DND); } [[nodiscard]] uint8 GetChatTag() const; std::string autoReplyMsg; @@ -1114,7 +1123,7 @@ public: void ContinueTaxiFlight(); // 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); } [[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; } @@ -1802,7 +1811,7 @@ public: void ResetContestedPvP() { ClearUnitState(UNIT_STATE_ATTACK_PLAYER); - RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP); + RemovePlayerFlag(PLAYER_FLAGS_CONTESTED_PVP); m_contestedPvPTimer = 0; } diff --git a/src/server/game/Entities/Player/PlayerMisc.cpp b/src/server/game/Entities/Player/PlayerMisc.cpp index 9153a2261..f57381d57 100644 --- a/src/server/game/Entities/Player/PlayerMisc.cpp +++ b/src/server/game/Entities/Player/PlayerMisc.cpp @@ -353,8 +353,8 @@ void Player::UpdatePvPFlag(time_t currTime) if (currTime < (pvpInfo.EndTimer + 300 + 5)) { - if (currTime > (pvpInfo.EndTimer + 4) && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER)) - SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER); + if (currTime > (pvpInfo.EndTimer + 4) && !HasPlayerFlag(PLAYER_FLAGS_PVP_TIMER)) + SetPlayerFlag(PLAYER_FLAGS_PVP_TIMER); return; } diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index 855fbcb39..486f5475c 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -5053,7 +5053,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons SetByteValue(PLAYER_BYTES_2, 3, fields[15].Get()); SetByteValue(PLAYER_BYTES_3, 0, fields[5].Get()); SetByteValue(PLAYER_BYTES_3, 1, fields[54].Get()); - SetUInt32Value(PLAYER_FLAGS, fields[16].Get()); + ReplaceAllPlayerFlags((PlayerFlags)fields[16].Get()); SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[53].Get()); SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[52].Get()); @@ -5460,7 +5460,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons _LoadGlyphAuras(); _LoadAuras(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_AURAS), time_diff); // 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; AddUnitState(UNIT_STATE_ISOLATED); @@ -6514,7 +6514,7 @@ void Player::_LoadGroup() { if (group->IsLeader(GetGUID())) { - SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); + SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); } uint8 subgroup = group->GetMemberGroup(GetGUID()); @@ -6528,7 +6528,7 @@ void Player::_LoadGroup() } if (!GetGroup() || !GetGroup()->IsLeader(GetGUID())) - RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); + RemovePlayerFlag(PLAYER_FLAGS_GROUP_LEADER); } void Player::BindToInstance() diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index a00e17238..22f3abfdd 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -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 { @@ -1384,7 +1384,7 @@ void Player::UpdatePvPState() } 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 = GameTime::GetGameTime().count(); // start toggle-off } @@ -1472,7 +1472,7 @@ void Player::UpdatePvP(bool state, bool _override) SetPvP(state); } - RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER); + RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER); sScriptMgr->OnPlayerPVPFlagChange(this, state); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2278439f3..74c100332 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9674,7 +9674,7 @@ ReputationRank Unit::GetReactionTo(Unit const* target, bool checkOriginalFaction { // check contested flags 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; // if faction has reputation, hostile state depends only from AtWar state @@ -9747,7 +9747,7 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem { // check contested flags 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; if (ReputationRank const* repRank = targetPlayerOwner->GetReputationMgr().GetForcedRankIfAny(factionTemplateEntry)) return *repRank; @@ -13251,7 +13251,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo 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; } // check flags @@ -16778,7 +16778,7 @@ void Unit::SetContestedPvP(Player* attackedPlayer, bool lookForNearContestedGuar if (!player->HasUnitState(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 AddToNotify(NOTIFY_AI_RELOCATION); } diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index c638cfbf0..5d79b504a 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -112,7 +112,7 @@ bool Group::Create(Player* leader) m_guid = ObjectGuid::Create(lowguid); m_leaderGuid = leaderGuid; m_leaderName = leader->GetName(); - leader->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); + leader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); if (isBGGroup() || isBFGroup()) m_groupType = GROUPTYPE_BGRAID; @@ -725,9 +725,9 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid) } 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_leaderName = newLeader->GetName(); ToggleGroupMemberFlag(slot, MEMBER_FLAG_ASSISTANT, false); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 9612246e7..d3118660c 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -948,10 +948,10 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder) } // 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); - if (pCurrChar->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP)) + if (pCurrChar->HasPlayerFlag(PLAYER_FLAGS_CONTESTED_PVP)) { pCurrChar->SetContestedPvP(nullptr, false); } @@ -1062,8 +1062,8 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder) } // pussywizard: pvp mode - pCurrChar->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER); - if (pCurrChar->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP)) + pCurrChar->RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER); + if (pCurrChar->HasPlayerFlag(PLAYER_FLAGS_IN_PVP)) 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 @@ -1307,17 +1307,17 @@ void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket& recvData) void WorldSession::HandleShowingHelmOpcode(WorldPackets::Character::ShowingHelm& packet) { if (packet.ShowHelm) - _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); + _player->RemovePlayerFlag(PLAYER_FLAGS_HIDE_HELM); else - _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM); + _player->SetPlayerFlag(PLAYER_FLAGS_HIDE_HELM); } void WorldSession::HandleShowingCloakOpcode(WorldPackets::Character::ShowingCloak& packet) { if (packet.ShowCloak) - _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); + _player->RemovePlayerFlag(PLAYER_FLAGS_HIDE_CLOAK); else - _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); + _player->SetPlayerFlag(PLAYER_FLAGS_HIDE_CLOAK); } void WorldSession::HandleCharRenameOpcode(WorldPacket& recvData) diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index df2778d41..7b0194802 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -812,7 +812,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke if (!player->IsAlive()) { - if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) + if (player->HasPlayerFlag(PLAYER_FLAGS_GHOST)) playerStatus |= MEMBER_STATUS_GHOST; else playerStatus |= MEMBER_STATUS_DEAD; @@ -1014,7 +1014,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData) if (!player->IsAlive()) { - if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) + if (player->HasPlayerFlag(PLAYER_FLAGS_GHOST)) playerStatus |= MEMBER_STATUS_GHOST; else playerStatus |= MEMBER_STATUS_DEAD; diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index e493ea11a..2719d2f88 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -60,7 +60,7 @@ void WorldSession::HandleRepopRequestOpcode(WorldPacket& recv_data) recv_data.read_skip(); - if (GetPlayer()->IsAlive() || GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) + if (GetPlayer()->IsAlive() || GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_GHOST)) return; if (GetPlayer()->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) @@ -417,7 +417,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ DoLootRelease(lguid); 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 && GetPlayer()->isAFK() && sAreaTableStore.LookupEntry(GetPlayer()->GetAreaId())->IsSanctuary(); @@ -426,7 +426,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ && GetPlayer()->isAFK(); /// 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; if (GetPlayer()->IsInCombat() && !canLogoutInCombat) @@ -501,7 +501,7 @@ void WorldSession::HandleTogglePvP(WorldPacket& recv_data) else 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); 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); @@ -645,7 +645,7 @@ void WorldSession::HandleReclaimCorpseOpcode(WorldPacket& recv_data) return; // body not released yet - if (!_player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) + if (!_player->HasPlayerFlag(PLAYER_FLAGS_GHOST)) return; Corpse* corpse = _player->GetCorpse(); @@ -1549,7 +1549,7 @@ void WorldSession::HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data) uint8 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); } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 9626aad28..d6cf372e1 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -237,7 +237,7 @@ void WorldSession::HandleMoveWorldportAck() GetPlayer()->CastSpell(GetPlayer(), 2479, true); // 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); // resummon pet @@ -297,7 +297,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData) plMover->CastSpell(plMover, 2479, true); // 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); } } @@ -570,13 +570,13 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) { 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()); // player can be alive if GM if (plrMover->IsAlive()) 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()); if (grave) diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 364b51d55..5f0c3cc97 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -689,9 +689,9 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPacket& recvData) // Display items in visible slots 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); - 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); else if (Item const* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, *itr)) { diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index c764056fb..ffb8b174d 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -328,7 +328,7 @@ void FlightPathMovementGenerator::DoFinalize(Player* player) 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 diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index d0fe44cac..4289390b0 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1764,7 +1764,7 @@ void AuraEffect::HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool 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_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)) 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_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 (apply) - target->SetFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY); + target->ToPlayer()->SetPlayerFlag(PLAYER_ALLOW_ONLY_ABILITY); else { // 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)) return; - target->RemoveFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY); + target->ToPlayer()->RemovePlayerFlag(PLAYER_ALLOW_ONLY_ABILITY); } } } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 833d7f7c6..4e236d5ad 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5392,7 +5392,7 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_caster->GetTypeId() == TYPEID_PLAYER) { //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; if (!(_triggeredCastFlags & TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD) && m_caster->ToPlayer()->HasSpellCooldown(m_spellInfo->Id)) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 15dcd29b4..2ed666d3e 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4230,7 +4230,7 @@ void Spell::EffectStuck(SpellEffIndex /*effIndex*/) return; // xinef: player is in corpse - if (!target->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) + if (!target->HasPlayerFlag(PLAYER_FLAGS_GHOST)) target->BuildPlayerRepop(); target->RepopAtGraveyard(); return; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index 5c359cb7c..3e2626563 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -345,7 +345,7 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player* player, uint32 spellId, GameO nodes[0] = FlightPathStartNodes[NA_ROOST_N]; nodes[1] = FlightPathEndNodes[NA_ROOST_N]; player->ActivateTaxiPathTo(nodes); - player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP); + player->SetPlayerFlag(PLAYER_FLAGS_IN_PVP); player->UpdatePvP(true, true); retval = true; break; @@ -353,7 +353,7 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player* player, uint32 spellId, GameO nodes[0] = FlightPathStartNodes[NA_ROOST_S]; nodes[1] = FlightPathEndNodes[NA_ROOST_S]; player->ActivateTaxiPathTo(nodes); - player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP); + player->SetPlayerFlag(PLAYER_FLAGS_IN_PVP); player->UpdatePvP(true, true); retval = true; break; @@ -361,7 +361,7 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player* player, uint32 spellId, GameO nodes[0] = FlightPathStartNodes[NA_ROOST_W]; nodes[1] = FlightPathEndNodes[NA_ROOST_W]; player->ActivateTaxiPathTo(nodes); - player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP); + player->SetPlayerFlag(PLAYER_FLAGS_IN_PVP); player->UpdatePvP(true, true); retval = true; break; @@ -369,7 +369,7 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player* player, uint32 spellId, GameO nodes[0] = FlightPathStartNodes[NA_ROOST_E]; nodes[1] = FlightPathEndNodes[NA_ROOST_E]; player->ActivateTaxiPathTo(nodes); - player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP); + player->SetPlayerFlag(PLAYER_FLAGS_IN_PVP); player->UpdatePvP(true, true); retval = true; break; diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 19a40a4c7..6a4ac3d42 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1984,7 +1984,7 @@ public: bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override { ClearGossipMenuFor(player); - bool noXPGain = player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN); + bool noXPGain = player->HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); bool doSwitch = false; auto toggleXpCost = sWorld->getIntConfig(CONFIG_TOGGLE_XP_COST); @@ -2012,12 +2012,12 @@ public: else if (noXPGain) { player->ModifyMoney(-toggleXpCost); - player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN); + player->RemovePlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); } else if (!noXPGain) { player->ModifyMoney(-toggleXpCost); - player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN); + player->SetPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); } } player->PlayerTalkClass->SendCloseGossip(); From 48fccc851d8491c9019a585c74417641376795de Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 6 Apr 2022 10:48:06 +0200 Subject: [PATCH 09/13] =?UTF-8?q?fix(Scripts/Raids):=20Fixed=20setting=20`?= =?UTF-8?q?UNIT=5FFLAG=5FNON=5FATTACKABLE`=20flag=20to=20=E2=80=A6=20(#107?= =?UTF-8?q?59)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Scripts/Raids): Fixed setting `UNIT_FLAG_NON_ATTACKABLE` flag to some Trial of the Champions bosses. Fixes #8980 * Update. * Update. * Update. --- .../boss_argent_challenge.cpp | 7 ++++--- .../TrialOfTheChampion/boss_black_knight.cpp | 5 +++-- .../boss_grand_champions.cpp | 14 ++++++------- .../instance_trial_of_the_champion.cpp | 21 +++++++++++-------- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index 27684e4ad..25152b05b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -158,7 +158,7 @@ public: me->getThreatMgr().clearReferences(); me->SetRegeneratingHealth(false); _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 ) pInstance->SetData(BOSS_ARGENT_CHALLENGE, DONE); } @@ -305,7 +305,7 @@ public: me->getThreatMgr().clearReferences(); me->SetRegeneratingHealth(false); _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 ) { pInstance->SetData(BOSS_ARGENT_CHALLENGE, DONE); @@ -404,6 +404,7 @@ public: events.Reset(); me->SetReactState(REACT_PASSIVE); 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); } @@ -439,7 +440,7 @@ public: break; 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) ) { AttackStart(target); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index 887d3555b..de57f2891 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -120,7 +120,7 @@ public: summons.DespawnAll(); Phase = 1; 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); if( pInstance ) pInstance->SetData(BOSS_BLACK_KNIGHT, NOT_STARTED); @@ -193,7 +193,7 @@ public: { case SPELL_BLACK_KNIGHT_RES: 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->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT); @@ -342,6 +342,7 @@ public: { Start(false, true, ObjectGuid::Empty, nullptr); 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 diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index ee9f9f644..5bee3c218 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -361,7 +361,6 @@ public: BossOrder = 0; NewMountGUID.Clear(); me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true); - me->SetUnitFlag(UNIT_FLAG_PACIFIED); events.Reset(); events.ScheduleEvent(EVENT_MOUNT_CHARGE, urand(2500, 4000)); @@ -401,7 +400,7 @@ public: { DoAction(1); 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->SetReactState(REACT_AGGRESSIVE); } @@ -489,7 +488,7 @@ public: me->SetRegeneratingHealth(true); me->RemoveUnitFlag(UNIT_FLAG_PACIFIED); 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->RemoveAllAuras(); AddCreatureAddonAuras(); @@ -557,7 +556,7 @@ public: me->StopMoving(); me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0); 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); if( pInstance ) { @@ -575,6 +574,7 @@ public: { if( damage >= me->GetHealth() ) { + MountPhase = true; events.Reset(); damage = me->GetHealth() - 1; me->SetReactState(REACT_PASSIVE); @@ -584,7 +584,7 @@ public: me->CombatStop(true); me->GetMotionMaster()->Clear(); 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 ) pInstance->SetData(DATA_GRAND_CHAMPION_DIED, BossOrder); } @@ -627,7 +627,7 @@ public: events.ScheduleEvent(EVENT_SHIELD_BREAKER, urand(5000, 8000)); events.ScheduleEvent(EVENT_THRUST, urand(3000, 5000)); 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) ) AttackStart(target); DoZoneInCombat(); @@ -720,7 +720,7 @@ public: { me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); 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); events.RepeatEvent(200); break; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp index c1c8d8dc6..bbbafa9df 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp @@ -156,6 +156,7 @@ public: // Coliseum Announcer: case NPC_JAEREN: + case NPC_ARELAS: NPC_AnnouncerGUID = creature->GetGUID(); //if( TeamIdInInstance == TEAM_ALLIANCE ) // creature->UpdateEntry(NPC_ARELAS); @@ -731,17 +732,19 @@ public: if( Creature* pBoss = instance->SummonCreature(CHAMPION_TO_SUMMON, SpawnPos) ) { NPC_GrandChampionGUID[BossOrder] = pBoss->GetGUID(); - pBoss->ToCreature()->SetHomePosition(748.309f, 619.448f, 411.3f, M_PI / 2); 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)); for( uint8 i = 0; i < 3; ++i ) if( Creature* pAdd = instance->SummonCreature(MINION_TO_SUMMON, SpawnPos) ) { 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->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]) ) { 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) ) c->AI()->AttackStart(target); c->AI()->DoZoneInCombat(); @@ -862,7 +865,7 @@ public: if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[0][i]) ) { 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) ) c->AI()->AttackStart(target); c->AI()->DoZoneInCombat(); @@ -887,7 +890,7 @@ public: if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[2][i]) ) { 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) ) c->AI()->AttackStart(target); c->AI()->DoZoneInCombat(); @@ -912,7 +915,7 @@ public: if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) ) { 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) ) c->AI()->AttackStart(target); c->AI()->DoZoneInCombat(); @@ -949,7 +952,7 @@ public: if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) ) { 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) ) c->AI()->AttackStart(target); c->AI()->DoZoneInCombat(); @@ -1053,7 +1056,7 @@ public: if( Creature* c = instance->GetCreature(NPC_ArgentSoldierGUID[i][j]) ) { 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(); } if( Creature* tirion = instance->GetCreature(NPC_TirionGUID) ) @@ -1074,7 +1077,7 @@ public: if( Creature* boss = instance->GetCreature(NPC_ArgentChampionGUID) ) { 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) ) boss->AI()->AttackStart(target); boss->AI()->DoZoneInCombat(); From bd9b320a4b0d99e585e32340b38a38add5309aee Mon Sep 17 00:00:00 2001 From: temperrr Date: Thu, 7 Apr 2022 14:16:59 +0200 Subject: [PATCH 10/13] fix(DB/Creature): Razorgore should not be interruptable --- data/sql/updates/pending_db_world/rev_1649325436095486698 | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1649325436095486698 diff --git a/data/sql/updates/pending_db_world/rev_1649325436095486698 b/data/sql/updates/pending_db_world/rev_1649325436095486698 new file mode 100644 index 000000000..498c02689 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1649325436095486698 @@ -0,0 +1,2 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1649325436095486698'); +UPDATE `creature_template` SET `mechanic_immune_mask` = 650854235 WHERE (`entry` = 12435); From 85743a1f196db3555c7527847bc2df0724a66849 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Thu, 7 Apr 2022 09:33:58 -0300 Subject: [PATCH 11/13] chore: Rename rev_1649325436095486698 to rev_1649325436095486698.sql (#11318) --- .../{rev_1649325436095486698 => rev_1649325436095486698.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename data/sql/updates/pending_db_world/{rev_1649325436095486698 => rev_1649325436095486698.sql} (100%) diff --git a/data/sql/updates/pending_db_world/rev_1649325436095486698 b/data/sql/updates/pending_db_world/rev_1649325436095486698.sql similarity index 100% rename from data/sql/updates/pending_db_world/rev_1649325436095486698 rename to data/sql/updates/pending_db_world/rev_1649325436095486698.sql From 14463eb6f3fdccaa66de3f1d0f20fc6ebedc6908 Mon Sep 17 00:00:00 2001 From: "Bogir[rus]" Date: Thu, 7 Apr 2022 17:35:45 +0500 Subject: [PATCH 12/13] fix(DB/creature_template_locale): npc Title ruRU (#11265) Fixed ruRU title of npc Lhara (Darkmoon Faire Exotic Goods) --- data/sql/updates/pending_db_world/rev_1648972434572977796.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1648972434572977796.sql diff --git a/data/sql/updates/pending_db_world/rev_1648972434572977796.sql b/data/sql/updates/pending_db_world/rev_1648972434572977796.sql new file mode 100644 index 000000000..cb2589d42 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1648972434572977796.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648972434572977796'); + +UPDATE `creature_template_locale` SET `Title` = 'Лавка редких товаров ярмарки Новолуния' WHERE `entry` = 14846 AND `locale` = 'ruRU'; From 155d0356ae577d89f17c6b3bbf7cf9099c4a06ce Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 7 Apr 2022 12:37:45 +0000 Subject: [PATCH 13/13] chore(DB): import pending files Referenced commit(s): 14463eb6f3fdccaa66de3f1d0f20fc6ebedc6908 --- data/sql/updates/db_world/2022_04_07_00.sql | 29 +++++++++++++++++++ data/sql/updates/db_world/2022_04_07_01.sql | 28 ++++++++++++++++++ .../rev_1648972434572977796.sql | 3 -- .../rev_1649325436095486698.sql | 2 -- 4 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/db_world/2022_04_07_00.sql create mode 100644 data/sql/updates/db_world/2022_04_07_01.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1648972434572977796.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1649325436095486698.sql diff --git a/data/sql/updates/db_world/2022_04_07_00.sql b/data/sql/updates/db_world/2022_04_07_00.sql new file mode 100644 index 000000000..de344c3ab --- /dev/null +++ b/data/sql/updates/db_world/2022_04_07_00.sql @@ -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`; diff --git a/data/sql/updates/db_world/2022_04_07_01.sql b/data/sql/updates/db_world/2022_04_07_01.sql new file mode 100644 index 000000000..42eb03cb7 --- /dev/null +++ b/data/sql/updates/db_world/2022_04_07_01.sql @@ -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`; diff --git a/data/sql/updates/pending_db_world/rev_1648972434572977796.sql b/data/sql/updates/pending_db_world/rev_1648972434572977796.sql deleted file mode 100644 index cb2589d42..000000000 --- a/data/sql/updates/pending_db_world/rev_1648972434572977796.sql +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1648972434572977796'); - -UPDATE `creature_template_locale` SET `Title` = 'Лавка редких товаров ярмарки Новолуния' WHERE `entry` = 14846 AND `locale` = 'ruRU'; diff --git a/data/sql/updates/pending_db_world/rev_1649325436095486698.sql b/data/sql/updates/pending_db_world/rev_1649325436095486698.sql deleted file mode 100644 index 498c02689..000000000 --- a/data/sql/updates/pending_db_world/rev_1649325436095486698.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1649325436095486698'); -UPDATE `creature_template` SET `mechanic_immune_mask` = 650854235 WHERE (`entry` = 12435);