37#include <unordered_map>
106 uint32 talkerEntry = UINT_MAX, line = 0;
150 if (talkerEntry != UINT_MAX)
174 belfast->StopMoving();
175 belfast->SetFacingToObject(invoker);
218 return GetCullingOfStratholmeAI<npc_hearthsinger_forresten_cotAI>(creature);
321 bool shouldAddSkipGossip =
true;
325 if (
Player* player = it->GetSource())
331 shouldAddSkipGossip =
false;
336 if (shouldAddSkipGossip)
430 return GetCullingOfStratholmeAI<npc_chromie_startAI>(creature);
498 time_t& whisperedTime =
Whispered[player->GetGUID()];
500 if (!whisperedTime || (now - whisperedTime) > 15)
561 return GetCullingOfStratholmeAI<npc_chromie_middleAI>(creature);
710 return GetCullingOfStratholmeAI<npc_martha_goslinAI>(creature);
746 martha->AI()->DoAction(0);
747 martha->SetFacingToObject(
me,
true);
770 martha->AI()->DoAction(0);
771 martha->SetFacingToObject(
me,
true);
840 return GetCullingOfStratholmeAI<npc_jena_andersonAI>(creature);
950 return GetCullingOfStratholmeAI<npc_bartleby_battsonAI>(creature);
1008 scruffy->GetMotionMaster()->MoveAlongSplineChain(0,
CHAIN_SCRUFFY1,
true);
1106 return GetCullingOfStratholmeAI<npc_malcolm_mooreAI>(creature);
1191 perelli->AI()->Talk(line,
me);
1193 perelli->SetFacingTo(ori);
1262 return GetCullingOfStratholmeAI<npc_sergeant_moriganAI>(creature);
1388 return GetCullingOfStratholmeAI<npc_roger_owensAI>(creature);
1415 if (newDist >= currentDist)
1417 currentDist = newDist;
1418 current = candidate;
1434 crate->SummonGameObject(
GO_PLAGUED_CRATE, *crate, crate->GetWorldRotation(), 1_days);
1438 highlight->Delete();
1442 float closestDist = INFINITY;
1468 return GetCullingOfStratholmeAI<npc_crate_helperAI>(creature);
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::chrono::minutes Minutes
Minutes shorthand typedef.
@ SPLINE_CHAIN_MOTION_TYPE
uint32 urand(uint32 min, uint32 max)
uint32 GetGossipActionFor(Player *player, uint32 gossipListId)
void AddGossipItemFor(Player *player, GossipOptionNpc optionNpc, std::string text, uint32 sender, uint32 action)
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
void ClearGossipMenuFor(Player *player)
void InitGossipMenuFor(Player *player, uint32 menuId)
void CloseGossipMenuFor(Player *player)
@ EMOTE_ONESHOT_EXCLAMATION
@ EMOTE_ONESHOT_CREATURE_SPECIAL
@ EMOTE_STATE_USE_STANDING
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
ObjectGuid const & GetGUID() const
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, Milliseconds duration=0ms, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty, SmoothPhasingInfo const *smoothPhasingInfo=nullptr)
void MoveAlongSplineChain(uint32 pointId, uint16 dbChainId, bool walk)
void ResumeSplineChain(SplineChainResumeInfo const &info)
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
bool HasAchieved(uint32 achievementId) const
bool CanBeGameMaster() const
bool IsGameMaster() const
void PrepareQuestMenu(ObjectGuid guid)
uint32 GetQuestId() const
static void GetResumeInfo(SplineChainResumeInfo &info, Unit const *owner, Optional< uint32 > id={})
virtual void DoAction(int32 param)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
bool IsQuestGiver() const
void SetEmoteState(Emote emote)
void SetFacingTo(float const ori, bool force=true)
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
GameObject * FindNearestGameObject(uint32 entry, float range, bool spawnedOnly=true) const
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
float GetDistance2d(WorldObject const *obj) const
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
virtual void SetGuidData(uint32, ObjectGuid)
bool OnTrigger(Player *player, AreaTriggerEntry const *) override
at_stratholme_inn_stairs_cot()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
npc_hearthsinger_forresten_cot()
CreatureAI * GetAI(Creature *creature) const override
static constexpr float marthaIdleOrientation1
@ GOSSIP_OPTION_EXPLAIN_2
@ GOSSIP_OFFSET_EXPLAIN_1
@ GOSSIP_OFFSET_OPEN_GM_MENU
@ GOSSIP_OFFSET_EXPLAIN_2
@ GOSSIP_OFFSET_GM_INITIAL
@ GOSSIP_OPTION_EXPLAIN_1
static constexpr float scruffyFacing4
static constexpr float marthaIdleOrientation2
@ SPELL_ARCANE_DISRUPTION
static constexpr float malcolmFacing3
@ QUEST_DISPELLING_ILLUSIONS
@ SPELL_SUMMON_ARCANE_DISRUPTOR
static constexpr float scruffyFacing2
static constexpr Position scruffySpawn
@ DATA_INVOKING_PLAYER_GUID
static constexpr Position malcolmSpawn
void AddSC_culling_of_stratholme()
COSProgressStates GetStableStateFor(COSProgressStates const state)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
std::string StringFormat(FormatString< Args... > fmt, Args &&... args) noexcept
Default TC string format function.
constexpr float GetExactDist2dSq(const float x, const float y) const
void UpdateAI(uint32 diff) override
void MovementInform(uint32 type, uint32 id) override
void DoAction(int32 action) override
void InitializeAI() override
npc_bartleby_battsonAI(Creature *creature)
static Creature * Find(Creature *helper)
CreatureAI * GetAI(Creature *creature) const override
void MoveInLineOfSight(Unit *unit) override
bool OnGossipHello(Player *player) override
npc_chromie_middleAI(Creature *creature)
InstanceScript *const Instance
std::unordered_map< ObjectGuid, time_t > Whispered
void JustAppeared() override
void AdvanceDungeon(Player const *player)
void UpdateAI(uint32 diff) override
bool OnGossipSelect(Player *player, uint32, uint32 listId) override
InstanceScript *const _instance
npc_chromie_startAI(Creature *creature)
bool OnGossipHello(Player *player) override
void OnQuestAccept(Player *, Quest const *quest) override
bool OnGossipSelect(Player *player, uint32, uint32 listId) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
uint32 GetData(uint32 data) const override
npc_crate_helperAI(Creature *creature)
void ReplaceIfCloser(Creature *candidate, Creature *¤t, float ¤tDist) const
void SetGUID(ObjectGuid const &guid, int32 id) override
InstanceScript const *const _instance
npc_hearthsinger_forresten_cotAI(Creature *creature)
ObjectGuid _triggeringPlayer
void SetData(uint32, uint32) override
void MoveInLineOfSight(Unit *unit) override
void UpdateAI(uint32 diff) override
void InitializeAI() override
void MovementInform(uint32 type, uint32 id) override
npc_jena_andersonAI(Creature *creature)
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
static Creature * Find(Creature *helper)
CreatureAI * GetAI(Creature *creature) const override
void MovementInform(uint32 type, uint32 id) override
void InitializeAI() override
void UpdateAI(uint32 diff) override
npc_malcolm_mooreAI(Creature *creature)
static void Spawn(Map *map)
CreatureAI * GetAI(Creature *creature) const override
void UpdateAI(uint32 diff) override
void JustAppeared() override
void DoAction(int32) override
npc_martha_goslinAI(Creature *creature)
void MovementInform(uint32 type, uint32 id) override
SplineChainResumeInfo ResumeInfo
CreatureAI * GetAI(Creature *creature) const override
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
npc_roger_owensAI(Creature *creature)
void MovementInform(uint32 type, uint32 id) override
static Creature * Find(Creature *helper)
CreatureAI * GetAI(Creature *creature) const override
void InitializeAI() override
void DoAction(int32 id) override
void MovementInform(uint32 type, uint32 id) override
void UpdateAI(uint32 diff) override
npc_sergeant_moriganAI(Creature *creature)
void Perelli(uint32 line, float ori=0.0f)
static Creature * Find(Creature *helper)
CreatureAI * GetAI(Creature *creature) const override