#pragma once

//-----------------------------------------------------------------------------
//
// Common defines
//
//-----------------------------------------------------------------------------

#define TRUE                1
#define FALSE               0
#define NONE                -1

//-----------------------------------------------------------------------------
//
// Actor types
//
//-----------------------------------------------------------------------------

#define kActor_Player                   20000
#define kActor_WarpPoint                20001
#define kActor_PathPoint                20002
#define kActor_Path                     20003
#define kActor_PointLight               20004
#define kActor_SpotLight                20005
#define kActor_BoxLight                 20006
#define kActor_SunLight                 20007
#define kActor_BlockingVolume           20008
#define kActor_SPStart                  100
#define kActor_DeathmatchStart          1120

#define kActor_Cinematic_Common         75
#define kActor_Cinematic_Primagen       76
#define kActor_Cinematic_Primagen_Tired 77

#define kActor_AI_Raptoid               200
#define kActor_AI_Endtrail              201
#define kActor_AI_CitySoldier           202
#define kActor_AI_Fireborn              203
#define kActor_AI_DeathGuard            401
#define kActor_AI_LordFlesh             402
#define kActor_AI_IceBorn               664
#define kActor_AI_ShockBorn             665
#define kActor_AI_FireBorn_Buddy        669
#define kActor_AI_PrimagenSF            670
#define kActor_AI_Bloodborn             671
#define kActor_AI_Raptor                300
#define kActor_AI_Sentinel              500
#define kActor_AI_Guardian              501
#define kActor_AI_SpiderHatchling       502
#define kActor_AI_SpiderAdult           503
#define kActor_AI_CaveWorm              505
#define kActor_AI_Grub                  511
#define kActor_AI_FleshWorm             512
#define kActor_AI_Warclub               600
#define kActor_AI_Gunner                602
#define kActor_AI_Juggernaut            603
#define kActor_AI_SwampWasp             604
#define kActor_AI_Mite                  707
#define kActor_AI_Worker                708
#define kActor_AI_Drone                 709
#define kActor_AI_Deadman               800
#define kActor_AI_DeadmanHalf           801
#define kActor_AI_DemonWitch            804
#define kActor_AI_QueenPuppet           888
#define kActor_AI_MotherPuppet          889
#define kActor_AI_EliteGuard            902
#define kActor_AI_PrimagenDrone         903
#define kActor_AI_Leaper                1000
#define kActor_AI_MotherBoss            1102
#define kActor_AI_EyeBallBoss           1104
#define kActor_AI_QueenBoss             1105
#define kActor_AI_Primagen              1107
#define kActor_AI_Sphincter             1108
#define kActor_AI_SwampTentacle         1109
#define kActor_AI_CeilingTentacle       1110
#define kActor_AI_QueenPod              1111
#define kActor_AI_MotherGrub            1112

#define kActor_Wpn_Talons               1201
#define kActor_Wpn_Blade                1202
#define kActor_Wpn_Bow                  1203
#define kActor_Wpn_TekBow               1204
#define kActor_Wpn_Pistol               1205
#define kActor_Wpn_Mag60                1206
#define kActor_Wpn_Tranq                1207
#define kActor_Wpn_ChargeDart           1208    
#define kActor_Wpn_Shotgun              1209
#define kActor_Wpn_Shredder             1210
#define kActor_Wpn_PlasmaRifle          1211
#define kActor_Wpn_FireStorm            1212
#define kActor_Wpn_SunfirePod           1213
#define kActor_Wpn_Bore                 1215
#define kActor_Wpn_PFMLayer             1216
#define kActor_Wpn_GrenadeLauncher      1217
#define kActor_Wpn_ScorpionLauncher     1218
#define kActor_Wpn_Harpoon              1300
#define kActor_Wpn_TorpedoLauncher      1301
#define kActor_Wpn_RidingGun            1400
#define kActor_Wpn_FlameThrower         1510
#define kActor_Wpn_RazorWind            1511
#define kActor_Wpn_Nuke                 1512
#define kActor_Wpn_Flare                1513
#define kActor_Wpn_Crossbow_MP          1514
#define kActor_Wpn_ChargeDart_MP        1515
#define kActor_Wpn_FireStorm_MP         1516
#define kActor_Wpn_MachineGun_MP        1517
#define kActor_Wpn_PlasmaRifle_MP       1518
#define kActor_Wpn_Bore_MP              1519
#define kActor_Wpn_RocketLauncher_MP    1520
#define kActor_Wpn_AssaultRifle_MP      1522
#define kActor_Wpn_GrenadeLauncher_MP   1523        
#define kActor_Wpn_RaptorClaws          1524

#define kActor_Misc_Turret              1035

#define kActor_Door_Common              1601
#define kActor_ActionObject_Common      1608
#define kActor_Destructible_Common      1609
#define kActor_ActionObject_Mission     1610
#define kActor_ActionObject_Beacon      1611
#define kActor_ActionObject_Hostage     1612
#define kActor_Cover                    1615
#define kActor_ActionObject_MTentacle   1616
#define kActor_ActionObject_QueenGen    1617    

#define kActor_Totem                    1613

#define kActor_Item_Health2             1701
#define kActor_Item_Health10            1702
#define kActor_Item_HealthFull          1703
#define kActor_Item_HealthUltra         1704
#define kActor_Item_LifeForce1          1705
#define kActor_Item_LifeForce10         1706

#define kActor_Item_HealthMP            1722

#define kActor_Item_Pickup_FragTag      1723

#define kActor_Item_ChargeDartMP        2114
#define kActor_Item_FireStormMP         2115   
#define kActor_Item_AssaultMP           2116
#define kActor_Item_PlasmaMP            2117 
#define kActor_Item_BoreMP              2118
#define kActor_Item_GrenadeMP           2119    
#define kActor_Item_MissileMP           2120
#define kActor_Item_TorpedoMP           2122

#define kActor_Item_WpnWarBlade         2001
#define kActor_Item_WpnBow              2003
#define kActor_Item_WpnTekBow           2002
#define kActor_Item_WpnPistol           2004
#define kActor_Item_WpnMag60            2005
#define kActor_Item_WpnTranq            2006
#define kActor_Item_WpnChargeDart       2007
#define kActor_Item_WpnShotgun          2008
#define kActor_Item_WpnScatter          2009
#define kActor_Item_WpnPlasmaRifle      2010
#define kActor_Item_WpnFireStorm        2011
#define kActor_Item_WpnSunfirePod       2012
#define kActor_Item_WpnCerebralBore     2014
#define kActor_Item_WpnPFMLayer         2015
#define kActor_Item_WpnGrenadeLauncher  2016
#define kActor_Item_WpnMissileLauncher  2017
#define kActor_Item_WpnSpearGun         2100
#define kActor_Item_WpnTorpedoLauncher  2101
#define kActor_Item_WpnFlameThrower     2110
#define kActor_Item_WpnRazorWind        2111
#define kActor_Item_WpnNuke             2112

#define kActor_Item_AmmoArrows          2200
#define kActor_Item_AmmoQuiver          2201
#define kActor_Item_AmmoTekArrows       2202
#define kActor_Item_AmmoQuiverTek       2203
#define kActor_Item_AmmoArrowParticle   2204
#define kActor_Item_AmmoSpearParticle   2205
#define kActor_Item_AmmoTranqDarts      2300
#define kActor_Item_AmmoTranqPack       2301
#define kActor_Item_AmmoCharge          2400
#define kActor_Item_AmmoChargePack      2401
#define kActor_Item_AmmoClip            2500
#define kActor_Item_AmmoBulletBox       2504
#define kActor_Item_AmmoShells          2501
#define kActor_Item_AmmoShellBox        2502
#define kActor_Item_AmmoExpShells       2503
#define kActor_Item_AmmoPlasma          2600
#define kActor_Item_AmmoPlasmaPack      2601
#define kActor_Item_AmmoSunfirePods     2700
#define kActor_Item_AmmoBores           2701
#define kActor_Item_AmmoPFM             2702
#define kActor_Item_AmmoGrenade         2703
#define kActor_Item_AmmoGrenadeBox      2704
#define kActor_Item_AmmoMissiles        2705
#define kActor_Item_AmmoSpears          2800
#define kActor_Item_AmmoTorpedo         2801
#define kActor_Item_AmmoGasTank         3010
#define kActor_Item_AmmoNuke            3011

#define kActor_Action_Common            10000
#define kActor_Misc_MissileController   10001
#define kActor_Misc_BoreController      10002
#define kActor_Misc_BladeController     10003

#define kActor_Misc_JumpPadThingie      50000
#define kActor_Misc_Portal              50100    
#define kActor_Misc_TotemInventory      50101
#define kActor_Misc_CheckPointPortal    20050

#define kActor_Monster_Triceratop       310
#define kActor_Monster_Triceratop_Head  311

//-----------------------------------------------------------------------------
//
// Mission Objective defines
//
//-----------------------------------------------------------------------------

#define kMisObj_SisterOfDispair         16
#define kMisObj_SoulGate                18
#define kMisObj_ThermalVents            21
#define kMisObj_DistressBeacon          31
#define kMisObj_Children                33
#define kMisObj_Prisoners               38
#define kMisObj_QueenEmbryos            44
#define kMisObj_AssemblyPlant           89
#define kMisObj_AmmoFacilities          95
#define kMisObj_PowerGenerator          97
#define kMisObj_MasterComputer          98

//-----------------------------------------------------------------------------
//
// Weapon defines
//
//-----------------------------------------------------------------------------

#define kWpn_Talon              0
#define kWpn_Blade              1
#define kWpn_Bow                2
#define kWpn_TekBow             3
#define kWpn_Pistol             4
#define kWpn_Magnum             5
#define kWpn_Tranq              6
#define kWpn_ChargeDart         7
#define kWpn_Shotgun            8
#define kWpn_Shredder           9
#define kWpn_PlasmaRifle        10
#define kWpn_Firestorm          11
#define kWpn_SunfirePod         12
#define kWpn_Bore               13
#define kWpn_PFM                14
#define kWpn_GrenadeLauncher    15
#define kWpn_MissileLauncher    16
#define kWpn_HarpoonGun         17
#define kWpn_TorpedoLauncher    18
#define kWpn_FlameThrower       19
#define kWpn_RazorWind          20
#define kWpn_Nuke               21
#define kWpn_Flare              22
#define kWpn_RaptorClaws        23
#define kWpn_Crossbow_MP        24
#define kWpn_Plasma_MP          25
#define kWpn_Rocket_MP          26
#define kWpn_ChargeDart_MP      27
#define kWpn_AssaultRifle_MP    28
#define kWpn_Grenade_MP         29
#define kWpn_RidingGun          30
#define kWpn_Firestorm_MP       31
#define kWpn_Bore_MP            32

#define kWpnChar_Crossbow       0
#define kWpnChar_ChargeDart     1
#define kWpnChar_Firestorm      2
#define kWpnChar_AssaultRifle   3
#define kWpnChar_PFM            4
#define kWpnChar_Bore           5
#define kWpnChar_Grenade        6
#define kWpnChar_Missile        7
#define kWpnChar_Harpoon        8
#define kWpnChar_Torpedo        9
#define kWpnChar_Pistol         10
#define kWpnChar_FlameThrower   11
#define kWpnChar_Mag60          12
#define kWpnChar_Nuke           13
#define kWpnChar_RazorWind      14
#define kWpnChar_Shotgun        15
#define kWpnChar_Shredder       16
#define kWpnChar_Blade          17

//-----------------------------------------------------------------------------
//
// Level defines
//
//-----------------------------------------------------------------------------

#define kLevel_Hub                  60
#define kLevel_HubCinemaic          43

#define kLevel_AdonOblivion         41

#define kLevel_PortOfAdia_1         51
#define kLevel_PortOfAdia_2         52
#define kLevel_PortOfAdia_3         53
#define kLevel_PortOfAdia_4         54
#define kLevel_PortOfAdia_5         55
#define kLevel_PortOfAdia_6         56
#define kLevel_PortOfAdia_7         57
#define kLevel_PortOfAdia_8         58
#define kLevel_PortOfAdia_9         59

#define kLevel_DeathMarsh_1         61
#define kLevel_DeathMarsh_2         62
#define kLevel_DeathMarsh_3         63
#define kLevel_DeathMarsh_4         64
#define kLevel_DeathMarsh_5         65
#define kLevel_DeathMarsh_6         66
#define kLevel_DeathMarsh_7         67
#define kLevel_DeathMarsh_8         68
#define kLevel_DeathMarsh_9         69
#define kLevel_DeathMarsh_10        70
#define kLevel_DeathMarsh_11        71

#define kLevel_Hive_1               84
#define kLevel_Hive_2               85
#define kLevel_Hive_3               86
#define kLevel_Hive_4               87
#define kLevel_Hive_5               88
#define kLevel_Hive_6               89
#define kLevel_Hive_7               90
#define kLevel_Hive_8               91
#define kLevel_Hive_9               93
#define kLevel_Hive_10              94
#define kLevel_Hive_11              95
#define kLevel_Hive_12              96
#define kLevel_Hive_13              92
#define kLevel_HiveTop              124

#define kLevel_BlindLair_1          98    
#define kLevel_BlindLair_2          99
#define kLevel_BlindLair_3          100
#define kLevel_BlindLair_4          101
#define kLevel_BlindLair_5          102
#define kLevel_BlindLair_6          103
#define kLevel_BlindLair_7          104
#define kLevel_BlindLair_8          105
#define kLevel_BlindLair_9          106
#define kLevel_BlindLair_10         107
#define kLevel_BlindLair_11         108

#define kLevel_Lightship_1          114    
#define kLevel_Lightship_2          115
#define kLevel_Lightship_3          116
#define kLevel_Lightship_4          117
#define kLevel_Lightship_5          118
#define kLevel_Lightship_6          119
#define kLevel_Lightship_7          120
#define kLevel_Lightship_8          121
#define kLevel_Lightship_9          122
#define kLevel_Lightship_10         123

#define kLevel_RiverOfSouls_1       125
#define kLevel_RiverOfSouls_2       126
#define kLevel_RiverOfSouls_3       127
#define kLevel_RiverOfSouls_4       128
#define kLevel_RiverOfSouls_5       129
#define kLevel_RiverOfSouls_6       130
#define kLevel_RiverOfSouls_7       131
#define kLevel_RiverOfSouls_8       132
#define kLevel_RiverOfSouls_9       133
#define kLevel_RiverOfSouls_10      134
#define kLevel_RiverOfSouls_11      135

#define kLevel_PortOfAdia_T         72
#define kLevel_RiverOfSouls_T       73
#define kLevel_DeathMarsh_T         74
#define kLevel_BlindLair_T          75    
#define kLevel_Hive_T               76
#define kLevel_LightShip_T          77

#define kLevel_PortOfAdia_OBL       78    
#define kLevel_RiverOfSouls_OBL     79
#define kLevel_DeathMarsh_OBL       80
#define kLevel_BlindLair_OBL        81    
#define kLevel_Hive_OBL             82
#define kLevel_LightShip_OBL        83

#define kLevel_PortOfAdia_Totem     109
#define kLevel_RiverOfSouls_Totem   110
#define kLevel_DeathMarsh_Totem     111
#define kLevel_BlindLair_Totem      112
#define kLevel_Hive_Totem           113

#define kLevel_BlindOneBoss         1
#define kLevel_QueenBoss            2
#define kLevel_MotherBoss           3
#define kLevel_PrimagenBoss         4

#define kLevel_AcclaimLogo          143
#define kLevel_Regeneration         145
#define kLevel_Iggy                 44   

#define kLevel_MP_Experimentata      200
#define kLevel_MP_Moonlit_Mayhem     201
#define kLevel_MP_Endangered_species 202
#define kLevel_MP_Vulcans_Forge      203
#define kLevel_MP_Teleportastic      204
#define kLevel_MP_MirrorrorriM       205
#define kLevel_MP_Fish_in_a_barrel   206
#define kLevel_MP_H_2_Whoa           207
#define kLevel_MP_Escheria           208
#define kLevel_MP_Mosh_crypt         209
#define kLevel_MP_Squares_Cubed      210
#define kLevel_MP_Crazy_Eight        211
#define kLevel_MP_Bullseye           212
#define kLevel_MP_Madhouse           213
#define klevel_MP_City4              214
#define kLevel_MP_City5              215
#define kLevel_MP_Marshes5           216
#define kLevel_MP_Harbor9            217
#define kLevel_MP_Cavern1            500
#define kLevel_MP_OblivionDM         501


#define kLevel_Level1Intro_1        50
#define kLevel_Level1Intro_2        47

#define kLevel_Ending               10
#define kLevel_EndingB              11

#define kLevel_SaveHub              97

#define kLevel_PrimagenCinematic    218
//FossilCavern//

#define kLevel_Fossil_Cavern        220

//-----------------------------------------------------------------------------
//
// Hub defines
//
//-----------------------------------------------------------------------------

#define kHub_GameStart                      0       // automatically loaded when application starts
#define kHub_PortOfAdia_Intro               1       // loaded when selecting a new game    
#define kHub_RiverOfSouls_Intro             2
#define kHub_DeathMarshes_Intro             3
#define kHub_LairOfTheBlindOnes_Intro       4
#define kHub_HiveOfMantis_Intro             5
#define kHub_LightShip_Intro                6
#define kHub_PortOfAdia                     7
#define kHub_RiverOfSouls                   8
#define kHub_DeathMarshes                   9
#define kHub_LairOfTheBlindOnes             10
#define kHub_HiveOfMantis                   11
#define kHub_LightShip                      12
#define kHub_Main                           13
#define kHub_Cinematics                     14 
#define kHub_Multiplayer                    15

//-----------------------------------------------------------------------------
//
// Special particle types
//
//-----------------------------------------------------------------------------

#define kParticle_TekArrow          2
#define kParticle_TranqDart         3
#define kParticle_ChargeDart        4
#define kParticle_Bullet            5
#define kParticle_MagnumBullet      6
#define kParticle_ShotgunBullet     7
#define kParticle_ExpShotgunBullet  8
#define kParticle_PlasmaShot        9
#define kParticle_Bore              11    
#define kParticle_PFM               12
#define kParticle_Grenade           13
#define kParticle_Missile           14
#define kParticle_Spear             15
#define kParticle_ScatterRound      19
#define kParticle_FlameThrower      20
#define kParticle_Nuke              21
#define kParticle_Arrow             86
#define kParticle_Flare             95
#define kParticle_RazorWind         104
#define kParticle_ExpScatterRound   257
#define kParticle_PlasmaSnipe       272
#define kParticle_TekArrowSnipe     273
#define kParticle_MotherRock1       274
#define kParticle_MotherItemFlash   285
#define kParticle_ArrowSnipe        294
#define kParticle_TotemBeam         380

//-----------------------------------------------------------------------------
//
// Voice defines
//
//-----------------------------------------------------------------------------
#define kVoice_SaveTotem            386
#define kVoice_10Lives              1010
#define kVoice_9Lives               1009
#define kVoice_8Lives               1008
#define kVoice_7Lives               1007
#define kVoice_6Lives               1006
#define kVoice_5Lives               1005
#define kVoice_4Lives               1004
#define kVoice_3Lives               1003
#define kVoice_2Lives               1002
#define kVoice_1Lives               1001
#define kVoice_Weapon01             310
#define kVoice_Weapon02             311
#define kVoice_Weapon03             312
#define kVoice_Weapon04             313
#define kVoice_Weapon05             314
#define kVoice_Weapon06             315
#define kVoice_Weapon07             316
#define kVoice_Weapon08             317
#define kVoice_Weapon09             318
#define kVoice_Weapon10             319
#define kVoice_Weapon11             320
#define kVoice_Weapon12             321
#define kVoice_Weapon13             322
#define kVoice_Weapon14             323
#define kVoice_Weapon15             324
#define kVoice_Weapon16             325
#define kVoice_Weapon17             326
#define kVoice_Weapon18             327
#define kVoice_Weapon19             328
#define kVoice_Weapon20             329
#define kVoice_Weapon21             330
#define kVoice_Weapon22             331
#define kVoice_Weapon23             332
#define kVoice_Weapon24             333
#define kVoice_Weapon25             334
#define kVoice_Flashlight           335
#define kVoice_EagleFeather         336
#define kVoice_NukePart             4500
#define kVoice_FullHealth           340
#define kVoice_UltraHealth          341

//-----------------------------------------------------------------------------
//
// SFX defines
//
//-----------------------------------------------------------------------------
#define kSfx_Mother_SproutLimb      10105
#define kSfx_Eye_Explode            10318
#define kSfx_Eye_Scream             10319
#define kSfx_Primagen_Laugh1        15117
#define kSfx_Primagen_Laugh2        15118
#define kSfx_Primagen_Laugh3        15119
#define kSfx_Primagen_Laugh4        15120
#define kSfx_Primagen_Taunt1        15100
#define kSfx_Primagen_Taunt2        15106
#define kSfx_Primagen_Taunt3        15107
#define kSfx_Primagen_Taunt4        15108
#define kSfx_Primagen_Taunt5        15109
#define kSfx_Primagen_Taunt6        15110
#define kSfx_Primagen_Taunt7        15112
#define kSfx_Primagen_Taunt8        15113
#define kSfx_Primagen_Angry1        15101    
#define kSfx_Primagen_Angry2        15102
#define kSfx_Primagen_Intro1        15104
#define kSfx_Primagen_Intro2        15105  
#define kSfx_Primagen_Regen         15137  

//-----------------------------------------------------------------------------
//
// Multiplayer projectile particles
//
//-----------------------------------------------------------------------------

//
// As Stephen Broumely has mentioned a few times in the original
// source code, you can thank Thomas Coles for these wonderful, descriptive names....
//
// Kaiser's note: I am too lazy to go through and properly rename these so
// the names stay the way they are!
//
#define kParticle_Multiplayer1      295
#define kParticle_Multiplayer2      296
#define kParticle_Multiplayer3      297
#define kParticle_Multiplayer4      298
#define kParticle_Multiplayer5      299
#define kParticle_Multiplayer6      300
#define kParticle_Multiplayer7      301
#define kParticle_Multiplayer8      302
#define kParticle_Multiplayer9      303
#define kParticle_Multiplayer10     304
#define kParticle_Multiplayer11     305
#define kParticle_Multiplayer12     306
#define kParticle_Multiplayer13     307
#define kParticle_Multiplayer14     308
#define kParticle_Multiplayer15     309
#define kParticle_Multiplayer16     310
#define kParticle_Multiplayer17     311
#define kParticle_Multiplayer18     312
#define kParticle_Multiplayer19     313
#define kParticle_Multiplayer20     314
#define kParticle_Multiplayer21     315
#define kParticle_Multiplayer22     316
#define kParticle_Multiplayer23     317
#define kParticle_Multiplayer24     318
#define kParticle_Multiplayer25     319
#define kParticle_Multiplayer26     320
#define kParticle_Multiplayer27     321
#define kParticle_Multiplayer28     322
#define kParticle_Multiplayer39     323
#define kParticle_Multiplayer30     324
#define kParticle_Multiplayer31     325
#define kParticle_Multiplayer32     326
#define kParticle_Multiplayer33     327
