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 Door() : _nextThing(0xFFFF), _attributes(0) {}
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; }
353 uint16 _destMapIndex;
354 Teleporter() : _nextThing(0xFFFF), _attributes(0), _destMapIndex(0) {}
355 Thing getNextThing() {
return _nextThing; }
356 bool isAudible() {
return (_attributes >> 15) & 1; }
357 TeleporterScope getScope() {
return (TeleporterScope)((_attributes >> 13) & 3); }
358 bool getAbsoluteRotation() {
return (_attributes >> 12) & 1; }
359 Direction getRotation() {
return (Direction)((_attributes >> 10) & 3); }
360 byte getTargetMapY() {
return (_attributes >> 5) & 0x1F; }
361 byte getTargetMapX() {
return _attributes & 0x1F; }
362 uint16 getTargetMapIndex() {
return _destMapIndex >> 8; }
369 TextString() : _nextThing(0xFFFF), _textDataRef(0) {}
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 Sensor() : _nextThing(0xFFFF), _datAndType(0), _attributes(0), _action(0) {}
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 = (_datAndType & 0x7F) | (dat << 7); }
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 Weapon() : _nextThing(0xFFFF), _desc(0) {}
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 Armour() : _nextThing(0xFFFF), _attributes(0) {}
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); }
455 void setType(uint16 val) { _attributes = (_attributes & ~0x7F) | (val & 0x7F); }
456 void setCursed(uint16 val) { _attributes = (_attributes & ~(1 << 8)) | ((val & 1) << 8); }
463 Scroll() : _nextThing(0xFFFF), _attributes(0) {}
464 void set(
Thing next, uint16 attribs) {
466 _attributes = attribs;
468 Thing getNextThing() {
return _nextThing; }
469 uint16 getClosed() {
return (_attributes >> 10) & 0x3F; }
470 void setClosed(
bool val) {
472 _attributes |= (1 << 10);
474 _attributes &= (~(0x3F << 10));
476 uint16 getTextStringThingIndex() {
return _attributes & 0x3FF; }
483 Potion() : _nextThing(0xFFFF), _attributes(0) {}
485 PotionType getType() {
return (PotionType)((_attributes >> 8) & 0x7F); }
486 void setType(PotionType val) { _attributes = (_attributes & ~(0x7F << 8)) | ((val & 0x7F) << 8); }
487 Thing getNextThing() {
return _nextThing; }
488 uint16 getPower() {
return _attributes & 0xFF; }
489 void setPower(uint16 val) { _attributes = (_attributes & ~0xFF) | (val & 0xFF); }
490 uint16 getDoNotDiscard() {
return (_attributes >> 15) & 1; }
498 Container() : _nextThing(0xFFFF), _slot(0xFFFF), _type(0) {}
500 uint16 getType() {
return (_type >> 1) & 0x3; }
501 Thing &getSlot() {
return _slot; }
502 Thing &getNextThing() {
return _nextThing; }
509 Junk() : _nextThing(0xFFFF), _attributes(0) {}
511 JunkType getType() {
return (JunkType)(_attributes & 0x7F); }
512 void setType(uint16 val) { _attributes = (_attributes & ~0x7F) | (val & 0x7F); }
513 uint16 getChargeCount() {
return (_attributes >> 14) & 0x3; }
514 void setChargeCount(uint16 val) { _attributes = (_attributes & ~(0x3 << 14)) | ((val & 0x3) << 14); }
515 uint16 getDoNotDiscard() {
return (_attributes >> 7) & 1; }
516 void setDoNotDiscard(uint16 val) { _attributes = (_attributes & ~(1 << 7)) | ((val & 1) << 7); }
518 Thing getNextThing() {
return _nextThing; }
519 void setNextThing(
Thing thing) { _nextThing = thing; }
520 void setCursed(uint16 val) { _attributes = (_attributes & ~(1 << 8)) | ((val & 1) << 8); }
527 uint16 _kineticEnergy;
530 Projectile() : _nextThing(0xFFFF), _slot(0xFFFF), _kineticEnergy(0), _attack(0), _eventIndex(0) {}
538 Explosion() : _nextThing(0xFFFF), _attributes(0) {}
540 Thing getNextThing() {
return _nextThing; }
541 Thing setNextThing(
Thing val) {
return _nextThing = val; }
542 uint16 getType() {
return _attributes & 0x7F; }
543 uint16 setType(uint16 val) { _attributes = (_attributes & ~0x7F) | (val & 0x7F);
return (val & 0x7F); }
544 uint16 getAttack() {
return (_attributes >> 8) & 0xFF; }
545 void setAttack(uint16 val) { _attributes = (_attributes & ~(0xFF << 8)) | ((val & 0xFF) << 8); }
546 uint16 getCentered() {
return (_attributes >> 7) & 0x1; }
547 void setCentered(uint16 val) { _attributes = (_attributes & ~(1 << 7)) | ((val & 1) << 7); }
553 explicit Square(byte dat = 0) : _data(dat) {}
554 explicit Square(ElementType type) { setType(type); }
555 explicit Square(byte element, byte mask) : _data((element << 5) | mask) {}
556 Square &
set(byte dat) { this->_data = dat;
return *
this; }
557 Square &
set(SquareMask mask) { _data |= mask;
return *
this; }
558 byte
get(SquareMask mask) {
return _data & mask; }
559 byte getDoorState() {
return _data & 0x7; }
560 void setDoorState(byte state) { _data = ((_data & ~0x7) | state); }
561 ElementType getType() {
return (ElementType)(_data >> 5); }
562 void setType(ElementType type) { _data = (_data & 0x1F) | type << 5; }
563 byte toByte() {
return _data; }
567 uint16 _ornamentRandomSeed;
568 uint16 _rawMapDataSize;
570 uint16 _textDataWordCount;
571 uint16 _partyStartLocation;
572 uint16 _squareFirstThingCount;
573 uint16 _thingCounts[16];
577 uint32 _rawDunDataOffset;
578 uint8 _offsetMapX, _offsetMapY;
581 uint8 _width, _height;
584 uint8 _randWallOrnCount;
585 uint8 _floorOrnCount;
586 uint8 _randFloorOrnCount;
589 uint8 _creatureTypeCount;
594 uint8 _doorSet0, _doorSet1;
602 DoorInfo(byte b1, byte b2) : _attributes(b1), _defense(b2) {}
604 void resetToZero() { _attributes = _defense = 0; }
615 Square getRelSquare(Direction dir, int16 stepsForward, int16 stepsRight, int16 posX, int16 posY);
617 void decompressDungeonFile();
619 int16 getSquareFirstThingIndex(int16 mapX, int16 mapY);
621 int16 getRandomOrnOrdinal(
bool allowed, int16 count, int16 mapX, int16 mapY, int16 modulo);
622 void setSquareAspectOrnOrdinals(uint16 *aspectArray,
bool leftAllowed,
bool frontAllowed,
bool rightAllowed, int16 dir,
623 int16 mapX, int16 mapY,
bool isFakeWall);
629 Square getSquare(int16 mapX, int16 mapY);
630 void setCurrentMap(uint16 mapIndex);
631 Thing getSquareFirstThing(int16 mapX, int16 mapY);
647 Door *getDoor(uint16 index);
650 Sensor *getSensor(uint16 index);
651 Group *getGroup(uint16 index);
652 Weapon *getWeapon(uint16 index);
653 Armour *getArmour(uint16 index);
654 Scroll *getScroll(uint16 index);
655 Potion *getPotion(uint16 index);
657 Junk *getJunk(uint16 index);
661 void duplicateThing(
Thing thing);
663 void resetThing(
Thing thing);
667 void setCurrentMapAndPartyMap(uint16 mapIndex);
669 bool isWallOrnAnAlcove(int16 wallOrnIndex);
670 void mapCoordsAfterRelMovement(Direction dir, int16 stepsForward, int16 stepsRight, int16 &posX, int16 &posY);
671 ElementType getRelSquareType(Direction dir, int16 stepsForward, int16 stepsRight, int16 posX, int16 posY) {
672 return Square(getRelSquare(dir, stepsForward, stepsRight, posX, posY)).getType();
674 void setSquareAspect(uint16 *aspectArray, Direction dir, int16 mapX, int16 mapY);
675 void decodeText(
char *destString,
size_t maxSize,
Thing thing, int16 type);
676 Thing getUnusedThing(uint16 thingType);
678 uint16 getObjectWeight(
Thing thing);
679 int16 getObjectInfoIndex(
Thing thing);
680 void linkThingToList(
Thing thingToLink,
Thing thingInList, int16 mapX, int16 mapY);
682 int16 getProjectileAspect(
Thing thing);
683 int16 getLocationAfterLevelChange(int16 mapIndex, int16 levelDelta, int16 *mapX, int16 *mapY);
684 Thing getSquareFirstObject(int16 mapX, int16 mapY);
685 uint16 getArmourDefense(
ArmourInfo *armourInfo,
bool useSharpDefense);
686 Thing getDiscardThing(uint16 thingType);
687 uint16 getCreatureAttributes(
Thing thing);
688 void setGroupCells(
Group *group, uint16 cells, uint16 mapIndex);
689 void setGroupDirections(
Group *group, int16 dir, uint16 mapIndex);
690 bool isCreatureAllowedOnMap(
Thing thing, uint16 mapIndex);
691 void unlinkThingFromList(
Thing thingToUnlink,
Thing thingInList, int16 mapX, int16 mapY);
692 int16 getStairsExitDirection(int16 mapX, int16 mapY);
693 Thing getObjForProjectileLaucherOrObjGen(uint16 iconIndex);
694 int16 getRandomOrnamentIndex(uint16 val1, uint16 val2, int16 modulo);
696 uint32 _rawDunFileDataSize;
697 byte *_rawDunFileData;
700 uint16 *_dungeonMapsFirstColumnIndex;
701 uint16 _dungeonColumCount;
702 uint16 *_dungeonColumnsCumulativeSquareThingCount;
703 Thing *_squareFirstThings;
704 uint16 *_dungeonTextData;
719 byte ***_dungeonMapData;
724 uint8 _partyMapIndex;
728 uint16 _currMapWidth;
729 uint16 _currMapHeight;
730 uint16 *_currMapColCumulativeSquareFirstThingCount;
733 byte *_dungeonRawMapData;
735 int16 _currMapInscriptionWallOrnIndex;
736 Box _dungeonViewClickableBoxes[6];
737 bool _isFacingAlcove;
738 bool _isFacingViAltar;
739 bool _isFacingFountain;
740 ElementType _squareAheadElement;
741 Thing _pileTopObject[5];
748 byte _thingDataWordCount[16];
750 void setupConstants();
Definition: dungeonman.h:505
Definition: dungeonman.h:335
Definition: dungeonman.h:534
Definition: dungeonman.h:493
Definition: dungeonman.h:304
Definition: dungeonman.h:273
Definition: dungeonman.h:598
Definition: dungeonman.h:523
Definition: dungeonman.h:609
Definition: champion.h:35
Definition: dungeonman.h:253
Definition: dungeonman.h:576
Definition: dungeonman.h:377
Definition: dungeonman.h:365
Definition: dungeonman.h:442
Definition: dungeonman.h:415
Definition: dungeonman.h:479
Definition: dungeonman.h:349
Definition: dungeonman.h:550
Definition: dungeonman.h:287