aboutsummaryrefslogtreecommitdiff
path: root/engines/dm/dungeonman.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/dm/dungeonman.h')
-rw-r--r--engines/dm/dungeonman.h426
1 files changed, 214 insertions, 212 deletions
diff --git a/engines/dm/dungeonman.h b/engines/dm/dungeonman.h
index 704ffa134d..a09abb27d7 100644
--- a/engines/dm/dungeonman.h
+++ b/engines/dm/dungeonman.h
@@ -65,16 +65,222 @@ enum ObjectAllowedSlot {
kDMMaskMouth = 0x0001, // @ MASK0x0001_MOUTH
kDMMaskHead = 0x0002, // @ MASK0x0002_HEAD
kDMMaskNeck = 0x0004, // @ MASK0x0004_NECK
- k0x0008_ObjectAllowedSlotTorso = 0x0008, // @ MASK0x0008_TORSO
- k0x0010_ObjectAllowedSlotLegs = 0x0010, // @ MASK0x0010_LEGS
- k0x0020_ObjectAllowedSlotFeet = 0x0020, // @ MASK0x0020_FEET
- k0x0040_ObjectAllowedSlotQuiverLine_1 = 0x0040, // @ MASK0x0040_QUIVER_LINE1
- k0x0080_ObjectAllowedSlotQuiverLine_2 = 0x0080, // @ MASK0x0080_QUIVER_LINE2
- k0x0100_ObjectAllowedSlotPouchPassAndThroughDoors = 0x0100, // @ MASK0x0100_POUCH_PASS_AND_THROUGH_DOORS
- k0x0200_ObjectAllowedSlotHands = 0x0200, // @ MASK0x0200_HANDS
- k0x0400_ObjectAllowedSlotContainer = 0x0400 // @ MASK0x0400_CONTAINER
+ kDMMaskTorso = 0x0008, // @ MASK0x0008_TORSO
+ kDMMaskLegs = 0x0010, // @ MASK0x0010_LEGS
+ kDMMaskFeet = 0x0020, // @ MASK0x0020_FEET
+ kDMMaskQuiverLine1 = 0x0040, // @ MASK0x0040_QUIVER_LINE1
+ kDMMaskQuiverLine2 = 0x0080, // @ MASK0x0080_QUIVER_LINE2
+ kDMMaskPouchPassAndThroughDoors = 0x0100, // @ MASK0x0100_POUCH_PASS_AND_THROUGH_DOORS
+ kDMMaskHands = 0x0200, // @ MASK0x0200_HANDS
+ kDMMaskContainer = 0x0400, // @ MASK0x0400_CONTAINER
+ kDMMaskFootprints = 0x8000 // @ MASK0x8000_FOOTPRINTS
};
+enum ArmourAttribute {
+ kDMArmourAttributeShield = 0x0080, // @ MASK0x0080_IS_A_SHIELD
+ kDMArmourAttributeSharpDefense = 0x0007 // @ MASK0x0007_SHARP_DEFENSE
+};
+
+enum WeaponClass {
+ kDMWeaponClassNone = -1,
+/* Class 0: SWING weapons */
+ kDMWeaponClassSwingWeapon = 0, // @ C000_CLASS_SWING_WEAPON
+/* Class 1 to 15: THROW weapons */
+ kDMWeaponClassDaggerAndAxes = 2, // @ C002_CLASS_DAGGER_AND_AXES
+ kDMWeaponClassBowAmmunition = 10, // @ C010_CLASS_BOW_AMMUNITION
+ kDMWeaponClassSlingAmmunition = 11, // @ C011_CLASS_SLING_AMMUNITION
+ kDMWeaponClassPoisinDart = 12, // @ C012_CLASS_POISON_DART
+/* Class 16 to 111: SHOOT weapons */
+ kDMWeaponClassFirstBow = 16, // @ C016_CLASS_FIRST_BOW
+ kDMWeaponClassLastBow = 31, // @ C031_CLASS_LAST_BOW
+ kDMWeaponClassFirstSling = 32, // @ C032_CLASS_FIRST_SLING
+ kDMWeaponClassLastSling = 47, // @ C047_CLASS_LAST_SLING
+/* Class 112 to 255: Magic and special weapons */
+ kDMWeaponClassFirstMagicWeapon = 112 // @ C112_CLASS_FIRST_MAGIC_WEAPON
+};
+
+enum TextType {
+ /* Used for text on walls */
+ kDMTextTypeInscription = 0, // @ C0_TEXT_TYPE_INSCRIPTION
+ /* Used for messages displayed when the party walks on a square */
+ kDMTextTypeMessage = 1, // @ C1_TEXT_TYPE_MESSAGE
+ /* Used for text on scrolls and champion information */
+ kDMTextTypeScroll = 2 // @ C2_TEXT_TYPE_SCROLL
+};
+
+enum SquareAspect {
+ kDMSquareAspectElement = 0, // @ C0_ELEMENT
+ kDMSquareAspectFirstGroupOrObject = 1, // @ C1_FIRST_GROUP_OR_OBJECT
+ kDMSquareAspectRightWallOrnOrd = 2, // @ C2_RIGHT_WALL_ORNAMENT_ORDINAL
+ kDMSquareFrontWallOrnOrd = 3, // @ C3_FRONT_WALL_ORNAMENT_ORDINAL
+ kDMSquareAspectLeftWallOrnOrd = 4, // @ C4_LEFT_WALL_ORNAMENT_ORDINAL
+ kDMSquareAspectPitInvisible = 2, // @ C2_PIT_INVISIBLE
+ kDMSquareAspectTeleporterVisible = 2, // @ C2_TELEPORTER_VISIBLE
+ kDMSquareAspectStairsUp = 2, // @ C2_STAIRS_UP
+ kDMSquareAspectDoorState = 2, // @ C2_DOOR_STATE
+ kDMSquareAspectDoorThingIndex = 3, // @ C3_DOOR_THING_INDEX
+ kDMSquareAspectFloorOrn = 4, // @ C4_FLOOR_ORNAMENT_ORDINAL
+};
+
+#define k15_immuneToFire 15 // @ C15_IMMUNE_TO_FIRE
+#define k15_immuneToPoison 15 // @ C15_IMMUNE_TO_POISON
+
+enum TeleporterScope {
+ k0x0001_TelepScopeCreatures = 1, // @ MASK0x0001_SCOPE_CREATURES
+ k0x0002_TelepScopeObjOrParty = 2 // @ MASK0x0002_SCOPE_OBJECTS_OR_PARTY
+};
+
+enum SensorActionType {
+ kM1_SensorEffNone = -1, // @ CM1_EFFECT_NONE
+ k0_SensorEffSet = 0, // @ C00_EFFECT_SET
+ k1_SensorEffClear = 1, // @ C01_EFFECT_CLEAR
+ k2_SensorEffToggle = 2, // @ C02_EFFECT_TOGGLE
+ k3_SensorEffHold = 3, // @ C03_EFFECT_HOLD
+ k10_SensorEffAddExp = 10 // @ C10_EFFECT_ADD_EXPERIENCE
+};
+
+enum SensorType {
+ k0_SensorDisabled = 0, // @ C000_SENSOR_DISABLED /* Never triggered, may be used for a floor or wall ornament */
+ k1_SensorFloorTheronPartyCreatureObj = 1, // @ C001_SENSOR_FLOOR_THERON_PARTY_CREATURE_OBJECT /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k2_SensorFloorTheronPartyCreature = 2, // @ C002_SENSOR_FLOOR_THERON_PARTY_CREATURE /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k3_SensorFloorParty = 3, // @ C003_SENSOR_FLOOR_PARTY /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k4_SensorFloorObj = 4, // @ C004_SENSOR_FLOOR_OBJECT /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k5_SensorFloorPartyOnStairs = 5, // @ C005_SENSOR_FLOOR_PARTY_ON_STAIRS /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k6_SensorFloorGroupGenerator = 6, // @ C006_SENSOR_FLOOR_GROUP_GENERATOR /* Triggered by event F0245_TIMELINE_ProcessEvent5_Square_Corridor */
+ k7_SensorFloorCreature = 7, // @ C007_SENSOR_FLOOR_CREATURE /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k8_SensorFloorPartyPossession = 8, // @ C008_SENSOR_FLOOR_PARTY_POSSESSION /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k9_SensorFloorVersionChecker = 9, // @ C009_SENSOR_FLOOR_VERSION_CHECKER /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
+ k1_SensorWallOrnClick = 1, // @ C001_SENSOR_WALL_ORNAMENT_CLICK /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k2_SensorWallOrnClickWithAnyObj = 2, // @ C002_SENSOR_WALL_ORNAMENT_CLICK_WITH_ANY_OBJECT /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k3_SensorWallOrnClickWithSpecObj = 3, // @ C003_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k4_SensorWallOrnClickWithSpecObjRemoved = 4, // @ C004_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT_REMOVED /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k5_SensorWallAndOrGate = 5, // @ C005_SENSOR_WALL_AND_OR_GATE /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k6_SensorWallCountdown = 6, // @ C006_SENSOR_WALL_COUNTDOWN /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k7_SensorWallSingleProjLauncherNewObj = 7, // @ C007_SENSOR_WALL_SINGLE_PROJECTILE_LAUNCHER_NEW_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k8_SensorWallSingleProjLauncherExplosion = 8, // @ C008_SENSOR_WALL_SINGLE_PROJECTILE_LAUNCHER_EXPLOSION /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k9_SensorWallDoubleProjLauncherNewObj = 9, // @ C009_SENSOR_WALL_DOUBLE_PROJECTILE_LAUNCHER_NEW_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k10_SensorWallDoubleProjLauncherExplosion = 10, // @ C010_SENSOR_WALL_DOUBLE_PROJECTILE_LAUNCHER_EXPLOSION /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k11_SensorWallOrnClickWithSpecObjRemovedRotateSensors = 11, // @ C011_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT_REMOVED_ROTATE_SENSORS /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k12_SensorWallObjGeneratorRotateSensors = 12, // @ C012_SENSOR_WALL_OBJECT_GENERATOR_ROTATE_SENSORS /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k13_SensorWallSingleObjStorageRotateSensors = 13, // @ C013_SENSOR_WALL_SINGLE_OBJECT_STORAGE_ROTATE_SENSORS /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k14_SensorWallSingleProjLauncherSquareObj = 14, // @ C014_SENSOR_WALL_SINGLE_PROJECTILE_LAUNCHER_SQUARE_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k15_SensorWallDoubleProjLauncherSquareObj = 15, // @ C015_SENSOR_WALL_DOUBLE_PROJECTILE_LAUNCHER_SQUARE_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k16_SensorWallObjExchanger = 16, // @ C016_SENSOR_WALL_OBJECT_EXCHANGER /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k17_SensorWallOrnClickWithSpecObjRemovedSensor = 17, // @ C017_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT_REMOVED_REMOVE_SENSOR /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+ k18_SensorWallEndGame = 18, // @ C018_SENSOR_WALL_END_GAME /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
+ k127_SensorWallChampionPortrait = 127 // @ C127_SENSOR_WALL_CHAMPION_PORTRAIT /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
+};
+
+#define k0x8000_randomDrop 0x8000 // @ MASK0x8000_RANDOM_DROP
+
+enum WeaponType {
+ k2_WeaponTypeTorch = 2, // @ C02_WEAPON_TORCH
+ k8_WeaponTypeDagger = 8, // @ C08_WEAPON_DAGGER
+ k9_WeaponTypeFalchion = 9, // @ C09_WEAPON_FALCHION
+ k10_WeaponTypeSword = 10, // @ C10_WEAPON_SWORD
+ k23_WeaponTypeClub = 23, // @ C23_WEAPON_CLUB
+ k24_WeaponTypeStoneClub = 24, // @ C24_WEAPON_STONE_CLUB
+ k27_WeaponTypeArrow = 27, // @ C27_WEAPON_ARROW
+ k28_WeaponTypeSlayer = 28, // @ C28_WEAPON_SLAYER
+ k30_WeaponTypeRock = 30, // @ C30_WEAPON_ROCK
+ k31_WeaponTypePoisonDart = 31, // @ C31_WEAPON_POISON_DART
+ k32_WeaponTypeThrowingStar = 32 // @ C32_WEAPON_THROWING_STAR
+};
+
+enum ArmourType {
+ k30_ArmourTypeWoodenShield = 30, // @ C30_ARMOUR_WOODEN_SHIELD
+ k38_ArmourTypeArmet = 38, // @ C38_ARMOUR_ARMET
+ k39_ArmourTypeTorsoPlate = 39, // @ C39_ARMOUR_TORSO_PLATE
+ k40_ArmourTypeLegPlate = 40, // @ C40_ARMOUR_LEG_PLATE
+ k41_ArmourTypeFootPlate = 41 // @ C41_ARMOUR_FOOT_PLATE
+};
+
+enum PotionType {
+ k3_PotionTypeVen = 3, // @ C03_POTION_VEN_POTION,
+ k6_PotionTypeRos = 6, // @ C06_POTION_ROS_POTION,
+ k7_PotionTypeKu = 7, // @ C07_POTION_KU_POTION,
+ k8_PotionTypeDane = 8, // @ C08_POTION_DANE_POTION,
+ k9_PotionTypeNeta = 9, // @ C09_POTION_NETA_POTION,
+ k10_PotionTypeAntivenin = 10, // @ C10_POTION_ANTIVENIN,
+ k11_PotionTypeMon = 11, // @ C11_POTION_MON_POTION,
+ k12_PotionTypeYa = 12, // @ C12_POTION_YA_POTION,
+ k13_PotionTypeEe = 13, // @ C13_POTION_EE_POTION,
+ k14_PotionTypeVi = 14, // @ C14_POTION_VI_POTION,
+ k15_PotionTypeWaterFlask = 15, // @ C15_POTION_WATER_FLASK,
+ k19_PotionTypeFulBomb = 19, // @ C19_POTION_FUL_BOMB,
+ k20_PotionTypeEmptyFlask = 20 // @ C20_POTION_EMPTY_FLASK,
+};
+
+enum JunkType {
+ k1_JunkTypeWaterskin = 1, // @ C01_JUNK_WATERSKIN,
+ k5_JunkTypeBones = 5, // @ C05_JUNK_BONES,
+ k25_JunkTypeBoulder = 25, // @ C25_JUNK_BOULDER,
+ k33_JunkTypeScreamerSlice = 33, // @ C33_JUNK_SCREAMER_SLICE,
+ k34_JunkTypeWormRound = 34, // @ C34_JUNK_WORM_ROUND,
+ k35_JunkTypeDrumstickShank = 35, // @ C35_JUNK_DRUMSTICK_SHANK,
+ k36_JunkTypeDragonSteak = 36, // @ C36_JUNK_DRAGON_STEAK,
+ k42_JunkTypeMagicalBoxBlue = 42, // @ C42_JUNK_MAGICAL_BOX_BLUE,
+ k43_JunkTypeMagicalBoxGreen = 43, // @ C43_JUNK_MAGICAL_BOX_GREEN,
+ k51_JunkTypeZokathra = 51 // @ C51_JUNK_ZOKATHRA,
+};
+
+#define kM1_soundModeDoNotPlaySound -1 // @ CM1_MODE_DO_NOT_PLAY_SOUND
+#define k0_soundModePlayImmediately 0 // @ C00_MODE_PLAY_IMMEDIATELY
+#define k1_soundModePlayIfPrioritized 1 // @ C01_MODE_PLAY_IF_PRIORITIZED
+#define k2_soundModePlayOneTickLater 2 // @ C02_MODE_PLAY_ONE_TICK_LATER
+
+#define k0_ExplosionType_Fireball 0 // @ C000_EXPLOSION_FIREBALL
+#define k1_ExplosionType_Slime 1 // @ C001_EXPLOSION_SLIME
+#define k2_ExplosionType_LightningBolt 2 // @ C002_EXPLOSION_LIGHTNING_BOLT
+#define k3_ExplosionType_HarmNonMaterial 3 // @ C003_EXPLOSION_HARM_NON_MATERIAL
+#define k4_ExplosionType_OpenDoor 4 // @ C004_EXPLOSION_OPEN_DOOR
+#define k6_ExplosionType_PoisonBolt 6 // @ C006_EXPLOSION_POISON_BOLT
+#define k7_ExplosionType_PoisonCloud 7 // @ C007_EXPLOSION_POISON_CLOUD
+#define k40_ExplosionType_Smoke 40 // @ C040_EXPLOSION_SMOKE
+#define k50_ExplosionType_Fluxcage 50 // @ C050_EXPLOSION_FLUXCAGE
+#define k100_ExplosionType_RebirthStep1 100 // @ C100_EXPLOSION_REBIRTH_STEP1
+#define k101_ExplosionType_RebirthStep2 101 // @ C101_EXPLOSION_REBIRTH_STEP2
+
+enum SquareMask {
+ k0x0001_WallWestRandOrnAllowed = 0x1, // @ MASK0x0001_WALL_WEST_RANDOM_ORNAMENT_ALLOWED
+ k0x0002_WallSouthRandOrnAllowed = 0x2, // @ MASK0x0002_WALL_SOUTH_RANDOM_ORNAMENT_ALLOWED
+ k0x0004_WallEastRandOrnAllowed = 0x4, // @ MASK0x0004_WALL_EAST_RANDOM_ORNAMENT_ALLOWED
+ k0x0008_WallNorthRandOrnAllowed = 0x8, // @ MASK0x0008_WALL_NORTH_RANDOM_ORNAMENT_ALLOWED
+ k0x0008_CorridorRandOrnAllowed = 0x8, // @ MASK0x0008_CORRIDOR_RANDOM_ORNAMENT_ALLOWED
+ k0x0001_PitImaginary = 0x1, // @ MASK0x0001_PIT_IMAGINARY
+ k0x0004_PitInvisible = 0x4, // @ MASK0x0004_PIT_INVISIBLE
+ k0x0008_PitOpen = 0x8, // @ MASK0x0008_PIT_OPEN
+ k0x0004_StairsUp = 0x4, // @ MASK0x0004_STAIRS_UP
+ k0x0008_StairsNorthSouthOrient = 0x8, // @ MASK0x0008_STAIRS_NORTH_SOUTH_ORIENTATION
+ k0x0008_DoorNorthSouthOrient = 0x8, // @ MASK0x0008_DOOR_NORTH_SOUTH_ORIENTATION
+ k0x0004_TeleporterVisible = 0x4, // @ MASK0x0004_TELEPORTER_VISIBLE
+ k0x0008_TeleporterOpen = 0x8, // @ MASK0x0008_TELEPORTER_OPEN
+ k0x0001_FakeWallImaginary = 0x1, // @ MASK0x0001_FAKEWALL_IMAGINARY
+ k0x0004_FakeWallOpen = 0x4, // @ MASK0x0004_FAKEWALL_OPEN
+ k0x0008_FakeWallRandOrnOrFootPAllowed = 0x8, // @ MASK0x0008_FAKEWALL_RANDOM_ORNAMENT_OR_FOOTPRINTS_ALLOWED
+ k0x0010_ThingListPresent = 0x10, // @ MASK0x0010_THING_LIST_PRESENT
+ k0x8000_DecodeEvenIfInvisible = 0x8000 // @ MASK0x8000_DECODE_EVEN_IF_INVISIBLE
+};
+
+enum SquareType {
+ kM2_ChampionElemType = -2, // @ CM2_ELEMENT_CHAMPION
+ kM1_CreatureElemType = -1, // @ CM1_ELEMENT_CREATURE
+ k0_WallElemType = 0, // @ C00_ELEMENT_WALL
+ k1_CorridorElemType = 1, // @ C01_ELEMENT_CORRIDOR
+ k2_PitElemType = 2, // @ C02_ELEMENT_PIT
+ k3_StairsElemType = 3, // @ C03_ELEMENT_STAIRS
+ k4_DoorElemType = 4, // @ C04_ELEMENT_DOOR
+ k5_TeleporterElemType = 5, // @ C05_ELEMENT_TELEPORTER
+ k6_FakeWallElemType = 6, // @ C06_ELEMENT_FAKEWALL
+ k16_DoorSideElemType = 16, // @ C16_ELEMENT_DOOR_SIDE
+ k17_DoorFrontElemType = 17, // @ C17_ELEMENT_DOOR_FRONT
+ k18_StairsSideElemType = 18, // @ C18_ELEMENT_STAIRS_SIDE
+ k19_StairsFrontElemType = 19 // @ C19_ELEMENT_STAIRS_FRONT
+}; // @ C[-2..19]_ELEMENT_...
+
+#define k0x8000_championBones 0x8000 // @ MASK0x8000_CHAMPION_BONES
+#define k0x7FFF_thingType 0x7FFF // @ MASK0x7FFF_THING_TYPE
+
class ObjectInfoIndex {
public:
int16 _type;
@@ -95,11 +301,6 @@ public:
}
}; // @ OBJECT_INFO
-enum ArmourAttribute {
- k0x0080_ArmourAttributeIsAShield = 0x0080, // @ MASK0x0080_IS_A_SHIELD
- k0x0007_ArmourAttributeSharpDefense = 0x0007 // @ MASK0x0007_SHARP_DEFENSE
-};
-
class ArmourInfo {
public:
uint16 _weight;
@@ -114,24 +315,7 @@ public:
void setAttribute(ArmourAttribute attribute) { _attributes |= attribute; }
}; // @ ARMOUR_INFO
-#define kM1_WeaponClassNone -1
-/* Class 0: SWING weapons */
-#define k0_WeaponClassSwingWeapon 0 // @ C000_CLASS_SWING_WEAPON
-/* Class 1 to 15: THROW weapons */
-#define k2_WeaponClassDaggerAndAxes 2 // @ C002_CLASS_DAGGER_AND_AXES
-#define k10_WeaponClassBowAmmunition 10 // @ C010_CLASS_BOW_AMMUNITION
-#define k11_WeaponClassSlingAmmunition 11 // @ C011_CLASS_SLING_AMMUNITION
-#define k12_WeaponClassPoisinDart 12 // @ C012_CLASS_POISON_DART
-/* Class 16 to 111: SHOOT weapons */
-#define k16_WeaponClassFirstBow 16 // @ C016_CLASS_FIRST_BOW
-#define k31_WeaponClassLastBow 31 // @ C031_CLASS_LAST_BOW
-#define k32_WeaponClassFirstSling 32 // @ C032_CLASS_FIRST_SLING
-#define k47_WeaponClassLastSling 47 // @ C047_CLASS_LAST_SLING
-/* Class 112 to 255: Magic and special weapons */
-#define k112_WeaponClassFirstMagicWeapon 112 // @ C112_CLASS_FIRST_MAGIC_WEAPON
-
class WeaponInfo {
-
public:
uint16 _weight;
uint16 _class;
@@ -148,33 +332,6 @@ public:
uint16 getProjectileAspectOrdinal() { return (_attributes >> 8) & 0x1F; } // @ M66_PROJECTILE_ASPECT_ORDINAL
}; // @ WEAPON_INFO
-enum TextType {
- /* Used for text on walls */
- k0_TextTypeInscription = 0, // @ C0_TEXT_TYPE_INSCRIPTION
- /* Used for messages displayed when the party walks on a square */
- k1_TextTypeMessage = 1, // @ C1_TEXT_TYPE_MESSAGE
- /* Used for text on scrolls and champion information */
- k2_TextTypeScroll = 2 // @ C2_TEXT_TYPE_SCROLL
-};
-
-enum SquareAspectIndice {
- k0_ElementAspect = 0, // @ C0_ELEMENT
- k1_FirstGroupOrObjectAspect = 1, // @ C1_FIRST_GROUP_OR_OBJECT
- k2_RightWallOrnOrdAspect = 2, // @ C2_RIGHT_WALL_ORNAMENT_ORDINAL
- k3_FrontWallOrnOrdAspect = 3, // @ C3_FRONT_WALL_ORNAMENT_ORDINAL
- k4_LeftWallOrnOrdAspect = 4, // @ C4_LEFT_WALL_ORNAMENT_ORDINAL
- k2_PitInvisibleAspect = 2, // @ C2_PIT_INVISIBLE
- k2_TeleporterVisibleAspect = 2, // @ C2_TELEPORTER_VISIBLE
- k2_StairsUpAspect = 2, // @ C2_STAIRS_UP
- k2_DoorStateAspect = 2, // @ C2_DOOR_STATE
- k3_DoorThingIndexAspect = 3, // @ C3_DOOR_THING_INDEX
- k4_FloorOrnOrdAspect = 4, // @ C4_FLOOR_ORNAMENT_ORDINAL
- k0x8000_FootprintsAspect = 0x8000 // @ MASK0x8000_FOOTPRINTS
-};
-
-#define k15_immuneToFire 15 // @ C15_IMMUNE_TO_FIRE
-#define k15_immuneToPoison 15 // @ C15_IMMUNE_TO_POISON
-
class CreatureInfo {
public:
byte _creatureAspectIndex;
@@ -220,11 +377,6 @@ public:
byte getType() { return _attributes & 1; }
}; // @ DOOR
-enum TeleporterScope {
- k0x0001_TelepScopeCreatures = 1, // @ MASK0x0001_SCOPE_CREATURES
- k0x0002_TelepScopeObjOrParty = 2 // @ MASK0x0002_SCOPE_OBJECTS_OR_PARTY
-};
-
class Teleporter {
Thing _nextThing;
uint16 _attributes;
@@ -253,47 +405,6 @@ public:
void setVisible(bool visible) { _textDataRef = (_textDataRef & ~1) | (visible ? 1 : 0); }
}; // @ TEXTSTRING
-enum SensorActionType {
- kM1_SensorEffNone = -1, // @ CM1_EFFECT_NONE
- k0_SensorEffSet = 0, // @ C00_EFFECT_SET
- k1_SensorEffClear = 1, // @ C01_EFFECT_CLEAR
- k2_SensorEffToggle = 2, // @ C02_EFFECT_TOGGLE
- k3_SensorEffHold = 3, // @ C03_EFFECT_HOLD
- k10_SensorEffAddExp = 10 // @ C10_EFFECT_ADD_EXPERIENCE
-};
-
-enum SensorType {
- k0_SensorDisabled = 0, // @ C000_SENSOR_DISABLED /* Never triggered, may be used for a floor or wall ornament */
- k1_SensorFloorTheronPartyCreatureObj = 1, // @ C001_SENSOR_FLOOR_THERON_PARTY_CREATURE_OBJECT /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k2_SensorFloorTheronPartyCreature = 2, // @ C002_SENSOR_FLOOR_THERON_PARTY_CREATURE /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k3_SensorFloorParty = 3, // @ C003_SENSOR_FLOOR_PARTY /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k4_SensorFloorObj = 4, // @ C004_SENSOR_FLOOR_OBJECT /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k5_SensorFloorPartyOnStairs = 5, // @ C005_SENSOR_FLOOR_PARTY_ON_STAIRS /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k6_SensorFloorGroupGenerator = 6, // @ C006_SENSOR_FLOOR_GROUP_GENERATOR /* Triggered by event F0245_TIMELINE_ProcessEvent5_Square_Corridor */
- k7_SensorFloorCreature = 7, // @ C007_SENSOR_FLOOR_CREATURE /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k8_SensorFloorPartyPossession = 8, // @ C008_SENSOR_FLOOR_PARTY_POSSESSION /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k9_SensorFloorVersionChecker = 9, // @ C009_SENSOR_FLOOR_VERSION_CHECKER /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
- k1_SensorWallOrnClick = 1, // @ C001_SENSOR_WALL_ORNAMENT_CLICK /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k2_SensorWallOrnClickWithAnyObj = 2, // @ C002_SENSOR_WALL_ORNAMENT_CLICK_WITH_ANY_OBJECT /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k3_SensorWallOrnClickWithSpecObj = 3, // @ C003_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k4_SensorWallOrnClickWithSpecObjRemoved = 4, // @ C004_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT_REMOVED /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k5_SensorWallAndOrGate = 5, // @ C005_SENSOR_WALL_AND_OR_GATE /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k6_SensorWallCountdown = 6, // @ C006_SENSOR_WALL_COUNTDOWN /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k7_SensorWallSingleProjLauncherNewObj = 7, // @ C007_SENSOR_WALL_SINGLE_PROJECTILE_LAUNCHER_NEW_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k8_SensorWallSingleProjLauncherExplosion = 8, // @ C008_SENSOR_WALL_SINGLE_PROJECTILE_LAUNCHER_EXPLOSION /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k9_SensorWallDoubleProjLauncherNewObj = 9, // @ C009_SENSOR_WALL_DOUBLE_PROJECTILE_LAUNCHER_NEW_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k10_SensorWallDoubleProjLauncherExplosion = 10, // @ C010_SENSOR_WALL_DOUBLE_PROJECTILE_LAUNCHER_EXPLOSION /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k11_SensorWallOrnClickWithSpecObjRemovedRotateSensors = 11, // @ C011_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT_REMOVED_ROTATE_SENSORS /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k12_SensorWallObjGeneratorRotateSensors = 12, // @ C012_SENSOR_WALL_OBJECT_GENERATOR_ROTATE_SENSORS /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k13_SensorWallSingleObjStorageRotateSensors = 13, // @ C013_SENSOR_WALL_SINGLE_OBJECT_STORAGE_ROTATE_SENSORS /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k14_SensorWallSingleProjLauncherSquareObj = 14, // @ C014_SENSOR_WALL_SINGLE_PROJECTILE_LAUNCHER_SQUARE_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k15_SensorWallDoubleProjLauncherSquareObj = 15, // @ C015_SENSOR_WALL_DOUBLE_PROJECTILE_LAUNCHER_SQUARE_OBJECT /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k16_SensorWallObjExchanger = 16, // @ C016_SENSOR_WALL_OBJECT_EXCHANGER /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k17_SensorWallOrnClickWithSpecObjRemovedSensor = 17, // @ C017_SENSOR_WALL_ORNAMENT_CLICK_WITH_SPECIFIC_OBJECT_REMOVED_REMOVE_SENSOR /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
- k18_SensorWallEndGame = 18, // @ C018_SENSOR_WALL_END_GAME /* Triggered by event F0248_TIMELINE_ProcessEvent6_Square_Wall */
- k127_SensorWallChampionPortrait = 127 // @ C127_SENSOR_WALL_CHAMPION_PORTRAIT /* Triggered by player click F0275_SENSOR_IsTriggeredByClickOnWall */
-};
-
class Sensor {
Thing _nextThing;
uint16 _datAndType;
@@ -332,22 +443,6 @@ public:
}; // @ SENSOR
-
-#define k0x8000_randomDrop 0x8000 // @ MASK0x8000_RANDOM_DROP
-
-enum WeaponType {
- k2_WeaponTypeTorch = 2, // @ C02_WEAPON_TORCH
- k8_WeaponTypeDagger = 8, // @ C08_WEAPON_DAGGER
- k9_WeaponTypeFalchion = 9, // @ C09_WEAPON_FALCHION
- k10_WeaponTypeSword = 10, // @ C10_WEAPON_SWORD
- k23_WeaponTypeClub = 23, // @ C23_WEAPON_CLUB
- k24_WeaponTypeStoneClub = 24, // @ C24_WEAPON_STONE_CLUB
- k27_WeaponTypeArrow = 27, // @ C27_WEAPON_ARROW
- k28_WeaponTypeSlayer = 28, // @ C28_WEAPON_SLAYER
- k30_WeaponTypeRock = 30, // @ C30_WEAPON_ROCK
- k31_WeaponTypePoisonDart = 31, // @ C31_WEAPON_POISON_DART
- k32_WeaponTypeThrowingStar = 32 // @ C32_WEAPON_THROWING_STAR
-};
class Weapon {
Thing _nextThing;
uint16 _desc;
@@ -375,13 +470,6 @@ public:
void setDoNotDiscard(uint16 val) { _desc = (_desc & ~(1 << 7)) | ((val & 1) << 7); }
}; // @ WEAPON
-enum ArmourType {
- k30_ArmourTypeWoodenShield = 30, // @ C30_ARMOUR_WOODEN_SHIELD
- k38_ArmourTypeArmet = 38, // @ C38_ARMOUR_ARMET
- k39_ArmourTypeTorsoPlate = 39, // @ C39_ARMOUR_TORSO_PLATE
- k40_ArmourTypeLegPlate = 40, // @ C40_ARMOUR_LEG_PLATE
- k41_ArmourTypeFootPlate = 41 // @ C41_ARMOUR_FOOT_PLATE
-};
class Armour {
Thing _nextThing;
uint16 _attributes;
@@ -417,21 +505,6 @@ public:
uint16 getTextStringThingIndex() { return _attributes & 0x3FF; }
}; // @ SCROLL
-enum PotionType {
- k3_PotionTypeVen = 3, // @ C03_POTION_VEN_POTION,
- k6_PotionTypeRos = 6, // @ C06_POTION_ROS_POTION,
- k7_PotionTypeKu = 7, // @ C07_POTION_KU_POTION,
- k8_PotionTypeDane = 8, // @ C08_POTION_DANE_POTION,
- k9_PotionTypeNeta = 9, // @ C09_POTION_NETA_POTION,
- k10_PotionTypeAntivenin = 10, // @ C10_POTION_ANTIVENIN,
- k11_PotionTypeMon = 11, // @ C11_POTION_MON_POTION,
- k12_PotionTypeYa = 12, // @ C12_POTION_YA_POTION,
- k13_PotionTypeEe = 13, // @ C13_POTION_EE_POTION,
- k14_PotionTypeVi = 14, // @ C14_POTION_VI_POTION,
- k15_PotionTypeWaterFlask = 15, // @ C15_POTION_WATER_FLASK,
- k19_PotionTypeFulBomb = 19, // @ C19_POTION_FUL_BOMB,
- k20_PotionTypeEmptyFlask = 20 // @ C20_POTION_EMPTY_FLASK,
-};
class Potion {
public:
Thing _nextThing;
@@ -458,19 +531,6 @@ public:
Thing &getNextThing() { return _nextThing; }
}; // @ CONTAINER
-enum JunkType {
- k1_JunkTypeWaterskin = 1, // @ C01_JUNK_WATERSKIN,
- k5_JunkTypeBones = 5, // @ C05_JUNK_BONES,
- k25_JunkTypeBoulder = 25, // @ C25_JUNK_BOULDER,
- k33_JunkTypeScreamerSlice = 33, // @ C33_JUNK_SCREAMER_SLICE,
- k34_JunkTypeWormRound = 34, // @ C34_JUNK_WORM_ROUND,
- k35_JunkTypeDrumstickShank = 35, // @ C35_JUNK_DRUMSTICK_SHANK,
- k36_JunkTypeDragonSteak = 36, // @ C36_JUNK_DRAGON_STEAK,
- k42_JunkTypeMagicalBoxBlue = 42, // @ C42_JUNK_MAGICAL_BOX_BLUE,
- k43_JunkTypeMagicalBoxGreen = 43, // @ C43_JUNK_MAGICAL_BOX_GREEN,
- k51_JunkTypeZokathra = 51 // @ C51_JUNK_ZOKATHRA,
-};
-
class Junk {
Thing _nextThing;
uint16 _attributes;
@@ -488,11 +548,6 @@ public:
void setNextThing(Thing thing) { _nextThing = thing; }
}; // @ JUNK
-#define kM1_soundModeDoNotPlaySound -1 // @ CM1_MODE_DO_NOT_PLAY_SOUND
-#define k0_soundModePlayImmediately 0 // @ C00_MODE_PLAY_IMMEDIATELY
-#define k1_soundModePlayIfPrioritized 1 // @ C01_MODE_PLAY_IF_PRIORITIZED
-#define k2_soundModePlayOneTickLater 2 // @ C02_MODE_PLAY_ONE_TICK_LATER
-
class Projectile {
public:
Thing _nextThing;
@@ -505,18 +560,6 @@ public:
}; // @ PROJECTILE
-#define k0_ExplosionType_Fireball 0 // @ C000_EXPLOSION_FIREBALL
-#define k1_ExplosionType_Slime 1 // @ C001_EXPLOSION_SLIME
-#define k2_ExplosionType_LightningBolt 2 // @ C002_EXPLOSION_LIGHTNING_BOLT
-#define k3_ExplosionType_HarmNonMaterial 3 // @ C003_EXPLOSION_HARM_NON_MATERIAL
-#define k4_ExplosionType_OpenDoor 4 // @ C004_EXPLOSION_OPEN_DOOR
-#define k6_ExplosionType_PoisonBolt 6 // @ C006_EXPLOSION_POISON_BOLT
-#define k7_ExplosionType_PoisonCloud 7 // @ C007_EXPLOSION_POISON_CLOUD
-#define k40_ExplosionType_Smoke 40 // @ C040_EXPLOSION_SMOKE
-#define k50_ExplosionType_Fluxcage 50 // @ C050_EXPLOSION_FLUXCAGE
-#define k100_ExplosionType_RebirthStep1 100 // @ C100_EXPLOSION_REBIRTH_STEP1
-#define k101_ExplosionType_RebirthStep2 101 // @ C101_EXPLOSION_REBIRTH_STEP2
-
class Explosion {
Thing _nextThing;
uint16 _attributes;
@@ -533,47 +576,6 @@ public:
void setCentered(uint16 val) { _attributes = (_attributes & ~(1 << 7)) | ((val & 1) << 7); }
}; // @ EXPLOSION
-
-enum SquareMask {
- k0x0001_WallWestRandOrnAllowed = 0x1, // @ MASK0x0001_WALL_WEST_RANDOM_ORNAMENT_ALLOWED
- k0x0002_WallSouthRandOrnAllowed = 0x2, // @ MASK0x0002_WALL_SOUTH_RANDOM_ORNAMENT_ALLOWED
- k0x0004_WallEastRandOrnAllowed = 0x4, // @ MASK0x0004_WALL_EAST_RANDOM_ORNAMENT_ALLOWED
- k0x0008_WallNorthRandOrnAllowed = 0x8, // @ MASK0x0008_WALL_NORTH_RANDOM_ORNAMENT_ALLOWED
- k0x0008_CorridorRandOrnAllowed = 0x8, // @ MASK0x0008_CORRIDOR_RANDOM_ORNAMENT_ALLOWED
- k0x0001_PitImaginary = 0x1, // @ MASK0x0001_PIT_IMAGINARY
- k0x0004_PitInvisible = 0x4, // @ MASK0x0004_PIT_INVISIBLE
- k0x0008_PitOpen = 0x8, // @ MASK0x0008_PIT_OPEN
- k0x0004_StairsUp = 0x4, // @ MASK0x0004_STAIRS_UP
- k0x0008_StairsNorthSouthOrient = 0x8, // @ MASK0x0008_STAIRS_NORTH_SOUTH_ORIENTATION
- k0x0008_DoorNorthSouthOrient = 0x8, // @ MASK0x0008_DOOR_NORTH_SOUTH_ORIENTATION
- k0x0004_TeleporterVisible = 0x4, // @ MASK0x0004_TELEPORTER_VISIBLE
- k0x0008_TeleporterOpen = 0x8, // @ MASK0x0008_TELEPORTER_OPEN
- k0x0001_FakeWallImaginary = 0x1, // @ MASK0x0001_FAKEWALL_IMAGINARY
- k0x0004_FakeWallOpen = 0x4, // @ MASK0x0004_FAKEWALL_OPEN
- k0x0008_FakeWallRandOrnOrFootPAllowed = 0x8, // @ MASK0x0008_FAKEWALL_RANDOM_ORNAMENT_OR_FOOTPRINTS_ALLOWED
- k0x0010_ThingListPresent = 0x10, // @ MASK0x0010_THING_LIST_PRESENT
- k0x8000_DecodeEvenIfInvisible = 0x8000 // @ MASK0x8000_DECODE_EVEN_IF_INVISIBLE
-};
-
-enum SquareType {
- kM2_ChampionElemType = -2, // @ CM2_ELEMENT_CHAMPION
- kM1_CreatureElemType = -1, // @ CM1_ELEMENT_CREATURE
- k0_WallElemType = 0, // @ C00_ELEMENT_WALL
- k1_CorridorElemType = 1, // @ C01_ELEMENT_CORRIDOR
- k2_PitElemType = 2, // @ C02_ELEMENT_PIT
- k3_StairsElemType = 3, // @ C03_ELEMENT_STAIRS
- k4_DoorElemType = 4, // @ C04_ELEMENT_DOOR
- k5_TeleporterElemType = 5, // @ C05_ELEMENT_TELEPORTER
- k6_FakeWallElemType = 6, // @ C06_ELEMENT_FAKEWALL
- k16_DoorSideElemType = 16, // @ C16_ELEMENT_DOOR_SIDE
- k17_DoorFrontElemType = 17, // @ C17_ELEMENT_DOOR_FRONT
- k18_StairsSideElemType = 18, // @ C18_ELEMENT_STAIRS_SIDE
- k19_StairsFrontElemType = 19 // @ C19_ELEMENT_STAIRS_FRONT
-}; // @ C[-2..19]_ELEMENT_...
-
-#define k0x8000_championBones 0x8000 // @ MASK0x8000_CHAMPION_BONES
-#define k0x7FFF_thingType 0x7FFF // @ MASK0x7FFF_THING_TYPE
-
class Square {
byte _data;
public: