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 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 void OnFfaPvpStateUpdate (Creature *, bool)
 
- Public Member Functions inherited from ScriptObject
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
uint16 GetTotalAvailableHooks ()
 
- Public Member Functions inherited from UpdatableScript< Creature >
virtual void OnUpdate (Creature *, uint32)
 

Additional Inherited Members

- Protected Member Functions inherited from CreatureScript
 CreatureScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name, uint16 totalAvailableHooks=0)
 
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
77: CreatureScript("npc_oculus_drakegiver") { }
Definition CreatureScript.h:25

Member Function Documentation

◆ GetAI()

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

Reimplemented from CreatureScript.

80 {
81 return GetOculusAI<npc_oculus_drakegiverAI>(creature);
82 }

◆ OnGossipHello()

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

Reimplemented from CreatureScript.

167 {
168 if (creature->IsQuestGiver())
169 player->PrepareQuestMenu(creature->GetGUID());
170
171 if (creature->GetInstanceScript()->GetData(DATA_DRAKOS) == DONE)
172 {
173 switch (creature->GetEntry())
174 {
175 case NPC_VERDISA:
177 if (player->HasItemCount(ITEM_AMBER_ESSENCE))
178 {
180 }
181 else if (player->HasItemCount(ITEM_RUBY_ESSENCE))
182 {
184 }
185 else if (!player->HasItemCount(ITEM_EMERALD_ESSENCE))
186 {
188 }
191 break;
194 SendGossipMenuFor(player, GOSSIP_TEXTID_DRAKES, creature->GetGUID());
195 break;
196 case NPC_ETERNOS:
199 {
201 }
202 else if (player->HasItemCount(ITEM_RUBY_ESSENCE))
203 {
205 }
206 else if (!player->HasItemCount(ITEM_AMBER_ESSENCE))
207 {
209 }
212 break;
213 }
214 }
215
216 return true;
217 }
@ DONE
Definition InstanceScript.h:61
void AddGossipItemFor(Player *player, uint32 icon, std::string const &text, uint32 sender, uint32 action)
Definition ScriptedGossip.cpp:28
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
Definition ScriptedGossip.cpp:45
@ GOSSIP_SENDER_MAIN
Definition ScriptedGossip.h:70
@ GOSSIP_ACTION_INFO_DEF
Definition ScriptedGossip.h:68
uint32 GetEntry() const
Definition Object.h:116
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
Definition PlayerStorage.cpp:656
void PrepareQuestMenu(ObjectGuid guid)
Definition PlayerQuest.cpp:39
bool IsQuestGiver() const
Definition Unit.h:788
InstanceScript * GetInstanceScript() const
Definition Object.cpp:1221
virtual uint32 GetData(uint32) const
Definition ZoneScript.h:51
@ GOSSIP_TEXTID_DRAKES
Definition oculus.cpp:61
@ GOSSIP_TEXTID_VERDISA1
Definition oculus.cpp:64
@ GOSSIP_TEXTID_ETERNOS1
Definition oculus.cpp:67
@ NPC_ETERNOS
Definition oculus.h:57
@ NPC_VERDISA
Definition oculus.h:55
@ NPC_BELGARISTRASZ
Definition oculus.h:56
@ ITEM_RUBY_ESSENCE
Definition oculus.h:77
@ ITEM_EMERALD_ESSENCE
Definition oculus.h:75
@ ITEM_AMBER_ESSENCE
Definition oculus.h:76
@ DATA_DRAKOS
Definition oculus.h:34

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, Player::HasItemCount(), Unit::IsQuestGiver(), ITEM_AMBER_ESSENCE, ITEM_EMERALD_ESSENCE, ITEM_RUBY_ESSENCE, NPC_BELGARISTRASZ, NPC_ETERNOS, NPC_VERDISA, Player::PrepareQuestMenu(), and SendGossipMenuFor().

◆ OnGossipSelect()

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

Reimplemented from CreatureScript.

238 {
239 ClearGossipMenuFor(player);
240 switch (creature->GetEntry())
241 {
242 case NPC_VERDISA:
243 switch (uiAction)
244 {
247 return true;
248 case GOSSIP_ACTION_INFO_DEF + 4:
250 return true;
251 case GOSSIP_ACTION_INFO_DEF + 1:
253 break;
254 case GOSSIP_ACTION_INFO_DEF + 2:
256 break;
257 }
259 CloseGossipMenuFor(player);
260 break;
262 switch (uiAction)
263 {
265 if (player->HasItemCount(ITEM_AMBER_ESSENCE))
266 {
268 }
269 else if (player->HasItemCount(ITEM_EMERALD_ESSENCE))
270 {
272 }
273 else if (!player->HasItemCount(ITEM_RUBY_ESSENCE))
274 {
276 }
279 return true;
280 case GOSSIP_ACTION_INFO_DEF + 4:
282 return true;
283 case GOSSIP_ACTION_INFO_DEF + 1:
285 break;
286 case GOSSIP_ACTION_INFO_DEF + 2:
288 break;
289 }
291 CloseGossipMenuFor(player);
292 break;
293 case NPC_ETERNOS:
294 switch (uiAction)
295 {
298 return true;
299 case GOSSIP_ACTION_INFO_DEF + 4:
301 return true;
302 case GOSSIP_ACTION_INFO_DEF + 1:
304 break;
305 case GOSSIP_ACTION_INFO_DEF + 2:
307 break;
308 }
310 CloseGossipMenuFor(player);
311 break;
312 }
313
314 return true;
315 }
void ClearGossipMenuFor(Player *player)
Definition ScriptedGossip.cpp:22
void CloseGossipMenuFor(Player *player)
Definition ScriptedGossip.cpp:56
void RemoveEssence(Player *player, uint32 itemId)
Definition oculus.cpp:232
void StoreEssence(Player *player, uint32 itemId)
Definition oculus.cpp:219
@ GOSSIP_TEXTID_BELGARISTRASZ2
Definition oculus.cpp:63
@ GOSSIP_TEXTID_VERDISA2
Definition oculus.cpp:65
@ GOSSIP_TEXTID_BELGARISTRASZ1
Definition oculus.cpp:62
@ GOSSIP_TEXTID_ETERNOS2
Definition oculus.cpp:68
@ GOSSIP_TEXTID_ETERNOS3
Definition oculus.cpp:69
@ GOSSIP_TEXTID_VERDISA3
Definition oculus.cpp:66

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, RemoveEssence(), SendGossipMenuFor(), and StoreEssence().

◆ RemoveEssence()

void npc_oculus_drakegiver::RemoveEssence ( Player player,
uint32  itemId 
)
inline
233 {
234 player->DestroyItemCount(itemId, 1, true);
235 }
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition PlayerStorage.cpp:3120

References Player::DestroyItemCount().

Referenced by OnGossipSelect().

◆ StoreEssence()

void npc_oculus_drakegiver::StoreEssence ( Player player,
uint32  itemId 
)
inline
220 {
221 ItemPosCountVec dest;
222 uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1);
223 if (msg == EQUIP_ERR_OK)
224 {
225 if (Item* item = player->StoreNewItem(dest, itemId, true))
226 {
227 player->SendNewItem(item, 1, true, true);
228 }
229 }
230 }
std::uint8_t uint8
Definition Define.h:109
@ EQUIP_ERR_OK
Definition Item.h:47
@ NULL_BAG
Definition Item.h:40
@ NULL_SLOT
Definition Item.h:41
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:766
Definition Item.h:220
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition PlayerStorage.cpp:4756
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0)
Definition PlayerStorage.cpp:2530
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.h:1280

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

Referenced by OnGossipSelect().


The documentation for this class was generated from the following file: