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
78: CreatureScript("npc_oculus_drakegiver") { }
Definition CreatureScript.h:25

Member Function Documentation

◆ GetAI()

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

Reimplemented from CreatureScript.

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

◆ OnGossipHello()

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

Reimplemented from CreatureScript.

168 {
169 if (creature->IsQuestGiver())
170 player->PrepareQuestMenu(creature->GetGUID());
171
172 if (creature->GetInstanceScript()->GetData(DATA_DRAKOS) == DONE)
173 {
174 switch (creature->GetEntry())
175 {
176 case NPC_VERDISA:
178 if (player->HasItemCount(ITEM_AMBER_ESSENCE))
179 {
181 }
182 else if (player->HasItemCount(ITEM_RUBY_ESSENCE))
183 {
185 }
186 else if (!player->HasItemCount(ITEM_EMERALD_ESSENCE))
187 {
189 }
192 break;
195 SendGossipMenuFor(player, GOSSIP_TEXTID_DRAKES, creature->GetGUID());
196 break;
197 case NPC_ETERNOS:
200 {
202 }
203 else if (player->HasItemCount(ITEM_RUBY_ESSENCE))
204 {
206 }
207 else if (!player->HasItemCount(ITEM_AMBER_ESSENCE))
208 {
210 }
213 break;
214 }
215 }
216
217 return true;
218 }
@ DONE
Definition InstanceScript.h:61
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
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:655
void PrepareQuestMenu(ObjectGuid guid)
Definition PlayerQuest.cpp:39
bool IsQuestGiver() const
Definition Unit.h:757
InstanceScript * GetInstanceScript() const
Definition Object.cpp:1197
virtual uint32 GetData(uint32) const
Definition ZoneScript.h:51
@ GOSSIP_TEXTID_DRAKES
Definition oculus.cpp:62
@ GOSSIP_TEXTID_VERDISA1
Definition oculus.cpp:65
@ GOSSIP_TEXTID_ETERNOS1
Definition oculus.cpp:68
@ 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.

239 {
240 ClearGossipMenuFor(player);
241 switch (creature->GetEntry())
242 {
243 case NPC_VERDISA:
244 switch (uiAction)
245 {
248 return true;
249 case GOSSIP_ACTION_INFO_DEF + 4:
251 return true;
252 case GOSSIP_ACTION_INFO_DEF + 1:
254 break;
255 case GOSSIP_ACTION_INFO_DEF + 2:
257 break;
258 }
260 CloseGossipMenuFor(player);
261 break;
263 switch (uiAction)
264 {
266 if (player->HasItemCount(ITEM_AMBER_ESSENCE))
267 {
269 }
270 else if (player->HasItemCount(ITEM_EMERALD_ESSENCE))
271 {
273 }
274 else if (!player->HasItemCount(ITEM_RUBY_ESSENCE))
275 {
277 }
280 return true;
281 case GOSSIP_ACTION_INFO_DEF + 4:
283 return true;
284 case GOSSIP_ACTION_INFO_DEF + 1:
286 break;
287 case GOSSIP_ACTION_INFO_DEF + 2:
289 break;
290 }
292 CloseGossipMenuFor(player);
293 break;
294 case NPC_ETERNOS:
295 switch (uiAction)
296 {
299 return true;
300 case GOSSIP_ACTION_INFO_DEF + 4:
302 return true;
303 case GOSSIP_ACTION_INFO_DEF + 1:
305 break;
306 case GOSSIP_ACTION_INFO_DEF + 2:
308 break;
309 }
311 CloseGossipMenuFor(player);
312 break;
313 }
314
315 return true;
316 }
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:233
void StoreEssence(Player *player, uint32 itemId)
Definition oculus.cpp:220
@ GOSSIP_TEXTID_BELGARISTRASZ2
Definition oculus.cpp:64
@ GOSSIP_TEXTID_VERDISA2
Definition oculus.cpp:66
@ GOSSIP_TEXTID_BELGARISTRASZ1
Definition oculus.cpp:63
@ GOSSIP_TEXTID_ETERNOS2
Definition oculus.cpp:69
@ GOSSIP_TEXTID_ETERNOS3
Definition oculus.cpp:70
@ GOSSIP_TEXTID_VERDISA3
Definition oculus.cpp:67

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
234 {
235 player->DestroyItemCount(itemId, 1, true);
236 }
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition PlayerStorage.cpp:3114

References Player::DestroyItemCount().

Referenced by OnGossipSelect().

◆ StoreEssence()

void npc_oculus_drakegiver::StoreEssence ( Player player,
uint32  itemId 
)
inline
221 {
222 ItemPosCountVec dest;
223 uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1);
224 if (msg == EQUIP_ERR_OK)
225 {
226 if (Item* item = player->StoreNewItem(dest, itemId, true))
227 {
228 player->SendNewItem(item, 1, true, true);
229 }
230 }
231 }
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:767
Definition Item.h:220
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition PlayerStorage.cpp:4750
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0)
Definition PlayerStorage.cpp:2524
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.h:1285

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: