27 #ifndef DM_DUNGEONMAN_H 28 #define DM_DUNGEONMAN_H 36 enum ObjectInfoIndexConst {
37 kDMObjectInfoIndexFirstScroll = 0,
38 kDMObjectInfoIndexFirstContainer = 1,
39 kDMObjectInfoIndexFirstPotion = 2,
40 kDMObjectInfoIndexFirstWeapon = 23,
41 kDMObjectInfoIndexFirstArmour = 69,
42 kDMObjectInfoIndexFirstJunk = 127
45 #define kDMMapXNotOnASquare -1 // @ CM1_MAPX_NOT_ON_A_SQUARE 48 kDMElementTypeChampion = -2,
49 kDMElementTypeCreature = -1,
50 kDMElementTypeWall = 0,
51 kDMElementTypeCorridor = 1,
52 kDMElementTypePit = 2,
53 kDMElementTypeStairs = 3,
54 kDMElementTypeDoor = 4,
55 kDMElementTypeTeleporter = 5,
56 kDMElementTypeFakeWall = 6,
57 kDMElementTypeDoorSide = 16,
58 kDMElementTypeDoorFront = 17,
59 kDMElementTypeStairsSide = 18,
60 kDMElementTypeStairsFront = 19
63 enum ObjectAllowedSlot {
64 kDMMaskMouth = 0x0001,
67 kDMMaskTorso = 0x0008,
70 kDMMaskQuiverLine1 = 0x0040,
71 kDMMaskQuiverLine2 = 0x0080,
72 kDMMaskPouchPassAndThroughDoors = 0x0100,
73 kDMMaskHands = 0x0200,
74 kDMMaskContainer = 0x0400,
75 kDMMaskFootprints = 0x8000,
76 kDMMaskRandomDrop = 0x8000
79 enum ArmourAttribute {
80 kDMArmourAttributeShield = 0x0080,
81 kDMArmourAttributeSharpDefense = 0x0007
85 kDMWeaponClassNone = -1,
87 kDMWeaponClassSwingWeapon = 0,
89 kDMWeaponClassDaggerAndAxes = 2,
90 kDMWeaponClassBowAmmunition = 10,
91 kDMWeaponClassSlingAmmunition = 11,
92 kDMWeaponClassPoisinDart = 12,
94 kDMWeaponClassFirstBow = 16,
95 kDMWeaponClassLastBow = 31,
96 kDMWeaponClassFirstSling = 32,
97 kDMWeaponClassLastSling = 47,
99 kDMWeaponClassFirstMagicWeapon = 112
104 kDMTextTypeInscription = 0,
106 kDMTextTypeMessage = 1,
108 kDMTextTypeScroll = 2
112 kDMSquareAspectElement = 0,
113 kDMSquareAspectFirstGroupOrObject = 1,
114 kDMSquareAspectRightWallOrnOrd = 2,
115 kDMSquareFrontWallOrnOrd = 3,
116 kDMSquareAspectLeftWallOrnOrd = 4,
117 kDMSquareAspectPitInvisible = 2,
118 kDMSquareAspectTeleporterVisible = 2,
119 kDMSquareAspectStairsUp = 2,
120 kDMSquareAspectDoorState = 2,
121 kDMSquareAspectDoorThingIndex = 3,
122 kDMSquareAspectFloorOrn = 4
125 #define kDMImmuneToFire 15 // @ C15_IMMUNE_TO_FIRE 126 #define kDMImmuneToPoison 15 // @ C15_IMMUNE_TO_POISON 128 enum TeleporterScope {
129 kDMTeleporterScopeCreatures = 1,
130 kDMTeleporterScopeObjectsOrParty = 2
134 kDMSensorDisabled = 0,
135 kDMSensorFloorTheronPartyCreatureObj = 1,
136 kDMSensorFloorTheronPartyCreature = 2,
137 kDMSensorFloorParty = 3,
138 kDMSensorFloorObj = 4,
139 kDMSensorFloorPartyOnStairs = 5,
140 kDMSensorFloorGroupGenerator = 6,
141 kDMSensorFloorCreature = 7,
142 kDMSensorFloorPartyPossession = 8,
143 kDMSensorFloorVersionChecker = 9,
144 kDMSensorWallOrnClick = 1,
145 kDMSensorWallOrnClickWithAnyObj = 2,
146 kDMSensorWallOrnClickWithSpecObj = 3,
147 kDMSensorWallOrnClickWithSpecObjRemoved = 4,
148 kDMSensorWallAndOrGate = 5,
149 kDMSensorWallCountdown = 6,
150 kDMSensorWallSingleProjLauncherNewObj = 7,
151 kDMSensorWallSingleProjLauncherExplosion = 8,
152 kDMSensorWallDoubleProjLauncherNewObj = 9,
153 kDMSensorWallDoubleProjLauncherExplosion = 10,
154 kDMSensorWallOrnClickWithSpecObjRemovedRotateSensors = 11,
155 kDMSensorWallObjGeneratorRotateSensors = 12,
156 kDMSensorWallSingleObjStorageRotateSensors = 13,
157 kDMSensorWallSingleProjLauncherSquareObj = 14,
158 kDMSensorWallDoubleProjLauncherSquareObj = 15,
159 kDMSensorWallObjExchanger = 16,
160 kDMSensorWallOrnClickWithSpecObjRemovedSensor = 17,
161 kDMSensorWallEndGame = 18,
162 kDMSensorWallChampionPortrait = 127
168 kDMWeaponFalchion = 9,
171 kDMWeaponStoneClub = 24,
173 kDMWeaponSlayer = 28,
175 kDMWeaponPoisonDart = 31,
176 kDMWeaponThrowingStar = 32
180 kDMArmourWoodenShield = 30,
182 kDMArmourTorsoPlate = 39,
183 kDMArmourLegPlate = 40,
184 kDMArmourFootPlate = 41
188 kDMPotionTypeVen = 3,
189 kDMPotionTypeRos = 6,
191 kDMPotionTypeDane = 8,
192 kDMPotionTypeNeta = 9,
193 kDMPotionTypeAntivenin = 10,
194 kDMPotionTypeMon = 11,
195 kDMPotionTypeYa = 12,
196 kDMPotionTypeEe = 13,
197 kDMPotionTypeVi = 14,
198 kDMPotionTypeWaterFlask = 15,
199 kDMPotionTypeFulBomb = 19,
200 kDMPotionTypeEmptyFlask = 20
204 kDMJunkTypeWaterskin = 1,
205 kDMJunkTypeBones = 5,
206 kDMJunkTypeBoulder = 25,
207 kDMJunkTypeScreamerSlice = 33,
208 kDMJunkTypeWormRound = 34,
209 kDMJunkTypeDrumstickShank = 35,
210 kDMJunkTypeDragonSteak = 36,
211 kDMJunkTypeMagicalBoxBlue = 42,
212 kDMJunkTypeMagicalBoxGreen = 43,
213 kDMJunkTypeZokathra = 51
217 kDMExplosionTypeFireball = 0,
218 kDMExplosionTypeSlime = 1,
219 kDMExplosionTypeLightningBolt = 2,
220 kDMExplosionTypeHarmNonMaterial = 3,
221 kDMExplosionTypeOpenDoor = 4,
222 kDMExplosionTypePoisonBolt = 6,
223 kDMExplosionTypePoisonCloud = 7,
224 kDMExplosionTypeSmoke = 40,
225 kDMExplosionTypeFluxcage = 50,
226 kDMExplosionTypeRebirthStep1 = 100,
227 kDMExplosionTypeRebirthStep2 = 101
231 kDMSquareMaskWallWestRandOrnament = 0x1,
232 kDMSquareMaslWallSouthRandOrnament = 0x2,
233 kDMSquareMaskWallEastRandOrnament = 0x4,
234 kDMSquareMaskWallNorthRandOrnament = 0x8,
235 kDMSquareMaskCorridorRandOrnament = 0x8,
236 kDMSquareMaskPitImaginary = 0x1,
237 kDMSquareMaskPitInvisible = 0x4,
238 kDMSquareMaskPitOpen = 0x8,
239 kDMSquareMaskStairsUp = 0x4,
240 kDMSquareMaskStairsNorthSouth = 0x8,
241 kDMSquareMaskDoorNorthSouth = 0x8,
242 kDMSquareMaskTeleporterVisible = 0x4,
243 kDMSquareMaskTeleporterOpen = 0x8,
244 kDMSquareMaskFakeWallImaginary = 0x1,
245 kDMSquareMaskFakeWallOpen = 0x4,
246 kDMSquareMaskFakeWallRandOrnamentOrFootprintsAllowed = 0x8,
247 kDMSquareMaskThingListPresent = 0x10
250 #define kDMMaskChampionBones 0x8000 // @ MASK0x8000_CHAMPION_BONES 251 #define kDMMaskThingType 0x7FFF // @ MASK0x7FFF_THING_TYPE 256 uint16 _objectAspectIndex;
257 uint16 _actionSetIndex;
258 uint16 _allowedSlots;
259 ObjectInfoIndex(int16 type, uint16 objectAspectIndex, uint16 actionSetIndex, uint16 allowedSlots)
260 : _type(type), _objectAspectIndex(objectAspectIndex), _actionSetIndex(actionSetIndex), _allowedSlots(allowedSlots) {}
261 ObjectInfoIndex() : _type(0), _objectAspectIndex(0), _actionSetIndex(0), _allowedSlots(0) {}
262 bool getAllowedSlot(ObjectAllowedSlot slot) {
return _allowedSlots & slot; }
263 uint16 getAllowedSlots() {
return _allowedSlots; }
264 void setAllowedSlot(ObjectAllowedSlot slot,
bool val) {
266 _allowedSlots |= slot;
268 _allowedSlots &= ~slot;
279 ArmourInfo(uint16 weight, uint16 defense, uint16 attributes)
280 :_weight(weight), _defense(defense), _attributes(attributes) {}
281 ArmourInfo() :_weight(0), _defense(0), _attributes(0) {}
283 uint16 getAttribute(ArmourAttribute attribute) {
return _attributes & attribute; }
284 void setAttribute(ArmourAttribute attribute) { _attributes |= attribute; }
292 uint16 _kineticEnergy;
296 WeaponInfo(uint16 weight, uint16 wClass, uint16 strength, uint16 kineticEnergy, uint16 attributes)
297 : _weight(weight), _class(wClass), _strength(strength), _kineticEnergy(kineticEnergy), _attributes(attributes) {}
298 WeaponInfo() : _weight(0), _class(0), _strength(0), _kineticEnergy(0), _attributes(0) {}
300 uint16 getShootAttack() {
return _attributes & 0xFF; }
301 uint16 getProjectileAspectOrdinal() {
return (_attributes >> 8) & 0x1F; }
306 byte _creatureAspectIndex;
307 byte _attackSoundOrdinal;
320 uint16 _animationTicks;
321 uint16 _woundProbabilities;
324 uint16 getFearResistance() {
return (_properties >> 4) & 0xF; }
325 uint16 getExperience() {
return (_properties >> 8) & 0xF; }
326 uint16 getWariness() {
return (_properties >> 12) & 0xF; }
327 uint16 getFireResistance() {
return (_resistances >> 4) & 0xF; }
328 uint16 getPoisonResistance() {
return (_resistances >> 8) & 0xF; }
329 static uint16 getHeight(uint16 attrib) {
return (attrib >> 7) & 0x3; }
330 uint16 getSightRange() {
return (_ranges) & 0xF; }
331 uint16 getSmellRange() {
return (_ranges >> 8) & 0xF; }
332 uint16 getAttackRange() {
return (_ranges >> 12) & 0xF; }
339 explicit Door(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]) {}
340 Thing getNextThing() {
return _nextThing; }
341 bool isMeleeDestructible() {
return (_attributes >> 8) & 1; }
342 bool isMagicDestructible() {
return (_attributes >> 7) & 1; }
343 bool hasButton() {
return (_attributes >> 6) & 1; }
344 bool opensVertically() {
return (_attributes >> 5) & 1; }
345 byte getOrnOrdinal() {
return (_attributes >> 1) & 0xF; }
346 byte getType() {
return _attributes & 1; }
352 uint16 _destMapIndex;
354 explicit Teleporter(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]), _destMapIndex(rawDat[2]) {}
355 Thing getNextThing() {
return _nextThing; }
356 bool isAudible() {
return (_attributes >> 15) & 1; }
357 TeleporterScope getScope() {
return (TeleporterScope)((_attributes >> 13) & 1); }
358 bool getAbsoluteRotation() {
return (_attributes >> 12) & 1; }
359 Direction getRotation() {
return (Direction)((_attributes >> 10) & 1); }
360 byte getTargetMapY() {
return (_attributes >> 5) & 0xF; }
361 byte getTargetMapX() {
return _attributes & 0xF; }
362 uint16 getTargetMapIndex() {
return _destMapIndex >> 8; }
369 explicit TextString(uint16 *rawDat) : _nextThing(rawDat[0]), _textDataRef(rawDat[1]) {}
371 Thing getNextThing() {
return _nextThing; }
372 uint16 getWordOffset() {
return _textDataRef >> 3; }
373 bool isVisible() {
return _textDataRef & 1; }
374 void setVisible(
bool visible) { _textDataRef = (_textDataRef & ~1) | (visible ? 1 : 0); }
383 explicit Sensor(uint16 *rawDat) : _nextThing(rawDat[0]), _datAndType(rawDat[1]), _attributes(rawDat[2]), _action(rawDat[3]) {}
385 Thing getNextThing() {
return _nextThing; }
386 void setNextThing(
Thing thing) { _nextThing = thing; }
387 SensorType getType() {
return (SensorType)(_datAndType & 0x7F); }
388 uint16 getData() {
return (_datAndType >> 7) & 0x1FF; }
389 static uint16 getDataMask1(uint16 data) {
return (data >> 7) & 0xF; }
390 static uint16 getDataMask2(uint16 data) {
return (data >> 11) & 0xF; }
391 void setData(uint16 dat) { _datAndType = dat; }
392 void setTypeDisabled() { _datAndType &= 0xFF80; }
394 bool getAttrOnlyOnce() {
return (_attributes >> 2) & 1; }
395 uint16 getAttrEffectA() {
return (_attributes >> 3) & 0x3; }
396 bool getAttrRevertEffectA() {
return (_attributes >> 5) & 0x1; }
397 bool getAttrAudibleA() {
return (_attributes >> 6) & 0x1; }
398 uint16 getAttrValue() {
return (_attributes >> 7) & 0xF; }
399 bool getAttrLocalEffect() {
return (_attributes >> 11) & 1; }
400 uint16 getAttrOrnOrdinal() {
return _attributes >> 12; }
402 uint16 getActionTargetMapY() {
return (_action >> 11); }
403 uint16 getActionTargetMapX() {
return (_action >> 6) & 0x1F; }
404 Cell getActionTargetCell() {
return (Cell)((_action >> 4) & 3); }
405 uint16 getActionHealthMultiplier() {
return ((_action >> 4) & 0xF); }
406 uint16 getActionTicks() {
return ((_action >> 4) >> 4) & 0xFFF; }
407 uint16 getActionKineticEnergy() {
return ((_action >> 4) & 0xFF); }
408 uint16 getActionStepEnergy() {
return ((_action >> 4) >> 8) & 0xFF; }
409 uint16 getActionLocalEffect() {
return (_action >> 4); }
411 void setDatAndTypeWithOr(uint16 val) { _datAndType |= val; }
419 explicit Weapon(uint16 *rawDat) : _nextThing(rawDat[0]), _desc(rawDat[1]) {}
421 WeaponType getType() {
return (WeaponType)(_desc & 0x7F); }
422 void setType(uint16 val) { _desc = (_desc & ~0x7F) | (val & 0x7F); }
423 bool isLit() {
return (_desc >> 15) & 1; }
424 void setLit(
bool val) {
428 _desc &= (~(1 << 15));
430 uint16 getChargeCount() {
return (_desc >> 10) & 0xF; }
431 uint16 setChargeCount(uint16 val) { _desc = (_desc & ~(0xF << 10)) | ((val & 0xF) << 10);
return (val & 0xF); }
432 Thing getNextThing() {
return _nextThing; }
433 void setNextThing(
Thing val) { _nextThing = val; }
434 uint16 getCursed() {
return (_desc >> 8) & 1; }
435 void setCursed(uint16 val) { _desc = (_desc & ~(1 << 8)) | ((val & 1) << 8); }
436 uint16 getPoisoned() {
return (_desc >> 9) & 1; }
437 uint16 getBroken() {
return (_desc >> 14) & 1; }
438 uint16 getDoNotDiscard() {
return (_desc >> 7) & 1; }
439 void setDoNotDiscard(uint16 val) { _desc = (_desc & ~(1 << 7)) | ((val & 1) << 7); }
446 explicit Armour(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]) {}
448 ArmourType getType() {
return (ArmourType)(_attributes & 0x7F); }
449 Thing getNextThing() {
return _nextThing; }
450 uint16 getCursed() {
return (_attributes >> 8) & 1; }
451 uint16 getBroken() {
return (_attributes >> 13) & 1; }
452 uint16 getDoNotDiscard() {
return (_attributes >> 7) & 1; }
453 uint16 getChargeCount() {
return (_attributes >> 9) & 0xF; }
454 void setChargeCount(uint16 val) { _attributes = (_attributes & ~(0xF << 9)) | ((val & 0xF) << 9); }
461 explicit Scroll(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]) {}
462 void set(
Thing next, uint16 attribs) {
464 _attributes = attribs;
466 Thing getNextThing() {
return _nextThing; }
467 uint16 getClosed() {
return (_attributes >> 10) & 0x3F; }
468 void setClosed(
bool val) {
470 _attributes |= (1 << 10);
472 _attributes &= (~(0x3F << 10));
474 uint16 getTextStringThingIndex() {
return _attributes & 0x3FF; }
481 explicit Potion(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]) {}
483 PotionType getType() {
return (PotionType)((_attributes >> 8) & 0x7F); }
484 void setType(PotionType val) { _attributes = (_attributes & ~(0x7F << 8)) | ((val & 0x7F) << 8); }
485 Thing getNextThing() {
return _nextThing; }
486 uint16 getPower() {
return _attributes & 0xFF; }
487 void setPower(uint16 val) { _attributes = (_attributes & ~0xFF) | (val & 0xFF); }
488 uint16 getDoNotDiscard() {
return (_attributes >> 15) & 1; }
496 explicit Container(uint16 *rawDat) : _nextThing(rawDat[0]), _slot(rawDat[1]), _type(rawDat[2]) {}
498 uint16 getType() {
return (_type >> 1) & 0x3; }
499 Thing &getSlot() {
return _slot; }
500 Thing &getNextThing() {
return _nextThing; }
507 explicit Junk(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]) {}
509 JunkType getType() {
return (JunkType)(_attributes & 0x7F); }
510 void setType(uint16 val) { _attributes = (_attributes & ~0x7F) | (val & 0x7F); }
511 uint16 getChargeCount() {
return (_attributes >> 14) & 0x3; }
512 void setChargeCount(uint16 val) { _attributes = (_attributes & ~(0x3 << 14)) | ((val & 0x3) << 14); }
513 uint16 getDoNotDiscard() {
return (_attributes >> 7) & 1; }
514 void setDoNotDiscard(uint16 val) { _attributes = (_attributes & ~(1 << 7)) | ((val & 1) << 7); }
516 Thing getNextThing() {
return _nextThing; }
517 void setNextThing(
Thing thing) { _nextThing = thing; }
524 uint16 _kineticEnergy;
527 explicit Projectile(uint16 *rawDat) : _nextThing(rawDat[0]), _slot(rawDat[1]), _kineticEnergy(rawDat[2]),
528 _attack(rawDat[3]), _eventIndex(rawDat[4]) {}
536 explicit Explosion(uint16 *rawDat) : _nextThing(rawDat[0]), _attributes(rawDat[1]) {}
538 Thing getNextThing() {
return _nextThing; }
539 Thing setNextThing(
Thing val) {
return _nextThing = val; }
540 uint16 getType() {
return _attributes & 0x7F; }
541 uint16 setType(uint16 val) { _attributes = (_attributes & ~0x7F) | (val & 0x7F);
return (val & 0x7F); }
542 uint16 getAttack() {
return (_attributes >> 8) & 0xFF; }
543 void setAttack(uint16 val) { _attributes = (_attributes & ~(0xFF << 8)) | ((val & 0xFF) << 8); }
544 uint16 getCentered() {
return (_attributes >> 7) & 0x1; }
545 void setCentered(uint16 val) { _attributes = (_attributes & ~(1 << 7)) | ((val & 1) << 7); }
551 explicit Square(byte dat = 0) : _data(dat) {}
552 explicit Square(ElementType type) { setType(type); }
553 explicit Square(byte element, byte mask) : _data((element << 5) | mask) {}
554 Square &
set(byte dat) { this->_data = dat;
return *
this; }
555 Square &
set(SquareMask mask) { _data |= mask;
return *
this; }
556 byte
get(SquareMask mask) {
return _data & mask; }
557 byte getDoorState() {
return _data & 0x7; }
558 void setDoorState(byte state) { _data = ((_data & ~0x7) | state); }
559 ElementType getType() {
return (ElementType)(_data >> 5); }
560 void setType(ElementType type) { _data = (_data & 0x1F) | type << 5; }
561 byte toByte() {
return _data; }
565 uint16 _ornamentRandomSeed;
566 uint16 _rawMapDataSize;
568 uint16 _textDataWordCount;
569 uint16 _partyStartLocation;
570 uint16 _squareFirstThingCount;
571 uint16 _thingCounts[16];
575 uint32 _rawDunDataOffset;
576 uint8 _offsetMapX, _offsetMapY;
579 uint8 _width, _height;
582 uint8 _randWallOrnCount;
583 uint8 _floorOrnCount;
584 uint8 _randFloorOrnCount;
587 uint8 _creatureTypeCount;
592 uint8 _doorSet0, _doorSet1;
600 DoorInfo(byte b1, byte b2) : _attributes(b1), _defense(b2) {}
602 void resetToZero() { _attributes = _defense = 0; }
613 Square getRelSquare(Direction dir, int16 stepsForward, int16 stepsRight, int16 posX, int16 posY);
615 void decompressDungeonFile();
617 int16 getSquareFirstThingIndex(int16 mapX, int16 mapY);
619 int16 getRandomOrnOrdinal(
bool allowed, int16 count, int16 mapX, int16 mapY, int16 modulo);
620 void setSquareAspectOrnOrdinals(uint16 *aspectArray,
bool leftAllowed,
bool frontAllowed,
bool rightAllowed, int16 dir,
621 int16 mapX, int16 mapY,
bool isFakeWall);
627 Square getSquare(int16 mapX, int16 mapY);
628 void setCurrentMap(uint16 mapIndex);
629 Thing getSquareFirstThing(int16 mapX, int16 mapY);
631 uint16 *getThingData(
Thing thing);
632 uint16 *getSquareFirstThingData(int16 mapX, int16 mapY);
636 void setCurrentMapAndPartyMap(uint16 mapIndex);
638 bool isWallOrnAnAlcove(int16 wallOrnIndex);
639 void mapCoordsAfterRelMovement(Direction dir, int16 stepsForward, int16 stepsRight, int16 &posX, int16 &posY);
640 ElementType getRelSquareType(Direction dir, int16 stepsForward, int16 stepsRight, int16 posX, int16 posY) {
641 return Square(getRelSquare(dir, stepsForward, stepsRight, posX, posY)).getType();
643 void setSquareAspect(uint16 *aspectArray, Direction dir, int16 mapX, int16 mapY);
644 void decodeText(
char *destString,
size_t maxSize,
Thing thing, TextType type);
645 Thing getUnusedThing(uint16 thingType);
647 uint16 getObjectWeight(
Thing thing);
648 int16 getObjectInfoIndex(
Thing thing);
649 void linkThingToList(
Thing thingToLink,
Thing thingInList, int16 mapX, int16 mapY);
651 int16 getProjectileAspect(
Thing thing);
652 int16 getLocationAfterLevelChange(int16 mapIndex, int16 levelDelta, int16 *mapX, int16 *mapY);
653 Thing getSquareFirstObject(int16 mapX, int16 mapY);
654 uint16 getArmourDefense(
ArmourInfo *armourInfo,
bool useSharpDefense);
655 Thing getDiscardThing(uint16 thingType);
656 uint16 getCreatureAttributes(
Thing thing);
657 void setGroupCells(
Group *group, uint16 cells, uint16 mapIndex);
658 void setGroupDirections(
Group *group, int16 dir, uint16 mapIndex);
659 bool isCreatureAllowedOnMap(
Thing thing, uint16 mapIndex);
660 void unlinkThingFromList(
Thing thingToUnlink,
Thing thingInList, int16 mapX, int16 mapY);
661 int16 getStairsExitDirection(int16 mapX, int16 mapY);
662 Thing getObjForProjectileLaucherOrObjGen(uint16 iconIndex);
663 int16 getRandomOrnamentIndex(uint16 val1, uint16 val2, int16 modulo);
665 uint32 _rawDunFileDataSize;
666 byte *_rawDunFileData;
669 uint16 *_dungeonMapsFirstColumnIndex;
670 uint16 _dungeonColumCount;
671 uint16 *_dungeonColumnsCumulativeSquareThingCount;
672 Thing *_squareFirstThings;
673 uint16 *_dungeonTextData;
674 uint16 *_thingData[16];
675 byte ***_dungeonMapData;
680 uint8 _partyMapIndex;
684 uint16 _currMapWidth;
685 uint16 _currMapHeight;
686 uint16 *_currMapColCumulativeSquareFirstThingCount;
689 byte *_dungeonRawMapData;
691 int16 _currMapInscriptionWallOrnIndex;
692 Box _dungeonViewClickableBoxes[6];
693 bool _isFacingAlcove;
694 bool _isFacingViAltar;
695 bool _isFacingFountain;
696 ElementType _squareAheadElement;
697 Thing _pileTopObject[5];
704 byte _thingDataWordCount[16];
706 void setupConstants();
Definition: dungeonman.h:503
Definition: dungeonman.h:335
Definition: dungeonman.h:532
Definition: dungeonman.h:491
Definition: dungeonman.h:304
Definition: dungeonman.h:273
Definition: dungeonman.h:596
Definition: dungeonman.h:520
Definition: dungeonman.h:607
Definition: champion.h:35
Definition: dungeonman.h:253
Definition: dungeonman.h:574
Definition: dungeonman.h:377
Definition: dungeonman.h:365
Definition: dungeonman.h:442
Definition: dungeonman.h:415
Definition: dungeonman.h:477
Definition: dungeonman.h:349
Definition: dungeonman.h:548
Definition: dungeonman.h:287