AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
go_ahune_ice_stone Class Reference
Inheritance diagram for go_ahune_ice_stone:
GameObjectScript ScriptObject UpdatableScript< GameObject >

Public Member Functions

 go_ahune_ice_stone ()
 
bool OnGossipHello (Player *player, GameObject *go) override
 
bool OnGossipSelect (Player *player, GameObject *go, uint32, uint32 action) override
 
- Public Member Functions inherited from GameObjectScript
bool IsDatabaseBound () const override
 
virtual bool OnGossipHello (Player *, GameObject *)
 
virtual bool OnGossipSelect (Player *, GameObject *, uint32, uint32)
 
virtual bool OnGossipSelectCode (Player *, GameObject *, uint32, uint32, const char *)
 
virtual bool OnQuestAccept (Player *, GameObject *, Quest const *)
 
virtual bool OnQuestReward (Player *, GameObject *, Quest const *, uint32)
 
virtual uint32 GetDialogStatus (Player *, GameObject *)
 
virtual void OnDestroyed (GameObject *, Player *)
 
virtual void OnDamaged (GameObject *, Player *)
 
virtual void OnLootStateChanged (GameObject *, uint32, Unit *)
 
virtual void OnGameObjectStateChanged (GameObject *, uint32)
 
virtual GameObjectAIGetAI (GameObject *) const
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
- Public Member Functions inherited from UpdatableScript< GameObject >
virtual void OnUpdate (GameObject *, uint32)
 

Additional Inherited Members

- Protected Member Functions inherited from GameObjectScript
 GameObjectScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name)
 
virtual ~ScriptObject ()=default
 
- Protected Member Functions inherited from UpdatableScript< GameObject >
 UpdatableScript ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ go_ahune_ice_stone()

go_ahune_ice_stone::go_ahune_ice_stone ( )
inline
328: GameObjectScript("go_ahune_ice_stone") { }
Definition: ScriptMgr.h:759

Member Function Documentation

◆ OnGossipHello()

bool go_ahune_ice_stone::OnGossipHello ( Player player,
GameObject go 
)
inlineoverridevirtual

Reimplemented from GameObjectScript.

331 {
332 if (!player || !go)
333 return true;
334 if (!player->HasItemCount(ITEM_MAGMA_TOTEM))
335 return true;
336 if (go->FindNearestCreature(NPC_AHUNE, 200.0f, true))
337 return true;
338
339 AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Disturb the stone and summon Lord Ahune.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1337);
341 return true;
342 }
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const guid)
Definition: ScriptedGossip.cpp:45
void AddGossipItemFor(Player *player, uint32 icon, std::string const &text, uint32 sender, uint32 action)
Definition: ScriptedGossip.cpp:28
@ GOSSIP_SENDER_MAIN
Definition: ScriptedGossip.h:70
@ GOSSIP_ACTION_INFO_DEF
Definition: ScriptedGossip.h:68
@ GOSSIP_ICON_CHAT
Definition: GossipDef.h:60
#define GOSSIP_TEXT_ID
Definition: boss_ahune.cpp:27
#define ITEM_MAGMA_TOTEM
Definition: boss_ahune.cpp:29
@ NPC_AHUNE
Definition: the_slave_pens.h:50
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition: Object.cpp:2409
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
Definition: PlayerStorage.cpp:686

References AddGossipItemFor(), WorldObject::FindNearestCreature(), Object::GetGUID(), GOSSIP_ACTION_INFO_DEF, GOSSIP_ICON_CHAT, GOSSIP_SENDER_MAIN, GOSSIP_TEXT_ID, Player::HasItemCount(), ITEM_MAGMA_TOTEM, NPC_AHUNE, and SendGossipMenuFor().

◆ OnGossipSelect()

bool go_ahune_ice_stone::OnGossipSelect ( Player player,
GameObject go,
uint32  ,
uint32  action 
)
inlineoverridevirtual

Reimplemented from GameObjectScript.

345 {
346 if (!player || !go)
347 return true;
348 if (action != GOSSIP_ACTION_INFO_DEF + 1337)
349 return true;
350 if (!player->HasItemCount(ITEM_MAGMA_TOTEM))
351 return true;
352 if (go->FindNearestCreature(NPC_AHUNE, 200.0f, true))
353 return true;
354
356 {
357 player->DestroyItemCount(ITEM_MAGMA_TOTEM, 1, true, false);
358 player->AreaExploredOrEventHappens(QUEST_SUMMON_AHUNE); // auto rewarded
359
360 c->SetVisible(false);
361 c->SetDisplayId(AHUNE_DEFAULT_MODEL);
362 c->SetFloatValue(UNIT_FIELD_COMBATREACH, 18.0f);
363 CAST_AI(boss_ahune::boss_ahuneAI, c->AI())->InvokerGUID = player->GetGUID();
365 if (Creature* crystal_trigger = go->SummonCreature(WORLD_TRIGGER, go->GetPositionX(), go->GetPositionY(), 5.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 12000))
366 crystal_trigger->CastSpell(bunny, SPELL_STARTING_BEAM, false);
367 }
368
369 CloseGossipMenuFor(player);
370 return true;
371 }
#define CAST_AI(a, b)
Definition: ScriptedCreature.h:28
void CloseGossipMenuFor(Player *player)
Definition: ScriptedGossip.cpp:56
@ TEMPSUMMON_MANUAL_DESPAWN
Definition: Object.h:49
@ TEMPSUMMON_TIMED_DESPAWN
Definition: Object.h:44
@ UNIT_FIELD_COMBATREACH
Definition: UpdateFields.h:123
#define WORLD_TRIGGER
Definition: Unit.h:36
#define QUEST_SUMMON_AHUNE
Definition: boss_ahune.cpp:28
#define AHUNE_DEFAULT_MODEL
Definition: boss_ahune.cpp:30
const Position AhuneSummonPos
Definition: boss_ahune.cpp:32
@ SPELL_STARTING_BEAM
Definition: boss_ahune.cpp:44
@ NPC_AHUNE_SUMMON_LOC_BUNNY
Definition: the_slave_pens.h:52
Definition: Creature.h:46
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition: Object.cpp:2318
float GetPositionX() const
Definition: Position.h:117
float GetPositionY() const
Definition: Position.h:118
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition: PlayerStorage.cpp:3149
void AreaExploredOrEventHappens(uint32 questId)
Definition: PlayerQuest.cpp:1775
Definition: boss_ahune.cpp:95

References AHUNE_DEFAULT_MODEL, AhuneSummonPos, Player::AreaExploredOrEventHappens(), CAST_AI, CloseGossipMenuFor(), Player::DestroyItemCount(), WorldObject::FindNearestCreature(), Object::GetGUID(), Position::GetPositionX(), Position::GetPositionY(), GOSSIP_ACTION_INFO_DEF, Player::HasItemCount(), ITEM_MAGMA_TOTEM, NPC_AHUNE, NPC_AHUNE_SUMMON_LOC_BUNNY, QUEST_SUMMON_AHUNE, SPELL_STARTING_BEAM, WorldObject::SummonCreature(), TEMPSUMMON_MANUAL_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, UNIT_FIELD_COMBATREACH, and WORLD_TRIGGER.