25 #include "common/stream.h" 26 #include "common/array.h" 27 #include "common/rect.h" 28 #include "xeen/combat.h" 29 #include "xeen/files.h" 30 #include "xeen/party.h" 31 #include "xeen/scripts.h" 32 #include "xeen/sprites.h" 38 #define TOTAL_SURFACES 16 39 #define INVALID_CELL 0x8888 44 MONSTER_MONSTERS = 0, MONSTER_ANIMAL = 1, MONSTER_INSECT = 2,
45 MONSTER_HUMANOID = 3, MONSTER_UNDEAD = 4, MONSTER_GOLEM = 5,
50 XEEN_CASTLE1 = 75, XEEN_CASTLE4 = 78
64 DamageType _attackType;
65 SpecialAttack _specialAttack;
68 MonsterType _monsterType;
70 int _electricityResistence;
72 int _poisonResistence;
73 int _energyResistence;
75 int _phsyicalResistence;
89 int speed,
int numberOfAttacks, CharacterClass hatesClass,
int strikes,
90 int dmgPerStrike, DamageType attackType, SpecialAttack specialAttack,
91 int hitChance,
int rangeAttack, MonsterType monsterType,
92 int fireResistence,
int electricityResistence,
int coldResistence,
93 int poisonResistence,
int energyResistence,
int magicResistence,
94 int phsyicalResistence,
int field29,
int gold,
int gems,
int itemDrop,
95 bool flying,
int imageNumber,
int loopAnimation,
int animationEffect,
123 int &operator[](
int idx);
146 OUTFLAG_GRATE = 0x80, OUTFLAG_DRAIN = 0x20, OUTFLAG_OBJECT_EXISTS = 0x08,
147 INFLAG_INSIDE = 0x08, FLAG_AUTOEXECUTE_EVENT = 0x10,
148 RESTRICTION_ETHERIALIZE = 0x40, RESTRICTION_80 = 0x80,
149 RESTRICTION_TOWN_PORTAL = 0x100, RESTRICTION_SUPER_SHELTER = 0x200,
150 RESTRICTION_TIME_DISTORTION = 0x400, RESTRICTION_LLOYDS_BEACON = 0x800,
151 RESTRICTION_TELPORT = 0x1000, RESTRICTION_2000 = 0x2000,
152 RESTRICTION_REST = 0x4000, RESTRICTION_SAVE = 0x8000,
157 enum MazeFlags2 { FLAG_IS_OUTDOORS = 0x8000, FLAG_IS_DARK = 0x4000 };
160 SURFTYPE_DEFAULT = 0,
161 SURFTYPE_WATER = 0, SURFTYPE_DIRT = 1, SURFTYPE_GRASS = 2,
162 SURFTYPE_SNOW = 3, SURFTYPE_SWAMP = 4, SURFTYPE_LAVA = 5,
163 SURFTYPE_DESERT = 6, SURFTYPE_ROAD = 7, SURFTYPE_DWATER = 8,
164 SURFTYPE_TFLR = 9, SURFTYPE_SKY = 10, SURFTYPE_CROAD = 11,
165 SURFTYPE_SEWER = 12, SURFTYPE_CLOUD = 13, SURFTYPE_SCORCH = 14,
188 MazeCell() : _flags(0), _surfaceId(0) {}
195 MazeCell _cells[MAP_HEIGHT][MAP_WIDTH];
201 int _surfaceTypes[16];
208 bool _seenTiles[MAP_HEIGHT][MAP_WIDTH];
209 bool _steppedOnTiles[MAP_HEIGHT][MAP_WIDTH];
227 void setAllTilesStepped();
229 void clearCellSurfaces();
236 Direction _direction;
257 Direction _direction;
270 DamageType _damageType;
272 int _postAttackDelay;
274 int _effect1, _effect2;
286 int getTextColor()
const;
295 Direction _direction;
326 bool isEmpty()
const {
return _spriteId == -1; }
349 void clearMonsterSprites();
369 HeadEntry *operator[](
int y) {
return &_data[y][0]; }
420 void loadEvents(
int mapId,
int ccNum);
441 void findMap(
int mapId = -1);
455 bool _currentGrateUnlocked;
456 bool _currentCantRest;
457 bool _currentIsDrain;
458 bool _currentIsEvent;
460 int _currentMonsterFlags;
463 int _currentSurfaceId;
464 bool _currentSteppedOn;
473 void load(
int mapId);
475 int mazeLookup(
const Common::Point &pt,
int layerShift,
int wallMask = 0xf);
504 int getCell(
int idx);
MazeData & mazeDataCurrent()
Definition: map.h:519
bool isEmpty() const
Definition: map.h:326
const MazeData * mazeDataSurrounding()
Definition: map.h:514
Definition: scripts.h:170
MazeData & mazeData()
Definition: map.h:509
Definition: character.h:33