[8449] Deprecate healing/damage item mods and merge internal data in to spell power.
[getmangos.git] / src / game / GossipDef.h
blobea31b4c156e31feb61a429eb084bdd3ef33fdc9b
1 /*
2 * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef MANGOSSERVER_GOSSIP_H
20 #define MANGOSSERVER_GOSSIP_H
22 #include "Common.h"
23 #include "QuestDef.h"
24 #include "NPCHandler.h"
26 class WorldSession;
28 #define GOSSIP_MAX_MENU_ITEMS 64 // client supported items unknown, but provided number must be enough
29 #define DEFAULT_GOSSIP_MESSAGE 0xffffff
31 //POI icons. Many more exist, list not complete.
32 enum Poi_Icon
34 ICON_POI_BLANK = 0, // Blank (not visible)
35 ICON_POI_GREY_AV_MINE = 1, // Grey mine lorry
36 ICON_POI_RED_AV_MINE = 2, // Red mine lorry
37 ICON_POI_BLUE_AV_MINE = 3, // Blue mine lorry
38 ICON_POI_BWTOMB = 4, // Blue and White Tomb Stone
39 ICON_POI_SMALL_HOUSE = 5, // Small house
40 ICON_POI_GREYTOWER = 6, // Grey Tower
41 ICON_POI_REDFLAG = 7, // Red Flag w/Yellow !
42 ICON_POI_TOMBSTONE = 8, // Normal tomb stone (brown)
43 ICON_POI_BWTOWER = 9, // Blue and White Tower
44 ICON_POI_REDTOWER = 10, // Red Tower
45 ICON_POI_BLUETOWER = 11, // Blue Tower
46 ICON_POI_RWTOWER = 12, // Red and White Tower
47 ICON_POI_REDTOMB = 13, // Red Tomb Stone
48 ICON_POI_RWTOMB = 14, // Red and White Tomb Stone
49 ICON_POI_BLUETOMB = 15, // Blue Tomb Stone
50 ICON_POI_16 = 16, // Grey ?
51 ICON_POI_17 = 17, // Blue/White ?
52 ICON_POI_18 = 18, // Blue ?
53 ICON_POI_19 = 19, // Red and White ?
54 ICON_POI_20 = 20, // Red ?
55 ICON_POI_GREYLOGS = 21, // Grey Wood Logs
56 ICON_POI_BWLOGS = 22, // Blue and White Wood Logs
57 ICON_POI_BLUELOGS = 23, // Blue Wood Logs
58 ICON_POI_RWLOGS = 24, // Red and White Wood Logs
59 ICON_POI_REDLOGS = 25, // Red Wood Logs
60 ICON_POI_26 = 26, // Grey ?
61 ICON_POI_27 = 27, // Blue and White ?
62 ICON_POI_28 = 28, // Blue ?
63 ICON_POI_29 = 29, // Red and White ?
64 ICON_POI_30 = 30, // Red ?
65 ICON_POI_GREYHOUSE = 31, // Grey House
66 ICON_POI_BWHOUSE = 32, // Blue and White House
67 ICON_POI_BLUEHOUSE = 33, // Blue House
68 ICON_POI_RWHOUSE = 34, // Red and White House
69 ICON_POI_REDHOUSE = 35, // Red House
70 ICON_POI_GREYHORSE = 36, // Grey Horse
71 ICON_POI_BWHORSE = 37, // Blue and White Horse
72 ICON_POI_BLUEHORSE = 38, // Blue Horse
73 ICON_POI_RWHORSE = 39, // Red and White Horse
74 ICON_POI_REDHORSE = 40 // Red Horse
77 struct GossipMenuItem
79 uint8 m_gIcon;
80 bool m_gCoded;
81 std::string m_gMessage;
82 uint32 m_gSender;
83 uint32 m_gAction;
84 std::string m_gBoxMessage;
85 uint32 m_gBoxMoney;
88 typedef std::vector<GossipMenuItem> GossipMenuItemList;
90 struct QuestMenuItem
92 uint32 m_qId;
93 uint8 m_qIcon;
96 typedef std::vector<QuestMenuItem> QuestMenuItemList;
98 class MANGOS_DLL_SPEC GossipMenu
100 public:
101 GossipMenu();
102 ~GossipMenu();
104 void AddMenuItem(uint8 Icon, const std::string& Message, bool Coded = false);
105 void AddMenuItem(uint8 Icon, const std::string& Message, uint32 dtSender, uint32 dtAction, const std::string& BoxMessage, uint32 BoxMoney, bool Coded = false);
107 // for using from scripts, don't must be inlined
108 void AddMenuItem(uint8 Icon, char const* Message, bool Coded = false);
109 void AddMenuItem(uint8 Icon, char const* Message, uint32 dtSender, uint32 dtAction, char const* BoxMessage, uint32 BoxMoney, bool Coded = false);
111 unsigned int MenuItemCount() const
113 return m_gItems.size();
116 bool Empty() const
118 return m_gItems.empty();
121 GossipMenuItem const& GetItem( unsigned int Id )
123 return m_gItems[ Id ];
126 uint32 MenuItemSender( unsigned int ItemId );
127 uint32 MenuItemAction( unsigned int ItemId );
128 bool MenuItemCoded( unsigned int ItemId );
130 void ClearMenu();
132 protected:
133 GossipMenuItemList m_gItems;
136 class QuestMenu
138 public:
139 QuestMenu();
140 ~QuestMenu();
142 void AddMenuItem( uint32 QuestId, uint8 Icon);
143 void ClearMenu();
145 uint8 MenuItemCount() const
147 return m_qItems.size();
150 bool Empty() const
152 return m_qItems.empty();
155 bool HasItem( uint32 questid );
157 QuestMenuItem const& GetItem( uint16 Id )
159 return m_qItems[ Id ];
162 protected:
163 QuestMenuItemList m_qItems;
166 class MANGOS_DLL_SPEC PlayerMenu
168 private:
169 GossipMenu mGossipMenu;
170 QuestMenu mQuestMenu;
171 WorldSession* pSession;
173 public:
174 PlayerMenu( WorldSession *Session );
175 ~PlayerMenu();
177 GossipMenu& GetGossipMenu() { return mGossipMenu; }
178 QuestMenu& GetQuestMenu() { return mQuestMenu; }
180 bool Empty() const { return mGossipMenu.Empty() && mQuestMenu.Empty(); }
182 void ClearMenus();
183 uint32 GossipOptionSender( unsigned int Selection );
184 uint32 GossipOptionAction( unsigned int Selection );
185 bool GossipOptionCoded( unsigned int Selection );
187 void SendGossipMenu( uint32 TitleTextId, uint64 npcGUID );
188 void CloseGossip();
189 void SendPointOfInterest( float X, float Y, uint32 Icon, uint32 Flags, uint32 Data, const char * locName );
190 void SendPointOfInterest( uint32 poi_id );
191 void SendTalking( uint32 textID );
192 void SendTalking( char const * title, char const * text );
194 /*********************************************************/
195 /*** QUEST SYSTEM ***/
196 /*********************************************************/
197 void SendQuestGiverStatus( uint8 questStatus, uint64 npcGUID );
199 void SendQuestGiverQuestList( QEmote eEmote, const std::string& Title, uint64 npcGUID );
201 void SendQuestQueryResponse ( Quest const *pQuest );
202 void SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID, bool ActivateAccept);
204 void SendQuestGiverOfferReward( Quest const* pQuest, uint64 npcGUID, bool EnbleNext );
205 void SendQuestGiverRequestItems( Quest const *pQuest, uint64 npcGUID, bool Completable, bool CloseOnCancel );
207 #endif