Otclient  14/8/2020
map.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 MAP_H
24 #define MAP_H
25 
26 #include "creature.h"
27 #include "houses.h"
28 #include "towns.h"
29 #include "creatures.h"
30 #include "animatedtext.h"
31 #include "statictext.h"
32 #include "tile.h"
33 
34 #include <framework/core/clock.h>
35 
37 {
65 };
66 
68 {
73  OTBM_TILE = 5,
74  OTBM_ITEM = 6,
80  OTBM_TOWNS = 12,
81  OTBM_TOWN = 13,
85 };
86 
87 enum {
88  OTCM_SIGNATURE = 0x4D43544F,
90 };
91 
92 enum {
94 };
95 
96 enum : uint8 {
99 };
100 
101 class TileBlock {
102 public:
103  TileBlock() { m_tiles.fill(nullptr); }
104 
105  const TilePtr& create(const Position& pos) {
106  TilePtr& tile = m_tiles[getTileIndex(pos)];
107  tile = TilePtr(new Tile(pos));
108  return tile;
109  }
110  const TilePtr& getOrCreate(const Position& pos) {
111  TilePtr& tile = m_tiles[getTileIndex(pos)];
112  if(!tile)
113  tile = TilePtr(new Tile(pos));
114  return tile;
115  }
116  const TilePtr& get(const Position& pos) { return m_tiles[getTileIndex(pos)]; }
117  void remove(const Position& pos) { m_tiles[getTileIndex(pos)] = nullptr; }
118 
119  uint getTileIndex(const Position& pos) { return ((pos.y % BLOCK_SIZE) * BLOCK_SIZE) + (pos.x % BLOCK_SIZE); }
120 
121  const std::array<TilePtr, BLOCK_SIZE*BLOCK_SIZE>& getTiles() const { return m_tiles; }
122 
123 private:
124  std::array<TilePtr, BLOCK_SIZE*BLOCK_SIZE> m_tiles;
125 };
126 
128 {
129  int top;
130  int right;
131  int bottom;
132  int left;
133 
134  int horizontal() { return left + right + 1; }
135  int vertical() { return top + bottom + 1; }
136 };
137 
138 //@bindsingleton g_map
139 class Map
140 {
141 public:
142  void init();
143  void terminate();
144 
145  void addMapView(const MapViewPtr& mapView);
146  void removeMapView(const MapViewPtr& mapView);
147  void notificateTileUpdate(const Position& pos);
148 
149  bool loadOtcm(const std::string& fileName);
150  void saveOtcm(const std::string& fileName);
151 
152  void loadOtbm(const std::string& fileName);
153  void saveOtbm(const std::string& fileName);
154 
155  // otbm attributes (description, size, etc.)
156  void setHouseFile(const std::string& file) { m_attribs.set(OTBM_ATTR_HOUSE_FILE, file); }
157  void setSpawnFile(const std::string& file) { m_attribs.set(OTBM_ATTR_SPAWN_FILE, file); }
158  void setDescription(const std::string& desc) { m_attribs.set(OTBM_ATTR_DESCRIPTION, desc); }
159 
161  void setWidth(uint16 w) { m_attribs.set(OTBM_ATTR_WIDTH, w); }
162  void setHeight(uint16 h) { m_attribs.set(OTBM_ATTR_HEIGHT, h); }
163 
164  std::string getHouseFile() { return m_attribs.get<std::string>(OTBM_ATTR_HOUSE_FILE); }
165  std::string getSpawnFile() { return m_attribs.get<std::string>(OTBM_ATTR_SPAWN_FILE); }
166  Size getSize() { return Size(m_attribs.get<uint16>(OTBM_ATTR_WIDTH), m_attribs.get<uint16>(OTBM_ATTR_HEIGHT)); }
167  std::vector<std::string> getDescriptions() { return stdext::split(m_attribs.get<std::string>(OTBM_ATTR_DESCRIPTION), "\n"); }
168 
169  void clean();
170  void cleanDynamicThings();
171  void cleanTexts();
172 
173  // thing related
174  void addThing(const ThingPtr& thing, const Position& pos, int stackPos = -1);
175  ThingPtr getThing(const Position& pos, int stackPos);
176  bool removeThing(const ThingPtr& thing);
177  bool removeThingByPos(const Position& pos, int stackPos);
178  void colorizeThing(const ThingPtr& thing, const Color& color);
179  void removeThingColor(const ThingPtr& thing);
180 
182 
183  // tile related
184  const TilePtr& createTile(const Position& pos);
185  template <typename... Items>
186  const TilePtr& createTileEx(const Position& pos, const Items&... items);
187  const TilePtr& getOrCreateTile(const Position& pos);
188  const TilePtr& getTile(const Position& pos);
189  const TileList getTiles(int floor = -1);
190  void cleanTile(const Position& pos);
191 
192  // tile zone related
193  void setShowZone(tileflags_t zone, bool show);
194  void setShowZones(bool show);
195  void setZoneColor(tileflags_t zone, const Color& color);
196  void setZoneOpacity(float opacity) { m_zoneOpacity = opacity; }
197 
198  float getZoneOpacity() { return m_zoneOpacity; }
200  tileflags_t getZoneFlags() { return (tileflags_t)m_zoneFlags; }
201  bool showZones() { return m_zoneFlags != 0; }
202  bool showZone(tileflags_t zone) { return (m_zoneFlags & zone) == zone; }
203 
204  void setForceShowAnimations(bool force);
205  bool isForcingAnimations();
206  bool isShowingAnimations();
207  void setShowAnimations(bool show);
208 
209  void beginGhostMode(float opacity);
210  void endGhostMode();
211 
212  std::map<Position, ItemPtr> findItemsById(uint16 clientId, uint32 max);
213 
214  // known creature related
215  void addCreature(const CreaturePtr& creature);
217  void removeCreatureById(uint32 id);
218  std::vector<CreaturePtr> getSightSpectators(const Position& centerPos, bool multiFloor);
219  std::vector<CreaturePtr> getSpectators(const Position& centerPos, bool multiFloor);
220  std::vector<CreaturePtr> getSpectatorsInRange(const Position& centerPos, bool multiFloor, int xRange, int yRange);
221  std::vector<CreaturePtr> getSpectatorsInRangeEx(const Position& centerPos, bool multiFloor, int minXRange, int maxXRange, int minYRange, int maxYRange);
222 
223  void setLight(const Light& light) { m_light = light; }
224  void setCentralPosition(const Position& centralPosition);
225 
226  bool isLookPossible(const Position& pos);
227  bool isCovered(const Position& pos, int firstFloor = 0);
228  bool isCompletelyCovered(const Position& pos, int firstFloor = 0);
229  bool isAwareOfPosition(const Position& pos);
230 
231  void setAwareRange(const AwareRange& range);
232  void resetAwareRange();
233  AwareRange getAwareRange() { return m_awareRange; }
234 
235  Light getLight() { return m_light; }
236  Position getCentralPosition() { return m_centralPosition; }
237  int getFirstAwareFloor();
238  int getLastAwareFloor();
239  const std::vector<MissilePtr>& getFloorMissiles(int z) { return m_floorMissiles[z]; }
240 
241  std::vector<AnimatedTextPtr> getAnimatedTexts() { return m_animatedTexts; }
242  std::vector<StaticTextPtr> getStaticTexts() { return m_staticTexts; }
243 
244  std::tuple<std::vector<Otc::Direction>, Otc::PathFindResult> findPath(const Position& start, const Position& goal, int maxComplexity, int flags = 0);
245 
246 private:
247  void removeUnawareThings();
248  uint getBlockIndex(const Position& pos) { return ((pos.y / BLOCK_SIZE) * (65536 / BLOCK_SIZE)) + (pos.x / BLOCK_SIZE); }
249 
250  std::unordered_map<uint, TileBlock> m_tileBlocks[Otc::MAX_Z+1];
251  std::unordered_map<uint32, CreaturePtr> m_knownCreatures;
252  std::array<std::vector<MissilePtr>, Otc::MAX_Z+1> m_floorMissiles;
253  std::vector<AnimatedTextPtr> m_animatedTexts;
254  std::vector<StaticTextPtr> m_staticTexts;
255  std::vector<MapViewPtr> m_mapViews;
256  std::unordered_map<Position, std::string, PositionHasher> m_waypoints;
257 
258  uint8 m_animationFlags;
259  uint32 m_zoneFlags;
260  std::map<uint32, Color> m_zoneColors;
261  float m_zoneOpacity;
262 
263  Light m_light;
264  Position m_centralPosition;
265  Rect m_tilesRect;
266 
268  AwareRange m_awareRange;
269  static TilePtr m_nulltile;
270 };
271 
272 extern Map g_map;
273 
274 #endif
Map::createTileEx
const TilePtr & createTileEx(const Position &pos, const Items &... items)
Definition: map.cpp:282
OTBM_ATTR_TEXT
@ OTBM_ATTR_TEXT
Definition: map.h:43
OTBM_TILE_SQUARE
@ OTBM_TILE_SQUARE
Definition: map.h:75
OTBM_ATTR_TELE_DEST
@ OTBM_ATTR_TELE_DEST
Definition: map.h:45
Map::setAwareRange
void setAwareRange(const AwareRange &range)
Definition: map.cpp:683
stdext::packed_storage::get
T get(Key id) const
Definition: packed_storage.h:80
Map::init
void init()
Definition: map.cpp:39
OTBM_ATTR_ACTION_ID
@ OTBM_ATTR_ACTION_ID
Definition: map.h:41
OTBM_ATTR_CHARGES
@ OTBM_ATTR_CHARGES
Definition: map.h:59
OTBM_ATTR_WRITTENDATE
@ OTBM_ATTR_WRITTENDATE
Definition: map.h:55
Color
Definition: color.h:32
Animation_Force
@ Animation_Force
Definition: map.h:97
OTBM_ATTR_EXT_FILE
@ OTBM_ATTR_EXT_FILE
Definition: map.h:39
OTBM_ATTR_CONTAINER_ITEMS
@ OTBM_ATTR_CONTAINER_ITEMS
Definition: map.h:60
z
gc sort z
Definition: CMakeLists.txt:176
OTBM_ATTR_COUNT
@ OTBM_ATTR_COUNT
Definition: map.h:52
OTBM_ATTR_SPAWN_FILE
@ OTBM_ATTR_SPAWN_FILE
Definition: map.h:48
TRect< int >
OTBM_ATTR_HOUSEDOORID
@ OTBM_ATTR_HOUSEDOORID
Definition: map.h:51
Position::x
int x
Definition: position.h:243
OTBM_MAP_DATA
@ OTBM_MAP_DATA
Definition: map.h:70
OTBM_ROOTV2
@ OTBM_ROOTV2
Definition: map.h:69
TileBlock::remove
void remove(const Position &pos)
Definition: map.h:117
Map::cleanTexts
void cleanTexts()
Definition: map.cpp:101
Map::setDescription
void setDescription(const std::string &desc)
Definition: map.h:158
uint32
uint32_t uint32
Definition: types.h:35
OTBM_ATTR_ATTRIBUTE_MAP
@ OTBM_ATTR_ATTRIBUTE_MAP
Definition: map.h:61
Map::loadOtbm
void loadOtbm(const std::string &fileName)
Definition: mapio.cpp:35
Map::isShowingAnimations
bool isShowingAnimations()
Definition: map.cpp:418
Map::setHouseFile
void setHouseFile(const std::string &file)
Definition: map.h:156
Map::saveOtbm
void saveOtbm(const std::string &fileName)
Definition: mapio.cpp:231
Map::setShowZone
void setShowZone(tileflags_t zone, bool show)
Definition: map.cpp:374
Map::clean
void clean()
Definition: map.cpp:72
AwareRange::bottom
int bottom
Definition: map.h:131
Map::getStaticTexts
std::vector< StaticTextPtr > getStaticTexts()
Definition: map.h:242
Map::getThing
ThingPtr getThing(const Position &pos, int stackPos)
Definition: map.cpp:170
OTCM_VERSION
@ OTCM_VERSION
Definition: map.h:89
Map::loadOtcm
bool loadOtcm(const std::string &fileName)
Definition: mapio.cpp:397
Map::getHouseFile
std::string getHouseFile()
Definition: map.h:164
Map::cleanTile
void cleanTile(const Position &pos)
Definition: map.cpp:350
Map::isCompletelyCovered
bool isCompletelyCovered(const Position &pos, int firstFloor=0)
Definition: map.cpp:634
Map::getTile
const TilePtr & getTile(const Position &pos)
Definition: map.cpp:310
OTBM_ATTR_UNIQUE_ID
@ OTBM_ATTR_UNIQUE_ID
Definition: map.h:42
OTCM_SIGNATURE
@ OTCM_SIGNATURE
Definition: map.h:88
OTBM_TOWNS
@ OTBM_TOWNS
Definition: map.h:80
Map::endGhostMode
void endGhostMode()
Definition: map.cpp:437
OTBM_HOUSETILE
@ OTBM_HOUSETILE
Definition: map.h:82
Position::y
int y
Definition: position.h:244
OTBM_SPAWN_AREA
@ OTBM_SPAWN_AREA
Definition: map.h:78
Map::removeMapView
void removeMapView(const MapViewPtr &mapView)
Definition: map.cpp:55
TileBlock
Definition: map.h:101
Map::setLight
void setLight(const Light &light)
Definition: map.h:223
Map::addCreature
void addCreature(const CreaturePtr &creature)
Definition: map.cpp:466
OTBM_WAYPOINTS
@ OTBM_WAYPOINTS
Definition: map.h:83
Map::getFirstAwareFloor
int getFirstAwareFloor()
Definition: map.cpp:699
Map::resetAwareRange
void resetAwareRange()
Definition: map.cpp:689
OTBM_TOWN
@ OTBM_TOWN
Definition: map.h:81
OTBM_ATTR_DESC
@ OTBM_ATTR_DESC
Definition: map.h:44
OTBM_TILE_REF
@ OTBM_TILE_REF
Definition: map.h:76
OTBM_ATTR_TILE_FLAGS
@ OTBM_ATTR_TILE_FLAGS
Definition: map.h:40
Map::findPath
std::tuple< std::vector< Otc::Direction >, Otc::PathFindResult > findPath(const Position &start, const Position &goal, int maxComplexity, int flags=0)
Definition: map.cpp:715
creature.h
Map::getSightSpectators
std::vector< CreaturePtr > getSightSpectators(const Position &centerPos, bool multiFloor)
Definition: map.cpp:569
Map::addMapView
void addMapView(const MapViewPtr &mapView)
Definition: map.cpp:50
OTBM_ITEM_DEF
@ OTBM_ITEM_DEF
Definition: map.h:71
clock.h
Map::setZoneColor
void setZoneColor(tileflags_t zone, const Color &color)
Definition: map.cpp:390
Map::getAnimatedTexts
std::vector< AnimatedTextPtr > getAnimatedTexts()
Definition: map.h:241
uint16
uint16_t uint16
Definition: types.h:36
OTBM_SPAWNS
@ OTBM_SPAWNS
Definition: map.h:77
Map::removeThingColor
void removeThingColor(const ThingPtr &thing)
Definition: map.cpp:237
OTBM_WAYPOINT
@ OTBM_WAYPOINT
Definition: map.h:84
Animation_Show
@ Animation_Show
Definition: map.h:98
towns.h
Map::findItemsById
std::map< Position, ItemPtr > findItemsById(uint16 clientId, uint32 max)
Definition: map.cpp:442
uint
unsigned int uint
Definition: types.h:31
TileBlock::create
const TilePtr & create(const Position &pos)
Definition: map.h:105
Map::setShowAnimations
void setShowAnimations(bool show)
Definition: map.cpp:423
houses.h
TileBlock::getTiles
const std::array< TilePtr, BLOCK_SIZE *BLOCK_SIZE > & getTiles() const
Definition: map.h:121
OTBM_TILE_AREA
@ OTBM_TILE_AREA
Definition: map.h:72
OTBM_NodeTypes_t
OTBM_NodeTypes_t
Definition: map.h:67
Map::getTiles
const TileList getTiles(int floor=-1)
Definition: map.cpp:320
Map::addThing
void addThing(const ThingPtr &thing, const Position &pos, int stackPos=-1)
Definition: map.cpp:107
Position
Definition: position.h:33
Map::terminate
void terminate()
Definition: map.cpp:45
TileBlock::getOrCreate
const TilePtr & getOrCreate(const Position &pos)
Definition: map.h:110
OTBM_ATTR_HEIGHT
@ OTBM_ATTR_HEIGHT
Definition: map.h:64
Map::colorizeThing
void colorizeThing(const ThingPtr &thing, const Color &color)
Definition: map.cpp:219
Map::createTile
const TilePtr & createTile(const Position &pos)
Definition: map.cpp:265
Map::saveOtcm
void saveOtcm(const std::string &fileName)
Definition: mapio.cpp:474
stdext::packed_storage< uint8 >
Map::setZoneOpacity
void setZoneOpacity(float opacity)
Definition: map.h:196
OTBM_ATTR_DURATION
@ OTBM_ATTR_DURATION
Definition: map.h:53
Map::setWidth
void setWidth(uint16 w)
Definition: map.h:161
Map::getLight
Light getLight()
Definition: map.h:235
Size
TSize< int > Size
Definition: size.h:107
g_map
Map g_map
Definition: map.cpp:36
OTBM_ATTR_ITEM
@ OTBM_ATTR_ITEM
Definition: map.h:46
Map::removeCreatureById
void removeCreatureById(uint32 id)
Definition: map.cpp:479
AwareRange::vertical
int vertical()
Definition: map.h:135
Map::setHeight
void setHeight(uint16 h)
Definition: map.h:162
AwareRange::horizontal
int horizontal()
Definition: map.h:134
Otc::MAX_Z
@ MAX_Z
Definition: const.h:33
TileBlock::getTileIndex
uint getTileIndex(const Position &pos)
Definition: map.h:119
Map::isAwareOfPosition
bool isAwareOfPosition(const Position &pos)
Definition: map.cpp:659
OTBM_ATTR_SLEEPERGUID
@ OTBM_ATTR_SLEEPERGUID
Definition: map.h:57
Map::getOrCreateTile
const TilePtr & getOrCreateTile(const Position &pos)
Definition: map.cpp:294
Otc::PathFindResult
PathFindResult
Definition: const.h:424
Map::getStaticText
StaticTextPtr getStaticText(const Position &pos)
Definition: map.cpp:255
Map::getZoneColor
Color getZoneColor(tileflags_t flag)
Definition: map.cpp:396
AwareRange
Definition: map.h:127
OTBM_ATTR_WIDTH
@ OTBM_ATTR_WIDTH
just random numbers, they're not actually used by the binary reader...
Definition: map.h:63
stdext::split
std::vector< std::string > split(const std::string &str, const std::string &separators)
Definition: string.cpp:273
Map::getSize
Size getSize()
Definition: map.h:166
OTBM_ATTR_RUNE_CHARGES
@ OTBM_ATTR_RUNE_CHARGES
Definition: map.h:49
Map::notificateTileUpdate
void notificateTileUpdate(const Position &pos)
Definition: map.cpp:62
TileBlock::get
const TilePtr & get(const Position &pos)
Definition: map.h:116
TileList
std::list< TilePtr > TileList
Definition: declarations.h:86
OTBM_ATTR_WRITTENBY
@ OTBM_ATTR_WRITTENBY
Definition: map.h:56
Map::getSpectators
std::vector< CreaturePtr > getSpectators(const Position &centerPos, bool multiFloor)
Definition: map.cpp:574
Map::setSpawnFile
void setSpawnFile(const std::string &file)
Definition: map.h:157
Map::getFloorMissiles
const std::vector< MissilePtr > & getFloorMissiles(int z)
Definition: map.h:239
AwareRange::left
int left
Definition: map.h:132
Map::getSpawnFile
std::string getSpawnFile()
Definition: map.h:165
Map::showZones
bool showZones()
Definition: map.h:201
stdext::shared_object_ptr< Tile >
tileflags_t
tileflags_t
Definition: tile.h:33
OTBM_ATTR_DESCRIPTION
@ OTBM_ATTR_DESCRIPTION
Definition: map.h:38
Map::isForcingAnimations
bool isForcingAnimations()
Definition: map.cpp:413
OTBM_ITEM
@ OTBM_ITEM
Definition: map.h:74
Map::isLookPossible
bool isLookPossible(const Position &pos)
Definition: map.cpp:615
Tile
Definition: tile.h:56
OTBM_ATTR_HOUSE_FILE
@ OTBM_ATTR_HOUSE_FILE
Definition: map.h:50
Map::getSpectatorsInRangeEx
std::vector< CreaturePtr > getSpectatorsInRangeEx(const Position &centerPos, bool multiFloor, int minXRange, int maxXRange, int minYRange, int maxYRange)
Definition: map.cpp:584
Map::removeThingByPos
bool removeThingByPos(const Position &pos, int stackPos)
Definition: map.cpp:212
Map::getDescriptions
std::vector< std::string > getDescriptions()
Definition: map.h:167
OTBM_MONSTER
@ OTBM_MONSTER
Definition: map.h:79
Light
Definition: thingtype.h:117
OTBM_TILE
@ OTBM_TILE
Definition: map.h:73
Map::beginGhostMode
void beginGhostMode(float opacity)
Definition: map.cpp:432
Map::setShowZones
void setShowZones(bool show)
Definition: map.cpp:382
Map::getZoneOpacity
float getZoneOpacity()
Definition: map.h:198
TilePtr
stdext::shared_object_ptr< Tile > TilePtr
Definition: declarations.h:59
stdext::packed_storage::set
void set(Key id, const T &value)
Definition: packed_storage.h:47
Map::getZoneFlags
tileflags_t getZoneFlags()
Definition: map.h:200
Map::setCentralPosition
void setCentralPosition(const Position &centralPosition)
Definition: map.cpp:534
stdext::packed_storage::remove
bool remove(Key id)
Definition: packed_storage.h:63
statictext.h
creatures.h
TileBlock::TileBlock
TileBlock()
Definition: map.h:103
Map::getCreatureById
CreaturePtr getCreatureById(uint32 id)
Definition: map.cpp:471
tile.h
Map::getCentralPosition
Position getCentralPosition()
Definition: map.h:236
animatedtext.h
OTBM_ATTR_DEPOT_ID
@ OTBM_ATTR_DEPOT_ID
Definition: map.h:47
TSize< int >
Map::showZone
bool showZone(tileflags_t zone)
Definition: map.h:202
AwareRange::top
int top
Definition: map.h:129
Map::getSpectatorsInRange
std::vector< CreaturePtr > getSpectatorsInRange(const Position &centerPos, bool multiFloor, int xRange, int yRange)
Definition: map.cpp:579
Map::removeThing
bool removeThing(const ThingPtr &thing)
Definition: map.cpp:177
AwareRange::right
int right
Definition: map.h:130
Map::cleanDynamicThings
void cleanDynamicThings()
Definition: map.cpp:87
uint8
uint8_t uint8
Definition: types.h:37
Map
Definition: map.h:139
Map::clearDescriptions
void clearDescriptions()
Definition: map.h:160
BLOCK_SIZE
@ BLOCK_SIZE
Definition: map.h:93
Map::getLastAwareFloor
int getLastAwareFloor()
Definition: map.cpp:707
Map::setForceShowAnimations
void setForceShowAnimations(bool force)
Definition: map.cpp:404
Map::isCovered
bool isCovered(const Position &pos, int firstFloor=0)
Definition: map.cpp:621
OTBM_ATTR_SLEEPSTART
@ OTBM_ATTR_SLEEPSTART
Definition: map.h:58
Map::getAwareRange
AwareRange getAwareRange()
Definition: map.h:233
OTBM_ATTR_DECAYING_STATE
@ OTBM_ATTR_DECAYING_STATE
Definition: map.h:54
OTBM_ItemAttr
OTBM_ItemAttr
Definition: map.h:36