Core/Unit: Named npc flags UNIT_NPC_FLAG_AREA_SPIRIT_HEALER and UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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); }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user