25 #include "common/stream.h" 26 #include "common/array.h" 27 #include "common/rect.h" 28 #include "mm/xeen/combat.h" 29 #include "mm/xeen/files.h" 30 #include "mm/xeen/party.h" 31 #include "mm/xeen/scripts.h" 32 #include "mm/xeen/sprites.h" 39 #define TOTAL_SURFACES 16 40 #define INVALID_CELL 0x8888 45 MONSTER_MONSTERS = 0, MONSTER_ANIMAL = 1, MONSTER_INSECT = 2,
46 MONSTER_HUMANOID = 3, MONSTER_UNDEAD = 4, MONSTER_GOLEM = 5,
51 XEEN_CASTLE1 = 75, XEEN_CASTLE4 = 78
65 DamageType _attackType;
66 SpecialAttack _specialAttack;
69 MonsterType _monsterType;
71 int _electricityResistance;
73 int _poisonResistance;
74 int _energyResistance;
76 int _phsyicalResistance;
90 int speed,
int numberOfAttacks, CharacterClass hatesClass,
int strikes,
91 int dmgPerStrike, DamageType attackType, SpecialAttack specialAttack,
92 int hitChance,
int rangeAttack, MonsterType monsterType,
93 int fireResistance,
int electricityResistance,
int coldResistance,
94 int poisonResistance,
int energyResistance,
int magicResistance,
95 int phsyicalResistance,
int field29,
int gold,
int gems,
int itemDrop,
96 bool flying,
int imageNumber,
int loopAnimation,
int animationEffect,
124 int &operator[](
int idx);
147 OUTFLAG_GRATE = 0x80, OUTFLAG_DRAIN = 0x20, OUTFLAG_OBJECT_EXISTS = 0x08,
148 INFLAG_INSIDE = 0x08, FLAG_AUTOEXECUTE_EVENT = 0x10,
149 RESTRICTION_ETHERIALIZE = 0x40, RESTRICTION_80 = 0x80,
150 RESTRICTION_TOWN_PORTAL = 0x100, RESTRICTION_SUPER_SHELTER = 0x200,
151 RESTRICTION_TIME_DISTORTION = 0x400, RESTRICTION_LLOYDS_BEACON = 0x800,
152 RESTRICTION_TELPORT = 0x1000, RESTRICTION_2000 = 0x2000,
153 RESTRICTION_REST = 0x4000, RESTRICTION_SAVE = 0x8000,
159 FLAG_IS_OUTDOORS = 0x8000, FLAG_IS_DARK = 0x4000
163 SURFTYPE_DEFAULT = 0,
164 SURFTYPE_WATER = 0, SURFTYPE_DIRT = 1, SURFTYPE_GRASS = 2,
165 SURFTYPE_SNOW = 3, SURFTYPE_SWAMP = 4, SURFTYPE_LAVA = 5,
166 SURFTYPE_DESERT = 6, SURFTYPE_ROAD = 7, SURFTYPE_DWATER = 8,
167 SURFTYPE_TFLR = 9, SURFTYPE_SKY = 10, SURFTYPE_CROAD = 11,
168 SURFTYPE_SEWER = 12, SURFTYPE_CLOUD = 13, SURFTYPE_SCORCH = 14,
191 MazeCell() : _flags(0), _surfaceId(0) {
199 MazeCell _cells[MAP_HEIGHT][MAP_WIDTH];
205 int _surfaceTypes[16];
212 bool _seenTiles[MAP_HEIGHT][MAP_WIDTH];
213 bool _steppedOnTiles[MAP_HEIGHT][MAP_WIDTH];
231 void setAllTilesStepped();
233 void clearCellSurfaces();
240 Direction _direction;
261 Direction _direction;
274 DamageType _damageType;
276 int _postAttackDelay;
278 int _effect1, _effect2;
290 int getTextColor()
const;
299 Direction _direction;
334 return _spriteId == -1;
358 void clearMonsterSprites();
384 int _front, _left, _back, _right;
387 bool _front, _left, _back, _right;
435 void loadEvents(
int mapId,
int ccNum);
456 void findMap(
int mapId = -1);
470 bool _currentGrateUnlocked;
471 bool _currentCantRest;
472 bool _currentIsDrain;
473 bool _currentIsEvent;
475 int _currentMonsterFlags;
478 int _currentSurfaceId;
479 bool _currentSteppedOn;
488 void load(
int mapId);
490 int mazeLookup(
const Common::Point &pt,
int layerShift,
int wallMask = 0xf);
519 int getCell(
int idx);
539 return _mazeData[_mazeDataIndex];
MazeData & mazeDataCurrent()
Definition: map.h:538
const MazeData * mazeDataSurrounding()
Definition: map.h:531
MazeData & mazeData()
Definition: map.h:524
Definition: detection.h:27
bool isEmpty() const
Definition: map.h:333
Definition: scripts.h:175