Otclient 1.0  14/8/2020
game.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2020 OTClient <https://github.com/edubart/otclient>
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  * THE SOFTWARE.
21  */
22 
23 #ifndef GAME_H
24 #define GAME_H
25 
26 #include <framework/core/timer.h>
27 #include "animatedtext.h"
28 #include "container.h"
29 #include "creature.h"
30 #include "declarations.h"
31 #include "effect.h"
32 #include "item.h"
33 #include "localplayer.h"
34 #include "outfit.h"
35 #include "protocolgame.h"
36 
37 #include <bitset>
38 
40  bool operator==(const UnjustifiedPoints& other)
41  {
42  return killsDay == other.killsDay &&
44  killsWeek == other.killsWeek &&
46  killsMonth == other.killsMonth &&
48  skullTime == other.skullTime;
49  }
57 };
58 
59 typedef std::tuple<std::string, uint, std::string, int, bool> Vip;
60 
61 //@bindsingleton g_game
62 class Game
63 {
64 public:
65  Game();
66 
67  void init();
68  void terminate();
69 
70 private:
71  void resetGameStates();
72 
73 protected:
74  void processConnectionError(const boost::system::error_code& ec);
75  void processDisconnect();
76  void processPing();
77  void processPingBack();
78 
79  static void processUpdateNeeded(const std::string& signature);
80  static void processLoginError(const std::string& error);
81  static void processLoginAdvice(const std::string& message);
82  static void processLoginWait(const std::string& message, int time);
83  static void processLoginToken(bool unknown);
84  static void processLogin();
85  void processPendingGame();
86  void processEnterGame();
87 
88  void processGameStart();
89  void processGameEnd();
90  void processDeath(int deathType, int penality);
91 
92  void processGMActions(const std::vector<uint8>& actions);
93  void processInventoryChange(int slot, const ItemPtr& item);
94  void processAttackCancel(uint seq);
95  void processWalkCancel(Otc::Direction direction);
96 
97  static void processPlayerHelpers(int helpers);
98  void processPlayerModes(Otc::FightModes fightMode, Otc::ChaseModes chaseMode, bool safeMode, Otc::PVPModes pvpMode);
99 
100  // message related
101  static void processTextMessage(Otc::MessageMode mode, const std::string& text);
102  static void processTalk(const std::string& name, int level, Otc::MessageMode mode, const std::string& text, int channelId, const Position& pos);
103 
104  // container related
105  void processOpenContainer(int containerId, const ItemPtr& containerItem, const std::string& name, int capacity, bool hasParent, const std::vector<ItemPtr>& items, bool isUnlocked, bool hasPages, int containerSize, int firstIndex);
106  void processCloseContainer(int containerId);
107  void processContainerAddItem(int containerId, const ItemPtr& item, int slot);
108  void processContainerUpdateItem(int containerId, int slot, const ItemPtr& item);
109  void processContainerRemoveItem(int containerId, int slot, const ItemPtr& lastItem);
110 
111  // channel related
112  static void processChannelList(const std::vector<std::tuple<int, std::string> >& channelList);
113  static void processOpenChannel(int channelId, const std::string& name);
114  static void processOpenPrivateChannel(const std::string& name);
115  static void processOpenOwnPrivateChannel(int channelId, const std::string& name);
116  static void processCloseChannel(int channelId);
117 
118  // rule violations
119  static void processRuleViolationChannel(int channelId);
120  static void processRuleViolationRemove(const std::string& name);
121  static void processRuleViolationCancel(const std::string& name);
122  static void processRuleViolationLock();
123 
124  // vip related
125  void processVipAdd(uint id, const std::string& name, uint status, const std::string& description, int iconId, bool notifyLogin);
126  void processVipStateChange(uint id, uint status);
127 
128  // tutorial hint
129  static void processTutorialHint(int id);
130  static void processAddAutomapFlag(const Position& pos, int icon, const std::string& message);
131  static void processRemoveAutomapFlag(const Position& pos, int icon, const std::string& message);
132 
133  // outfit
134  void processOpenOutfitWindow(const Outfit& currentOutfit, const std::vector<std::tuple<int, std::string, int> >& outfitList,
135  const std::vector<std::tuple<int, std::string> >& mountList);
136 
137  // npc trade
138  static void processOpenNpcTrade(const std::vector<std::tuple<ItemPtr, std::string, int, int, int> >& items);
139  static void processPlayerGoods(int money, const std::vector<std::tuple<ItemPtr, int> >& goods);
140  static void processCloseNpcTrade();
141 
142  // player trade
143  static void processOwnTrade(const std::string& name, const std::vector<ItemPtr>& items);
144  static void processCounterTrade(const std::string& name, const std::vector<ItemPtr>& items);
145  static void processCloseTrade();
146 
147  // edit text/list
148  static void processEditText(uint id, int itemId, int maxLength, const std::string& text, const std::string& writer, const std::string& date);
149  static void processEditList(uint id, int doorId, const std::string& text);
150 
151  // questlog
152  static void processQuestLog(const std::vector<std::tuple<int, std::string, bool> >& questList);
153  static void processQuestLine(int questId, const std::vector<std::tuple<std::string, std::string> >& questMissions);
154 
155  // modal dialogs >= 970
156  static void processModalDialog(uint32 id, const std::string& title, const std::string& message, const std::vector<std::tuple<int, std::string> >
157  & buttonList, int enterButton, int escapeButton, const std::vector<std::tuple<int, std::string> >
158  & choiceList, bool priority);
159 
160  friend class ProtocolGame;
161  friend class Map;
162 
163 public:
164  // login related
165  void loginWorld(const std::string& account, const std::string& password, const std::string& worldName, const std::string& worldHost, int worldPort, const std::string& characterName, const std::string& authenticatorToken, const std::string& sessionKey);
166  void cancelLogin();
167  void forceLogout();
168  void safeLogout();
169 
170  // walk related
171  bool walk(Otc::Direction direction);
172  void autoWalk(std::vector<Otc::Direction> dirs);
173  void forceWalk(Otc::Direction direction);
174  void turn(Otc::Direction direction);
175  void stop();
176 
177  // item related
178  void look(const ThingPtr& thing, bool isBattleList = false);
179  void move(const ThingPtr& thing, const Position& toPos, int count);
180  void moveToParentContainer(const ThingPtr& thing, int count);
181  void rotate(const ThingPtr& thing);
182  void use(const ThingPtr& thing);
183  void useWith(const ItemPtr& item, const ThingPtr& toThing);
184  void useInventoryItem(int itemId);
185  void useInventoryItemWith(int itemId, const ThingPtr& toThing);
186  ItemPtr findItemInContainers(uint itemId, int subType);
187 
188  // container related
189  int open(const ItemPtr& item, const ContainerPtr& previousContainer);
190  void openParent(const ContainerPtr& container);
191  void close(const ContainerPtr& container);
192  void refreshContainer(const ContainerPtr& container);
193 
194  // attack/follow related
195  void attack(CreaturePtr creature);
196  void cancelAttack() { attack(nullptr); }
197  void follow(CreaturePtr creature);
198  void cancelFollow() { follow(nullptr); }
199  void cancelAttackAndFollow();
200 
201  // talk related
202  void talk(const std::string& message);
203  void talkChannel(Otc::MessageMode mode, int channelId, const std::string& message);
204  void talkPrivate(Otc::MessageMode mode, const std::string& receiver, const std::string& message);
205 
206  // channel related
207  void openPrivateChannel(const std::string& receiver);
208  void requestChannels();
209  void joinChannel(int channelId);
210  void leaveChannel(int channelId);
211  void closeNpcChannel();
212  void openOwnChannel();
213  void inviteToOwnChannel(const std::string& name);
214  void excludeFromOwnChannel(const std::string& name);
215 
216  // party related
217  void partyInvite(int creatureId);
218  void partyJoin(int creatureId);
219  void partyRevokeInvitation(int creatureId);
220  void partyPassLeadership(int creatureId);
221  void partyLeave();
222  void partyShareExperience(bool active);
223 
224  // outfit related
225  void requestOutfit();
226  void changeOutfit(const Outfit& outfit);
227 
228  // vip related
229  void addVip(const std::string& name);
230  void removeVip(int playerId);
231  void editVip(int playerId, const std::string& description, int iconId, bool notifyLogin);
232 
233  // fight modes related
234  void setChaseMode(Otc::ChaseModes chaseMode);
235  void setFightMode(Otc::FightModes fightMode);
236  void setSafeFight(bool on);
237  void setPVPMode(Otc::PVPModes pvpMode);
238  Otc::ChaseModes getChaseMode() { return m_chaseMode; }
239  Otc::FightModes getFightMode() { return m_fightMode; }
240  bool isSafeFight() { return m_safeFight; }
241  Otc::PVPModes getPVPMode() { return m_pvpMode; }
242 
243  // pvp related
244  void setUnjustifiedPoints(UnjustifiedPoints unjustifiedPoints);
245  UnjustifiedPoints getUnjustifiedPoints() { return m_unjustifiedPoints; };
246  void setOpenPvpSituations(int openPvpSituations);
247  int getOpenPvpSituations() { return m_openPvpSituations; }
248 
249  // npc trade related
250  void inspectNpcTrade(const ItemPtr& item);
251  void buyItem(const ItemPtr& item, int amount, bool ignoreCapacity, bool buyWithBackpack);
252  void sellItem(const ItemPtr& item, int amount, bool ignoreEquipped);
253  void closeNpcTrade();
254 
255  // player trade related
256  void requestTrade(const ItemPtr& item, const CreaturePtr& creature);
257  void inspectTrade(bool counterOffer, int index);
258  void acceptTrade();
259  void rejectTrade();
260 
261  // house window and editable items related
262  void editText(uint id, const std::string& text);
263  void editList(uint id, int doorId, const std::string& text);
264 
265  // rule violations (only gms)
266  void openRuleViolation(const std::string& reporter);
267  void closeRuleViolation(const std::string& reporter);
268  void cancelRuleViolation();
269 
270  // reports
271  void reportBug(const std::string& comment);
272  void reportRuleViolation(const std::string& target, int reason, int action, const std::string& comment, const std::string& statement, int statementId, bool ipBanishment);
273  void debugReport(const std::string& a, const std::string& b, const std::string& c, const std::string& d);
274 
275  // questlog related
276  void requestQuestLog();
277  void requestQuestLine(int questId);
278 
279  // 870 only
280  void equipItem(const ItemPtr& item);
281  void mount(bool mount);
282 
283  // 910 only
284  void requestItemInfo(const ItemPtr& item, int index);
285 
286  // >= 970 modal dialog
287  void answerModalDialog(uint32 dialog, int button, int choice);
288 
289  // >= 984 browse field
290  void browseField(const Position& position);
291  void seekInContainer(int cid, int index);
292 
293  // >= 1080 ingame store
294  void buyStoreOffer(int offerId, int productType, const std::string& name = "");
295  void requestTransactionHistory(int page, int entriesPerPage);
296  void requestStoreOffers(const std::string& categoryName, int serviceType = 0);
297  void openStore(int serviceType = 0, const std::string& category = "");
298  void transferCoins(const std::string& recipient, int amount);
299  void openTransactionHistory(int entriesPerPage);
300 
301  //void reportRuleViolation2();
302  void ping();
303  void setPingDelay(int delay) { m_pingDelay = delay; }
304 
305  // otclient only
306  void changeMapAwareRange(int xrange, int yrange);
307 
308  // dynamic support for game features
309  void enableFeature(Otc::GameFeature feature) { m_features.set(feature, true); }
310  void disableFeature(Otc::GameFeature feature) { m_features.set(feature, false); }
311  void setFeature(Otc::GameFeature feature, bool enabled) { m_features.set(feature, enabled); }
312  bool getFeature(Otc::GameFeature feature) { return m_features.test(feature); }
313 
314  void setProtocolVersion(int version);
315  int getProtocolVersion() { return m_protocolVersion; }
316 
317  void setClientVersion(int version);
318  int getClientVersion() { return m_clientVersion; }
319 
320  void setCustomOs(int os) { m_clientCustomOs = os; }
321  int getOs();
322 
323  bool canPerformGameAction();
324  bool checkBotProtection();
325 
326  bool isOnline() { return m_online; }
327  bool isLogging() { return !m_online && m_protocolGame; }
328  bool isDead() { return m_dead; }
329  bool isAttacking() { return !!m_attackingCreature && !m_attackingCreature->isRemoved(); }
330  bool isFollowing() { return !!m_followingCreature && !m_followingCreature->isRemoved(); }
331  bool isConnectionOk() { return m_protocolGame && m_protocolGame->getElapsedTicksSinceLastRead() < 5000; }
332 
333  int getPing() { return m_ping; }
334  ContainerPtr getContainer(int index) { return m_containers[index]; }
335  std::map<int, ContainerPtr> getContainers() { return m_containers; }
336  std::map<int, Vip> getVips() { return m_vips; }
337  CreaturePtr getAttackingCreature() { return m_attackingCreature; }
338  CreaturePtr getFollowingCreature() { return m_followingCreature; }
339  void setServerBeat(int beat) { m_serverBeat = beat; }
340  int getServerBeat() { return m_serverBeat; }
341  void setCanReportBugs(bool enable) { m_canReportBugs = enable; }
342  bool canReportBugs() { return m_canReportBugs; }
343  void setExpertPvpMode(bool enable) { m_expertPvpMode = enable; }
344  bool getExpertPvpMode() { return m_expertPvpMode; }
345  LocalPlayerPtr getLocalPlayer() { return m_localPlayer; }
346  ProtocolGamePtr getProtocolGame() { return m_protocolGame; }
347  std::string getCharacterName() { return m_characterName; }
348  std::string getWorldName() { return m_worldName; }
349  std::vector<uint8> getGMActions() { return m_gmActions; }
350  bool isGM() { return !m_gmActions.empty(); }
351  Otc::Direction getLastWalkDir() { return m_lastWalkDir; }
352 
353  std::string formatCreatureName(const std::string& name);
354  int findEmptyContainerId();
355 
356 protected:
357  void enableBotCall() { m_denyBotCall = false; }
358  void disableBotCall() { m_denyBotCall = true; }
359 
360 private:
361  void setAttackingCreature(const CreaturePtr& creature);
362  void setFollowingCreature(const CreaturePtr& creature);
363 
364  LocalPlayerPtr m_localPlayer;
365  CreaturePtr m_attackingCreature;
366  CreaturePtr m_followingCreature;
367  ProtocolGamePtr m_protocolGame;
368  std::map<int, ContainerPtr> m_containers;
369  std::map<int, Vip> m_vips;
370 
371  bool m_online;
372  bool m_denyBotCall;
373  bool m_dead;
374  bool m_expertPvpMode;
375  int m_serverBeat;
376  ticks_t m_ping;
377  uint m_pingSent;
378  uint m_pingReceived;
379  stdext::timer m_pingTimer;
380  Timer m_dashTimer;
381  uint m_seq;
382  int m_pingDelay;
383  Otc::FightModes m_fightMode;
384  Otc::ChaseModes m_chaseMode;
385  Otc::PVPModes m_pvpMode;
386  Otc::Direction m_lastWalkDir;
387  UnjustifiedPoints m_unjustifiedPoints;
388  int m_openPvpSituations;
389  bool m_safeFight;
390  bool m_canReportBugs;
391  std::vector<uint8> m_gmActions;
392  std::string m_characterName;
393  std::string m_worldName;
394  std::bitset<Otc::LastGameFeature> m_features;
395  ScheduledEventPtr m_pingEvent;
396  ScheduledEventPtr m_walkEvent;
397  ScheduledEventPtr m_checkConnectionEvent;
398  bool m_connectionFailWarned;
399  int m_protocolVersion;
400  int m_clientVersion;
401  std::string m_clientSignature;
402  int m_clientCustomOs;
403 };
404 
405 extern Game g_game;
406 
407 #endif
Game::openRuleViolation
void openRuleViolation(const std::string &reporter)
Definition: game.cpp:1296
Game::findEmptyContainerId
int findEmptyContainerId()
Definition: game.cpp:1718
Game::setCanReportBugs
void setCanReportBugs(bool enable)
Definition: game.h:341
Game::editList
void editList(uint id, int doorId, const std::string &text)
Definition: game.cpp:1289
Game::look
void look(const ThingPtr &thing, bool isBattleList=false)
Definition: game.cpp:775
Game::loginWorld
void loginWorld(const std::string &account, const std::string &password, const std::string &worldName, const std::string &worldHost, int worldPort, const std::string &characterName, const std::string &authenticatorToken, const std::string &sessionKey)
Definition: game.cpp:533
Game::cancelRuleViolation
void cancelRuleViolation()
Definition: game.cpp:1310
Game::getGMActions
std::vector< uint8 > getGMActions()
Definition: game.h:349
stdext::timer
Definition: time.h:36
Game::close
void close(const ContainerPtr &container)
Definition: game.cpp:904
Game::processQuestLine
static void processQuestLine(int questId, const std::vector< std::tuple< std::string, std::string > > &questMissions)
Definition: game.cpp:510
Game::rejectTrade
void rejectTrade()
Definition: game.cpp:1275
Game::getPing
int getPing()
Definition: game.h:333
Game::processWalkCancel
void processWalkCancel(Otc::Direction direction)
Definition: game.cpp:528
Game::safeLogout
void safeLogout()
Definition: game.cpp:571
Game::leaveChannel
void leaveChannel(int channelId)
Definition: game.cpp:1028
Game::getFollowingCreature
CreaturePtr getFollowingCreature()
Definition: game.h:338
Game::processOpenChannel
static void processOpenChannel(int channelId, const std::string &name)
Definition: game.cpp:367
Game::mount
void mount(bool mount)
Definition: game.cpp:1357
Game::processTextMessage
static void processTextMessage(Otc::MessageMode mode, const std::string &text)
Definition: game.cpp:287
Game::browseField
void browseField(const Position &position)
Definition: game.cpp:1378
Game::processOpenOutfitWindow
void processOpenOutfitWindow(const Outfit &currentOutfit, const std::vector< std::tuple< int, std::string, int > > &outfitList, const std::vector< std::tuple< int, std::string > > &mountList)
Definition: game.cpp:434
Game::processPing
void processPing()
Definition: game.cpp:263
Game::closeRuleViolation
void closeRuleViolation(const std::string &reporter)
Definition: game.cpp:1303
UnjustifiedPoints::operator==
bool operator==(const UnjustifiedPoints &other)
Definition: game.h:40
Game::processLogin
static void processLogin()
Definition: game.cpp:164
Game::inspectNpcTrade
void inspectNpcTrade(const ItemPtr &item)
Definition: game.cpp:1226
Game::processDeath
void processDeath(int deathType, int penality)
Definition: game.cpp:231
Game::isAttacking
bool isAttacking()
Definition: game.h:329
Game::processEditList
static void processEditList(uint id, int doorId, const std::string &text)
Definition: game.cpp:500
Otc::ChaseModes
ChaseModes
Definition: const.h:233
UnjustifiedPoints::killsDayRemaining
uint8 killsDayRemaining
Definition: game.h:51
Game::setPingDelay
void setPingDelay(int delay)
Definition: game.h:303
Game::processQuestLog
static void processQuestLog(const std::vector< std::tuple< int, std::string, bool > > &questList)
Definition: game.cpp:505
Game::inviteToOwnChannel
void inviteToOwnChannel(const std::string &name)
Definition: game.cpp:1049
Game::processDisconnect
void processDisconnect()
Definition: game.cpp:128
UnjustifiedPoints::killsDay
uint8 killsDay
Definition: game.h:50
ProtocolGame
Definition: protocolgame.h:31
Game::setClientVersion
void setClientVersion(int version)
Definition: game.cpp:1500
Game::processRuleViolationChannel
static void processRuleViolationChannel(int channelId)
Definition: game.cpp:387
Game::setProtocolVersion
void setProtocolVersion(int version)
Definition: game.cpp:1482
Game::isFollowing
bool isFollowing()
Definition: game.h:330
Game::requestItemInfo
void requestItemInfo(const ItemPtr &item, int index)
Definition: game.cpp:1364
Game::move
void move(const ThingPtr &thing, const Position &toPos, int count)
Definition: game.cpp:786
uint32
uint32_t uint32
Definition: types.h:35
Game::stop
void stop()
Definition: game.cpp:764
Game::setFeature
void setFeature(Otc::GameFeature feature, bool enabled)
Definition: game.h:311
Game::getContainers
std::map< int, ContainerPtr > getContainers()
Definition: game.h:335
Game::processInventoryChange
void processInventoryChange(int slot, const ItemPtr &item)
Definition: game.cpp:354
Game::processTutorialHint
static void processTutorialHint(int id)
Definition: game.cpp:419
UnjustifiedPoints::killsWeek
uint8 killsWeek
Definition: game.h:52
Game::processPlayerGoods
static void processPlayerGoods(int money, const std::vector< std::tuple< ItemPtr, int > > &goods)
Definition: game.cpp:470
Game::cancelFollow
void cancelFollow()
Definition: game.h:198
Game::processEditText
static void processEditText(uint id, int itemId, int maxLength, const std::string &text, const std::string &writer, const std::string &date)
Definition: game.cpp:495
Game::openParent
void openParent(const ContainerPtr &container)
Definition: game.cpp:896
Game::forceLogout
void forceLogout()
Definition: game.cpp:562
Game::processGMActions
void processGMActions(const std::vector< uint8 > &actions)
Definition: game.cpp:239
Game::setPVPMode
void setPVPMode(Otc::PVPModes pvpMode)
Definition: game.cpp:1188
Game::processLoginToken
static void processLoginToken(bool unknown)
Definition: game.cpp:159
Game::openPrivateChannel
void openPrivateChannel(const std::string &receiver)
Definition: game.cpp:1007
Game::getClientVersion
int getClientVersion()
Definition: game.h:318
Game::processAddAutomapFlag
static void processAddAutomapFlag(const Position &pos, int icon, const std::string &message)
Definition: game.cpp:424
Game::setFightMode
void setFightMode(Otc::FightModes fightMode)
Definition: game.cpp:1166
ticks_t
int64 ticks_t
Definition: types.h:43
Game::turn
void turn(Otc::Direction direction)
Definition: game.cpp:741
Game::useInventoryItem
void useInventoryItem(int itemId)
Definition: game.cpp:834
Game::useWith
void useWith(const ItemPtr &item, const ThingPtr &toThing)
Definition: game.cpp:844
Game::requestOutfit
void requestOutfit()
Definition: game.cpp:1105
Game::setCustomOs
void setCustomOs(int os)
Definition: game.h:320
Game::processCloseTrade
static void processCloseTrade()
Definition: game.cpp:490
Game::processLoginAdvice
static void processLoginAdvice(const std::string &message)
Definition: game.cpp:149
Game::processOpenOwnPrivateChannel
static void processOpenOwnPrivateChannel(int channelId, const std::string &name)
Definition: game.cpp:377
Game::equipItem
void equipItem(const ItemPtr &item)
Definition: game.cpp:1350
Game::getVips
std::map< int, Vip > getVips()
Definition: game.h:336
Game::processLoginError
static void processLoginError(const std::string &error)
Definition: game.cpp:144
Game::cancelLogin
void cancelLogin()
Definition: game.cpp:553
Game::isConnectionOk
bool isConnectionOk()
Definition: game.h:331
Game::partyInvite
void partyInvite(int creatureId)
Definition: game.cpp:1063
Game::isLogging
bool isLogging()
Definition: game.h:327
Game::processCloseNpcTrade
static void processCloseNpcTrade()
Definition: game.cpp:475
stdext::time
ticks_t time()
Definition: time.cpp:33
Game::Game
Game()
Definition: game.cpp:39
Game::processPendingGame
void processPendingGame()
Definition: game.cpp:169
Game::findItemInContainers
ItemPtr findItemInContainers(uint itemId, int subType)
Definition: game.cpp:872
Game::processRemoveAutomapFlag
static void processRemoveAutomapFlag(const Position &pos, int icon, const std::string &message)
Definition: game.cpp:429
creature.h
Game::disableFeature
void disableFeature(Otc::GameFeature feature)
Definition: game.h:310
Game::enableBotCall
void enableBotCall()
Definition: game.h:357
Game::requestStoreOffers
void requestStoreOffers(const std::string &categoryName, int serviceType=0)
Definition: game.cpp:1406
Game::open
int open(const ItemPtr &item, const ContainerPtr &previousContainer)
Definition: game.cpp:886
Game::setServerBeat
void setServerBeat(int beat)
Definition: game.h:339
Game::partyShareExperience
void partyShareExperience(bool active)
Definition: game.cpp:1098
UnjustifiedPoints::skullTime
uint8 skullTime
Definition: game.h:56
Game::partyJoin
void partyJoin(int creatureId)
Definition: game.cpp:1070
Game::init
void init()
Definition: game.cpp:58
Game::requestTrade
void requestTrade(const ItemPtr &item, const CreaturePtr &creature)
Definition: game.cpp:1254
Game::getExpertPvpMode
bool getExpertPvpMode()
Definition: game.h:344
Game::getProtocolVersion
int getProtocolVersion()
Definition: game.h:315
Game::getAttackingCreature
CreaturePtr getAttackingCreature()
Definition: game.h:337
Game::requestQuestLine
void requestQuestLine(int questId)
Definition: game.cpp:1343
Game::processContainerRemoveItem
void processContainerRemoveItem(int containerId, int slot, const ItemPtr &lastItem)
Definition: game.cpp:344
Otc::Direction
Direction
Definition: const.h:183
Game::processEnterGame
void processEnterGame()
Definition: game.cpp:176
Game::getServerBeat
int getServerBeat()
Definition: game.h:340
localplayer.h
Outfit
Definition: outfit.h:29
Game::buyItem
void buyItem(const ItemPtr &item, int amount, bool ignoreCapacity, bool buyWithBackpack)
Definition: game.cpp:1233
declarations.h
uint
unsigned int uint
Definition: types.h:31
Otc::MessageMode
MessageMode
Definition: const.h:308
Game::requestQuestLog
void requestQuestLog()
Definition: game.cpp:1336
Game::use
void use(const ThingPtr &thing)
Definition: game.cpp:820
timer.h
Game::isOnline
bool isOnline()
Definition: game.h:326
Game::answerModalDialog
void answerModalDialog(uint32 dialog, int button, int choice)
Definition: game.cpp:1371
Game::getCharacterName
std::string getCharacterName()
Definition: game.h:347
Game::canReportBugs
bool canReportBugs()
Definition: game.h:342
Game::setUnjustifiedPoints
void setUnjustifiedPoints(UnjustifiedPoints unjustifiedPoints)
Definition: game.cpp:1201
container.h
Game::closeNpcChannel
void closeNpcChannel()
Definition: game.cpp:1035
Game::processOpenContainer
void processOpenContainer(int containerId, const ItemPtr &containerItem, const std::string &name, int capacity, bool hasParent, const std::vector< ItemPtr > &items, bool isUnlocked, bool hasPages, int containerSize, int firstIndex)
Definition: game.cpp:297
Game::setChaseMode
void setChaseMode(Otc::ChaseModes chaseMode)
Definition: game.cpp:1155
Position
Definition: position.h:33
Game::inspectTrade
void inspectTrade(bool counterOffer, int index)
Definition: game.cpp:1261
Game::follow
void follow(CreaturePtr creature)
Definition: game.cpp:945
UnjustifiedPoints::killsMonthRemaining
uint8 killsMonthRemaining
Definition: game.h:55
Game::acceptTrade
void acceptTrade()
Definition: game.cpp:1268
Game::talkPrivate
void talkPrivate(Otc::MessageMode mode, const std::string &receiver, const std::string &message)
Definition: game.cpp:1000
UnjustifiedPoints::killsWeekRemaining
uint8 killsWeekRemaining
Definition: game.h:53
Game::processCloseContainer
void processCloseContainer(int containerId)
Definition: game.cpp:313
Game::forceWalk
void forceWalk(Otc::Direction direction)
Definition: game.cpp:704
Game::processModalDialog
static void processModalDialog(uint32 id, const std::string &title, const std::string &message, const std::vector< std::tuple< int, std::string > > &buttonList, int enterButton, int escapeButton, const std::vector< std::tuple< int, std::string > > &choiceList, bool priority)
Definition: game.cpp:515
Game::getFeature
bool getFeature(Otc::GameFeature feature)
Definition: game.h:312
Protocol::getElapsedTicksSinceLastRead
ticks_t getElapsedTicksSinceLastRead()
Definition: protocol.h:45
Otc::GameFeature
GameFeature
Definition: const.h:367
Game::talkChannel
void talkChannel(Otc::MessageMode mode, int channelId, const std::string &message)
Definition: game.cpp:993
Otc::PVPModes
PVPModes
Definition: const.h:238
Game::openOwnChannel
void openOwnChannel()
Definition: game.cpp:1042
Game::processConnectionError
void processConnectionError(const boost::system::error_code &ec)
Definition: game.cpp:116
Game::openStore
void openStore(int serviceType=0, const std::string &category="")
Definition: game.cpp:1413
Game::getLastWalkDir
Otc::Direction getLastWalkDir()
Definition: game.h:351
Game::editVip
void editVip(int playerId, const std::string &description, int iconId, bool notifyLogin)
Definition: game.cpp:1138
Game::processRuleViolationLock
static void processRuleViolationLock()
Definition: game.cpp:402
Game::processContainerAddItem
void processContainerAddItem(int containerId, const ItemPtr &item, int slot)
Definition: game.cpp:324
Game::sellItem
void sellItem(const ItemPtr &item, int amount, bool ignoreEquipped)
Definition: game.cpp:1240
outfit.h
Game::excludeFromOwnChannel
void excludeFromOwnChannel(const std::string &name)
Definition: game.cpp:1056
Game::processVipAdd
void processVipAdd(uint id, const std::string &name, uint status, const std::string &description, int iconId, bool notifyLogin)
Definition: game.cpp:407
Game::closeNpcTrade
void closeNpcTrade()
Definition: game.cpp:1247
Game::getFightMode
Otc::FightModes getFightMode()
Definition: game.h:239
Game::processPingBack
void processPingBack()
Definition: game.cpp:271
g_game
Game g_game
Definition: game.cpp:37
Game::terminate
void terminate()
Definition: game.cpp:63
Game::refreshContainer
void refreshContainer(const ContainerPtr &container)
Definition: game.cpp:912
Game::enableFeature
void enableFeature(Otc::GameFeature feature)
Definition: game.h:309
Game::partyRevokeInvitation
void partyRevokeInvitation(int creatureId)
Definition: game.cpp:1077
Game::processOpenPrivateChannel
static void processOpenPrivateChannel(const std::string &name)
Definition: game.cpp:372
Game::talk
void talk(const std::string &message)
Definition: game.cpp:986
Game::processChannelList
static void processChannelList(const std::vector< std::tuple< int, std::string > > &channelList)
Definition: game.cpp:362
Game::isGM
bool isGM()
Definition: game.h:350
Game::setOpenPvpSituations
void setOpenPvpSituations(int openPvpSituations)
Definition: game.cpp:1214
Game::changeMapAwareRange
void changeMapAwareRange(int xrange, int yrange)
Definition: game.cpp:1449
Game::transferCoins
void transferCoins(const std::string &recipient, int amount)
Definition: game.cpp:1420
Game::processRuleViolationRemove
static void processRuleViolationRemove(const std::string &name)
Definition: game.cpp:392
effect.h
Game::isSafeFight
bool isSafeFight()
Definition: game.h:240
Game::partyLeave
void partyLeave()
Definition: game.cpp:1091
Game::formatCreatureName
std::string formatCreatureName(const std::string &name)
Definition: game.cpp:1699
Game::getPVPMode
Otc::PVPModes getPVPMode()
Definition: game.h:241
stdext::shared_object_ptr< Item >
Game::getUnjustifiedPoints
UnjustifiedPoints getUnjustifiedPoints()
Definition: game.h:245
Game::getProtocolGame
ProtocolGamePtr getProtocolGame()
Definition: game.h:346
Game::processContainerUpdateItem
void processContainerUpdateItem(int containerId, int slot, const ItemPtr &item)
Definition: game.cpp:334
Game::setSafeFight
void setSafeFight(bool on)
Definition: game.cpp:1177
Game::getLocalPlayer
LocalPlayerPtr getLocalPlayer()
Definition: game.h:345
Game::buyStoreOffer
void buyStoreOffer(int offerId, int productType, const std::string &name="")
Definition: game.cpp:1392
Game::processCounterTrade
static void processCounterTrade(const std::string &name, const std::vector< ItemPtr > &items)
Definition: game.cpp:485
Creature::isRemoved
bool isRemoved()
Definition: creature.h:126
Game::requestChannels
void requestChannels()
Definition: game.cpp:1014
Game::getOs
int getOs()
Definition: game.cpp:1726
Vip
std::tuple< std::string, uint, std::string, int, bool > Vip
Definition: game.h:59
Game::processVipStateChange
void processVipStateChange(uint id, uint status)
Definition: game.cpp:413
Game::processGameEnd
void processGameEnd()
Definition: game.cpp:211
Game::cancelAttack
void cancelAttack()
Definition: game.h:196
UnjustifiedPoints::killsMonth
uint8 killsMonth
Definition: game.h:54
Timer
Definition: timer.h:28
Game::openTransactionHistory
void openTransactionHistory(int entriesPerPage)
Definition: game.cpp:1427
Game::reportBug
void reportBug(const std::string &comment)
Definition: game.cpp:1317
Game::processRuleViolationCancel
static void processRuleViolationCancel(const std::string &name)
Definition: game.cpp:397
Game::changeOutfit
void changeOutfit(const Outfit &outfit)
Definition: game.cpp:1112
Game::disableBotCall
void disableBotCall()
Definition: game.h:358
Game::processGameStart
void processGameStart()
Definition: game.cpp:182
Game::removeVip
void removeVip(int playerId)
Definition: game.cpp:1126
Game::getChaseMode
Otc::ChaseModes getChaseMode()
Definition: game.h:238
Game::getContainer
ContainerPtr getContainer(int index)
Definition: game.h:334
protocolgame.h
Game::processTalk
static void processTalk(const std::string &name, int level, Otc::MessageMode mode, const std::string &text, int channelId, const Position &pos)
Definition: game.cpp:292
Game::getWorldName
std::string getWorldName()
Definition: game.h:348
Game::canPerformGameAction
bool canPerformGameAction()
Definition: game.cpp:1470
Game::processUpdateNeeded
static void processUpdateNeeded(const std::string &signature)
Definition: game.cpp:139
Game::cancelAttackAndFollow
void cancelAttackAndFollow()
Definition: game.cpp:969
Otc::FightModes
FightModes
Definition: const.h:227
Game::processAttackCancel
void processAttackCancel(uint seq)
Definition: game.cpp:522
Game::seekInContainer
void seekInContainer(int cid, int index)
Definition: game.cpp:1385
animatedtext.h
Game::joinChannel
void joinChannel(int channelId)
Definition: game.cpp:1021
Game::isDead
bool isDead()
Definition: game.h:328
UnjustifiedPoints
Definition: game.h:39
Game::requestTransactionHistory
void requestTransactionHistory(int page, int entriesPerPage)
Definition: game.cpp:1399
Game::rotate
void rotate(const ThingPtr &thing)
Definition: game.cpp:812
Game::editText
void editText(uint id, const std::string &text)
Definition: game.cpp:1282
Game::setExpertPvpMode
void setExpertPvpMode(bool enable)
Definition: game.h:343
Game::checkBotProtection
bool checkBotProtection()
Definition: game.cpp:1457
Game::processLoginWait
static void processLoginWait(const std::string &message, int time)
Definition: game.cpp:154
Game::moveToParentContainer
void moveToParentContainer(const ThingPtr &thing, int count)
Definition: game.cpp:803
Game::attack
void attack(CreaturePtr creature)
Definition: game.cpp:919
Game::reportRuleViolation
void reportRuleViolation(const std::string &target, int reason, int action, const std::string &comment, const std::string &statement, int statementId, bool ipBanishment)
Definition: game.cpp:1324
Game::processPlayerHelpers
static void processPlayerHelpers(int helpers)
Definition: game.cpp:245
Game::ping
void ping()
Definition: game.cpp:1434
Game::useInventoryItemWith
void useInventoryItemWith(int itemId, const ThingPtr &toThing)
Definition: game.cpp:859
Game::walk
bool walk(Otc::Direction direction)
Definition: game.cpp:579
Game::processOwnTrade
static void processOwnTrade(const std::string &name, const std::vector< ItemPtr > &items)
Definition: game.cpp:480
Game::debugReport
void debugReport(const std::string &a, const std::string &b, const std::string &c, const std::string &d)
Definition: game.cpp:1331
Game::autoWalk
void autoWalk(std::vector< Otc::Direction > dirs)
Definition: game.cpp:666
Game::processOpenNpcTrade
static void processOpenNpcTrade(const std::vector< std::tuple< ItemPtr, std::string, int, int, int > > &items)
Definition: game.cpp:465
uint8
uint8_t uint8
Definition: types.h:37
Game::addVip
void addVip(const std::string &name)
Definition: game.cpp:1119
Map
Definition: map.h:141
Game::processCloseChannel
static void processCloseChannel(int channelId)
Definition: game.cpp:382
Game::processPlayerModes
void processPlayerModes(Otc::FightModes fightMode, Otc::ChaseModes chaseMode, bool safeMode, Otc::PVPModes pvpMode)
Definition: game.cpp:250
Game::partyPassLeadership
void partyPassLeadership(int creatureId)
Definition: game.cpp:1084
Game::getOpenPvpSituations
int getOpenPvpSituations()
Definition: game.h:247
Game
Definition: game.h:62
item.h