AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
npc_oculus_drakegiver Class Reference
Inheritance diagram for npc_oculus_drakegiver:
CreatureScript ScriptObject UpdatableScript< Creature >

Classes

struct  npc_oculus_drakegiverAI
 

Public Member Functions

 npc_oculus_drakegiver ()
 
CreatureAIGetAI (Creature *creature) const override
 
bool OnGossipHello (Player *player, Creature *creature) override
 
void StoreEssence (Player *player, uint32 itemId)
 
void RemoveEssence (Player *player, uint32 itemId)
 
bool OnGossipSelect (Player *player, Creature *creature, uint32, uint32 uiAction) override
 
- Public Member Functions inherited from CreatureScript
bool IsDatabaseBound () const override
 
virtual bool OnGossipHello (Player *, Creature *)
 
virtual bool OnGossipSelect (Player *, Creature *, uint32, uint32)
 
virtual bool OnGossipSelectCode (Player *, Creature *, uint32, uint32, const char *)
 
virtual bool OnQuestAccept (Player *, Creature *, Quest const *)
 
virtual bool OnQuestSelect (Player *, Creature *, Quest const *)
 
virtual bool OnQuestComplete (Player *, Creature *, Quest const *)
 
virtual bool OnQuestReward (Player *, Creature *, Quest const *, uint32)
 
virtual uint32 GetDialogStatus (Player *, Creature *)
 
virtual CreatureAIGetAI (Creature *) const
 
virtual void OnFfaPvpStateUpdate (Creature *, bool)
 
- 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< Creature >
virtual void OnUpdate (Creature *, uint32)
 

Public Attributes

std::unordered_map< ObjectGuid, bool > openedMenu
 

Additional Inherited Members

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

Detailed Description

Constructor & Destructor Documentation

◆ npc_oculus_drakegiver()

npc_oculus_drakegiver::npc_oculus_drakegiver ( )
inline
81: CreatureScript("npc_oculus_drakegiver") { }
Definition: CreatureScript.h:25

Member Function Documentation

◆ GetAI()

CreatureAI * npc_oculus_drakegiver::GetAI ( Creature creature) const
inlineoverridevirtual

Reimplemented from CreatureScript.

84 {
85 return GetOculusAI<npc_oculus_drakegiverAI>(creature);
86 }

◆ OnGossipHello()

bool npc_oculus_drakegiver::OnGossipHello ( Player player,
Creature creature 
)
inlineoverridevirtual

Reimplemented from CreatureScript.

170 {
171 if(creature->IsQuestGiver())
172 player->PrepareQuestMenu(creature->GetGUID());
173
174 if(creature->GetInstanceScript()->GetData(DATA_DRAKOS) == DONE)
175 {
176 switch (creature->GetEntry())
177 {
178 case NPC_VERDISA:
180 if (player->HasItemCount(ITEM_AMBER_ESSENCE))
181 {
183 }
184 else if (player->HasItemCount(ITEM_RUBY_ESSENCE))
185 {
187 }
188 else if (!player->HasItemCount(ITEM_EMERALD_ESSENCE))
189 {
191 }
194 break;
196 if (HAS_ESSENCE(player))
197 {
198 openedMenu[player->GetGUID()] = true;
199 }
200
201 if (!openedMenu[player->GetGUID()])
202 {
204 SendGossipMenuFor(player, GOSSIP_TEXTID_DRAKES, creature->GetGUID());
205 }
206 else
207 {
209 }
210 break;
211 case NPC_ETERNOS:
214 {
216 }
217 else if (player->HasItemCount(ITEM_RUBY_ESSENCE))
218 {
220 }
221 else if (!player->HasItemCount(ITEM_AMBER_ESSENCE))
222 {
224 }
227 break;
228 }
229 }
230
231 return true;
232 }
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
@ DONE
Definition: InstanceScript.h:60
#define HAS_ESSENCE(a)
Definition: oculus.cpp:74
@ GOSSIP_TEXTID_DRAKES
Definition: oculus.cpp:63
@ GOSSIP_TEXTID_VERDISA1
Definition: oculus.cpp:66
@ GOSSIP_TEXTID_ETERNOS1
Definition: oculus.cpp:69
@ NPC_ETERNOS
Definition: oculus.h:59
@ NPC_VERDISA
Definition: oculus.h:57
@ NPC_BELGARISTRASZ
Definition: oculus.h:58
@ ITEM_RUBY_ESSENCE
Definition: oculus.h:79
@ ITEM_EMERALD_ESSENCE
Definition: oculus.h:77
@ ITEM_AMBER_ESSENCE
Definition: oculus.h:78
@ DATA_DRAKOS
Definition: oculus.h:36
uint32 GetEntry() const
Definition: Object.h:109
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
InstanceScript * GetInstanceScript() const
Definition: Object.cpp:1192
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
Definition: PlayerStorage.cpp:683
void PrepareQuestMenu(ObjectGuid guid)
Definition: PlayerQuest.cpp:39
bool IsQuestGiver() const
Definition: Unit.h:1667
virtual uint32 GetData(uint32) const
Definition: ZoneScript.h:52
std::unordered_map< ObjectGuid, bool > openedMenu
Definition: oculus.cpp:79
bool OnGossipSelect(Player *player, Creature *creature, uint32, uint32 uiAction) override
Definition: oculus.cpp:252

References AddGossipItemFor(), DATA_DRAKOS, DONE, ZoneScript::GetData(), Object::GetEntry(), Object::GetGUID(), WorldObject::GetInstanceScript(), GOSSIP_ACTION_INFO_DEF, GOSSIP_SENDER_MAIN, GOSSIP_TEXTID_DRAKES, GOSSIP_TEXTID_ETERNOS1, GOSSIP_TEXTID_VERDISA1, HAS_ESSENCE, Player::HasItemCount(), Unit::IsQuestGiver(), ITEM_AMBER_ESSENCE, ITEM_EMERALD_ESSENCE, ITEM_RUBY_ESSENCE, NPC_BELGARISTRASZ, NPC_ETERNOS, NPC_VERDISA, OnGossipSelect(), openedMenu, Player::PrepareQuestMenu(), and SendGossipMenuFor().

◆ OnGossipSelect()

bool npc_oculus_drakegiver::OnGossipSelect ( Player player,
Creature creature,
uint32  ,
uint32  uiAction 
)
inlineoverridevirtual

Reimplemented from CreatureScript.

253 {
254 ClearGossipMenuFor(player);
255 switch(creature->GetEntry())
256 {
257 case NPC_VERDISA:
258 switch(uiAction)
259 {
262 return true;
263 case GOSSIP_ACTION_INFO_DEF + 4:
265 return true;
266 case GOSSIP_ACTION_INFO_DEF + 1:
268 break;
269 case GOSSIP_ACTION_INFO_DEF + 2:
271 break;
272 }
274 CloseGossipMenuFor(player);
275 break;
277 switch(uiAction)
278 {
280 openedMenu[player->GetGUID()] = true;
281 if (player->HasItemCount(ITEM_AMBER_ESSENCE))
282 {
284 }
285 else if (player->HasItemCount(ITEM_EMERALD_ESSENCE))
286 {
288 }
289 else if (!player->HasItemCount(ITEM_RUBY_ESSENCE))
290 {
292 }
295 return true;
296 case GOSSIP_ACTION_INFO_DEF + 4:
298 return true;
299 case GOSSIP_ACTION_INFO_DEF + 1:
301 break;
302 case GOSSIP_ACTION_INFO_DEF + 2:
304 break;
305 }
307 CloseGossipMenuFor(player);
308 break;
309 case NPC_ETERNOS:
310 switch (uiAction)
311 {
314 return true;
315 case GOSSIP_ACTION_INFO_DEF + 4:
317 return true;
318 case GOSSIP_ACTION_INFO_DEF + 1:
320 break;
321 case GOSSIP_ACTION_INFO_DEF + 2:
323 break;
324 }
326 CloseGossipMenuFor(player);
327 break;
328 }
329
330 return true;
331 }
void ClearGossipMenuFor(Player *player)
Definition: ScriptedGossip.cpp:22
void CloseGossipMenuFor(Player *player)
Definition: ScriptedGossip.cpp:56
@ GOSSIP_TEXTID_BELGARISTRASZ2
Definition: oculus.cpp:65
@ GOSSIP_TEXTID_VERDISA2
Definition: oculus.cpp:67
@ GOSSIP_TEXTID_BELGARISTRASZ1
Definition: oculus.cpp:64
@ GOSSIP_TEXTID_ETERNOS2
Definition: oculus.cpp:70
@ GOSSIP_TEXTID_ETERNOS3
Definition: oculus.cpp:71
@ GOSSIP_TEXTID_VERDISA3
Definition: oculus.cpp:68
void RemoveEssence(Player *player, uint32 itemId)
Definition: oculus.cpp:247
void StoreEssence(Player *player, uint32 itemId)
Definition: oculus.cpp:234

References AddGossipItemFor(), ClearGossipMenuFor(), CloseGossipMenuFor(), Object::GetEntry(), Object::GetGUID(), GOSSIP_ACTION_INFO_DEF, GOSSIP_SENDER_MAIN, GOSSIP_TEXTID_BELGARISTRASZ1, GOSSIP_TEXTID_BELGARISTRASZ2, GOSSIP_TEXTID_ETERNOS2, GOSSIP_TEXTID_ETERNOS3, GOSSIP_TEXTID_VERDISA2, GOSSIP_TEXTID_VERDISA3, Player::HasItemCount(), ITEM_AMBER_ESSENCE, ITEM_EMERALD_ESSENCE, ITEM_RUBY_ESSENCE, NPC_BELGARISTRASZ, NPC_ETERNOS, NPC_VERDISA, openedMenu, RemoveEssence(), SendGossipMenuFor(), and StoreEssence().

Referenced by OnGossipHello().

◆ RemoveEssence()

void npc_oculus_drakegiver::RemoveEssence ( Player player,
uint32  itemId 
)
inline
248 {
249 player->DestroyItemCount(itemId, 1, true);
250 }
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition: PlayerStorage.cpp:3143

References Player::DestroyItemCount().

Referenced by OnGossipSelect().

◆ StoreEssence()

void npc_oculus_drakegiver::StoreEssence ( Player player,
uint32  itemId 
)
inline
235 {
236 ItemPosCountVec dest;
237 uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1);
238 if (msg == EQUIP_ERR_OK)
239 {
240 if (Item* item = player->StoreNewItem(dest, itemId, true))
241 {
242 player->SendNewItem(item, 1, true, true);
243 }
244 }
245 }
std::uint8_t uint8
Definition: Define.h:110
@ EQUIP_ERR_OK
Definition: Item.h:41
std::vector< ItemPosCount > ItemPosCountVec
Definition: Player.h:772
@ NULL_BAG
Definition: Unit.h:210
@ NULL_SLOT
Definition: Unit.h:211
Definition: Item.h:214
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition: PlayerStorage.cpp:4770
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0)
Definition: PlayerStorage.cpp:2546
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition: Player.h:1260

References Player::CanStoreNewItem(), EQUIP_ERR_OK, NULL_BAG, NULL_SLOT, Player::SendNewItem(), and Player::StoreNewItem().

Referenced by OnGossipSelect().

Member Data Documentation

◆ openedMenu

std::unordered_map<ObjectGuid, bool> npc_oculus_drakegiver::openedMenu

Referenced by OnGossipHello(), and OnGossipSelect().