diff options
author | ModoX <moardox@gmail.com> | 2023-05-06 14:02:13 +0200 |
---|---|---|
committer | ModoX <moardox@gmail.com> | 2023-05-06 14:39:13 +0200 |
commit | 920b9a99bdd2d7eb9b7a787c4872a38b862f75c8 (patch) | |
tree | eb8d68ff9ae7f86bff8faa479355d9ab28ceccd1 /src/server/game | |
parent | cd8bba63a2a80e60b9a756271abcc866e880c2bc (diff) |
Core/Unit: Named npc flags UNIT_NPC_FLAG_AREA_SPIRIT_HEALER and UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL
Diffstat (limited to 'src/server/game')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/UnitDefines.h | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp | 53 | ||||
-rw-r--r-- | src/server/game/Handlers/NPCHandler.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 20 |
7 files changed, 58 insertions, 36 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 86585a35452..32690e08bff 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1125,7 +1125,7 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 entry, Posit LastUsedScriptID = GetScriptId(); - if (IsSpiritHealer() || IsSpiritGuide() || (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_GHOST_VISIBILITY)) + if (IsSpiritHealer() || IsAreaSpiritHealer() || (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_GHOST_VISIBILITY)) { m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_GHOST); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index bd5a69bd878..55b922489e2 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7902,8 +7902,8 @@ bool Unit::IsServiceProvider() const return HasNpcFlag( UNIT_NPC_FLAG_VENDOR | UNIT_NPC_FLAG_TRAINER | UNIT_NPC_FLAG_FLIGHTMASTER | UNIT_NPC_FLAG_PETITIONER | UNIT_NPC_FLAG_BATTLEMASTER | UNIT_NPC_FLAG_BANKER | - UNIT_NPC_FLAG_INNKEEPER | UNIT_NPC_FLAG_SPIRITHEALER | - UNIT_NPC_FLAG_SPIRITGUIDE | UNIT_NPC_FLAG_TABARDDESIGNER | UNIT_NPC_FLAG_AUCTIONEER); + UNIT_NPC_FLAG_INNKEEPER | UNIT_NPC_FLAG_SPIRIT_HEALER | + UNIT_NPC_FLAG_AREA_SPIRIT_HEALER | UNIT_NPC_FLAG_TABARDDESIGNER | UNIT_NPC_FLAG_AUCTIONEER); } void Unit::EngageWithTarget(Unit* enemy) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 6fb9b7c0894..9fcb05b9ab1 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1112,14 +1112,14 @@ class TC_GAME_API Unit : public WorldObject bool IsBattleMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_BATTLEMASTER); } bool IsBanker() const { return HasNpcFlag(UNIT_NPC_FLAG_BANKER); } bool IsInnkeeper() const { return HasNpcFlag(UNIT_NPC_FLAG_INNKEEPER); } - bool IsSpiritHealer() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER); } - bool IsSpiritGuide() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITGUIDE); } + bool IsSpiritHealer() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRIT_HEALER); } + bool IsAreaSpiritHealer() const { return HasNpcFlag(UNIT_NPC_FLAG_AREA_SPIRIT_HEALER); } bool IsTabardDesigner() const { return HasNpcFlag(UNIT_NPC_FLAG_TABARDDESIGNER); } bool IsAuctioner() const { return HasNpcFlag(UNIT_NPC_FLAG_AUCTIONEER); } bool IsArmorer() const { return HasNpcFlag(UNIT_NPC_FLAG_REPAIR); } bool IsWildBattlePet() const { return HasNpcFlag(UNIT_NPC_FLAG_WILD_BATTLE_PET); } bool IsServiceProvider() const; - bool IsSpiritService() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE); } + bool IsSpiritService() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRIT_HEALER | UNIT_NPC_FLAG_AREA_SPIRIT_HEALER); } bool IsCritter() const { return GetCreatureType() == CREATURE_TYPE_CRITTER; } bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); } diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h index e7ffd0250ef..5a37cc4e109 100644 --- a/src/server/game/Entities/Unit/UnitDefines.h +++ b/src/server/game/Entities/Unit/UnitDefines.h @@ -303,8 +303,8 @@ enum NPCFlags : uint32 UNIT_NPC_FLAG_VENDOR_REAGENT = 0x00000800, // TITLE is vendor (reagents) DESCRIPTION 100% UNIT_NPC_FLAG_REPAIR = 0x00001000, // TITLE can repair DESCRIPTION 100% UNIT_NPC_FLAG_FLIGHTMASTER = 0x00002000, // TITLE is flight master DESCRIPTION 100% - UNIT_NPC_FLAG_SPIRITHEALER = 0x00004000, // TITLE is spirit healer DESCRIPTION guessed - UNIT_NPC_FLAG_SPIRITGUIDE = 0x00008000, // TITLE is spirit guide DESCRIPTION guessed + UNIT_NPC_FLAG_SPIRIT_HEALER = 0x00004000, // TITLE is spirit healer + UNIT_NPC_FLAG_AREA_SPIRIT_HEALER = 0x00008000, // TITLE is area spirit healer UNIT_NPC_FLAG_INNKEEPER = 0x00010000, // TITLE is innkeeper UNIT_NPC_FLAG_BANKER = 0x00020000, // TITLE is banker DESCRIPTION 100% UNIT_NPC_FLAG_PETITIONER = 0x00040000, // TITLE handles guild/arena petitions DESCRIPTION 100% 0xC0000 = guild petitions, 0x40000 = arena team petitions @@ -332,6 +332,7 @@ enum NPCFlags2 : uint32 UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER = 0x00000001, // TITLE is item upgrade UNIT_NPC_FLAG_2_GARRISON_ARCHITECT = 0x00000002, // TITLE is garrison architect DESCRIPTION garrison building placement UI UNIT_NPC_FLAG_2_STEERING = 0x00000004, // TITLE is avoiding obstacles DESCRIPTION clientside pathfinding + UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL = 0x00000008, // TITLE is area spirit healer individual DESCRIPTION area spirit healer with individual timers UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER = 0x00000010, // TITLE is shipment crafter DESCRIPTION garrison work orders UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC = 0x00000020, // TITLE is garrison mission UNIT_NPC_FLAG_2_TRADESKILL_NPC = 0x00000040, // TITLE is tradeskill DESCRIPTION crafting at npc diff --git a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp index 328c08fc79d..3c870223ffc 100644 --- a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp +++ b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp @@ -433,8 +433,8 @@ TC_API_EXPORT EnumText EnumUtils<NPCFlags>::ToString(NPCFlags value) case UNIT_NPC_FLAG_VENDOR_REAGENT: return { "UNIT_NPC_FLAG_VENDOR_REAGENT", "is vendor (reagents)", "100%" }; case UNIT_NPC_FLAG_REPAIR: return { "UNIT_NPC_FLAG_REPAIR", "can repair", "100%" }; case UNIT_NPC_FLAG_FLIGHTMASTER: return { "UNIT_NPC_FLAG_FLIGHTMASTER", "is flight master", "100%" }; - case UNIT_NPC_FLAG_SPIRITHEALER: return { "UNIT_NPC_FLAG_SPIRITHEALER", "is spirit healer", "guessed" }; - case UNIT_NPC_FLAG_SPIRITGUIDE: return { "UNIT_NPC_FLAG_SPIRITGUIDE", "is spirit guide", "guessed" }; + case UNIT_NPC_FLAG_SPIRIT_HEALER: return { "UNIT_NPC_FLAG_SPIRIT_HEALER", "is spirit healer", "" }; + case UNIT_NPC_FLAG_AREA_SPIRIT_HEALER: return { "UNIT_NPC_FLAG_AREA_SPIRIT_HEALER", "is area spirit healer", "" }; case UNIT_NPC_FLAG_INNKEEPER: return { "UNIT_NPC_FLAG_INNKEEPER", "is innkeeper", "" }; case UNIT_NPC_FLAG_BANKER: return { "UNIT_NPC_FLAG_BANKER", "is banker", "100%" }; case UNIT_NPC_FLAG_PETITIONER: return { "UNIT_NPC_FLAG_PETITIONER", "handles guild/arena petitions", "100% 0xC0000 = guild petitions, 0x40000 = arena team petitions" }; @@ -478,8 +478,8 @@ TC_API_EXPORT NPCFlags EnumUtils<NPCFlags>::FromIndex(size_t index) case 12: return UNIT_NPC_FLAG_VENDOR_REAGENT; case 13: return UNIT_NPC_FLAG_REPAIR; case 14: return UNIT_NPC_FLAG_FLIGHTMASTER; - case 15: return UNIT_NPC_FLAG_SPIRITHEALER; - case 16: return UNIT_NPC_FLAG_SPIRITGUIDE; + case 15: return UNIT_NPC_FLAG_SPIRIT_HEALER; + case 16: return UNIT_NPC_FLAG_AREA_SPIRIT_HEALER; case 17: return UNIT_NPC_FLAG_INNKEEPER; case 18: return UNIT_NPC_FLAG_BANKER; case 19: return UNIT_NPC_FLAG_PETITIONER; @@ -520,8 +520,8 @@ TC_API_EXPORT size_t EnumUtils<NPCFlags>::ToIndex(NPCFlags value) case UNIT_NPC_FLAG_VENDOR_REAGENT: return 12; case UNIT_NPC_FLAG_REPAIR: return 13; case UNIT_NPC_FLAG_FLIGHTMASTER: return 14; - case UNIT_NPC_FLAG_SPIRITHEALER: return 15; - case UNIT_NPC_FLAG_SPIRITGUIDE: return 16; + case UNIT_NPC_FLAG_SPIRIT_HEALER: return 15; + case UNIT_NPC_FLAG_AREA_SPIRIT_HEALER: return 16; case UNIT_NPC_FLAG_INNKEEPER: return 17; case UNIT_NPC_FLAG_BANKER: return 18; case UNIT_NPC_FLAG_PETITIONER: return 19; @@ -554,6 +554,7 @@ TC_API_EXPORT EnumText EnumUtils<NPCFlags2>::ToString(NPCFlags2 value) case UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER: return { "UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER", "is item upgrade", "" }; case UNIT_NPC_FLAG_2_GARRISON_ARCHITECT: return { "UNIT_NPC_FLAG_2_GARRISON_ARCHITECT", "is garrison architect", "garrison building placement UI" }; case UNIT_NPC_FLAG_2_STEERING: return { "UNIT_NPC_FLAG_2_STEERING", "is avoiding obstacles", "clientside pathfinding" }; + case UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL: return { "UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL", "is area spirit healer individual", "area spirit healer with individual timers" }; case UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER: return { "UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER", "is shipment crafter", "garrison work orders" }; case UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC: return { "UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC", "is garrison mission", "" }; case UNIT_NPC_FLAG_2_TRADESKILL_NPC: return { "UNIT_NPC_FLAG_2_TRADESKILL_NPC", "is tradeskill", "crafting at npc" }; @@ -568,7 +569,7 @@ TC_API_EXPORT EnumText EnumUtils<NPCFlags2>::ToString(NPCFlags2 value) } template <> -TC_API_EXPORT size_t EnumUtils<NPCFlags2>::Count() { return 13; } +TC_API_EXPORT size_t EnumUtils<NPCFlags2>::Count() { return 14; } template <> TC_API_EXPORT NPCFlags2 EnumUtils<NPCFlags2>::FromIndex(size_t index) @@ -579,15 +580,16 @@ TC_API_EXPORT NPCFlags2 EnumUtils<NPCFlags2>::FromIndex(size_t index) case 1: return UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER; case 2: return UNIT_NPC_FLAG_2_GARRISON_ARCHITECT; case 3: return UNIT_NPC_FLAG_2_STEERING; - case 4: return UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER; - case 5: return UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC; - case 6: return UNIT_NPC_FLAG_2_TRADESKILL_NPC; - case 7: return UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW; - case 8: return UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC; - case 9: return UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR; - case 10: return UNIT_NPC_FLAG_2_AZERITE_RESPEC; - case 11: return UNIT_NPC_FLAG_2_ISLANDS_QUEUE; - case 12: return UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION; + case 4: return UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL; + case 5: return UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER; + case 6: return UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC; + case 7: return UNIT_NPC_FLAG_2_TRADESKILL_NPC; + case 8: return UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW; + case 9: return UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC; + case 10: return UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR; + case 11: return UNIT_NPC_FLAG_2_AZERITE_RESPEC; + case 12: return UNIT_NPC_FLAG_2_ISLANDS_QUEUE; + case 13: return UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION; default: throw std::out_of_range("index"); } } @@ -601,15 +603,16 @@ TC_API_EXPORT size_t EnumUtils<NPCFlags2>::ToIndex(NPCFlags2 value) case UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER: return 1; case UNIT_NPC_FLAG_2_GARRISON_ARCHITECT: return 2; case UNIT_NPC_FLAG_2_STEERING: return 3; - case UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER: return 4; - case UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC: return 5; - case UNIT_NPC_FLAG_2_TRADESKILL_NPC: return 6; - case UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW: return 7; - case UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC: return 8; - case UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR: return 9; - case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return 10; - case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return 11; - case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return 12; + case UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL: return 4; + case UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER: return 5; + case UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC: return 6; + case UNIT_NPC_FLAG_2_TRADESKILL_NPC: return 7; + case UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW: return 8; + case UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC: return 9; + case UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR: return 10; + case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return 11; + case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return 12; + case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return 13; default: throw std::out_of_range("value"); } } diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 23249272a41..5f706002ec4 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -168,7 +168,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet) unit->SetHomePosition(unit->GetPosition()); // If spiritguide, no need for gossip menu, just put player into resurrect queue - if (unit->IsSpiritGuide()) + if (unit->IsAreaSpiritHealer()) { Battleground* bg = _player->GetBattleground(); if (bg) @@ -271,7 +271,7 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelec void WorldSession::HandleSpiritHealerActivate(WorldPackets::NPC::SpiritHealerActivate& packet) { - Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.Healer, UNIT_NPC_FLAG_SPIRITHEALER, UNIT_NPC_FLAG_2_NONE); + Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.Healer, UNIT_NPC_FLAG_SPIRIT_HEALER, UNIT_NPC_FLAG_2_NONE); if (!unit) { TC_LOG_DEBUG("network", "WORLD: HandleSpiritHealerActivateOpcode - {} not found or you can not interact with him.", packet.Healer.ToString()); diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index fd36c97078b..889f42f200a 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -127,12 +127,18 @@ TC_API_EXPORT EnumText EnumUtils<Powers>::ToString(Powers value) case POWER_FURY: return { "POWER_FURY", "Fury", "" }; case POWER_PAIN: return { "POWER_PAIN", "Pain", "" }; case POWER_ESSENCE: return { "POWER_ESSENCE", "Essence", "" }; + case POWER_RUNE_BLOOD: return { "POWER_RUNE_BLOOD", "Blood Runes", "" }; + case POWER_RUNE_FROST: return { "POWER_RUNE_FROST", "Frost Runes", "" }; + case POWER_RUNE_UNHOLY: return { "POWER_RUNE_UNHOLY", "Unholy Runes", "" }; + case POWER_ALTERNATE_QUEST: return { "POWER_ALTERNATE_QUEST", "Alternate (Quest)", "" }; + case POWER_ALTERNATE_ENCOUNTER: return { "POWER_ALTERNATE_ENCOUNTER", "Alternate (Encounter)", "" }; + case POWER_ALTERNATE_MOUNT: return { "POWER_ALTERNATE_MOUNT", "Alternate (Mount)", "" }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils<Powers>::Count() { return 21; } +TC_API_EXPORT size_t EnumUtils<Powers>::Count() { return 27; } template <> TC_API_EXPORT Powers EnumUtils<Powers>::FromIndex(size_t index) @@ -160,6 +166,12 @@ TC_API_EXPORT Powers EnumUtils<Powers>::FromIndex(size_t index) case 18: return POWER_FURY; case 19: return POWER_PAIN; case 20: return POWER_ESSENCE; + case 21: return POWER_RUNE_BLOOD; + case 22: return POWER_RUNE_FROST; + case 23: return POWER_RUNE_UNHOLY; + case 24: return POWER_ALTERNATE_QUEST; + case 25: return POWER_ALTERNATE_ENCOUNTER; + case 26: return POWER_ALTERNATE_MOUNT; default: throw std::out_of_range("index"); } } @@ -190,6 +202,12 @@ TC_API_EXPORT size_t EnumUtils<Powers>::ToIndex(Powers value) case POWER_FURY: return 18; case POWER_PAIN: return 19; case POWER_ESSENCE: return 20; + case POWER_RUNE_BLOOD: return 21; + case POWER_RUNE_FROST: return 22; + case POWER_RUNE_UNHOLY: return 23; + case POWER_ALTERNATE_QUEST: return 24; + case POWER_ALTERNATE_ENCOUNTER: return 25; + case POWER_ALTERNATE_MOUNT: return 26; default: throw std::out_of_range("value"); } } |