/* -------------------------------------------------------------------------------- Duke Nukem 3D GAME.CON file. By Todd Replogle (c) 1996 3D Realms Entertainment -------------------------------------------------------------------------------- IMPORTANT NOTICE IF YOU USE MODIFIED .CON FILES If you are playing a MULTIPLAY game (Dukematch or Co-op) and you are using *modified* .CON files (USER.CON, GAME.CON, DEFS.CON), then each multiplayer must be using the EXACT SAME .CON files, or the game will get out of sync and/or develop interesting problems. 3D Realms encourages you to experiment freely with the parameters contained in this file, and to share your discoveries with the rest of the world. However, BE ADVISED that 3D Realms does NOT offer any technical support on how to use this file or other user-modifiable features of this game. Do NOT call 3D Realms or Apogee Software for advice or help with this subject. You make modifications to this and other files at your own risk. It is recommended that you first make a backup copy of this, or any .CON files before making any changes. -------------------------------------------------------------------------------- */ include DEFS.CON include USER.CON state genericshrunkcode ifcount 32 { ifpdistl SQUISHABLEDISTANCE pstomp } else { sizeto 9 8 spawn FRAMEEFFECT1 } ends move SHUTTLEVELS 16 actor SPACESHUTTLE TOUGH // ifmove 0 { move SHUTTLEVELS getv geth } enda actor SATELLITE TOUGH // ifmove 0 { move SHUTTLEVELS getv geth } // ifcount 120 move SHUTTLEVELS getv geth randomangle enda action ASHARKCRUZING 0 8 5 1 24 action ASHARKFLEE 0 8 5 1 10 action ASHARKATACK 0 8 5 1 6 action ASHARKSHRUNK 0 8 5 1 24 action ASHARKFROZEN 0 1 5 1 24 move SHARKVELS 24 move SHARKFASTVELS 72 move SHARKFLEEVELS 40 actor SHARK SHARKSTRENGTH ASHARKCRUZING SHARKVELS randomangle geth ifaction ASHARKSHRUNK { ifcount SHRUNKDONECOUNT action ASHARKCRUZING else ifcount SHRUNKCOUNT sizeto 24 24 else state genericshrunkcode } else ifaction ASHARKFROZEN { fall ifcount THAWTIME { action ASHARKFLEE getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } lotsofglass 30 sound GLASS_BREAKING killit } else ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } else ifaction ASHARKFLEE { ifcount 16 ifrnd 48 { action ASHARKCRUZING move SHARKVELS randomangle geth } } else ifaction ASHARKCRUZING { ifcansee ifcount 48 ifrnd 2 { action ASHARKATACK move SHARKFASTVELS faceplayerslow getv break } ifcount 32 ifnotmoving { ifrnd 128 move SHARKVELS randomangle geth else move SHARKFASTVELS randomangle geth } } else ifaction ASHARKATACK { ifcount 4 { ifpdistl 1280 { ifp palive ifcanshoottarget { sound DUKE_GRUNT palfrom 32 32 addphealth SHARKBITESTRENGTH } action ASHARKFLEE move SHARKFLEEVELS fleeenemy } } else ifnotmoving { ifcount 32 { action ASHARKCRUZING move SHARKVELS randomangle geth } } else ifcount 48 ifrnd 2 { action ASHARKCRUZING move SHARKFASTVELS randomangle geth } } ifhitweapon { ifdead { sound SQUISHED guts JIBS6 5 killit } else { ifwasweapon SHRINKSPARK { action ASHARKSHRUNK sound ACTOR_SHRINKING } else ifwasweapon FREEZEBLAST { action ASHARKFROZEN sound SOMETHINGFROZE move 0 } else move SHARKVELS randomangle geth } } enda action BLIMPWAITTORESPAWN state blimphitstate cstat 0 spawn FIRSTGUNSPRITE spawn EXPLOSION2 debris SCRAP1 40 // Weapons and ammo! debris SCRAP2 32 debris SCRAP3 32 debris SCRAP4 32 debris SCRAP5 32 sound PIPEBOMB_EXPLODE ifrespawn { action BLIMPRESPAWNTIME move 0 cstat 32768 } else killit ends actor BLIMP 1 ifaction BLIMPWAITTORESPAWN { ifcount RESPAWNACTORTIME { action 0 cstat 0 move 0 } break } ifhitweapon { ifwasweapon RADIUSEXPLOSION state blimphitstate ifwasweapon RPG state blimphitstate strength 1 } enda state rats ifrnd 128 spawn RAT ifrnd 128 spawn RAT ifrnd 128 spawn RAT ifrnd 128 spawn RAT ifrnd 128 spawn RAT ifrnd 128 spawn RAT ifrnd 128 spawn RAT ifrnd 128 spawn RAT ends move RESPAWN_ACTOR_FLAG action RUBCANDENT 1 1 1 1 1 action RUBCAN actor RUBBERCAN WEAK ifaction RUBCANDENT { ifactioncount 16 { strength 0 action RUBCAN break } } else ifhitweapon { ifwasweapon RADIUSEXPLOSION { state rats ifrnd 48 spawn BURNING debris SCRAP3 12 killit } else action RUBCANDENT } enda state headhitstate // Unrem the following line to involving screen tilting during // low player hitpoint damage. // wackplayer ends action EXPBARRELFRAME 0 2 1 1 15 actor EXPLODINGBARREL 26 fall ifaction EXPBARRELFRAME { ifactioncount 2 { hitradius 1024 WEAKEST WEAK MEDIUMSTRENGTH TOUGH spawn EXPLOSION2 debris SCRAP2 2 sound PIPEBOMB_EXPLODE killit } break } ifsquished { debris SCRAP1 5 killit break } ifhitweapon action EXPBARRELFRAME enda action BURNING_FLAME 0 12 1 1 2 move BURNING_VELS state burningstate ifgapzl 16 break ifpdistg 10240 break ifcount 128 { ifspawnedby TIRE { ifactioncount 512 { sizeto 16 16 killit } ifrnd 16 sizeto 64 48 } else { sizeto 8 8 sizeto 8 8 ifactioncount 192 killit } } else { ifmove 0 move BURNING_VELS ifspawnedby BOX { sizeto 32 32 ifcount 32 { spawn SMALLSMOKE killit } } else ifspawnedby TREE1 sizeto 96 96 else ifspawnedby TREE2 sizeto 96 96 else ifspawnedby APLAYER { sizeto 40 40 sizeto 40 40 } else sizeto 52 52 ifp palive ifpdistl 844 ifrnd 32 ifcansee { soundonce DUKE_LONGTERM_PAIN addphealth -1 palfrom 24 16 } } ends actor BURNING WEAK BURNING_FLAME state burningstate enda actor BURNING2 WEAK BURNING_FLAME state burningstate enda action TOILETWATERFRAMES 0 4 1 1 1 actor TOILETWATER 0 TOILETWATERFRAMES ifpdistl 8192 { soundonce WATER_GURGLE ifspawnedby TOILET sizeto 34 34 else { ifspawnedby WATERFOUNTAINBROKE sizeto 6 15 else ifspawnedby TOILETWATER { } else sizeto 24 32 } ifp palive ifpdistl RETRIEVEDISTANCE ifp pfacing ifactioncount 32 ifphealthl MAXPLAYERHEALTH ifhitspace ifcansee { addphealth 1 globalsound DUKE_DRINKING resetactioncount } } enda action WOODENHORSEFRAME 0 1 4 action WOODENFALLFRAME 122 1 5 actor HORSEONSIDE WEAKEST cactor WOODENHORSE action WOODENFALLFRAME enda actor WOODENHORSE WEAK WOODENHORSEFRAME fall ifhitweapon { ifdead { debris SCRAP1 4 debris SCRAP2 3 killit } else action WOODENFALLFRAME } enda state steamcode ifpdistl 8192 soundonce STEAM_HISSING ifcount 20 { resetcount ifp palive ifpdistl 1024 { addphealth -1 palfrom 16 16 } } else { ifspawnedby STEAM break ifspawnedby CEILINGSTEAM break sizeto 24 24 } ends action STEAMFRAMES 0 5 1 1 1 actor STEAM 0 STEAMFRAMES state steamcode enda actor CEILINGSTEAM 0 STEAMFRAMES state steamcode enda actor WATERBUBBLEMAKER 0 0 randomangle ifpdistl 3084 ifrnd 24 spawn WATERBUBBLE enda action BUBBLE action CRACKEDBUBBLE 1 move BUBMOVE -10 -36 move BUBMOVEFAST -10 -52 actor WATERBUBBLE 0 BUBBLE BUBMOVE getv geth randomangle ifaction CRACKEDBUBBLE { ifinwater ifrnd 192 killit ifactioncount 7 killit } else { ifcount 4 { ifrnd 192 move BUBMOVE getv geth randomangle else move BUBMOVEFAST getv geth randomangle resetcount } ifonwater { iffloordistl 8 action CRACKEDBUBBLE } else ifactioncount 40 action CRACKEDBUBBLE } enda move SMOKEVEL 8 -16 move ENGINE_SMOKE 64 -64 move SMOKESHOOTOUT -192 action SMOKEFRAMES 0 4 1 1 10 actor SMALLSMOKE 0 SMOKEFRAMES ifmove 0 { ifspawnedby RECON move SMOKESHOOTOUT geth else ifspawnedby SECTOREFFECTOR move ENGINE_SMOKE geth getv else move SMOKEVEL geth getv faceplayer ifspawnedby RPG cstat 2 } ifpdistl 1596 ifspawnedby RPG killit ifactioncount 4 killit enda action BARREL_DENTING 2 2 1 1 6 action BARREL_DENTED 1 action BARREL_DENTED2 2 move SPAWNED_BLOOD actor NUKEBARRELDENTED WEAK cactor NUKEBARREL action BARREL_DENTED enda actor NUKEBARRELLEAKED WEAK cactor NUKEBARREL action BARREL_DENTED2 enda actor NUKEBARREL MEDIUMSTRENGTH ifsquished { debris SCRAP1 32 spawn BLOODPOOL spawn OOZ killit } fall ifaction BARREL_DENTING { ifactioncount 2 { debris SCRAP1 10 ifrnd 2 spawn BLOODPOOL killit } } else ifhitweapon { ifdead { sound VENT_BUST ifrnd 128 spawn BLOODPOOL action BARREL_DENTING } else { ifaction 0 action BARREL_DENTED else ifaction BARREL_DENTED { action BARREL_DENTED2 spawn BLOODPOOL } else ifaction BARREL_DENTED2 action BARREL_DENTING } } enda state burningbarrelcode fall ifcount 32 { resetcount ifp palive ifpdistl 1480 ifp phigher { addphealth -1 palfrom 16 16 ifrnd 96 sound DUKE_LONGTERM_PAIN } } ifhitweapon { sound VENT_BUST debris SCRAP1 10 ifrnd 128 spawn BURNING else spawn BURNING2 killit } ends actor FIREBARREL state burningbarrelcode enda actor FIREVASE state burningbarrelcode enda action SHRINKERFRAMES 0 4 1 1 10 actor SHRINKEREXPLOSION 0 SHRINKERFRAMES ifactioncount 4 killit enda action EXPLOSION_FRAMES 0 20 1 1 4 actor EXPLOSION2 1 EXPLOSION_FRAMES ifactioncount 20 killit enda actor EXPLOSION2BOT 1 EXPLOSION_FRAMES ifactioncount 20 killit enda action FFLAME_FR 0 16 1 1 1 action FFLAME 0 1 1 1 1 actor FLOORFLAME 0 FFLAME_FR ifaction FFLAME_FR { ifpdistl 1024 hitradius 1024 WEAKEST WEAKEST WEAKEST WEAKEST ifactioncount 16 action FFLAME } ifaction FFLAME ifrnd 4 { action FFLAME_FR sound CAT_FIRE resetactioncount } enda action ASATNSPIN 0 5 1 1 4 action ASATSHOOTING -10 3 5 1 40 action ASATWAIT 0 1 5 1 1 move TURRVEL actor ROTATEGUN ROTTURRETSTRENGTH // ASATSHOOTING TURRVEL faceplayer ifaction 0 { action ASATSHOOTING move TURRVEL faceplayer } else ifaction ASATNSPIN { ifactioncount 32 { action ASATWAIT move TURRVEL faceplayer } } else ifaction ASATSHOOTING { ifactioncount 12 { ifrnd 32 action ASATWAIT } ifcount 32 resetcount else ifcount 16 { ifcount 17 { } else { sound PRED_ATTACK shoot FIRELASER } } else ifcount 4 { ifcount 5 { } else { ifcansee ifcanshoottarget { sound PRED_ATTACK shoot FIRELASER } } } } else ifaction ASATWAIT { ifactioncount 64 ifrnd 32 ifp palive ifcansee { action ASATSHOOTING move TURRVEL faceplayer } } ifhitweapon { ifdead { addkills 1 sound LASERTRIP_EXPLODE debris SCRAP1 15 spawn EXPLOSION2 killit } else { action ASATNSPIN debris SCRAP1 4 } move 0 } enda action RIP_F 0 8 1 1 1 actor FORCERIPPLE 0 RIP_F ifactioncount 8 killit enda action TRANSFOWARD 0 6 1 1 2 action TRANSBACK 5 6 1 -1 2 actor TRANSPORTERSTAR 0 TRANSFOWARD ifaction TRANSFOWARD { ifactioncount 6 action TRANSBACK } else ifactioncount 6 killit enda action BEAMFOWARD 0 4 1 1 9 actor TRANSPORTERBEAM 0 BEAMFOWARD sizeto 32 64 sizeto 32 64 sizeto 32 64 ifactioncount 4 killit enda state getcode ifactor ATOMICHEALTH globalsound GETATOMICHEALTH else globalsound DUKE_GET palfrom 16 0 32 ifrespawn { move RESPAWN_ACTOR_FLAG spawn RESPAWNMARKERRED cstat 32768 } else killit ends state randgetweapsnds ifrnd 64 globalsound DUKE_GETWEAPON1 else ifrnd 96 globalsound DUKE_GETWEAPON2 else ifrnd 128 globalsound DUKE_GETWEAPON3 else ifrnd 140 globalsound DUKE_GETWEAPON4 else globalsound DUKE_GETWEAPON6 ends state getweaponcode state randgetweapsnds palfrom 32 0 32 ifgotweaponce 1 break ifrespawn { move RESPAWN_ACTOR_FLAG spawn RESPAWNMARKERRED cstat 32768 } else killit ends state respawnit ifcount RESPAWNITEMTIME { spawn TRANSPORTERSTAR move 0 cstat 0 sound TELEPORTER } ends state quikget ifactor ATOMICHEALTH globalsound GETATOMICHEALTH else globalsound DUKE_GET palfrom 16 0 32 killit ends state quikweaponget state randgetweapsnds palfrom 32 0 32 ifgotweaponce 1 break killit ends actor STEROIDS fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_STEROIDS STEROID_AMOUNT ifcanseetarget { addinventory GET_STEROIDS STEROID_AMOUNT quote 37 state getcode ifspawnedby STEROIDS state getcode else state quikget } enda actor HEATSENSOR fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_HEATS HEAT_AMOUNT ifcanseetarget { addinventory GET_HEATS HEAT_AMOUNT quote 101 state getcode ifspawnedby HEATSENSOR state getcode else state quikget } enda actor BOOTS fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_BOOTS BOOT_AMOUNT ifcanseetarget { addinventory GET_BOOTS BOOT_AMOUNT quote 6 ifspawnedby BOOTS state getcode else state quikget } enda actor SHIELD fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_SHIELD SHIELD_AMOUNT ifcanseetarget { ifspawnedby PIGCOP { ifrnd 128 addinventory GET_SHIELD PIG_SHIELD_AMOUNT1 else addinventory GET_SHIELD PIG_SHIELD_AMOUNT2 quote 104 sound KICK_HIT palfrom 24 0 32 killit } else addinventory GET_SHIELD SHIELD_AMOUNT quote 38 ifspawnedby SHIELD state getcode else state quikget } enda actor AIRTANK fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_SCUBA SCUBA_AMOUNT ifcanseetarget { addinventory GET_SCUBA SCUBA_AMOUNT quote 39 state getcode ifspawnedby AIRTANK state getcode else state quikget } enda action HOLODUKE_FRAMES 0 4 1 1 8 actor HOLODUKE 0 HOLODUKE_FRAMES fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_HOLODUKE HOLODUKE_AMOUNT ifcanseetarget { addinventory GET_HOLODUKE HOLODUKE_AMOUNT quote 51 state getcode ifspawnedby HOLODUKE state getcode else state quikget } enda actor JETPACK fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifpinventory GET_JETPACK JETPACK_AMOUNT ifcanseetarget { addinventory GET_JETPACK JETPACK_AMOUNT quote 41 state getcode ifspawnedby JETPACK state getcode else state quikget } enda actor ACCESSCARD fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifpinventory GET_ACCESS 0 break addinventory GET_ACCESS 1 quote 43 state getcode } enda // test boss_recod actor AMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget { addammo PISTOL_WEAPON PISTOLAMMOAMOUNT quote 65 ifspawnedby AMMO state getcode else state quikget } enda actor FREEZEAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget { addammo FREEZE_WEAPON FREEZEAMMOAMOUNT quote 66 ifspawnedby FREEZEAMMO state getcode else state quikget } enda actor SHOTGUNAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget { addammo SHOTGUN_WEAPON SHOTGUNAMMOAMOUNT quote 69 ifspawnedby SHOTGUNAMMO state getcode else state quikget } enda actor AMMOLOTS fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget { addammo PISTOL_WEAPON 48 quote 65 ifspawnedby AMMOLOTS state getcode else state quikget } enda actor CRYSTALAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { addammo SHRINKER_WEAPON CRYSTALAMMOAMOUNT quote 78 ifspawnedby CRYSTALAMMO state getcode else state quikget } enda actor BATTERYAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { addammo CHAINGUN_WEAPON CHAINGUNAMMOAMOUNT quote 63 ifspawnedby BATTERYAMMO state getcode else state quikget } enda actor DEVISTATORAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { addammo DEVISTATOR_WEAPON DEVISTATORAMMOAMOUNT quote 14 ifspawnedby DEVISTATORAMMO state getcode else state quikget } enda actor RPGAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { addammo RPG_WEAPON RPGAMMOBOX quote 64 ifspawnedby RPGAMMO state getcode else state quikget } enda actor HBOMBAMMO fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break // ( Multiplayer (mode 3) only ) addweapon HANDBOMB_WEAPON 1 quote 55 addammo HANDBOMB_WEAPON HANDBOMBBOX ifspawnedby HBOMBAMMO state getweaponcode else state quikweaponget } enda actor RPGSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break // ( Multiplayer (mode 3) only ) addweapon RPG_WEAPON RPGAMMOBOX quote 56 ifspawnedby RPGSPRITE state getweaponcode else state quikweaponget } enda // 531.89 GTE. // IMA. // PO BOX 4629 // Rocford ill, 61110-4629 // Ms. Lee actor SHOTGUNSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifspawnedby PIGCOP { addweapon SHOTGUN_WEAPON 0 ifrnd 64 addammo SHOTGUN_WEAPON 4 else ifrnd 64 addammo SHOTGUN_WEAPON 3 else ifrnd 64 addammo SHOTGUN_WEAPON 2 else addammo SHOTGUN_WEAPON 1 } else { ifgotweaponce 0 break // Multiplayer only addweapon SHOTGUN_WEAPON SHOTGUNAMMOAMOUNT quote 57 } ifspawnedby SHOTGUNSPRITE state getweaponcode else state quikweaponget } enda actor SIXPAK fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifphealthl MAXPLAYERHEALTH ifcanseetarget { addphealth 30 quote 62 ifspawnedby SIXPAK state getcode else state quikget } enda actor COLA fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifphealthl MAXPLAYERHEALTH // ifcanseetarget { addphealth 10 quote 61 ifspawnedby COLA state getcode else state quikget } enda actor ATOMICHEALTH fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget ifphealthl MAXPLAYERATOMICHEALTH { addphealth 50 quote 19 ifspawnedby ATOMICHEALTH state getcode else state quikget } enda actor FIRSTAID fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifpinventory GET_FIRSTAID FIRSTAID_AMOUNT ifcanseetarget { addinventory GET_FIRSTAID FIRSTAID_AMOUNT quote 3 ifspawnedby FIRSTAID state getcode else state quikget } enda actor FIRSTGUNSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break addweapon PISTOL_WEAPON 48 ifspawnedby FIRSTGUNSPRITE state getweaponcode else state quikweaponget } enda actor TRIPBOMBSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break addweapon TRIPBOMB_WEAPON 1 quote 58 ifspawnedby TRIPBOMBSPRITE state getweaponcode else state quikweaponget } enda actor CHAINGUNSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break addweapon CHAINGUN_WEAPON 50 quote 54 ifspawnedby CHAINGUNSPRITE state getweaponcode else state quikweaponget } enda actor SHRINKERSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break addweapon SHRINKER_WEAPON 10 quote 60 ifspawnedby SHRINKERSPRITE state getweaponcode else state quikweaponget } enda actor FREEZESPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break addweapon FREEZE_WEAPON FREEZEAMMOAMOUNT quote 59 ifspawnedby FREEZESPRITE state getweaponcode else state quikweaponget } enda actor DEVISTATORSPRITE fall ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifgotweaponce 0 break // ( Multiplayer (mode 3) only ) addweapon DEVISTATOR_WEAPON DEVISTATORAMMOAMOUNT quote 87 ifspawnedby DEVISTATORSPRITE state getweaponcode else state quikweaponget } enda state firestate ifgapzl 16 break ifinwater killit ifp palive ifpdistl 844 ifrnd 32 ifcansee { soundonce DUKE_LONGTERM_PAIN addphealth -1 palfrom 32 32 } ifactor FIRE ifspawnedby FIRE break else ifactor FIRE2 ifspawnedby FIRE2 break iffloordistl 128 { ifcount 32 sizeto 8 8 ifcount 64 killit } else killit ends action FIRE_FRAMES -1 14 1 1 1 move FIREVELS actor FIRE WEAK FIRE_FRAMES FIREVELS state firestate enda actor FIRE2 WEAK FIRE_FRAMES FIREVELS state firestate enda actor FECES ifcount 24 { ifpdistl RETRIEVEDISTANCE { soundonce DUKE_STEPONFECES sound STEPNIT spawn BLOODPOOL // Will be brown killit } } else sizeto 32 32 enda state drop_ammo ifrnd SPAWNAMMOODDS spawn AMMO ends state drop_battery ifrnd SPAWNAMMOODDS spawn BATTERYAMMO ends state drop_sgshells ifrnd SPAWNAMMOODDS spawn SHOTGUNAMMO ends state drop_shotgun ifrnd SPAWNAMMOODDS spawn SHOTGUNSPRITE ends state drop_chaingun ifrnd SPAWNAMMOODDS { ifrnd 32 spawn CHAINGUNSPRITE else spawn BATTERYAMMO } ends state jib_sounds ifrnd SWEARFREQUENCY { ifrnd 16 globalsound JIBBED_ACTOR1 else ifrnd 16 globalsound JIBBED_ACTOR2 else ifrnd 16 globalsound JIBBED_ACTOR3 else ifrnd 16 globalsound JIBBED_ACTOR5 else ifrnd 16 globalsound JIBBED_ACTOR6 else ifrnd 16 globalsound JIBBED_ACTOR10 else ifrnd 16 globalsound JIBBED_ACTOR7 else ifrnd 16 globalsound JIBBED_ACTOR4 else ifrnd 16 globalsound JIBBED_ACTOR8 else ifrnd 16 globalsound JIBBED_ACTOR13 else ifrnd 16 globalsound JIBBED_ACTOR9 else ifrnd 16 globalsound JIBBED_ACTOR11 else ifrnd 16 globalsound JIBBED_ACTOR12 } ends state standard_jibs guts JIBS2 1 guts JIBS3 2 guts JIBS4 3 guts JIBS5 2 guts JIBS6 3 ifrnd 4 { guts JIBS1 1 spawn BLOODPOOL } // spine state jib_sounds ends action FEMSHRUNK action FEMFROZEN1 1 action FEMFROZEN2 action FEMDANCE1 19 1 1 1 16 action FEMDANCE3 19 1 1 1 26 action FEMDANCE2 20 2 1 1 10 action FEMANIMATE state femcode ifactor NAKED1 { } else ifactor FEM6 { } else { fall ifactor BLOODYPOLE ifhitweapon ifdead { state standard_jibs killit } } ifaction FEMSHRUNK { ifcount SHRUNKDONECOUNT action FEMANIMATE else ifcount SHRUNKCOUNT sizeto 40 40 else state genericshrunkcode } else ifaction FEMDANCE1 { ifactioncount 2 action FEMDANCE2 } else ifaction FEMDANCE2 { ifactioncount 8 action FEMDANCE3 } else ifaction FEMDANCE3 { ifactioncount 2 action FEMANIMATE } else ifaction FEMFROZEN1 { ifcount THAWTIME { action FEMANIMATE getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } lotsofglass 30 sound GLASS_BREAKING respawnhitag ifrnd 84 spawn BLOODPOOL killit } else ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } else ifaction FEMFROZEN2 { ifcount THAWTIME { action FEMANIMATE getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } lotsofglass 30 sound GLASS_BREAKING ifrnd 84 spawn BLOODPOOL respawnhitag ifrnd 128 sound DUKE_HIT_STRIPPER1 else sound DUKE_HIT_STRIPPER2 killit } else ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifhitweapon { ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING count 0 action FEMSHRUNK break } ifdead { ifwasweapon FREEZEBLAST { ifaction FEMSHRUNK break ifactor NAKED1 action FEMFROZEN2 else ifactor FEM5 action FEMFROZEN2 else ifactor FEM6 action FEMFROZEN2 else ifactor FEM8 action FEMFROZEN2 else ifactor FEM9 action FEMFROZEN2 else ifactor PODFEM1 action FEMFROZEN2 else action FEMFROZEN1 move 0 spritepal 1 strength 0 sound SOMETHINGFROZE break } ifrnd 128 sound DUKE_HIT_STRIPPER1 else sound DUKE_HIT_STRIPPER2 respawnhitag state standard_jibs shoot BLOODSPLAT1 shoot BLOODSPLAT2 shoot BLOODSPLAT3 shoot BLOODSPLAT4 spawn BLOODPOOL ifactor FEM1 money 5 else ifactor FEM2 { money 7 cactor BARBROKE cstat 0 } else ifactor FEM3 money 4 else ifactor FEM7 money 8 ifactor FEM5 { strength TOUGH cactor BLOODYPOLE } else ifactor FEM6 { cstat 0 cactor FEM6PAD } else ifactor FEM8 { strength TOUGH cactor BLOODYPOLE } else { spritepal 6 soundonce LADY_SCREAM ifactor NAKED1 debris SCRAP3 18 else ifactor PODFEM1 debris SCRAP3 18 killit } } else { sound SQUISHED guts JIBS6 1 ifactor FEM8 break soundonce LADY_SCREAM } } ends state killme ifp pfacing ifpdistl 1280 ifhitspace soundonce KILLME ends state tipme ifp pfacing ifpdistl 1280 ifhitspace { tip ifrnd 128 soundonce DUKE_TIP1 else soundonce DUKE_TIP2 ifactor FEM1 action FEMDANCE1 } ends actor FEM1 TOUGH FEMANIMATE state tipme state femcode enda actor FEM2 TOUGH FEMANIMATE state tipme state femcode enda actor FEM3 TOUGH FEMANIMATE state tipme state femcode enda actor FEM4 TOUGH FEMANIMATE state femcode enda actor FEM5 TOUGH FEMANIMATE state killme state femcode enda actor FEM6 TOUGH FEMANIMATE state killme state femcode enda actor FEM7 TOUGH FEMANIMATE state tipme state femcode enda actor FEM8 TOUGH FEMANIMATE state femcode enda actor FEM9 TOUGH FEMANIMATE state femcode enda actor NAKED1 TOUGH FEMANIMATE state killme state femcode enda actor PODFEM1 TOUGH FEMANIMATE state killme state femcode enda actor BLOODYPOLE TOUGH state femcode enda actor STATUEFLASH fall // state statuehit ifcount 32 cactor STATUE enda actor STATUE fall ifp pfacing ifpdistl 1280 ifhitspace { cactor STATUEFLASH move 0 } enda actor MIKE ifp pfacing ifpdistl 1280 ifhitspace mikesnd enda state troop_body_jibs ifrnd 64 guts HEADJIB1 1 ifrnd 64 guts LEGJIB1 2 ifrnd 64 guts ARMJIB1 1 ifrnd 48 spawn BLOODPOOL ends state liz_body_jibs ifrnd 64 guts LIZMANHEAD1 1 ifrnd 64 guts LIZMANLEG1 2 ifrnd 64 guts LIZMANARM1 1 ifrnd 48 spawn BLOODPOOL ends state delete_enemy killit ends action BLOODFRAMES 0 4 1 1 15 actor BLOOD 0 BLOODFRAMES sizeto 72 72 sizeto 72 72 sizeto 72 72 ifpdistg 3144 killit ifactioncount 4 killit enda action EGGOPEN1 1 1 1 1 4 action EGGOPEN2 2 1 1 1 4 action EGGOPEN3 2 1 1 1 4 action EGGWAIT 0 action EGGFROZEN 1 action EGGSHRUNK 1 actor EGG TOUGH ifaction 0 { ifcount 64 { ifrnd 128 { action EGGWAIT move 0 } else { sound SLIM_HATCH action EGGOPEN1 } } } else ifaction EGGOPEN1 ifactioncount 4 action EGGOPEN2 else ifaction EGGOPEN2 ifactioncount 4 { spawn GREENSLIME action EGGOPEN3 } else ifaction EGGSHRUNK { ifcount SHRUNKDONECOUNT action EGGOPEN2 else ifcount SHRUNKCOUNT sizeto 48 40 else state genericshrunkcode } else ifaction EGGFROZEN { ifcount THAWTIME { action 0 getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } lotsofglass 30 sound GLASS_BREAKING ifrnd 84 spawn BLOODPOOL addkills 1 killit } // ifp pducking ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifhitweapon { ifwasweapon SHRINKSPARK { move 0 sound ACTOR_SHRINKING action EGGSHRUNK break } ifdead { ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action EGGFROZEN strength 0 break } addkills 1 sound SQUISHED state standard_jibs state delete_enemy } } else ifaction EGGWAIT { ifcount 512 ifrnd 2 { ifaction EGGSHRUNK break sound SLIM_HATCH action EGGOPEN1 } } enda actor KNEE KNEE_WEAPON_STRENGTH enda actor SPIT SPIT_WEAPON_STRENGTH enda actor CHAINGUN CHAINGUN_WEAPON_STRENGTH enda actor SHOTGUN SHOTGUN_WEAPON_STRENGTH enda actor FIRELASER FIRELASER_WEAPON_STRENGTH enda actor HEAVYHBOMB HANDBOMB_WEAPON_STRENGTH enda actor BOUNCEMINE BOUNCEMINE_WEAPON_STRENGTH enda actor MORTER MORTER_WEAPON_STRENGTH enda actor SHRINKSPARK SHRINKER_WEAPON_STRENGTH enda actor RPG RPG_WEAPON_STRENGTH enda actor FREEZEBLAST FREEZETHROWER_WEAPON_STRENGTH enda actor DEVISTATORBLAST FREEZETHROWER_WEAPON_STRENGTH enda actor COOLEXPLOSION1 COOL_EXPLOSION_STRENGTH enda actor TRIPBOMB TRIPBOMB_STRENGTH enda action WEAP2FRAMES 0 4 1 1 6 actor SHOTSPARK1 PISTOL_WEAPON_STRENGTH WEAP2FRAMES ifdead killit ifactioncount 4 killit else { ifactioncount 3 { ifinwater spawn WATERBUBBLE } else ifcount 2 { } else ifonwater spawn WATERSPLASH2 } enda state standard_pjibs guts JIBS1 1 guts JIBS3 2 guts JIBS4 1 guts JIBS5 1 guts JIBS6 2 guts DUKETORSO 1 guts DUKELEG 2 guts DUKEGUN 1 ifrnd 16 money 1 ends move DUKENOTMOVING state handle_dead_dukes fall ifmove 0 // 1st time initializiation... { ifrnd 128 cstat 4 else cstat 0 move DUKENOTMOVING } ifsquished { sound SQUISHED spawn OOZ killit } else ifcount 1024 ifpdistg 4096 killit else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { state standard_jibs killit } } ends action PLYINGFRAMES 0 1 0 1 1 actor DUKELYINGDEAD 0 PLYINGFRAMES state handle_dead_dukes enda action PSTAND 0 1 5 1 1 action PEXPLODE 106 5 1 1 10 action PEXPLODEAD 113 1 1 action PJPHOUVER 15 1 5 1 action PWALK 20 4 5 1 16 action PRUN 20 4 5 1 10 action PWALKBACK 45 4 5 -1 16 action PRUNBACK 45 4 5 -1 10 action PJUMPING 50 4 5 1 30 action PFALLING 65 1 5 action PDUCKING 86 1 5 action PCRAWLING 86 3 5 1 20 action PAKICKING 40 2 5 1 25 action PFLINTCHING 106 1 1 1 10 action PTHROWNBACK 106 5 1 1 18 action PFROZEN 20 1 5 action PLYINGDEAD 113 1 1 action PSWIMMINGGO 375 1 5 1 10 action PSWIMMING 375 4 5 1 13 action PSWIMMINGWAIT 395 1 5 1 13 action PTREDWATER 395 2 5 1 17 move PSTOPED move PSHRINKING // used as a var only state check_dead_thrown_back ifdead { strength 0 action PTHROWNBACK } ends state check_pstandard ifp pwalking action PWALK else ifp pkicking action PAKICKING else ifp pwalkingback action PWALKBACK else ifp prunning action PRUN else ifp prunningback action PRUNBACK else ifp pjumping action PJUMPING else ifp pducking action PDUCKING ends state random_wall_jibs ifrnd 96 shoot BLOODSPLAT1 ifrnd 96 shoot BLOODSPLAT2 ifrnd 96 shoot BLOODSPLAT3 ifrnd 96 shoot BLOODSPLAT4 ifrnd 96 shoot BLOODSPLAT1 ends actor APLAYER 100 PSTAND 0 0 ifaction 0 action PSTAND ifdead { ifsquished palfrom 32 63 63 63 else fall ifactioncount 7 { move 0 } else ifactioncount 6 { ifmultiplayer { } else { ifrnd 32 sound DUKE_KILLED5 else ifrnd 32 sound DUKE_KILLED3 else ifrnd 32 sound DUKE_KILLED1 else ifrnd 32 sound DUKE_KILLED2 } } ifaction PLYINGDEAD { ifactioncount 3 move PSTOPED quote 13 ifhitspace { action PSTAND spawn DUKELYINGDEAD resetplayer } break } else ifaction PTHROWNBACK { ifactioncount 5 { spawn BLOODPOOL action PLYINGDEAD } else ifactioncount 1 move 0 break } else ifaction PFROZEN { cstat 257 palfrom 16 0 0 24 ifhitweapon { ifwasweapon FREEZEBLAST break lotsofglass 60 ifrnd 84 spawn BLOODPOOL getlastpal sound GLASS_BREAKING spawn ATOMICHEALTH cstat 32768 action PLYINGDEAD break } ifactioncount THAWTIME { getlastpal strength 1 move 0 action PSTAND } else ifactioncount FROZENDRIPTIME { ifrnd 32 spawn WATERDRIP } ifp pfacing // assumes some other player ifpdistl FROZENQUICKKICKDIST pkick break } else ifaction PEXPLODEAD { quote 13 ifhitspace { action PSTAND resetplayer } break } else ifaction PEXPLODE { ifactioncount 5 { action PEXPLODEAD spawn BLOODPOOL } break } else ifp pshrunk { state standard_pjibs spawn BLOODPOOL sound SQUISHED sound DUKE_DEAD cstat 32768 // Hide the sprite action PLYINGDEAD } else { ifinwater { action PLYINGDEAD spawn WATERBUBBLE spawn WATERBUBBLE } else { action PEXPLODE state standard_pjibs cstat 32768 sound SQUISHED sound DUKE_DEAD } } break } ifsquished { strength -1 sound SQUISHED spawn OOZ break } ifp ponsteroids { ifp pstanding { } else spawn FRAMEEFFECT1 } ifmove PSHRINKING { ifcount 32 { ifcount SHRUNKDONECOUNT move 0 else ifcount SHRUNKCOUNT { sizeto 42 36 ifgapzl 24 { strength 0 sound SQUISHED palfrom 48 64 break } } else ifp ponsteroids count SHRUNKCOUNT } else { ifp ponsteroids count SHRUNKCOUNT else { sizeto 8 9 spawn FRAMEEFFECT1 } } } else ifhitweapon { ifdead { ifmultiplayer sound DUKE_KILLED4 } else { ifmultiplayer { ifphealthl YELLHURTSOUNDSTRENGTHMP { ifrnd 64 sound DUKE_LONGTERM_PAIN2 else ifrnd 64 sound DUKE_LONGTERM_PAIN3 else ifrnd 64 sound DUKE_LONGTERM_PAIN4 else sound DUKE_DEAD } else { ifrnd 64 sound DUKE_LONGTERM_PAIN5 else ifrnd 64 sound DUKE_LONGTERM_PAIN6 else ifrnd 64 sound DUKE_LONGTERM_PAIN7 else sound DUKE_LONGTERM_PAIN8 } } else { ifphealthl YELLHURTSOUNDSTRENGTH { ifrnd 74 sound DUKE_LONGTERM_PAIN2 else ifrnd 8 sound DUKE_LONGTERM_PAIN3 else sound DUKE_LONGTERM_PAIN4 } ifrnd 128 sound DUKE_LONGTERM_PAIN } } ifstrength TOUGH { state headhitstate sound DUKE_GRUNT ifp pstanding action PFLINTCHING } ifwasweapon RPG { ifrnd 32 spawn BLOOD ifdead state standard_pjibs palfrom 48 52 break } ifwasweapon RADIUSEXPLOSION { ifrnd 32 spawn BLOOD ifdead state standard_pjibs palfrom 48 52 break } ifwasweapon FIREEXT { ifrnd 32 spawn BLOOD ifdead state standard_pjibs palfrom 48 52 break } ifwasweapon SHRINKSPARK { palfrom 48 0 48 move PSHRINKING // used as a var only. sound ACTOR_SHRINKING break } ifwasweapon SHOTSPARK1 palfrom 24 48 else ifwasweapon FREEZEBLAST { palfrom 48 0 0 48 ifdead { sound SOMETHINGFROZE spritepal 1 action PFROZEN break } } else ifwasweapon COOLEXPLOSION1 palfrom 48 48 0 48 else ifwasweapon KNEE palfrom 16 32 else ifwasweapon FIRELASER palfrom 32 32 state check_dead_thrown_back state random_wall_jibs break } ifaction PFLINTCHING { ifactioncount 2 action PSTAND break } ifinwater { ifaction PTREDWATER { ifp pwalking prunning action PSWIMMINGGO } else ifp pstanding pwalkingback prunningback action PTREDWATER else { ifaction PSWIMMING { ifrnd 4 spawn WATERBUBBLE ifactioncount 4 action PSWIMMINGWAIT } else ifaction PSWIMMINGWAIT { ifactioncount 2 action PSWIMMINGGO } else ifaction PSWIMMINGGO { ifactioncount 2 action PSWIMMING } else action PTREDWATER } ifrnd 4 spawn WATERBUBBLE // For effect break } else ifp pjetpack { ifaction PJPHOUVER { ifactioncount 4 resetactioncount } else action PJPHOUVER break } else { ifaction PTREDWATER action PSTAND ifaction PSWIMMING action PSTAND ifaction PSWIMMINGWAIT action PSTAND ifaction PSWIMMINGGO action PSTAND ifaction PJPHOUVER action PFALLING } ifaction PFALLING { ifp ponground action PSTAND else { ifp pfalling break else state check_pstandard } } ifaction PDUCKING { ifgapzl 48 { ifp pwalking pwalkingback prunning prunningback action PCRAWLING } else ifp pducking { ifp pwalking pwalkingback prunning prunningback action PCRAWLING } else { ifp pstanding action PSTAND else state check_pstandard } } else ifaction PCRAWLING { ifgapzl 48 { ifp pstanding action PCRAWLING } else ifp pducking { ifp pstanding action PDUCKING } else { ifp pstanding action PSTAND else state check_pstandard } } else ifgapzl 48 action PDUCKING else ifaction PJUMPING { ifp ponground action PSTAND else ifactioncount 4 ifp pfalling action PFALLING } ifp pfalling action PFALLING else ifaction PSTAND state check_pstandard else ifaction PAKICKING { ifactioncount 2 action PSTAND break } else ifaction PWALK { ifp pfalling action PFALLING else ifp pstanding action PSTAND else ifp prunning action PRUN else ifp pwalkingback action PWALKBACK else ifp prunningback action PRUNBACK else ifp pjumping action PJUMPING else ifp pducking action PDUCKING } else ifaction PRUN { ifp pstanding action PSTAND else ifp pwalking action PWALK else ifp pwalkingback action PWALKBACK else ifp prunningback action PRUNBACK else ifp pjumping action PJUMPING else ifp pducking action PDUCKING } else ifaction PWALKBACK { ifp pstanding action PSTAND else ifp pwalking action PWALK else ifp prunning action PRUN else ifp prunningback action PRUNBACK else ifp pjumping action PJUMPING else ifp pducking action PDUCKING } else ifaction PRUNBACK { ifp pstanding action PSTAND else ifp pwalking action PWALK else ifp prunning action PRUN else ifp pwalkingback action PWALKBACK else ifp pjumping action PJUMPING else ifp pducking action PDUCKING } enda actor ORGANTIC TURRETSTRENGTH ifcount 48 resetcount else { ifcount 32 sizeto 32 32 } else ifcount 16 { sizeto 48 18 ifpdistl 2048 { sound TURR_ATTACK addphealth -2 palfrom 32 16 } } ifhitweapon { ifdead { addkills 1 sound TURR_DYING guts JIBS5 10 state delete_enemy } sound TURR_PAIN break } ifrnd 1 soundonce TURR_ROAM enda state rf ifrnd 128 cstat 4 else cstat 0 ends // // // TROOP/LIZTROOP CODE // // action ATROOPSTAND 0 1 5 1 1 action ATROOPSTAYSTAND -2 1 5 1 1 action ATROOPWALKING 0 4 5 1 12 action ATROOPWALKINGBACK 15 4 5 -1 12 action ATROOPRUNNING 0 4 5 1 8 action ATROOPSHOOT 35 1 5 1 30 action ATROOPJETPACK 40 1 5 1 1 action ATROOPJETPACKILL 40 2 5 1 50 action ATROOPFLINTCH 50 1 1 1 6 action ATROOPDYING 50 5 1 1 16 action ATROOPDEAD 54 action ATROOPPLAYDEAD 54 action ATROOPSUFFERDEAD 58 2 1 -4 24 action ATROOPSUFFERING 59 2 1 1 21 action ATROOPDUCK 64 1 5 1 3 action ATROOPDUCKSHOOT 64 2 5 1 25 action ATROOPABOUTHIDE 74 1 1 1 25 action ATROOPHIDE 79 1 1 1 25 action ATROOPREAPPEAR 74 1 1 1 25 action ATROOPFROZEN 0 1 5 move TROOPWALKVELS 72 move TROOPWALKVELSBACK -72 move TROOPJETPACKVELS 64 -84 move TROOPJETPACKILLVELS 192 -38 move TROOPRUNVELS 108 move TROOPSTOPPED move DONTGETUP move SHRUNKVELS 32 ai AITROOPSEEKENEMY ATROOPWALKING TROOPWALKVELS seekplayer ai AITROOPSEEKPLAYER ATROOPWALKING TROOPWALKVELS seekplayer ai AITROOPFLEEING ATROOPWALKING TROOPWALKVELS fleeenemy ai AITROOPFLEEINGBACK ATROOPWALKINGBACK TROOPWALKVELSBACK faceplayer ai AITROOPDODGE ATROOPWALKING TROOPRUNVELS dodgebullet ai AITROOPSHOOTING ATROOPSHOOT TROOPSTOPPED faceplayer ai AITROOPDUCKING ATROOPDUCK TROOPSTOPPED faceplayer ai AITROOPJETPACK ATROOPJETPACK TROOPJETPACKVELS seekplayer ai AITROOPSHRUNK ATROOPWALKING SHRUNKVELS fleeenemy ai AITROOPHIDE ATROOPABOUTHIDE TROOPSTOPPED faceplayer state troophidestate ifaction ATROOPREAPPEAR { ifactioncount 2 { sound TELEPORTER ai AITROOPSHOOTING cstat 257 } else { sizeto 41 40 sizeto 41 40 sizeto 41 40 sizeto 41 40 spawn FRAMEEFFECT1 } } else ifaction ATROOPWALKING { ifpdistl 2448 ifpdistg 1024 { ifceilingdistl 48 break ifp pfacing break ifgapzl 64 { } else ifawayfromwall { spawn TRANSPORTERSTAR action ATROOPREAPPEAR move 0 break } } } else ifaction ATROOPHIDE { ifactioncount 2 { spawn TRANSPORTERSTAR sound TELEPORTER action ATROOPWALKING move TROOPWALKVELS faceplayer cstat 32768 } else { sizeto 0 40 sizeto 0 40 sizeto 0 40 sizeto 0 40 spawn FRAMEEFFECT1 } } else ifaction ATROOPABOUTHIDE ifactioncount 2 { action ATROOPHIDE cstat 0 } ends state troopgunnashoot ifp palive { ifpdistl 1024 ai AITROOPSHOOTING else ifactornotstayput { ifactioncount 12 ifrnd 16 ifcanshoottarget { ifspritepal 21 ifrnd 4 ifpdistg 4096 ai AITROOPHIDE else { ifpdistl 1100 ai AITROOPFLEEING else { ifpdistl 4096 ifcansee ifcanshoottarget ai AITROOPSHOOTING else { move TROOPRUNVELS seekplayer action ATROOPRUNNING } } } } } else ifcount 26 ifrnd 32 ai AITROOPSHOOTING } ends state troopseekstate state troopgunnashoot ifinwater { ai AITROOPJETPACK break } ifcansee { ifmove TROOPRUNVELS ifpdistl 1596 ai AITROOPDUCKING ifp phigher { ifceilingdistl 128 { } else ifactornotstayput ai AITROOPJETPACK break } else ifrnd 2 { ifspritepal 21 ifpdistg 1596 { ai AITROOPHIDE break } ifbulletnear { ifrnd 128 ai AITROOPDODGE else ai AITROOPDUCKING break } } } ifnotmoving { ifrnd 32 operate else ifcount 32 ifp palive ifcansee ifcanshoottarget ai AITROOPSHOOTING } ifrnd 1 { ifrnd 128 soundonce PRED_ROAM else soundonce PRED_ROAM2 } ends state troopduckstate ifaction ATROOPDUCK { ifactioncount 8 { ifp palive { ifrnd 128 action ATROOPDUCKSHOOT } else ifmove DONTGETUP break else ai AITROOPSEEKPLAYER } } else ifaction ATROOPDUCKSHOOT { ifcount 64 { ifmove DONTGETUP resetcount else { ifpdistl 1100 ai AITROOPFLEEING else ai AITROOPSEEKPLAYER } } else ifactioncount 2 { ifcanshoottarget { sound PRED_ATTACK resetactioncount shoot FIRELASER } else ai AITROOPSEEKPLAYER } } ends state troopshootstate ifactioncount 2 { ifcanshoottarget { shoot FIRELASER sound PRED_ATTACK resetactioncount ifrnd 128 ai AITROOPSEEKPLAYER ifcount 24 { ifrnd 96 ifpdistg 2048 ai AITROOPSEEKPLAYER else { ifpdistg 1596 ai AITROOPFLEEING else ai AITROOPFLEEINGBACK } } } else ai AITROOPSEEKPLAYER } ends state troopfleestate ifactioncount 7 { ifpdistg 3084 { ai AITROOPSEEKPLAYER break } else ifrnd 32 ifp palive ifcansee ifcanshoottarget { ifrnd 128 ai AITROOPDUCKING else ai AITROOPSHOOTING break } } ifnotmoving { ifrnd 32 operate else ifcount 32 ifp palive ifcansee ifcanshoottarget { ifrnd 128 ai AITROOPSHOOTING else ai AITROOPDUCKING } } ends state troopdying iffloordistl 32 { ifactioncount 5 { cstat 0 iffloordistl 8 sound THUD ifrnd 64 spawn BLOODPOOL state rf strength 0 move TROOPSTOPPED action ATROOPDEAD } break } else { state rf move 0 action ATROOPDYING } ends state checktroophit ifaction ATROOPSUFFERING { stopsound LIZARD_BEG sound PRED_DYING cstat 0 strength 0 action ATROOPSUFFERDEAD break } ifdead { ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ATROOPFROZEN strength 0 break } state drop_ammo state random_wall_jibs addkills 1 ifwasweapon RPG { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy } else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy } else { sound PRED_DYING ifrnd 32 iffloordistl 32 { sound LIZARD_BEG spawn BLOODPOOL strength 0 move 0 action ATROOPSUFFERING break } action ATROOPDYING break } } else { state random_wall_jibs sound PRED_PAIN ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AITROOPSHRUNK } else iffloordistl 32 ifrnd 96 action ATROOPFLINTCH } ends state troopjetpackstate ifaction ATROOPJETPACKILL { ifcansee ifactioncount 2 { resetactioncount sound PRED_ATTACK shoot FIRELASER } ifp phigher ai AITROOPJETPACK else ifinwater ai AITROOPJETPACK else ifcount 26 iffloordistl 32 ai AITROOPSEEKPLAYER } else ifcount 48 ifcansee { action ATROOPJETPACKILL move TROOPJETPACKILLVELS seekplayer } ends state checksquished ifsquished { addkills 1 sound SQUISHED state standard_jibs spawn OOZ state delete_enemy } ends state troopsufferingstate ifactioncount 2 { ifrnd 16 spawn WATERDRIP ifactioncount 14 { stopsound LIZARD_BEG cstat 0 strength 0 action ATROOPSUFFERDEAD break } } ends state troopshrunkstate ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY else ifcount SHRUNKCOUNT sizeto 48 40 else state genericshrunkcode ends state troopcode fall ifinwater ifrnd 1 spawn WATERBUBBLE ifaction ATROOPSTAND { ifrnd 192 ai AITROOPSHOOTING else ai AITROOPSEEKPLAYER } else ifaction ATROOPFROZEN { ifcount THAWTIME { ai AITROOPSEEKENEMY getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 ifrnd 84 spawn BLOODPOOL lotsofglass 30 sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } else ifaction ATROOPPLAYDEAD { ifhitweapon { ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy } break } else state checksquished ifcount PLAYDEADTIME { addkills -1 soundonce PRED_ROAM cstat 257 strength 1 ai AITROOPSHOOTING } else ifp pfacing resetcount break } else ifaction ATROOPDEAD { strength 0 ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength TROOPSTRENGTH ai AITROOPSEEKENEMY } ifhitweapon { ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy } break } else state checksquished break } else ifaction ATROOPSUFFERDEAD { ifactioncount 2 { ifrnd 64 { resetcount action ATROOPPLAYDEAD } else { soundonce PRED_DYING action ATROOPDEAD } } } else ifaction ATROOPDYING { state troopdying break } else ifaction ATROOPSUFFERING { state troopsufferingstate ifhitweapon state checktroophit break } else ifaction ATROOPFLINTCH { ifactioncount 4 ai AITROOPSEEKENEMY } else { ifai AITROOPSEEKPLAYER state troopseekstate else ifai AITROOPJETPACK { state troopjetpackstate ifinwater { } else soundonce DUKE_JETPACK_IDLE } else ifai AITROOPSEEKENEMY state troopseekstate else ifai AITROOPSHOOTING state troopshootstate else ifai AITROOPFLEEING state troopfleestate else ifai AITROOPFLEEINGBACK state troopfleestate else ifai AITROOPDODGE state troopseekstate else ifai AITROOPDUCKING state troopduckstate else ifai AITROOPSHRUNK state troopshrunkstate else ifai AITROOPHIDE { state troophidestate break } } ifhitweapon state checktroophit else state checksquished ends actor LIZTROOPJETPACK TROOPSTRENGTH ai AITROOPJETPACK cactor LIZTROOP enda actor LIZTROOPDUCKING TROOPSTRENGTH ai AITROOPDUCKING cactor LIZTROOP ifgapzl 48 move DONTGETUP enda actor LIZTROOPSHOOT TROOPSTRENGTH ATROOPSTAND ai AITROOPSHOOTING cactor LIZTROOP enda actor LIZTROOPSTAYPUT TROOPSTRENGTH ATROOPSTAYSTAND ai AITROOPSEEKPLAYER cactor LIZTROOP enda actor LIZTROOPRUNNING TROOPSTRENGTH ATROOPSTAND ai AITROOPSEEKPLAYER cactor LIZTROOP enda actor LIZTROOPONTOILET TROOPSTRENGTH ifcount 24 { sound FLUSH_TOILET operate ai AITROOPSEEKPLAYER cactor LIZTROOP } enda actor LIZTROOP TROOPSTRENGTH ATROOPSTAND state troopcode enda action ALIZWALKING 0 4 5 1 15 action ALIZRUNNING 0 4 5 1 11 action ALIZTHINK 20 2 5 1 40 action ALIZSCREAM 30 1 5 1 2 action ALIZJUMP 45 3 5 1 20 action ALIZFALL 55 action ALIZSHOOTING 70 2 5 1 7 action ALIZDYING 60 6 1 1 15 action ALIZLYINGDEAD 65 1 action ALIZFROZEN 0 1 5 move LIZWALKVEL 72 move LIZRUNVEL 192 move LIZJUMPVEL 184 move LIZSTOP ai AILIZGETENEMY ALIZWALKING LIZWALKVEL seekplayer ai AILIZDODGE ALIZRUNNING LIZRUNVEL dodgebullet ai AILIZCHARGEENEMY ALIZRUNNING LIZRUNVEL seekplayer ai AILIZFLEENEMY ALIZWALKING LIZWALKVEL fleeenemy ai AILIZSHOOTENEMY ALIZSHOOTING LIZSTOP faceplayer ai AILIZJUMPENEMY ALIZJUMP LIZJUMPVEL jumptoplayer ai AILIZTHINK ALIZTHINK LIZSTOP faceplayerslow ai AILIZSHRUNK ALIZWALKING SHRUNKVELS fleeenemy ai AILIZSPIT ALIZSCREAM LIZSTOP faceplayerslow ai AILIZDYING ALIZDYING LIZSTOP faceplayer state lizseekstate ifactornotstayput { ifcansee ifp palive ifpdistl 2048 ifcount 16 ifcanshoottarget { ai AILIZSHOOTENEMY break } ifai AILIZCHARGEENEMY { ifcount 72 ifcanshoottarget { ai AILIZSHOOTENEMY break } ifp phigher ifpdistg 2048 ifrnd 6 { ai AILIZJUMPENEMY break } } else ifpdistg 4096 { ifrnd 92 { ifcount 48 ifcanshoottarget ai AILIZSHOOTENEMY } else ifcount 24 { ai AILIZCHARGEENEMY break } } iffloordistl 16 { ifcount 48 ifnotmoving ifcansee { ai AILIZJUMPENEMY break } } else { ifpdistg 1280 ai AILIZJUMPENEMY break } ifrnd 4 ifnotmoving operate else ifrnd 1 ifbulletnear { ifgapzl 128 ai AILIZDODGE else ifactornotstayput { ifrnd 32 ai AILIZJUMPENEMY else ai AILIZDODGE } } } else { ifactioncount 16 { ifp palive ifrnd 32 ifcansee ifcanshoottarget ai AILIZSHOOTENEMY } ifcount 16 ifrnd 32 move LIZWALKVEL randomangle geth } ends state lizshrunkstate ifcount SHRUNKDONECOUNT ai AILIZGETENEMY else ifcount SHRUNKCOUNT sizeto 48 40 else state genericshrunkcode ends state lizfleestate ifcount 16 { ifrnd 48 ifp palive ifcansee ai AILIZSPIT } else { iffloordistl 16 { } else ai AILIZGETENEMY break } ends state lizthinkstate ifrnd 8 soundonce CAPT_ROAM ifactioncount 3 { ifrnd 32 ifp palive ifcansee ai AILIZSPIT else ifrnd 96 ai AILIZGETENEMY } else ifactioncount 2 ifrnd 1 spawn FECES ifrnd 1 ifbulletnear { ifgapzl 96 ai AILIZDODGE else { ifrnd 128 ai AILIZJUMPENEMY else ai AILIZDODGE } } ends state lizshootstate ifcount 20 ifrnd 8 { ifcansee ifpdistl 2048 { ifrnd 128 ai AILIZFLEENEMY break } ifrnd 80 ai AILIZTHINK else ai AILIZGETENEMY } ifactioncount 2 { ifcansee { ifcanshoottarget { sound CAPT_ATTACK shoot SHOTSPARK1 resetactioncount } else ai AILIZTHINK } else ai AILIZGETENEMY } ends state checklizhit spawn BLOOD ifai AILIZSHRUNK { addkills 1 sound SQUISHED state standard_jibs state delete_enemy } ifdead { ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ALIZFROZEN strength 0 break } state drop_chaingun addkills 1 ifwasweapon RPG { sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy } else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy } else { state rf ai AILIZDYING ifrnd 64 spawn BLOODPOOL } sound CAPT_DYING } else { sound CAPT_PAIN ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AILIZSHRUNK break } state random_wall_jibs ifp palive ifcansee ifcanshoottarget { ai AILIZSHOOTENEMY break } } ends state lizjumpstate ifaction ALIZFALL { iffloordistl 16 ai AILIZGETENEMY } else ifactioncount 3 action ALIZFALL ends state lizdyingstate ifaction ALIZLYINGDEAD { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } ifcount RESPAWNACTORTIME ifrespawn { spawn TRANSPORTERSTAR cstat 257 strength LIZSTRENGTH ai AILIZGETENEMY } } else ifai AILIZDYING ifactioncount 6 { iffloordistl 8 sound THUD move LIZSTOP action ALIZLYINGDEAD } ends state lizdodgestate ifcount 13 ai AILIZGETENEMY ends actor LIZMANSTAYPUT LIZSTRENGTH ai AILIZGETENEMY cactor LIZMAN enda actor LIZMANSPITTING LIZSTRENGTH ai AILIZSPIT cactor LIZMAN enda actor LIZMANJUMP LIZSTRENGTH ai AILIZJUMPENEMY cactor LIZMAN enda actor LIZMAN LIZSTRENGTH fall state checksquished ifai 0 ai AILIZGETENEMY else ifaction ALIZLYINGDEAD { fall state lizdyingstate break } else ifaction ALIZFROZEN { ifcount THAWTIME { ai AILIZGETENEMY getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 ifrnd 84 spawn BLOODPOOL lotsofglass 30 sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } else ifai AILIZJUMPENEMY state lizjumpstate else { fall ifai AILIZGETENEMY state lizseekstate else ifai AILIZCHARGEENEMY state lizseekstate else ifai AILIZDODGE state lizdodgestate else ifai AILIZSHOOTENEMY state lizshootstate else ifai AILIZFLEENEMY state lizfleestate else ifai AILIZTHINK state lizthinkstate else ifai AILIZSHRUNK state lizshrunkstate else ifai AILIZDYING state lizdyingstate else ifai AILIZSPIT { ifcount 26 ai AILIZGETENEMY else ifcount 18 ifrnd 96 { shoot SPIT sound LIZARD_SPIT } } } ifai AILIZSHRUNK break ifhitweapon state checklizhit enda action DRONEFRAMES 0 1 7 1 1 action DRONESCREAM 0 1 7 1 1 move DRONERUNVELS 128 64 move DRONERUNUPVELS 128 -64 move DRONEBULLVELS 252 -64 move DRONEBACKWARDS -64 -64 move DRONERISE 32 -32 move DRONESTOPPED -16 ai AIDRONEGETE DRONESCREAM DRONERUNVELS faceplayerslow getv ai AIDRONEWAIT DRONEFRAMES DRONESTOPPED faceplayerslow ai AIDRONEGETUP DRONESCREAM DRONERUNUPVELS faceplayer getv ai AIDRONEPULLBACK DRONEFRAMES DRONEBACKWARDS faceplayerslow ai AIDRONEHIT DRONESCREAM DRONEBACKWARDS faceplayer ai AIDRONESHRUNK DRONEFRAMES SHRUNKVELS fleeenemy ai AIDRONEDODGE DRONEFRAMES DRONEBULLVELS dodgebullet geth ai AIDRONEDODGEUP DRONEFRAMES DRONERISE getv geth state checkdronehitstate ifdead { addkills 1 debris SCRAP1 8 debris SCRAP2 4 debris SCRAP3 7 spawn EXPLOSION2 sound RPG_EXPLODE hitradius 2048 15 20 25 30 killit } else { sound DRON_PAIN ifbulletnear { ifceilingdistl 64 ifrnd 48 ai AIDRONEDODGE ai AIDRONEDODGEUP } else ai AIDRONEGETE } ends state droneshrunkstate ifcount 24 state delete_enemy else sizeto 1 1 ends state checkdronenearplayer ifp palive ifpdistl 1596 { ifcount 8 { addkills 1 sound DRON_ATTACK2 debris SCRAP1 8 debris SCRAP2 4 debris SCRAP3 7 spawn EXPLOSION2 sound RPG_EXPLODE hitradius 2048 15 20 25 30 killit } else ifcount 3 { } else sound LASERTRIP_ARMING } ends state dronegetstate ifrnd 192 { ifcansee { ifbulletnear { ai AIDRONEDODGE break } ifmove DRONEBULLVELS { ifcount 64 ai AIDRONEPULLBACK else ifnotmoving ifcount 16 ai AIDRONEPULLBACK } else ifcount 32 { ifp phigher move DRONEBULLVELS geth getv else move DRONEBULLVELS geth } } else ifrnd 1 operate } ends state dronedodgestate ifai AIDRONEDODGEUP { ifcount 8 ai AIDRONEGETE else ifnotmoving ai AIDRONEGETE } else { ifcount 8 ai AIDRONEGETE else ifnotmoving ai AIDRONEGETE } ends actor DRONE DRONESTRENGTH state checksquished state checkdronenearplayer ifrnd 2 fall else soundonce DRON_JETSND ifaction 0 ai AIDRONEGETE else ifai AIDRONEWAIT { ifactioncount 4 ifrnd 16 ifcansee { sound DRON_ATTACK1 ifp phigher ai AIDRONEGETUP else ai AIDRONEGETE } } else ifai AIDRONEGETE state dronegetstate else ifai AIDRONEGETUP state dronegetstate else ifai AIDRONEPULLBACK { ifcount 32 ai AIDRONEWAIT } else ifai AIDRONEHIT { ifcount 8 ai AIDRONEWAIT } else ifai AIDRONESHRUNK state droneshrunkstate else ifai AIDRONEDODGE state dronedodgestate else ifai AIDRONEDODGEUP state dronedodgestate ifhitweapon state checkdronehitstate ifrnd 1 soundonce DRON_ROAM enda action AOCTAWALK 0 3 5 1 15 action AOCTASTAND 0 1 5 1 15 action AOCTASCRATCH 0 4 5 1 15 action AOCTAHIT 30 1 1 1 10 action AOCTASHOOT 20 1 5 1 10 action AOCTADYING 30 8 1 1 17 action AOCTADEAD 38 1 1 1 1 action AOCTAFROZEN 0 1 5 move OCTAWALKVELS 96 -30 move OCTAUPVELS 96 -70 move OCTASTOPPED 0 -30 move OCTAINWATER 96 24 ai AIOCTAGETENEMY AOCTAWALK OCTAWALKVELS seekplayer ai AIOCTASHOOTENEMY AOCTASHOOT OCTASTOPPED faceplayer ai AIOCTASCRATCHENEMY AOCTASCRATCH OCTASTOPPED faceplayer ai AIOCTAHIT AOCTAHIT OCTASTOPPED faceplayer ai AIOCTASHRUNK AOCTAWALK SHRUNKVELS faceplayer ai AIOCTADYING AOCTADYING OCTASTOPPED faceplayer state octagetenemystate ifcansee { ifactioncount 32 { ifrnd 48 ifcanshoottarget { sound OCTA_ATTACK1 ai AIOCTASHOOTENEMY break } } else ifpdistl 1280 ai AIOCTASCRATCHENEMY } ends state octascratchenemystate ifpdistg 1280 ai AIOCTAGETENEMY else ifcount 32 { resetcount sound OCTA_ATTACK2 palfrom 8 32 addphealth OCTASCRATCHINGPLAYER } ends state octashootenemystate ifcount 25 { ifcount 27 ai AIOCTAGETENEMY } else ifcount 24 shoot COOLEXPLOSION1 else ifactioncount 6 resetactioncount ends state checkoctahitstate ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIOCTASHRUNK } else { ifdead { ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action AOCTAFROZEN strength 0 break } addkills 1 ifwasweapon RPG { sound SQUISHED state standard_jibs state delete_enemy } else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } else { state rf ai AIOCTADYING } sound OCTA_DYING } else { ifwasweapon RPG { sound OCTA_DYING addkills 1 state standard_jibs killit } sound OCTA_PAIN spawn BLOOD ifrnd 64 ai AIOCTAHIT } } state random_wall_jibs ends state octashrunkstate ifcount SHRUNKDONECOUNT ai AILIZGETENEMY else ifcount SHRUNKCOUNT sizeto 48 40 else state genericshrunkcode ends state octadyingstate ifactioncount 8 { ifrnd 64 spawn BLOODPOOL move OCTASTOPPED action AOCTADEAD break } else ifactioncount 5 { } else ifactioncount 4 iffloordistl 8 sound THUD ends actor OCTABRAINSTAYPUT OCTASTRENGTH ai AIOCTAGETENEMY cactor OCTABRAIN enda actor OCTABRAIN OCTASTRENGTH fall state checksquished ifai 0 ai AIOCTAGETENEMY else ifaction AOCTADEAD { strength 0 ifcount RESPAWNACTORTIME ifrespawn { addkills -1 spawn TRANSPORTERSTAR cstat 257 strength OCTASTRENGTH ai AIOCTAGETENEMY } ifhitweapon ifwasweapon RADIUSEXPLOSION { state standard_jibs killit } break } else ifaction AOCTAFROZEN { ifcount THAWTIME { ai AIOCTAGETENEMY getlastpal } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { addkills 1 ifwasweapon FREEZEBLAST { strength 0 break } lotsofglass 30 ifrnd 84 spawn BLOODPOOL sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } else { ifrnd 1 soundonce OCTA_ROAM ifai AIOCTAGETENEMY state octagetenemystate else ifai AIOCTAHIT { ifcount 8 ai AIOCTASHOOTENEMY } else ifai AIOCTADYING { state octadyingstate break } else ifai AIOCTASCRATCHENEMY state octascratchenemystate else ifai AIOCTASHOOTENEMY state octashootenemystate else ifai AIOCTASHRUNK state octashrunkstate ifmove OCTAUPVELS { } else ifp phigher move OCTAUPVELS seekplayer else ifmove OCTAINWATER { } else ifinwater move OCTAINWATER seekplayer ifhitweapon state checkoctahitstate } enda action APIGWALK 0 4 5 1 20 action APIGRUN 0 4 5 1 11 action APIGSHOOT 30 2 5 1 58 action APIGCOCK 25 1 5 1 16 action APIGSTAND 30 1 5 1 1 action APIGDIVE 40 2 5 1 40 action APIGDIVESHOOT 45 2 5 1 58 action APIGDYING 55 5 1 1 15 action APIGHIT 55 1 1 1 10 action APIGDEAD 60 1 1 1 1 action APIGFROZEN 0 1 5 move PIGWALKVELS 72 move PIGRUNVELS 108 move PIGSTOPPED ai AIPIGSEEKENEMY APIGWALK PIGWALKVELS seekplayer ai AIPIGSHOOTENEMY APIGSHOOT PIGSTOPPED faceplayer ai AIPIGFLEEENEMY APIGWALK PIGWALKVELS fleeenemy ai AIPIGSHOOT APIGSHOOT PIGSTOPPED faceplayer ai AIPIGDODGE APIGRUN PIGRUNVELS dodgebullet ai AIPIGCHARGE APIGRUN PIGRUNVELS seekplayer ai AIPIGDIVING APIGDIVE PIGSTOPPED faceplayer ai AIPIGDYING APIGDYING PIGSTOPPED faceplayer ai AIPIGSHRINK APIGWALK SHRUNKVELS fleeenemy ai AIPIGHIT APIGHIT PIGSTOPPED faceplayer state pigseekenemystate ifai AIPIGCHARGE { ifcansee ifpdistl 3084 { ifnotmoving ai AIPIGSEEKENEMY else ai AIPIGDIVING } break } else iffloordistl 32 { ifpdistg 4096 { ifactornotstayput ai AIPIGCHARGE } ifrnd 8 { ifbulletnear ai AIPIGDODGE } } ifrnd 128 ifcansee { ifai AIPIGDODGE { ifcount 32 ai AIPIGCHARGE break } iffloordistl 32 { ifpdistl 1024 ifp palive ifcanshoottarget { ai AIPIGSHOOTENEMY break } ifcount 48 { ifrnd 8 ifp palive ifcanshoottarget { ifrnd 192 ai AIPIGSHOOTENEMY else ai AIPIGDIVING break } } } } ends state pigshootenemystate // ifcansee { ifcount 12 { } else ifcount 11 { ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN } else ai AIPIGSEEKENEMY } ifcount 25 { } else ifcount 24 { action APIGCOCK sound SHOTGUN_COCK } ifcount 48 { } else ifcount 47 { ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN } else ai AIPIGSEEKENEMY } ifcount 60 { } else ifcount 59 { action APIGCOCK sound SHOTGUN_COCK } ifcount 72 { ifrnd 64 resetcount else { ifpdistl 768 ai AIPIGFLEEENEMY else ai AIPIGSEEKENEMY } } ifaction APIGCOCK ifactioncount 2 action APIGSHOOT } else ai AIPIGSEEKENEMY ends state pigfleeenemystate ifactioncount 8 ai AIPIGSEEKENEMY else ifnotmoving ai AIPIGSEEKENEMY ends state pigdivestate ifaction APIGDIVESHOOT { ifcansee { ifcount 12 { } else ifcount 11 { ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN } else ai AIPIGSEEKENEMY } ifcount 25 { } else ifcount 24 { sound SHOTGUN_COCK } ifcount 48 { } else ifcount 47 { ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN } else ai AIPIGSEEKENEMY } ifcount 60 { } else ifcount 59 { sound SHOTGUN_COCK ifgapzl 32 ai AIPIGDIVING else { ifpdistl 4096 ai AIPIGFLEEENEMY else ai AIPIGSEEKENEMY } } } else ifgapzl 32 ai AIPIGDIVING else ai AIPIGSEEKENEMY } else ifactioncount 2 ifp palive { resetcount action APIGDIVESHOOT } ends state checkpighitstate spawn BLOOD ifdead { state random_wall_jibs ifrnd 16 spawn SHIELD else state drop_shotgun ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action APIGFROZEN strength 0 break } addkills 1 ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } else ifwasweapon RPG { sound SQUISHED state standard_jibs state delete_enemy } ai AIPIGDYING sound PIG_DYING } else { sound PIG_PAIN state random_wall_jibs ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIPIGSHRINK } else ifrnd 64 ai AIPIGHIT else ifrnd 64 ai AIPIGSHOOTENEMY else ifrnd 64 { ai AIPIGDIVING action APIGDIVESHOOT } } ends state pigshrinkstate ifcount SHRUNKDONECOUNT ai AIPIGSEEKENEMY else ifcount SHRUNKCOUNT sizeto 48 40 else state genericshrunkcode ends state pigdyingstate ifactioncount 5 { ifrnd 64 spawn BLOODPOOL state rf iffloordistl 8 sound THUD action APIGDEAD move PIGSTOPPED break } ends actor PIGCOPDIVE PIGCOPSTRENGTH ai AIPIGDIVING action APIGDIVESHOOT cactor PIGCOP enda actor PIGCOPSTAYPUT PIGCOPSTRENGTH ai AIPIGSEEKENEMY cactor PIGCOP enda actor PIGCOP PIGCOPSTRENGTH APIGSTAND fall state checksquished ifaction APIGSTAND ai AIPIGSEEKENEMY else ifaction APIGDEAD { ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH ai AIPIGSEEKENEMY } else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break } } else ifaction APIGFROZEN { ifcount THAWTIME { ai AIPIGSEEKENEMY getlastpal } else ifcount FROZENDRIPTIME ifrnd 8 spawn WATERDRIP ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 lotsofglass 30 ifrnd 84 spawn BLOODPOOL sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } else ifai AIPIGDYING state pigdyingstate else ifai AIPIGHIT { ifactioncount 3 ai AIPIGSEEKENEMY } else ifai AIPIGSHRINK state pigshrinkstate else { ifai AIPIGSEEKENEMY state pigseekenemystate else ifai AIPIGDODGE state pigseekenemystate else ifai AIPIGSHOOTENEMY state pigshootenemystate else ifai AIPIGFLEEENEMY state pigfleeenemystate else ifai AIPIGDIVING state pigdivestate else ifai AIPIGCHARGE state pigseekenemystate ifhitweapon state checkpighitstate ifrnd 1 { ifrnd 32 soundonce PIG_ROAM else ifrnd 64 soundonce PIG_ROAM2 else soundonce PIG_ROAM3 } } enda action ABOSS1WALK 0 4 5 1 12 action ABOSS1FROZEN 30 1 5 action ABOSS1RUN 0 6 5 1 5 action ABOSS1SHOOT 30 2 5 1 4 action ABOSS1LOB 40 2 5 1 35 action ABOSS1DYING 50 5 1 1 50 action BOSS1FLINTCH 50 1 1 1 1 action ABOSS1DEAD 55 move PALBOSS1SHRUNKRUNVELS 32 move PALBOSS1RUNVELS 128 move BOSS1WALKVELS 208 move BOSS1RUNVELS 296 move BOSS1STOPPED ai AIBOSS1SEEKENEMY ABOSS1WALK BOSS1WALKVELS seekplayer ai AIBOSS1RUNENEMY ABOSS1RUN BOSS1RUNVELS faceplayer ai AIBOSS1SHOOTENEMY ABOSS1SHOOT BOSS1STOPPED faceplayer ai AIBOSS1LOBBED ABOSS1LOB BOSS1STOPPED faceplayer // faceplayersmart ai AIBOSS1DYING ABOSS1DYING BOSS1STOPPED faceplayer ai AIBOSS1PALSHRINK ABOSS1WALK PALBOSS1SHRUNKRUNVELS furthestdir state boss1palshrunkstate ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY else ifcount SHRUNKCOUNT sizeto 40 40 else state genericshrunkcode ends state checkboss1seekstate ai AIBOSS1SEEKENEMY ifspritepal 0 { } else // a fake way of doing a ifspritepal NOT. move PALBOSS1RUNVELS seekplayer ends state boss1runenemystate ifpdistl 2048 { ifp palive ai AIBOSS1SHOOTENEMY break } else ifcansee { ifactioncount 6 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS1SEEKENEMY } } else ai AIBOSS1SEEKENEMY ends state boss1seekenemystate ifrnd 2 soundonce BOS1_ROAM else ifactioncount 6 { resetactioncount sound BOS1_WALK } ifpdistl 2548 ifp palive { ai AIBOSS1SHOOTENEMY break } ifcansee ifcount 32 { ifrnd 32 { ifp palive ifcanshoottarget ai AIBOSS1SHOOTENEMY } else ifpdistg 2548 ifrnd 192 ifcanshoottarget { ifrnd 64 { ai AIBOSS1RUNENEMY ifspritepal 0 { } else move PALBOSS1RUNVELS seekplayer } else ai AIBOSS1LOBBED } } ends state boss1dyingstate ifaction ABOSS1DEAD { ifspritepal 0 break ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkboss1seekstate } else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break } } ifactioncount 5 { iffloordistl 8 sound THUD action ABOSS1DEAD cstat 0 ifspritepal 0 endofgame 52 } ends state boss1lobbedstate ifcansee { ifactioncount 2 { resetactioncount sound BOS1_ATTACK2 shoot MORTER } else ifcount 64 ifrnd 16 state checkboss1seekstate } else state checkboss1seekstate ends state boss1shootenemy ifcount 72 state checkboss1seekstate else ifaction ABOSS1SHOOT ifactioncount 2 { sound BOS1_ATTACK1 shoot SHOTSPARK1 shoot SHOTSPARK1 shoot SHOTSPARK1 shoot SHOTSPARK1 shoot SHOTSPARK1 shoot SHOTSPARK1 resetactioncount } ends state checkboss1hitstate ifrnd 2 spawn BLOODPOOL ifdead { ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL else { ifrnd 64 globalsound DUKE_TALKTOBOSSFALL ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS1FROZEN strength 0 break } } sound BOS1_DYING addkills 1 ai AIBOSS1DYING } else { ifrnd 32 { action BOSS1FLINTCH move 0 } ifspritepal 0 { } else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS1PALSHRINK break } soundonce BOS1_PAIN debris SCRAP1 1 guts JIBS6 1 } ends state boss1code ifaction ABOSS1FROZEN { ifcount THAWTIME { ai AIBOSS1SEEKENEMY spritepal 21 } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 lotsofglass 30 ifrnd 84 spawn BLOODPOOL sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifai 0 { ifspritepal 0 ai AIBOSS1RUNENEMY else { strength BOSS1PALSTRENGTH ai AIBOSS1SHOOTENEMY } } else ifaction BOSS1FLINTCH { ifactioncount 3 ai AIBOSS1SHOOTENEMY } else ifai AIBOSS1SEEKENEMY state boss1seekenemystate else ifai AIBOSS1RUNENEMY state boss1runenemystate else ifai AIBOSS1SHOOTENEMY state boss1shootenemy else ifai AIBOSS1LOBBED state boss1lobbedstate else ifai AIBOSS1PALSHRINK state boss1palshrunkstate ifai AIBOSS1DYING state boss1dyingstate else { ifhitweapon state checkboss1hitstate else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 } } ends actor BOSS1STAYPUT BOSS1STRENGTH cactor BOSS1 enda actor BOSS1 BOSS1STRENGTH fall state boss1code enda action ABOSS2WALK 0 4 5 1 30 action ABOSS2FROZEN 0 1 5 action ABOSS2RUN 0 4 5 1 15 action ABOSS2SHOOT 20 2 5 1 15 action ABOSS2LOB 30 2 5 1 105 action ABOSS2DYING 40 8 1 1 35 action BOSS2FLINTCH 40 1 1 1 1 action ABOSS2DEAD 48 move PALBOSS2SHRUNKRUNVELS 32 move PALBOSS2RUNVELS 84 move BOSS2WALKVELS 192 move BOSS2RUNVELS 256 move BOSS2STOPPED ai AIBOSS2SEEKENEMY ABOSS2WALK BOSS2WALKVELS seekplayer ai AIBOSS2RUNENEMY ABOSS2RUN BOSS2RUNVELS faceplayer ai AIBOSS2SHOOTENEMY ABOSS2SHOOT BOSS2STOPPED faceplayer ai AIBOSS2LOBBED ABOSS2LOB BOSS2STOPPED faceplayer ai AIBOSS2DYING ABOSS2DYING BOSS2STOPPED faceplayer ai AIBOSS2PALSHRINK ABOSS2WALK PALBOSS2SHRUNKRUNVELS furthestdir state boss2palshrunkstate ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY else ifcount SHRUNKCOUNT sizeto 40 40 else state genericshrunkcode ends state checkboss2seekstate ai AIBOSS2SEEKENEMY ifspritepal 0 { } else // a fake way of doing a ifspritepal NOT. move PALBOSS2RUNVELS seekplayer ends state boss2runenemystate ifcansee { ifactioncount 3 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS2SEEKENEMY } ifcount 48 ifrnd 2 { ifp palive { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY } break } } else ai AIBOSS2SEEKENEMY ends state boss2seekenemystate ifrnd 2 soundonce BOS2_ROAM else ifactioncount 3 { resetactioncount sound BOS1_WALK } ifcansee ifcount 32 ifp palive ifrnd 48 ifcanshoottarget { ifrnd 64 ifpdistg 4096 { ai AIBOSS2RUNENEMY ifspritepal 0 { } else move PALBOSS2RUNVELS seekplayer break } ifpdistl 10240 { ifrnd 128 { sound BOS2_ATTACK ai AIBOSS2LOBBED } } else { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY } } ends state boss2dyingstate ifaction ABOSS2DEAD { ifspritepal 0 break ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkboss2seekstate } else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break } } ifactioncount 8 { iffloordistl 8 sound THUD action ABOSS2DEAD cstat 0 ifspritepal 0 endofgame 52 } ends state boss2lobbedstate ifcansee { ifactioncount 2 resetactioncount else ifactioncount 1 { ifrnd 128 shoot COOLEXPLOSION1 } else ifcount 64 ifrnd 16 state checkboss2seekstate } else state checkboss2seekstate ends state boss2shootenemy ifcount 72 state checkboss2seekstate else ifaction ABOSS2SHOOT ifactioncount 2 { shoot RPG resetactioncount } ends state checkboss2hitstate ifrnd 2 spawn BLOODPOOL ifdead { ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL else { ifrnd 64 globalsound DUKE_TALKTOBOSSFALL ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS2FROZEN strength 0 break } } sound BOS2_DYING addkills 1 ai AIBOSS2DYING } else { ifrnd 144 { ifrnd 32 { action BOSS2FLINTCH move 0 } else { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY } } ifspritepal 0 { } else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS2PALSHRINK break } soundonce BOS2_PAIN debris SCRAP1 1 guts JIBS6 1 } ends state boss2code ifaction ABOSS2FROZEN { ifcount THAWTIME { ai AIBOSS2SEEKENEMY spritepal 21 } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 lotsofglass 30 sound GLASS_BREAKING ifrnd 84 spawn BLOODPOOL killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifai 0 { ifspritepal 0 ai AIBOSS2RUNENEMY else { strength 1 { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY } } } else ifaction BOSS2FLINTCH { ifactioncount 3 ai AIBOSS2SEEKENEMY } else ifai AIBOSS2SEEKENEMY state boss2seekenemystate else ifai AIBOSS2RUNENEMY state boss2runenemystate else ifai AIBOSS2SHOOTENEMY state boss2shootenemy else ifai AIBOSS2LOBBED state boss2lobbedstate else ifai AIBOSS2PALSHRINK state boss2palshrunkstate ifai AIBOSS2DYING state boss2dyingstate else { ifhitweapon state checkboss2hitstate else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 } } ends actor BOSS2 BOSS2STRENGTH fall state boss2code enda action ABOSS3WALK 0 4 5 1 30 action ABOSS3FROZEN 0 1 5 action ABOSS3RUN 0 4 5 1 15 action ABOSS3LOB 20 4 5 1 50 action ABOSS3LOBBING 30 2 5 1 15 action ABOSS3DYING 40 8 1 1 20 action BOSS3FLINTCH 40 1 1 1 1 action ABOSS3DEAD 48 move PALBOSS3SHRUNKRUNVELS 32 move PALBOSS3RUNVELS 84 move BOSS3WALKVELS 208 move BOSS3RUNVELS 270 move BOSS3STOPPED ai AIBOSS3SEEKENEMY ABOSS3WALK BOSS3WALKVELS seekplayer ai AIBOSS3RUNENEMY ABOSS3RUN BOSS3RUNVELS faceplayerslow ai AIBOSS3LOBENEMY ABOSS3LOB BOSS3STOPPED faceplayer ai AIBOSS3DYING ABOSS3DYING BOSS3STOPPED faceplayer ai AIBOSS3PALSHRINK ABOSS3WALK PALBOSS3SHRUNKRUNVELS faceplayer state boss3palshrunkstate ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY else ifcount SHRUNKCOUNT sizeto 40 40 else state genericshrunkcode ends state checkboss3seekstate ai AIBOSS3SEEKENEMY ifspritepal 0 { } else // a fake way of doing a ifspritepal NOT. move PALBOSS3RUNVELS seekplayer ends state boss3runenemystate ifcansee { ifactioncount 3 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS3SEEKENEMY } } else ai AIBOSS3SEEKENEMY ends state boss3seekenemystate ifrnd 2 soundonce BOS3_ROAM else ifactioncount 3 { resetactioncount sound BOS1_WALK } ifcansee ifcount 32 ifrnd 48 ifcanshoottarget { ifrnd 64 ifpdistg 4096 { ai AIBOSS3RUNENEMY ifspritepal 0 break move PALBOSS3RUNVELS seekplayer break } ifp palive ai AIBOSS3LOBENEMY } ends state boss3dyingstate ifaction ABOSS3DEAD { ifspritepal 0 break ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkboss3seekstate } else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break } } ifactioncount 8 { iffloordistl 8 sound THUD action ABOSS3DEAD cstat 0 ifspritepal 0 endofgame 52 } ends state boss3lobbedstate ifcansee { ifaction ABOSS3LOBBING ifactioncount 2 { shoot RPG resetactioncount ifrnd 8 ai AIBOSS3SEEKENEMY } ifactioncount 3 { action ABOSS3LOBBING resetcount } } else state checkboss3seekstate ends state checkboss3hitstate ifrnd 2 spawn BLOODPOOL ifdead { ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL else { ifrnd 64 globalsound DUKE_TALKTOBOSSFALL ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS3FROZEN strength 0 break } } addkills 1 ai AIBOSS3DYING sound BOS3_DYING sound JIBBED_ACTOR9 } else { ifrnd 32 { action BOSS3FLINTCH move 0 } ifspritepal 0 { } else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS3PALSHRINK break } soundonce BOS3_PAIN debris SCRAP1 1 guts JIBS6 1 } ends state boss3code ifaction ABOSS3FROZEN { ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 lotsofglass 30 ifrnd 84 spawn BLOODPOOL sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifai 0 { ifspritepal 0 ai AIBOSS3RUNENEMY else { strength 1 ai AIBOSS3LOBENEMY } } else ifaction BOSS3FLINTCH { ifactioncount 3 ai AIBOSS3SEEKENEMY } else ifai AIBOSS3SEEKENEMY state boss3seekenemystate else ifai AIBOSS3RUNENEMY state boss3runenemystate else ifai AIBOSS3LOBENEMY state boss3lobbedstate else ifai AIBOSS3PALSHRINK state boss3palshrunkstate ifai AIBOSS3DYING state boss3dyingstate else { ifhitweapon state checkboss3hitstate else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 } } ends actor BOSS3 BOSS3STRENGTH fall state boss3code enda action ACOMMBREETH 0 3 5 1 40 action ACOMMFROZEN 0 1 5 action ACOMMSPIN -5 1 5 1 12 action ACOMMGET 0 3 5 1 30 action ACOMMSHOOT 20 1 5 1 35 action ACOMMABOUTTOSHOOT 20 1 5 1 30 action ACOMMDYING 30 8 1 1 12 action ACOMMDEAD 38 1 1 1 1 move COMMGETUPVELS 128 -64 move COMMGETVELS 128 64 move COMMSLOW 64 24 move COMMSTOPPED ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow ai AICOMMGET ACOMMGET COMMGETVELS seekplayer ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir state checkcommhitstate ifhitweapon { guts JIBS6 2 ifdead { ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ACOMMFROZEN strength 0 break } addkills 1 ifwasweapon RADIUSEXPLOSION { spawn BLOODPOOL sound SQUISHED state standard_jibs state delete_enemy } else ifwasweapon RPG { sound SQUISHED spawn BLOODPOOL state standard_jibs state delete_enemy } sound COMM_DYING ai AICOMMDYING } else { soundonce COMM_PAIN ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AICOMMSHRUNK } else ifrnd 24 ai AICOMMABOUTTOSHOOT } } ends actor COMMANDERSTAYPUT COMMANDERSTRENGTH cactor COMMANDER ai AICOMMABOUTTOSHOOT enda actor COMMANDER COMMANDERSTRENGTH state checksquished ifaction ACOMMFROZEN { fall ifcount THAWTIME { getlastpal ai AICOMMWAIT } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 ifrnd 84 spawn BLOODPOOL lotsofglass 30 sound GLASS_BREAKING killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifai 0 ai AICOMMSHOOT else ifai AICOMMWAIT { ifcount 20 { ifcansee { ifcanshoottarget { ifrnd 96 ai AICOMMGET else ai AICOMMABOUTTOSHOOT } } else ai AICOMMGET } } else ifai AICOMMABOUTTOSHOOT { ifactioncount 2 { ifcansee ai AICOMMSHOOT else { ai AICOMMGET break } } soundonce COMM_ATTACK } else ifai AICOMMSHOOT { ifcanshoottarget { ifcount 24 ifrnd 16 ai AICOMMWAIT ifactioncount 2 { shoot RPG resetactioncount } } else ai AICOMMGET } else ifai AICOMMSHRUNK { ifcount SHRUNKDONECOUNT ai AICOMMGET else ifcount SHRUNKCOUNT sizeto 48 40 else state genericshrunkcode } else ifai AICOMMGET { ifnotmoving ifrnd 4 operate ifpdistl 1024 ifp palive { sound COMM_SPIN ai AICOMMSPIN break } ifcansee { ifp phigher move COMMGETUPVELS getv geth faceplayer else move COMMGETVELS getv geth faceplayer } ifactioncount 8 ifrnd 2 ai AICOMMABOUTTOSHOOT } else ifai AICOMMSPIN { soundonce COMM_SPIN ifcount 16 { ifpdistl 1280 { addphealth CAPTSPINNINGPLAYER sound DUKE_GRUNT palfrom 32 16 resetcount } else ifpdistg 2300 ai AICOMMWAIT } ifactioncount 52 ai AICOMMWAIT ifnotmoving ifrnd 32 operate } ifai AICOMMDYING { fall strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED spawn BLOODPOOL state standard_jibs state delete_enemy } ifaction ACOMMDYING ifactioncount 8 { iffloordistl 8 sound THUD cstat 0 action ACOMMDEAD } } else { ifrnd 2 soundonce COMM_ROAM state checkcommhitstate } enda gamevar WEAPON1_TOTALTIME 4 0 gamevar WEAPON1_CLIP 25 0