home *** CD-ROM | disk | FTP | other *** search
/ Total Meltdown / dukenukemtotalmeltdown.img / doco / stad / game.con next >
Text File  |  1996-05-26  |  100KB  |  3,587 lines

  1.  
  2. /*
  3. --------------------------------------------------------------------------------
  4. Duke Nukem 3D GAME.CON file.
  5. By Todd Replogle
  6. (c) 1996 3D Realms Entertainment
  7. --------------------------------------------------------------------------------
  8.  
  9.  
  10. IMPORTANT NOTICE IF YOU USE MODIFIED .CON FILES
  11.  
  12. If you are playing a MULTIPLAY game (Dukematch or Co-op) and you are
  13. using *modified* .CON files (USER.CON, GAME.CON, DEFS.CON), then each
  14. multiplayer must be using the EXACT SAME .CON files, or the game will
  15. get out of sync and/or develop interesting problems.
  16.  
  17. 3D Realms encourages you to experiment freely with the parameters
  18. contained in this file, and to share your discoveries with the rest
  19. of the world.  However, BE ADVISED that 3D Realms does NOT offer 
  20. any technical support on how to use this file or other user-modifiable 
  21. features of this game.  Do NOT call 3D Realms or Apogee Software 
  22. for advice or help with this subject.  
  23.  
  24. You make modifications to this and other files at your own risk. 
  25. It is recommended that you first make a backup copy of this, or
  26. any .CON files before making any changes.
  27.  
  28. --------------------------------------------------------------------------------
  29.  
  30. */
  31.  
  32. include DEFS.CON
  33. include USER.CON
  34.  
  35. state genericshrunkcode
  36.     ifcount 32 { ifpdistl SQUISHABLEDISTANCE pstomp }
  37.     else { sizeto 9 8 spawn FRAMEEFFECT1 }
  38. ends
  39.  
  40. move SHUTTLEVELS 16
  41.  
  42. actor SPACESHUTTLE TOUGH
  43.   //  ifmove 0 { move SHUTTLEVELS getv geth }
  44. enda
  45.  
  46. actor SATELLITE TOUGH
  47.   //  ifmove 0 { move SHUTTLEVELS getv geth }
  48.   //  ifcount 120 move SHUTTLEVELS getv geth randomangle
  49. enda
  50.  
  51. action ASHARKCRUZING 0 8 5 1 24
  52. action ASHARKFLEE    0 8 5 1 10
  53. action ASHARKATACK   0 8 5 1 6
  54. action ASHARKSHRUNK  0 8 5 1 24
  55. action ASHARKFROZEN  0 1 5 1 24
  56.  
  57. move SHARKVELS 24
  58. move SHARKFASTVELS 72
  59. move SHARKFLEEVELS 40
  60.  
  61. actor SHARK SHARKSTRENGTH ASHARKCRUZING SHARKVELS randomangle geth
  62.     ifaction ASHARKSHRUNK
  63.     {
  64.         ifcount SHRUNKDONECOUNT action ASHARKCRUZING
  65.         else ifcount SHRUNKCOUNT sizeto 24 24
  66.         else state genericshrunkcode
  67.     }
  68.     else ifaction ASHARKFROZEN
  69.     {
  70.         fall
  71.  
  72.         ifcount THAWTIME { action ASHARKFLEE getlastpal }
  73.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  74.  
  75.         ifhitweapon
  76.         {
  77.             ifwasweapon FREEZEBLAST { strength 0 break }
  78.             lotsofglass 30
  79.             sound GLASS_BREAKING
  80.             killit
  81.         }
  82.         else ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  83.         break
  84.     }
  85.     else ifaction ASHARKFLEE
  86.     {
  87.         ifcount 16 ifrnd 48 { action ASHARKCRUZING move SHARKVELS randomangle geth }
  88.     }
  89.     else ifaction ASHARKCRUZING
  90.     {
  91.         ifcansee ifcount 48 ifrnd 2 { action ASHARKATACK move SHARKFASTVELS faceplayerslow getv break }
  92.         ifcount 32 ifnotmoving
  93.         {
  94.             ifrnd 128 move SHARKVELS randomangle geth
  95.             else move SHARKFASTVELS randomangle geth
  96.         }
  97.     }
  98.     else ifaction ASHARKATACK
  99.     {
  100.         ifcount 4
  101.         {
  102.             ifpdistl 1280
  103.             {
  104.                 ifp palive ifcanshoottarget
  105.                 {
  106.                     sound DUKE_GRUNT
  107.                     palfrom 32 32
  108.                     addphealth SHARKBITESTRENGTH
  109.                 }
  110.                 action ASHARKFLEE
  111.                 move SHARKFLEEVELS fleeenemy
  112.             }
  113.         }
  114.         else ifnotmoving
  115.             { ifcount 32 { action ASHARKCRUZING move SHARKVELS randomangle geth } }
  116.         else ifcount 48 ifrnd 2
  117.             { action ASHARKCRUZING move SHARKFASTVELS randomangle geth }
  118.     }
  119.  
  120.     ifhitweapon
  121.     {
  122.         ifdead
  123.             { sound SQUISHED guts JIBS6 5 killit }
  124.         else
  125.         {
  126.             ifwasweapon SHRINKSPARK
  127.             {
  128.                 action ASHARKSHRUNK
  129.                 sound ACTOR_SHRINKING
  130.             }
  131.             else ifwasweapon FREEZEBLAST
  132.             {
  133.                 action ASHARKFROZEN
  134.                 sound SOMETHINGFROZE
  135.                 move 0
  136.             }
  137.             else move SHARKVELS randomangle geth
  138.         }
  139.     }
  140. enda
  141.  
  142.  
  143. action BLIMPWAITTORESPAWN
  144.  
  145. state blimphitstate
  146.     cstat 0
  147.     spawn FIRSTGUNSPRITE
  148.     spawn EXPLOSION2
  149.     spawn BURNING2
  150.     spawn RAT
  151.     debris SCRAP1 60            // Weapons and ammo!
  152.     guts JIBS1 30
  153.     guts JIBS3 25
  154.     guts JIBS4 30
  155.     guts JIBS5 25
  156.     guts JIBS6 30
  157.     guts DUKETORSO 10
  158.     guts DUKELEG 20
  159.     guts DUKEGUN 1
  160.     money 100
  161.     sound PIPEBOMB_EXPLODE
  162.     ifrespawn { action BLIMPRESPAWNTIME move 0 cstat 32768 }
  163.     else killit
  164. ends
  165.  
  166. actor BLIMP 1
  167.  
  168.     ifaction BLIMPWAITTORESPAWN
  169.     {
  170.         ifcount RESPAWNACTORTIME
  171.         {
  172.             action 0
  173.             cstat 0
  174.             move 0
  175.         }
  176.         break
  177.     }
  178.  
  179.     ifhitweapon
  180.     {
  181.         ifwasweapon RADIUSEXPLOSION state blimphitstate
  182.         ifwasweapon RPG state blimphitstate
  183.         strength 1
  184.     }
  185. enda
  186.  
  187.  
  188.  
  189. state rats
  190.     ifrnd 128 spawn RAT
  191.     ifrnd 128 spawn RAT
  192.     ifrnd 128 spawn RAT
  193.     ifrnd 128 spawn RAT
  194.     ifrnd 128 spawn RAT
  195.     ifrnd 128 spawn RAT
  196.     ifrnd 128 spawn RAT
  197.     ifrnd 128 spawn RAT
  198. ends
  199.  
  200. move RESPAWN_ACTOR_FLAG
  201.  
  202. action RUBCANDENT 1 1 1 1 1
  203. action RUBCAN
  204.  
  205. actor RUBBERCAN WEAK
  206.     ifaction RUBCANDENT { ifactioncount 16 { strength 0 action RUBCAN break } }
  207.     else ifhitweapon
  208.     {
  209.         ifwasweapon RADIUSEXPLOSION { state rats ifrnd 48 spawn BURNING debris SCRAP3 12 killit }
  210.         else action RUBCANDENT
  211.     }
  212. enda
  213.  
  214. state headhitstate
  215. // Unrem the following line to involving screen tilting during
  216. // low player hitpoint damage.
  217.  
  218.  
  219. // wackplayer
  220.  
  221.  
  222. ends
  223.  
  224.  
  225. action EXPBARRELFRAME         0   2   1   1   15
  226. actor EXPLODINGBARREL 26
  227.     fall
  228.     ifaction EXPBARRELFRAME
  229.     {
  230.         ifactioncount 2
  231.         {
  232.             hitradius 1024 WEAKEST WEAK MEDIUMSTRENGTH TOUGH
  233.             spawn EXPLOSION2
  234.             debris SCRAP2 2
  235.             sound PIPEBOMB_EXPLODE
  236.             killit
  237.         }
  238.         break
  239.     }
  240.     ifsquished
  241.     {
  242.         debris SCRAP1 5
  243.         killit
  244.         break
  245.     }
  246.     ifhitweapon
  247.         action EXPBARRELFRAME
  248. enda
  249.  
  250. action BURNING_FLAME    0   12   1   1   2
  251. move BURNING_VELS 
  252.  
  253. state burningstate
  254.  
  255.     ifgapzl 16 break
  256.     ifpdistg 10240 break
  257.  
  258.     ifcount 128
  259.     {
  260.         ifspawnedby TIRE
  261.         {
  262.             ifactioncount 512
  263.             {
  264.                 sizeto 16 16
  265.                 killit
  266.             }
  267.             ifrnd 16 sizeto 64 48
  268.         }
  269.         else
  270.         {
  271.             sizeto 8 8 sizeto 8 8
  272.             ifactioncount 192 killit
  273.         }
  274.     }
  275.     else
  276.     {
  277.         ifmove 0 move BURNING_VELS
  278.  
  279.         ifspawnedby BOX
  280.             { sizeto 32 32 ifcount 32 { spawn SMALLSMOKE killit } }
  281.         else ifspawnedby TREE1 sizeto 96 96
  282.         else ifspawnedby TREE2 sizeto 96 96
  283.         else ifspawnedby APLAYER { sizeto 40 40 sizeto 40 40 }
  284.         else sizeto 52 52
  285.         ifp palive ifpdistl 844 ifrnd 32 ifcansee { soundonce DUKE_LONGTERM_PAIN addphealth -1 palfrom 24 16 }
  286.     }
  287.  
  288. ends
  289.  
  290. actor BURNING WEAK BURNING_FLAME
  291.     state burningstate
  292. enda
  293.  
  294. actor BURNING2 WEAK BURNING_FLAME
  295.     state burningstate
  296. enda
  297.  
  298. action TOILETWATERFRAMES 0 4 1 1 1
  299. actor TOILETWATER 0 TOILETWATERFRAMES
  300.     ifpdistl 8192
  301.     {
  302.         soundonce WATER_GURGLE
  303.         ifspawnedby TOILET sizeto 34 34
  304.         else
  305.         {
  306.             ifspawnedby WATERFOUNTAINBROKE
  307.                 sizeto 6 15
  308.             else ifspawnedby TOILETWATER { } else sizeto 24 32
  309.         }
  310.  
  311.         ifp palive ifpdistl RETRIEVEDISTANCE ifp pfacing ifactioncount 32
  312.             ifphealthl MAXPLAYERHEALTH ifhitspace ifcansee
  313.         {
  314.             addphealth 1
  315.             globalsound DUKE_DRINKING
  316.             resetactioncount
  317.         }
  318.     }
  319. enda
  320.  
  321. action WOODENHORSEFRAME  0   1   4
  322. action WOODENFALLFRAME  122  1   5
  323.  
  324. actor HORSEONSIDE WEAKEST cactor WOODENHORSE action WOODENFALLFRAME enda
  325. actor WOODENHORSE WEAK WOODENHORSEFRAME
  326.     fall
  327.     ifhitweapon
  328.     {
  329.         ifdead
  330.         {
  331.             debris SCRAP1 4
  332.             debris SCRAP2 3
  333.             killit
  334.         }
  335.         else action WOODENFALLFRAME
  336.     }
  337. enda
  338.  
  339. state steamcode
  340.     ifpdistl 8192 soundonce STEAM_HISSING
  341.  
  342.     ifcount 20
  343.     {
  344.         resetcount
  345.         ifp palive ifpdistl 1024
  346.         {
  347.             addphealth -1
  348.             palfrom 16 16
  349.         }
  350.     }
  351.     else
  352.     {
  353.         ifspawnedby STEAM break ifspawnedby CEILINGSTEAM break
  354.         sizeto 24 24
  355.     }
  356. ends
  357.  
  358. action STEAMFRAMES      0       5       1       1       1
  359. actor STEAM 0 STEAMFRAMES
  360.     state steamcode
  361. enda
  362.  
  363. actor CEILINGSTEAM 0 STEAMFRAMES
  364.     state steamcode
  365. enda
  366.  
  367. actor WATERBUBBLEMAKER 0 0 randomangle
  368.     ifpdistl 3084 ifrnd 24 spawn WATERBUBBLE
  369. enda
  370.  
  371. action BUBBLE
  372. action CRACKEDBUBBLE    1
  373. move BUBMOVE           -10 -36
  374. move BUBMOVEFAST           -10 -52
  375.  
  376. actor WATERBUBBLE 0 BUBBLE BUBMOVE getv geth randomangle
  377.  
  378.     ifaction CRACKEDBUBBLE
  379.     {
  380.         ifinwater ifrnd 192 killit
  381.         ifactioncount 7 killit
  382.     }
  383.     else
  384.     {
  385.         ifcount 4
  386.         {
  387.             ifrnd 192 move BUBMOVE getv geth randomangle
  388.             else move BUBMOVEFAST getv geth randomangle
  389.             resetcount
  390.         }
  391.  
  392.         ifonwater
  393.         {
  394.             iffloordistl 8 action CRACKEDBUBBLE
  395.         }
  396.         else ifactioncount 40 action CRACKEDBUBBLE
  397.     }
  398. enda
  399.  
  400.  
  401. move SMOKEVEL 8 -16
  402. move ENGINE_SMOKE 64 -64
  403. move SMOKESHOOTOUT -192
  404. action SMOKEFRAMES 0 4 1 1 10
  405. actor SMALLSMOKE 0 SMOKEFRAMES
  406.     ifmove 0
  407.     {
  408.         ifspawnedby RECON
  409.             move SMOKESHOOTOUT geth
  410.         else ifspawnedby SECTOREFFECTOR
  411.             move ENGINE_SMOKE geth getv
  412.         else move SMOKEVEL geth getv faceplayer
  413.         ifspawnedby RPG
  414.         cstat 2
  415.     }
  416.     ifpdistl 1596 ifspawnedby RPG killit
  417.     ifactioncount 4 killit
  418. enda
  419.  
  420. action BARREL_DENTING  2 2 1 1 6
  421. action BARREL_DENTED   1
  422. action BARREL_DENTED2  2
  423.  
  424. move SPAWNED_BLOOD
  425.  
  426. actor NUKEBARRELDENTED WEAK
  427.     cactor NUKEBARREL
  428.     action BARREL_DENTED
  429. enda
  430.  
  431. actor NUKEBARRELLEAKED WEAK
  432.     cactor NUKEBARREL
  433.     action BARREL_DENTED2
  434. enda
  435.  
  436. actor NUKEBARREL MEDIUMSTRENGTH
  437.     ifsquished
  438.     {
  439.         debris SCRAP1 32
  440.         spawn BLOODPOOL
  441.         spawn OOZ
  442.         killit
  443.     }
  444.     fall
  445.     ifaction BARREL_DENTING
  446.     {
  447.         ifactioncount 2
  448.         {
  449.             debris SCRAP1 10
  450.             ifrnd 2 spawn BLOODPOOL
  451.             killit
  452.         }
  453.     }
  454.     else ifhitweapon
  455.     {
  456.         ifdead
  457.         {
  458.             sound VENT_BUST
  459.  
  460.             ifrnd 128
  461.                 spawn BLOODPOOL
  462.             action BARREL_DENTING
  463.         }
  464.         else
  465.         {
  466.             ifaction 0
  467.                 action BARREL_DENTED
  468.             else ifaction BARREL_DENTED
  469.             {
  470.                 action BARREL_DENTED2
  471.                 spawn BLOODPOOL
  472.             }
  473.             else ifaction BARREL_DENTED2
  474.                 action BARREL_DENTING
  475.         }
  476.     }
  477. enda
  478.  
  479. state burningbarrelcode
  480.     fall
  481.     ifcount 32
  482.     {
  483.         resetcount
  484.         ifp palive ifpdistl 1480 ifp phigher
  485.         {
  486.             addphealth -1
  487.             palfrom 16 16
  488.             ifrnd 96 sound DUKE_LONGTERM_PAIN
  489.         }
  490.     }
  491.     ifhitweapon
  492.     {
  493.         sound VENT_BUST
  494.         debris SCRAP1 10
  495.         ifrnd 128 spawn BURNING
  496.         else spawn BURNING2
  497.         killit
  498.     }
  499. ends
  500.  
  501. actor FIREBARREL state burningbarrelcode enda
  502. actor FIREVASE state burningbarrelcode enda
  503.  
  504. action SHRINKERFRAMES 0 4 1 1 10
  505. actor SHRINKEREXPLOSION 0 SHRINKERFRAMES
  506.     ifactioncount 4 killit
  507. enda
  508.  
  509. action EXPLOSION_FRAMES 0 20 1 1  4
  510. actor EXPLOSION2 1 EXPLOSION_FRAMES
  511.     ifactioncount 20 killit
  512. enda
  513.  
  514. actor EXPLOSION2BOT 1 EXPLOSION_FRAMES
  515.     ifactioncount 20 killit
  516. enda
  517.  
  518. action FFLAME_FR 0 16 1 1 1
  519. action FFLAME 0 1 1 1 1
  520.  
  521. actor FLOORFLAME 0 FFLAME_FR
  522.         ifaction FFLAME_FR
  523.         {
  524.                 ifpdistl 1024 hitradius 1024 WEAKEST WEAKEST WEAKEST WEAKEST
  525.                 ifactioncount 16
  526.                     action FFLAME
  527.         }
  528.         ifaction FFLAME ifrnd 4
  529.         {
  530.              action FFLAME_FR
  531.              sound CAT_FIRE
  532.              resetactioncount
  533.         }
  534.  
  535. enda
  536.  
  537.  
  538.  
  539. action ASATNSPIN   0 5 1 1 4
  540. action ASATSHOOTING -10 3 5 1 40
  541. action ASATWAIT 0 1 5 1 1
  542. move TURRVEL
  543.  
  544. actor ROTATEGUN ROTTURRETSTRENGTH
  545. // ASATSHOOTING TURRVEL faceplayer
  546.  
  547.     ifaction 0
  548.     {
  549.         action ASATSHOOTING
  550.         move TURRVEL faceplayer
  551.     }
  552.     else ifaction ASATNSPIN
  553.         { ifactioncount 32 { action ASATWAIT move TURRVEL faceplayer } }
  554.     else ifaction ASATSHOOTING
  555.     {
  556.         ifactioncount 12 { ifrnd 32 action ASATWAIT }
  557.         ifcount 32 resetcount
  558.         else ifcount 16 { ifcount 17 { } else { sound PRED_ATTACK shoot FIRELASER } }
  559.         else ifcount 4 { ifcount 5 { } else { ifcansee ifcanshoottarget { sound PRED_ATTACK shoot FIRELASER } } }
  560.     }
  561.     else ifaction ASATWAIT
  562.         { ifactioncount 64 ifrnd 32 ifp palive ifcansee { action ASATSHOOTING move TURRVEL faceplayer } }
  563.     ifhitweapon { ifdead { addkills 1 sound LASERTRIP_EXPLODE debris SCRAP1 15 spawn EXPLOSION2 killit }
  564.         else { action ASATNSPIN debris SCRAP1 4 } move 0 }
  565.  
  566. enda
  567.  
  568. action RIP_F 0 8 1 1 1
  569. actor FORCERIPPLE 0 RIP_F
  570.     ifactioncount 8 killit
  571. enda
  572.  
  573. action TRANSFOWARD 0  6  1  1  2
  574. action TRANSBACK   5  6  1 -1  2
  575. actor TRANSPORTERSTAR 0 TRANSFOWARD
  576.     ifaction TRANSFOWARD
  577.     {
  578.         ifactioncount 6
  579.             action TRANSBACK
  580.     }
  581.     else
  582.         ifactioncount 6 killit
  583. enda
  584.  
  585. action BEAMFOWARD  0  4  1  1  9
  586. actor TRANSPORTERBEAM 0 BEAMFOWARD
  587.     sizeto 32 64 sizeto 32 64 sizeto 32 64
  588.     ifactioncount 4 killit
  589. enda
  590.  
  591. state getcode
  592.     ifactor ATOMICHEALTH globalsound GETATOMICHEALTH
  593.     else globalsound DUKE_GET
  594.     palfrom 16 0 32
  595.     ifrespawn
  596.     {
  597.         move RESPAWN_ACTOR_FLAG
  598.         spawn RESPAWNMARKERRED
  599.         cstat 32768
  600.     }
  601.     else killit
  602. ends
  603.  
  604. state randgetweapsnds
  605.     ifrnd 64 globalsound DUKE_GETWEAPON1
  606.     else ifrnd 96 globalsound DUKE_GETWEAPON2
  607.     else ifrnd 128 globalsound DUKE_GETWEAPON3
  608.     else ifrnd 140 globalsound DUKE_GETWEAPON4
  609.     else globalsound DUKE_GETWEAPON6
  610. ends
  611.  
  612. state getweaponcode
  613.  
  614.     state randgetweapsnds
  615.  
  616.     palfrom 32 0 32
  617.     ifgotweaponce 1 break
  618.     ifrespawn
  619.     {
  620.         move RESPAWN_ACTOR_FLAG
  621.         spawn RESPAWNMARKERRED
  622.         cstat 32768
  623.     }
  624.     else killit
  625. ends
  626.  
  627.  
  628. state respawnit
  629.     ifcount RESPAWNITEMTIME { spawn TRANSPORTERSTAR move 0 cstat 0 sound TELEPORTER }
  630. ends
  631.  
  632. state quikget
  633.     ifactor ATOMICHEALTH globalsound GETATOMICHEALTH
  634.     else globalsound DUKE_GET
  635.     palfrom 16 0 32
  636.     killit
  637. ends
  638.  
  639. state quikweaponget
  640.     state randgetweapsnds
  641.     palfrom 32 0 32
  642.     ifgotweaponce 1 break
  643.     killit
  644. ends
  645.  
  646. actor STEROIDS
  647.     fall
  648.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  649.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE
  650.         ifpinventory GET_STEROIDS STEROID_AMOUNT ifcanseetarget
  651.     {
  652.         addinventory GET_STEROIDS STEROID_AMOUNT quote 37 state getcode
  653.         ifspawnedby STEROIDS state getcode
  654.         else state quikget
  655.     }
  656. enda
  657.  
  658. actor HEATSENSOR
  659.     fall
  660.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  661.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_HEATS HEAT_AMOUNT
  662.         ifcanseetarget
  663.     {
  664.         addinventory GET_HEATS HEAT_AMOUNT quote 101 state getcode
  665.         ifspawnedby HEATSENSOR state getcode
  666.         else state quikget
  667.     }
  668. enda
  669.  
  670. actor BOOTS
  671.     fall
  672.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  673.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_BOOTS BOOT_AMOUNT
  674.         ifcanseetarget
  675.     {
  676.         addinventory GET_BOOTS BOOT_AMOUNT quote 6
  677.         ifspawnedby BOOTS state getcode
  678.         else state quikget
  679.     }
  680. enda
  681.  
  682. actor SHIELD
  683.     fall
  684.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  685.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_SHIELD SHIELD_AMOUNT
  686.         ifcanseetarget
  687.     {
  688.         ifspawnedby PIGCOP
  689.         {
  690.             ifrnd 128 addinventory GET_SHIELD PIG_SHIELD_AMOUNT1
  691.             else addinventory GET_SHIELD PIG_SHIELD_AMOUNT2
  692.             quote 104
  693.             sound KICK_HIT palfrom 24 0 32 killit
  694.         }
  695.         else addinventory GET_SHIELD SHIELD_AMOUNT quote 38
  696.         ifspawnedby SHIELD state getcode
  697.         else state quikget
  698.     }
  699. enda
  700.  
  701. actor AIRTANK
  702.     fall
  703.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  704.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_SCUBA SCUBA_AMOUNT
  705.         ifcanseetarget
  706.     {
  707.         addinventory GET_SCUBA SCUBA_AMOUNT quote 39 state getcode
  708.         ifspawnedby AIRTANK state getcode
  709.         else state quikget
  710.     }
  711. enda
  712.  
  713. action HOLODUKE_FRAMES 0 4 1 1 8
  714. actor HOLODUKE 0 HOLODUKE_FRAMES
  715.     fall
  716.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  717.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_HOLODUKE HOLODUKE_AMOUNT
  718.         ifcanseetarget
  719.     {
  720.         addinventory GET_HOLODUKE HOLODUKE_AMOUNT quote 51 state getcode
  721.         ifspawnedby HOLODUKE state getcode
  722.         else state quikget
  723.     }
  724. enda
  725.  
  726. actor JETPACK
  727.     fall
  728.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  729.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifpinventory GET_JETPACK JETPACK_AMOUNT ifcanseetarget
  730.     {
  731.         addinventory GET_JETPACK JETPACK_AMOUNT quote 41 state getcode
  732.         ifspawnedby JETPACK state getcode
  733.         else state quikget
  734.     }
  735. enda
  736.  
  737. actor ACCESSCARD
  738.     fall
  739.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  740.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  741.     {
  742.         ifpinventory GET_ACCESS 0 break
  743.         addinventory GET_ACCESS 1
  744.         quote 43
  745.         state getcode
  746.     }
  747. enda
  748.  
  749. // test boss_recod
  750.  
  751.  
  752. actor AMMO
  753.     fall
  754.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  755.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  756.     {
  757.         addammo PISTOL_WEAPON PISTOLAMMOAMOUNT quote 65
  758.         ifspawnedby AMMO state getcode
  759.         else state quikget
  760.     }
  761. enda
  762.  
  763. actor FREEZEAMMO
  764.     fall
  765.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  766.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  767.     {
  768.         addammo FREEZE_WEAPON FREEZEAMMOAMOUNT quote 66
  769.         ifspawnedby FREEZEAMMO state getcode
  770.         else state quikget
  771.     }
  772. enda
  773.  
  774.  
  775.  
  776. actor SHOTGUNAMMO
  777.     fall
  778.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  779.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  780.     {
  781.         addammo SHOTGUN_WEAPON SHOTGUNAMMOAMOUNT quote 69
  782.         ifspawnedby SHOTGUNAMMO state getcode
  783.         else state quikget
  784.     }
  785. enda
  786.  
  787. actor AMMOLOTS
  788.     fall
  789.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  790.     else ifp pshrunk { } else ifp palive ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  791.     {
  792.         addammo PISTOL_WEAPON 48 quote 65
  793.         ifspawnedby AMMOLOTS state getcode
  794.         else state quikget
  795.     }
  796. enda
  797.  
  798. actor CRYSTALAMMO
  799.     fall
  800.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  801.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  802.     {
  803.         addammo SHRINKER_WEAPON CRYSTALAMMOAMOUNT quote 78
  804.         ifspawnedby CRYSTALAMMO state getcode
  805.         else state quikget
  806.     }
  807. enda
  808.  
  809. actor BATTERYAMMO
  810.     fall
  811.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  812.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  813.     {
  814.         addammo CHAINGUN_WEAPON CHAINGUNAMMOAMOUNT quote 63
  815.         ifspawnedby BATTERYAMMO state getcode
  816.         else state quikget
  817.     }
  818. enda
  819.  
  820. actor DEVISTATORAMMO
  821.     fall
  822.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  823.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  824.     {
  825.         addammo DEVISTATOR_WEAPON DEVISTATORAMMOAMOUNT quote 14
  826.         ifspawnedby DEVISTATORAMMO state getcode
  827.         else state quikget
  828.     }
  829. enda
  830.  
  831. actor RPGAMMO
  832.     fall
  833.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  834.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  835.     {
  836.         addammo RPG_WEAPON RPGAMMOBOX quote 64
  837.         ifspawnedby RPGAMMO state getcode
  838.         else state quikget
  839.     }
  840. enda
  841.  
  842. actor HBOMBAMMO
  843.     fall
  844.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  845.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  846.     {
  847.         ifgotweaponce 0 break // ( Multiplayer (mode 3) only )
  848.  
  849.         addweapon HANDBOMB_WEAPON 1 quote 55
  850.         addammo HANDBOMB_WEAPON HANDBOMBBOX
  851.  
  852.         ifspawnedby HBOMBAMMO state getweaponcode
  853.         else state quikweaponget
  854.     }
  855. enda
  856.  
  857. actor RPGSPRITE
  858.     fall
  859.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  860.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  861.     {
  862.         ifgotweaponce 0 break // ( Multiplayer (mode 3) only )
  863.  
  864.         addweapon RPG_WEAPON RPGAMMOBOX quote 56
  865.         ifspawnedby RPGSPRITE state getweaponcode
  866.         else state quikweaponget
  867.     }
  868. enda
  869.  
  870. // 531.89 GTE.
  871. // IMA.
  872. // PO BOX 4629
  873. // Rocford ill, 61110-4629
  874. // Ms. Lee
  875.  
  876. actor SHOTGUNSPRITE
  877.     fall
  878.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  879.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  880.     {
  881.         ifspawnedby PIGCOP
  882.         {
  883.             addweapon SHOTGUN_WEAPON 0
  884.             ifrnd 64 addammo SHOTGUN_WEAPON 4
  885.             else ifrnd 64 addammo SHOTGUN_WEAPON 3
  886.             else ifrnd 64 addammo SHOTGUN_WEAPON 2
  887.             else addammo SHOTGUN_WEAPON 1
  888.         }
  889.         else
  890.         {
  891.             ifgotweaponce 0 break // Multiplayer only
  892.             addweapon SHOTGUN_WEAPON SHOTGUNAMMOAMOUNT quote 57
  893.         }
  894.         ifspawnedby SHOTGUNSPRITE state getweaponcode
  895.         else state quikweaponget
  896.     }
  897. enda
  898.  
  899.  
  900.  
  901. actor SIXPAK
  902.     fall
  903.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  904.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifphealthl MAXPLAYERHEALTH ifcanseetarget
  905.     {
  906.         addphealth 30 quote 62
  907.         ifspawnedby SIXPAK state getcode
  908.         else state quikget
  909.     }
  910. enda
  911.  
  912. actor COLA
  913.     fall
  914.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  915.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifphealthl MAXPLAYERHEALTH // ifcanseetarget
  916.     {
  917.         addphealth 10 quote 61
  918.         ifspawnedby COLA state getcode
  919.         else state quikget
  920.     }
  921. enda
  922.  
  923. actor ATOMICHEALTH
  924.     fall
  925.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  926.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  927.         ifphealthl MAXPLAYERATOMICHEALTH
  928.     {
  929.         addphealth 50 quote 19
  930.         ifspawnedby ATOMICHEALTH state getcode
  931.         else state quikget
  932.     }
  933. enda
  934.  
  935.  
  936.  
  937.  
  938. actor FIRSTAID
  939.     fall
  940.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  941.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6
  942.         ifpinventory GET_FIRSTAID FIRSTAID_AMOUNT ifcanseetarget
  943.     {
  944.         addinventory GET_FIRSTAID FIRSTAID_AMOUNT quote 3
  945.  
  946.         ifspawnedby FIRSTAID state getcode
  947.         else state quikget
  948.     }
  949. enda
  950.  
  951.  
  952. actor FIRSTGUNSPRITE
  953.     fall
  954.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  955.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  956.     {
  957.         ifgotweaponce 0 break
  958.  
  959.         addweapon PISTOL_WEAPON 48
  960.         ifspawnedby FIRSTGUNSPRITE state getweaponcode
  961.         else state quikweaponget
  962.     }
  963. enda
  964.  
  965.  
  966. actor TRIPBOMBSPRITE
  967.     fall
  968.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  969.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  970.     {
  971.         ifgotweaponce 0 break
  972.  
  973.         addweapon TRIPBOMB_WEAPON 1
  974.         quote 58
  975.         ifspawnedby TRIPBOMBSPRITE state getweaponcode
  976.         else state quikweaponget
  977.     }
  978. enda
  979.  
  980. actor CHAINGUNSPRITE
  981.     fall
  982.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  983.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  984.     {
  985.         ifgotweaponce 0 break
  986.  
  987.         addweapon CHAINGUN_WEAPON 50 quote 54
  988.         ifspawnedby CHAINGUNSPRITE state getweaponcode
  989.         else state quikweaponget
  990.     }
  991. enda
  992.  
  993.  
  994.  
  995. actor SHRINKERSPRITE
  996.     fall
  997.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  998.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  999.     {
  1000.         ifgotweaponce 0 break
  1001.  
  1002.         addweapon SHRINKER_WEAPON 10 quote 60
  1003.         ifspawnedby SHRINKERSPRITE state getweaponcode
  1004.         else state quikweaponget
  1005.     }
  1006. enda
  1007.  
  1008. actor FREEZESPRITE
  1009.     fall
  1010.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  1011.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  1012.     {
  1013.         ifgotweaponce 0 break
  1014.  
  1015.         addweapon FREEZE_WEAPON FREEZEAMMOAMOUNT quote 59
  1016.         ifspawnedby FREEZESPRITE state getweaponcode
  1017.         else state quikweaponget
  1018.     }
  1019. enda
  1020.  
  1021. actor DEVISTATORSPRITE
  1022.     fall
  1023.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  1024.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  1025.     {
  1026.         ifgotweaponce 0 break // ( Multiplayer (mode 3) only )
  1027.  
  1028.         addweapon DEVISTATOR_WEAPON DEVISTATORAMMOAMOUNT quote 87
  1029.         ifspawnedby DEVISTATORSPRITE state getweaponcode
  1030.         else state quikweaponget
  1031.     }
  1032. enda
  1033.  
  1034.  
  1035. state firestate
  1036.  
  1037.     ifgapzl 16 break
  1038.     ifinwater killit
  1039.  
  1040.     ifp palive ifpdistl 844 ifrnd 32 ifcansee { soundonce DUKE_LONGTERM_PAIN addphealth -1 palfrom 32 32 }
  1041.  
  1042.     ifactor FIRE ifspawnedby FIRE break
  1043.     else ifactor FIRE2 ifspawnedby FIRE2 break
  1044.  
  1045.     iffloordistl 128
  1046.     {
  1047.         ifcount 32 sizeto 8 8
  1048.         ifcount 64 killit
  1049.     }
  1050.     else killit
  1051.  
  1052. ends
  1053.  
  1054. action FIRE_FRAMES     -1 14 1 1 1
  1055. move FIREVELS
  1056. actor FIRE WEAK FIRE_FRAMES FIREVELS state firestate enda
  1057. actor FIRE2 WEAK FIRE_FRAMES FIREVELS state firestate enda
  1058.  
  1059. actor FECES
  1060.     ifcount 24
  1061.     {
  1062.         ifpdistl RETRIEVEDISTANCE
  1063.         {
  1064.             soundonce DUKE_STEPONFECES
  1065.             sound STEPNIT
  1066.  
  1067.             spawn BLOODPOOL   // Will be brown
  1068.             killit
  1069.         }
  1070.     }
  1071.     else sizeto 32 32
  1072. enda
  1073.  
  1074. state drop_ammo ifrnd SPAWNAMMOODDS spawn AMMO ends
  1075. state drop_battery ifrnd SPAWNAMMOODDS spawn BATTERYAMMO ends
  1076. state drop_sgshells ifrnd SPAWNAMMOODDS spawn SHOTGUNAMMO ends
  1077. state drop_shotgun ifrnd SPAWNAMMOODDS spawn SHOTGUNSPRITE ends
  1078. state drop_chaingun
  1079.     ifrnd SPAWNAMMOODDS
  1080.     {
  1081.         ifrnd 32 spawn CHAINGUNSPRITE
  1082.         else spawn BATTERYAMMO
  1083.     }
  1084. ends
  1085.  
  1086. state jib_sounds
  1087.     ifrnd SWEARFREQUENCY
  1088.     {
  1089.         ifrnd 16 globalsound JIBBED_ACTOR1
  1090.         else ifrnd 16 globalsound JIBBED_ACTOR2
  1091.         else ifrnd 16 globalsound JIBBED_ACTOR3
  1092.         else ifrnd 16 globalsound JIBBED_ACTOR5
  1093.         else ifrnd 16 globalsound JIBBED_ACTOR6
  1094.         else ifrnd 16 globalsound JIBBED_ACTOR10
  1095.         else ifrnd 16 globalsound JIBBED_ACTOR7
  1096.         else ifrnd 16 globalsound JIBBED_ACTOR4
  1097.         else ifrnd 16 globalsound JIBBED_ACTOR8
  1098.         else ifrnd 16 globalsound JIBBED_ACTOR13
  1099.         else ifrnd 16 globalsound JIBBED_ACTOR9
  1100.         else ifrnd 16 globalsound JIBBED_ACTOR11
  1101.         else ifrnd 16 globalsound JIBBED_ACTOR12
  1102.     }
  1103. ends
  1104.  
  1105. state standard_jibs
  1106.     guts JIBS2 25
  1107.     guts JIBS3 25
  1108.     guts JIBS4 25
  1109.     guts JIBS5 25
  1110.     guts JIBS6 25
  1111.     { guts JIBS1 25 spawn BLOODPOOL }               // spine
  1112.     state jib_sounds
  1113. ends
  1114.  
  1115. action FEMSHRUNK
  1116. action FEMFROZEN1 1
  1117. action FEMFROZEN2
  1118. action FEMDANCE1 19 1 1 1 16
  1119. action FEMDANCE3 19 1 1 1 26
  1120.  
  1121. action FEMDANCE2 20 2 1 1 10
  1122. action FEMANIMATE
  1123.  
  1124. state femcode
  1125.  
  1126.     ifactor NAKED1 { } else ifactor FEM6 { } else
  1127.     {
  1128.         fall
  1129.         ifactor BLOODYPOLE ifhitweapon ifdead
  1130.             { state standard_jibs killit }
  1131.     }
  1132.  
  1133.     ifaction FEMSHRUNK
  1134.     {
  1135.         ifcount SHRUNKDONECOUNT action FEMANIMATE
  1136.         else ifcount SHRUNKCOUNT sizeto 40 40
  1137.         else state genericshrunkcode
  1138.     }
  1139.     else ifaction FEMDANCE1 { ifactioncount 2 action FEMDANCE2 }
  1140.     else ifaction FEMDANCE2 { ifactioncount 8 action FEMDANCE3 }
  1141.     else ifaction FEMDANCE3 { ifactioncount 2 action FEMANIMATE }
  1142.     else ifaction FEMFROZEN1
  1143.     {
  1144.         ifcount THAWTIME { action FEMANIMATE getlastpal }
  1145.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  1146.  
  1147.         ifhitweapon
  1148.         {
  1149.             ifwasweapon FREEZEBLAST { strength 0 break }
  1150.             lotsofglass 30
  1151.             sound GLASS_BREAKING
  1152.             respawnhitag
  1153.             ifrnd 84 spawn BLOODPOOL
  1154.             killit
  1155.         }
  1156.         else ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  1157.         break
  1158.     }
  1159.     else ifaction FEMFROZEN2
  1160.     {
  1161.         ifcount THAWTIME { action FEMANIMATE getlastpal }
  1162.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  1163.  
  1164.         ifhitweapon
  1165.         {
  1166.             ifwasweapon FREEZEBLAST { strength 0 break }
  1167.             lotsofglass 30
  1168.  
  1169.             sound GLASS_BREAKING
  1170.             ifrnd 84 spawn BLOODPOOL
  1171.             respawnhitag
  1172.  
  1173.             ifrnd 128 sound DUKE_HIT_STRIPPER1
  1174.             else sound DUKE_HIT_STRIPPER2
  1175.  
  1176.             killit
  1177.         }
  1178.         else ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  1179.         break
  1180.     }
  1181.  
  1182.     ifhitweapon
  1183.     {
  1184.         ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING count 0 action FEMSHRUNK break }
  1185.  
  1186.         ifdead
  1187.         {
  1188.             ifwasweapon FREEZEBLAST
  1189.             {
  1190.                 ifaction FEMSHRUNK break
  1191.  
  1192.                 ifactor NAKED1 action FEMFROZEN2
  1193.                 else ifactor FEM5 action FEMFROZEN2
  1194.                 else ifactor FEM6 action FEMFROZEN2
  1195.                 else ifactor FEM8 action FEMFROZEN2
  1196.                 else ifactor FEM9 action FEMFROZEN2
  1197.                 else ifactor PODFEM1 action FEMFROZEN2
  1198.                 else action FEMFROZEN1
  1199.  
  1200.                 move 0
  1201.                 spritepal 1
  1202.                 strength 0
  1203.  
  1204.                 sound SOMETHINGFROZE
  1205.  
  1206.                 break
  1207.             }
  1208.  
  1209.             ifrnd 128 sound DUKE_HIT_STRIPPER1
  1210.             else sound DUKE_HIT_STRIPPER2
  1211.  
  1212.             respawnhitag
  1213.             state standard_jibs
  1214.  
  1215.             shoot BLOODSPLAT1
  1216.             shoot BLOODSPLAT2
  1217.             shoot BLOODSPLAT3
  1218.             shoot BLOODSPLAT4
  1219.             spawn BLOODPOOL
  1220.  
  1221.             ifactor FEM1 money 5
  1222.             else ifactor FEM2 { money 7 cactor BARBROKE cstat 0 }
  1223.             else ifactor FEM3 money 4
  1224.             else ifactor FEM7 money 8
  1225.  
  1226.             ifactor FEM5 { strength TOUGH cactor BLOODYPOLE }
  1227.             else ifactor FEM6 { cstat 0 cactor FEM6PAD }
  1228.             else ifactor FEM8 { strength TOUGH cactor BLOODYPOLE }
  1229.             else
  1230.             {
  1231.                 spritepal 6
  1232.                 soundonce LADY_SCREAM
  1233.                 ifactor NAKED1 debris SCRAP3 18
  1234.                 else ifactor PODFEM1 debris SCRAP3 18
  1235.                 killit
  1236.             }
  1237.         }
  1238.         else
  1239.         {
  1240.             sound SQUISHED
  1241.             guts JIBS6 1
  1242.             ifactor FEM8 break
  1243.             soundonce LADY_SCREAM
  1244.         }
  1245.     }
  1246. ends
  1247.  
  1248. state killme
  1249.     ifp pfacing ifpdistl 1280 ifhitspace soundonce KILLME
  1250. ends
  1251.  
  1252. state tipme
  1253.     ifp pfacing ifpdistl 1280 ifhitspace
  1254.     {
  1255.         tip
  1256.         ifrnd 128 soundonce DUKE_TIP1
  1257.         else soundonce DUKE_TIP2
  1258.         ifactor FEM1 action FEMDANCE1
  1259.     }
  1260. ends
  1261.  
  1262. actor FEM1 TOUGH FEMANIMATE state tipme state femcode enda
  1263. actor FEM2 TOUGH FEMANIMATE state tipme state femcode enda
  1264. actor FEM3 TOUGH FEMANIMATE state tipme state femcode enda
  1265. actor FEM4 TOUGH FEMANIMATE state femcode enda
  1266. actor FEM5 TOUGH FEMANIMATE state killme state femcode enda
  1267. actor FEM6 TOUGH FEMANIMATE state killme state femcode enda
  1268. actor FEM7 TOUGH FEMANIMATE state tipme state femcode enda
  1269. actor FEM8 TOUGH FEMANIMATE state femcode enda
  1270. actor FEM9 TOUGH FEMANIMATE state femcode enda
  1271. actor NAKED1 TOUGH FEMANIMATE state killme state femcode enda
  1272. actor PODFEM1 TOUGH FEMANIMATE state killme state femcode enda
  1273. actor BLOODYPOLE TOUGH state femcode enda
  1274.  
  1275. actor STATUEFLASH fall // state statuehit
  1276.     ifcount 32 cactor STATUE
  1277. enda
  1278.  
  1279. actor STATUE fall
  1280.     ifp pfacing ifpdistl 1280 ifhitspace { cactor STATUEFLASH move 0 }
  1281. enda
  1282.  
  1283. actor MIKE
  1284.     ifp pfacing ifpdistl 1280 ifhitspace mikesnd
  1285. enda
  1286.  
  1287. state troop_body_jibs
  1288.     ifrnd 64 guts HEADJIB1 1
  1289.     ifrnd 64 guts LEGJIB1 2
  1290.     ifrnd 64 guts ARMJIB1 2
  1291.     ifrnd 48 spawn BLOODPOOL
  1292. ends
  1293.  
  1294. state liz_body_jibs
  1295. ifrnd 64 guts LIZMANHEAD1 1
  1296.     ifrnd 64 guts LIZMANLEG1 2
  1297.     ifrnd 64 guts LIZMANARM1 2
  1298.     ifrnd 48 spawn BLOODPOOL
  1299. ends
  1300.  
  1301. state delete_enemy killit ends
  1302.  
  1303.  
  1304. action BLOODFRAMES 0 4 1 1 15
  1305. actor BLOOD 0 BLOODFRAMES
  1306.     sizeto 72 72 sizeto 72 72 sizeto 72 72
  1307.     ifpdistg 3144 killit
  1308.     ifactioncount 4 killit
  1309. enda
  1310.  
  1311. action EGGOPEN1 1 1 1 1 4
  1312. action EGGOPEN2 2 1 1 1 4
  1313. action EGGOPEN3 2 1 1 1 4
  1314. action EGGWAIT  0
  1315. action EGGFROZEN 1
  1316. action EGGSHRUNK 1
  1317.  
  1318. actor EGG TOUGH
  1319.     ifaction 0
  1320.     {
  1321.         ifcount 64
  1322.         {
  1323.             ifrnd 128 { action EGGWAIT move 0 }
  1324.             else
  1325.             {
  1326.                 sound SLIM_HATCH
  1327.                 action EGGOPEN1
  1328.             }
  1329.         }
  1330.     }
  1331.     else ifaction EGGOPEN1 ifactioncount 4 action EGGOPEN2
  1332.     else ifaction EGGOPEN2 ifactioncount 4 { spawn GREENSLIME action EGGOPEN3 }
  1333.     else ifaction EGGSHRUNK
  1334.     {
  1335.         ifcount SHRUNKDONECOUNT action EGGOPEN2
  1336.         else ifcount SHRUNKCOUNT sizeto 48 40
  1337.         else state genericshrunkcode
  1338.     }
  1339.     else ifaction EGGFROZEN
  1340.     {
  1341.         ifcount THAWTIME { action 0 getlastpal }
  1342.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  1343.  
  1344.         ifhitweapon
  1345.         {
  1346.             ifwasweapon FREEZEBLAST { strength 0 break }
  1347.             lotsofglass 30
  1348.  
  1349.             sound GLASS_BREAKING
  1350.             ifrnd 84 spawn BLOODPOOL
  1351.  
  1352.             addkills 1
  1353.             killit
  1354.         }
  1355.  
  1356.         // ifp pducking
  1357.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  1358.  
  1359.         break
  1360.     }
  1361.  
  1362.     ifhitweapon
  1363.     {
  1364.         ifwasweapon SHRINKSPARK { move 0 sound ACTOR_SHRINKING action EGGSHRUNK break }
  1365.  
  1366.         ifdead
  1367.         {
  1368.             ifwasweapon FREEZEBLAST
  1369.                 { sound SOMETHINGFROZE spritepal 1 move 0 action EGGFROZEN strength 0 break }
  1370.  
  1371.             addkills 1
  1372.  
  1373.             sound SQUISHED
  1374.  
  1375.             state standard_jibs
  1376.             state delete_enemy
  1377.         }
  1378.     }
  1379.     else ifaction EGGWAIT
  1380.     {
  1381.         ifcount 512 ifrnd 2
  1382.         {
  1383.             ifaction EGGSHRUNK break
  1384.             sound SLIM_HATCH
  1385.             action EGGOPEN1
  1386.         }
  1387.     }
  1388.  
  1389. enda
  1390.  
  1391. actor KNEE KNEE_WEAPON_STRENGTH enda
  1392. actor SPIT SPIT_WEAPON_STRENGTH enda
  1393. actor CHAINGUN CHAINGUN_WEAPON_STRENGTH enda
  1394. actor SHOTGUN SHOTGUN_WEAPON_STRENGTH enda
  1395. actor FIRELASER FIRELASER_WEAPON_STRENGTH enda
  1396. actor HEAVYHBOMB HANDBOMB_WEAPON_STRENGTH enda
  1397. actor BOUNCEMINE BOUNCEMINE_WEAPON_STRENGTH enda
  1398. actor MORTER MORTER_WEAPON_STRENGTH enda
  1399. actor SHRINKSPARK SHRINKER_WEAPON_STRENGTH enda
  1400. actor RPG RPG_WEAPON_STRENGTH enda
  1401. actor FREEZEBLAST FREEZETHROWER_WEAPON_STRENGTH enda
  1402. actor DEVISTATORBLAST FREEZETHROWER_WEAPON_STRENGTH enda
  1403. actor COOLEXPLOSION1 COOL_EXPLOSION_STRENGTH enda
  1404. actor TRIPBOMB TRIPBOMB_STRENGTH enda
  1405.  
  1406. action WEAP2FRAMES 0  4  1  1  6
  1407. actor SHOTSPARK1 PISTOL_WEAPON_STRENGTH WEAP2FRAMES
  1408.     ifdead killit
  1409.     ifactioncount 4 killit
  1410.     else
  1411.     {
  1412.         ifactioncount 3 { ifinwater spawn WATERBUBBLE }
  1413.         else ifcount 2 { } else ifonwater spawn WATERSPLASH2
  1414.     }
  1415. enda
  1416.  
  1417. state standard_pjibs
  1418.     guts JIBS1 30
  1419.     guts JIBS3 30
  1420.     guts JIBS4 30
  1421.     guts JIBS5 30
  1422.     guts JIBS6 30
  1423.     guts DUKETORSO 1
  1424.     guts DUKELEG 2
  1425.     guts DUKEGUN 1
  1426.     money 50
  1427. ends
  1428.  
  1429. move DUKENOTMOVING
  1430. state handle_dead_dukes
  1431.     fall
  1432.     ifmove 0     // 1st time initializiation...
  1433.     {
  1434.         ifrnd 128 cstat 4
  1435.         else cstat 0
  1436.         move DUKENOTMOVING
  1437.     }
  1438.  
  1439.     ifsquished
  1440.     {
  1441.         sound SQUISHED
  1442.         spawn OOZ
  1443.         killit
  1444.     }
  1445.     else ifcount 1024 ifpdistg 4096 killit
  1446.     else
  1447.     {
  1448.         strength 0
  1449.         ifhitweapon ifwasweapon RADIUSEXPLOSION
  1450.         {
  1451.             state standard_jibs
  1452.             killit
  1453.         }
  1454.     }
  1455. ends
  1456.  
  1457. action PLYINGFRAMES 0 1 0 1 1
  1458. actor DUKELYINGDEAD 0 PLYINGFRAMES
  1459.     state handle_dead_dukes
  1460. enda
  1461.  
  1462. action PSTAND       0   1   5   1    1
  1463. action PEXPLODE     106   5   1   1   10
  1464. action PEXPLODEAD   113   1   1
  1465.  
  1466. action PJPHOUVER    15   1   5   1
  1467. action PWALK        20   4   5   1   16
  1468. action PRUN         20   4   5   1   10
  1469. action PWALKBACK    45   4   5  -1   16
  1470. action PRUNBACK     45   4   5  -1   10
  1471. action PJUMPING     50   4   5   1   30
  1472. action PFALLING     65   1   5
  1473. action PDUCKING     86   1   5
  1474. action PCRAWLING    86   3   5   1   20
  1475. action PAKICKING    40   2   5   1   25
  1476. action PFLINTCHING  106  1   1   1   10
  1477. action PTHROWNBACK  106  5   1   1   18
  1478. action PFROZEN       20  1   5
  1479. action PLYINGDEAD   113  1   1
  1480.  
  1481. action PSWIMMINGGO   375   1   5   1   10
  1482. action PSWIMMING     375   4   5   1   13
  1483. action PSWIMMINGWAIT 395   1   5   1   13
  1484. action PTREDWATER    395   2   5   1   17
  1485.  
  1486. move PSTOPED
  1487. move PSHRINKING // used as a var only
  1488.  
  1489. state check_dead_thrown_back
  1490.     ifdead
  1491.     {
  1492.         strength 0
  1493.         action PTHROWNBACK
  1494.     }
  1495. ends
  1496.  
  1497. state check_pstandard
  1498.     ifp pwalking action PWALK
  1499.     else ifp pkicking action PAKICKING
  1500.     else ifp pwalkingback action PWALKBACK
  1501.     else ifp prunning action PRUN
  1502.     else ifp prunningback action PRUNBACK
  1503.     else ifp pjumping
  1504.         action PJUMPING
  1505.     else ifp pducking action PDUCKING
  1506. ends
  1507.  
  1508. state random_wall_jibs
  1509.     ifrnd 96 shoot BLOODSPLAT1
  1510.     ifrnd 96 shoot BLOODSPLAT2
  1511.     ifrnd 96 shoot BLOODSPLAT3
  1512.     ifrnd 96 shoot BLOODSPLAT4
  1513.     ifrnd 96 shoot BLOODSPLAT1
  1514. ends
  1515.  
  1516. actor APLAYER 100 PSTAND 0 0
  1517.  
  1518.     ifaction 0 action PSTAND
  1519.     ifdead
  1520.     {
  1521.         ifsquished palfrom 32 63 63 63
  1522.         else fall
  1523.  
  1524.         ifactioncount 7 { move 0 } else ifactioncount 6
  1525.         {
  1526.             ifmultiplayer { }
  1527.             else
  1528.             {
  1529.                 ifrnd 32 sound DUKE_KILLED5
  1530.                 else ifrnd 32 sound DUKE_KILLED3
  1531.                 else ifrnd 32 sound DUKE_KILLED1
  1532.                 else ifrnd 32 sound DUKE_KILLED2
  1533.             }
  1534.         }
  1535.  
  1536.         ifaction PLYINGDEAD
  1537.         {
  1538.             ifactioncount 3 move PSTOPED
  1539.             quote 13
  1540.             ifhitspace
  1541.             {
  1542.                 action PSTAND
  1543.                 spawn DUKELYINGDEAD
  1544.                 resetplayer
  1545.             }
  1546.             break
  1547.         }
  1548.         else ifaction PTHROWNBACK
  1549.         {
  1550.             ifactioncount 5
  1551.             {
  1552.                 spawn BLOODPOOL
  1553.                 action PLYINGDEAD
  1554.             }
  1555.             else ifactioncount 1 move 0
  1556.             break
  1557.         }
  1558.         else ifaction PFROZEN
  1559.         {
  1560.             cstat 257
  1561.  
  1562.             palfrom 16 0 0 24
  1563.  
  1564.             ifhitweapon
  1565.             {
  1566.                 ifwasweapon FREEZEBLAST break
  1567.                 lotsofglass 60
  1568.                 ifrnd 84 spawn BLOODPOOL
  1569.  
  1570.                 getlastpal
  1571.                 sound GLASS_BREAKING
  1572.                 spawn ATOMICHEALTH
  1573.                 cstat 32768
  1574.                 action PLYINGDEAD
  1575.                 break
  1576.             }
  1577.  
  1578.             ifactioncount THAWTIME { getlastpal strength 1 move 0 action PSTAND }
  1579.             else ifactioncount FROZENDRIPTIME { ifrnd 32 spawn WATERDRIP }
  1580.  
  1581.             ifp pfacing   // assumes some other player
  1582.                 ifpdistl FROZENQUICKKICKDIST pkick
  1583.  
  1584.             break
  1585.         }
  1586.         else ifaction PEXPLODEAD
  1587.         {
  1588.             quote 13
  1589.             ifhitspace
  1590.             {
  1591.                 action PSTAND
  1592.                 resetplayer
  1593.             }
  1594.             break
  1595.         }
  1596.         else ifaction PEXPLODE
  1597.         {
  1598.             ifactioncount 5
  1599.             {
  1600.                 action PEXPLODEAD
  1601.                 spawn BLOODPOOL
  1602.             }
  1603.             break
  1604.         }
  1605.  
  1606.         else ifp pshrunk
  1607.         {
  1608.             state standard_pjibs
  1609.             spawn BLOODPOOL
  1610.  
  1611.             sound SQUISHED
  1612.             sound DUKE_DEAD
  1613.  
  1614.             cstat 32768                 // Hide the sprite
  1615.  
  1616.             action PLYINGDEAD
  1617.         }
  1618.  
  1619.         else
  1620.         {
  1621.             ifinwater
  1622.             {
  1623.                 action PLYINGDEAD
  1624.                 spawn WATERBUBBLE
  1625.                 spawn WATERBUBBLE
  1626.             }
  1627.             else
  1628.             {
  1629.                 action PEXPLODE
  1630.                 state standard_pjibs
  1631.                 cstat 32768
  1632.                 sound SQUISHED
  1633.                 sound DUKE_DEAD
  1634.             }
  1635.         }
  1636.         break
  1637.     }
  1638.  
  1639.     ifsquished
  1640.     {
  1641.         strength -1
  1642.         sound SQUISHED
  1643.         spawn OOZ
  1644.         break
  1645.     }
  1646.  
  1647.     ifp ponsteroids
  1648.     {
  1649.         ifp pstanding { }
  1650.         else spawn FRAMEEFFECT1
  1651.     }
  1652.  
  1653.     ifmove PSHRINKING
  1654.     {
  1655.         ifcount 32
  1656.         {
  1657.             ifcount SHRUNKDONECOUNT move 0
  1658.             else ifcount SHRUNKCOUNT
  1659.             {
  1660.                 sizeto 42 36
  1661.                 ifgapzl 24
  1662.                 {
  1663.                     strength 0
  1664.                     sound SQUISHED
  1665.                     palfrom 48 64
  1666.                     break
  1667.                 }
  1668.             }
  1669.             else ifp ponsteroids count SHRUNKCOUNT
  1670.         }
  1671.         else
  1672.         {
  1673.             ifp ponsteroids count SHRUNKCOUNT
  1674.             else { sizeto 8 9 spawn FRAMEEFFECT1 }
  1675.         }
  1676.     }
  1677.  
  1678.     else ifhitweapon
  1679.     {
  1680.         ifdead { ifmultiplayer sound DUKE_KILLED4 }
  1681.         else
  1682.         {
  1683.             ifmultiplayer
  1684.             {
  1685.                 ifphealthl YELLHURTSOUNDSTRENGTHMP
  1686.                 {
  1687.                     ifrnd 64 sound DUKE_LONGTERM_PAIN2
  1688.                     else ifrnd 64 sound DUKE_LONGTERM_PAIN3
  1689.                     else ifrnd 64 sound DUKE_LONGTERM_PAIN4
  1690.                     else sound DUKE_DEAD
  1691.                 }
  1692.                 else
  1693.                 {
  1694.                     ifrnd 64 sound DUKE_LONGTERM_PAIN5
  1695.                     else ifrnd 64 sound DUKE_LONGTERM_PAIN6
  1696.                     else ifrnd 64 sound DUKE_LONGTERM_PAIN7
  1697.                     else sound DUKE_LONGTERM_PAIN8
  1698.                 }
  1699.             }
  1700.             else
  1701.             {
  1702.                 ifphealthl YELLHURTSOUNDSTRENGTH
  1703.                 {
  1704.                     ifrnd 74 sound DUKE_LONGTERM_PAIN2
  1705.                     else ifrnd 8 sound DUKE_LONGTERM_PAIN3
  1706.                     else sound DUKE_LONGTERM_PAIN4
  1707.                 }
  1708.                 ifrnd 128 sound DUKE_LONGTERM_PAIN
  1709.             }
  1710.         }
  1711.         ifstrength TOUGH
  1712.         {
  1713.             state headhitstate
  1714.             sound DUKE_GRUNT
  1715.             ifp pstanding action PFLINTCHING
  1716.         }
  1717.  
  1718.         ifwasweapon RPG
  1719.         {
  1720.             ifrnd 32 spawn BLOOD
  1721.             ifdead state standard_pjibs
  1722.             palfrom 48 52
  1723.             break
  1724.         }
  1725.         ifwasweapon RADIUSEXPLOSION
  1726.         {
  1727.             ifrnd 32 spawn BLOOD
  1728.             ifdead state standard_pjibs
  1729.             palfrom 48 52
  1730.             break
  1731.         }
  1732.         ifwasweapon FIREEXT
  1733.         {
  1734.             ifrnd 32 spawn BLOOD
  1735.             ifdead state standard_pjibs
  1736.             palfrom 48 52
  1737.             break
  1738.         }
  1739.  
  1740.         ifwasweapon SHRINKSPARK
  1741.         {
  1742.             palfrom 48 0 48
  1743.             move PSHRINKING // used as a var only.
  1744.             sound ACTOR_SHRINKING
  1745.             break
  1746.         }
  1747.  
  1748.         ifwasweapon SHOTSPARK1 palfrom 24 48
  1749.         else ifwasweapon FREEZEBLAST
  1750.         {
  1751.             palfrom 48 0 0 48
  1752.             ifdead { sound SOMETHINGFROZE spritepal 1 action PFROZEN break }
  1753.         }
  1754.         else ifwasweapon COOLEXPLOSION1 palfrom 48 48 0 48
  1755.         else ifwasweapon KNEE palfrom 16 32
  1756.         else ifwasweapon FIRELASER palfrom 32 32
  1757.         state check_dead_thrown_back
  1758.         state random_wall_jibs
  1759.  
  1760.         break
  1761.     }
  1762.  
  1763.     ifaction PFLINTCHING
  1764.     {
  1765.         ifactioncount 2 action PSTAND
  1766.         break
  1767.     }
  1768.  
  1769.     ifinwater
  1770.     {
  1771.         ifaction PTREDWATER
  1772.         {
  1773.             ifp pwalking prunning action PSWIMMINGGO
  1774.         }
  1775.         else ifp pstanding pwalkingback prunningback action PTREDWATER
  1776.         else
  1777.         {
  1778.             ifaction PSWIMMING
  1779.             {
  1780.                 ifrnd 4 spawn WATERBUBBLE
  1781.                 ifactioncount 4
  1782.                     action PSWIMMINGWAIT
  1783.             }
  1784.             else ifaction PSWIMMINGWAIT
  1785.             {
  1786.                 ifactioncount 2
  1787.                     action PSWIMMINGGO
  1788.             }
  1789.             else ifaction PSWIMMINGGO
  1790.             {
  1791.                 ifactioncount 2
  1792.                     action PSWIMMING
  1793.             }
  1794.             else action PTREDWATER
  1795.         }
  1796.  
  1797.         ifrnd 4 spawn WATERBUBBLE // For effect
  1798.  
  1799.         break
  1800.     }
  1801.     else ifp pjetpack
  1802.     {
  1803.         ifaction PJPHOUVER
  1804.         {
  1805.             ifactioncount 4
  1806.                 resetactioncount
  1807.         }
  1808.         else action PJPHOUVER
  1809.         break
  1810.     }
  1811.     else
  1812.     {
  1813.         ifaction PTREDWATER action PSTAND
  1814.         ifaction PSWIMMING action PSTAND
  1815.         ifaction PSWIMMINGWAIT action PSTAND
  1816.         ifaction PSWIMMINGGO action PSTAND
  1817.         ifaction PJPHOUVER action PFALLING
  1818.     }
  1819.  
  1820.     ifaction PFALLING
  1821.     {
  1822.         ifp ponground
  1823.             action PSTAND
  1824.         else
  1825.         {
  1826.             ifp pfalling break
  1827.             else state check_pstandard
  1828.         }
  1829.     }
  1830.  
  1831.     ifaction PDUCKING
  1832.     {
  1833.         ifgapzl 48
  1834.         {
  1835.             ifp pwalking pwalkingback prunning prunningback action PCRAWLING
  1836.         }
  1837.         else ifp pducking
  1838.         {
  1839.             ifp pwalking pwalkingback prunning prunningback action PCRAWLING
  1840.         }
  1841.         else
  1842.         {
  1843.             ifp pstanding action PSTAND
  1844.             else state check_pstandard
  1845.         }
  1846.     }
  1847.  
  1848.     else ifaction PCRAWLING
  1849.     {
  1850.         ifgapzl 48
  1851.         {
  1852.             ifp pstanding action PCRAWLING
  1853.         }
  1854.         else ifp pducking
  1855.         {
  1856.             ifp pstanding action PDUCKING
  1857.         }
  1858.         else
  1859.         {
  1860.             ifp pstanding action PSTAND
  1861.             else state check_pstandard
  1862.         }
  1863.     }
  1864.     else ifgapzl 48 action PDUCKING
  1865.  
  1866.     else ifaction PJUMPING
  1867.     {
  1868.         ifp ponground action PSTAND
  1869.         else ifactioncount 4 ifp pfalling action PFALLING
  1870.     }
  1871.  
  1872.     ifp pfalling action PFALLING
  1873.     else ifaction PSTAND state check_pstandard
  1874.     else ifaction PAKICKING
  1875.     {
  1876.         ifactioncount 2 action PSTAND
  1877.         break
  1878.     }
  1879.     else ifaction PWALK
  1880.     {
  1881.         ifp pfalling action PFALLING
  1882.         else ifp pstanding action PSTAND
  1883.         else ifp prunning action PRUN
  1884.         else ifp pwalkingback action PWALKBACK
  1885.         else ifp prunningback action PRUNBACK
  1886.         else ifp pjumping
  1887.             action PJUMPING
  1888.         else ifp pducking action PDUCKING
  1889.     }
  1890.  
  1891.     else ifaction PRUN
  1892.     {
  1893.         ifp pstanding action PSTAND
  1894.         else ifp pwalking action PWALK
  1895.         else ifp pwalkingback action PWALKBACK
  1896.         else ifp prunningback action PRUNBACK
  1897.         else ifp pjumping
  1898.             action PJUMPING
  1899.         else ifp pducking action PDUCKING
  1900.     }
  1901.  
  1902.     else ifaction PWALKBACK
  1903.     {
  1904.         ifp pstanding action PSTAND
  1905.         else ifp pwalking action PWALK
  1906.         else ifp prunning action PRUN
  1907.         else ifp prunningback action PRUNBACK
  1908.         else ifp pjumping
  1909.             action PJUMPING
  1910.         else ifp pducking action PDUCKING
  1911.     }
  1912.  
  1913.     else ifaction PRUNBACK
  1914.     {
  1915.         ifp pstanding action PSTAND
  1916.         else ifp pwalking action PWALK
  1917.         else ifp prunning action PRUN
  1918.         else ifp pwalkingback action PWALKBACK
  1919.         else ifp pjumping
  1920.             action PJUMPING
  1921.         else ifp pducking action PDUCKING
  1922.     }
  1923. enda
  1924.  
  1925. actor ORGANTIC TURRETSTRENGTH
  1926.     ifcount 48 resetcount
  1927.     else { ifcount 32 sizeto 32 32 }
  1928.     else ifcount 16 { sizeto 48 18 ifpdistl 2048 { sound TURR_ATTACK addphealth -2 palfrom 32 16 } }
  1929.     ifhitweapon { ifdead { addkills 1 sound TURR_DYING guts JIBS5 10 state delete_enemy } sound TURR_PAIN break }
  1930.     ifrnd 1 soundonce TURR_ROAM
  1931. enda
  1932.  
  1933. state rf
  1934.     ifrnd 128 cstat 4
  1935.     else cstat 0
  1936. ends
  1937.  
  1938.  
  1939. //
  1940. //
  1941. //      TROOP/LIZTROOP CODE
  1942. //
  1943. //
  1944.  
  1945. action ATROOPSTAND       0    1    5    1    1
  1946. action ATROOPSTAYSTAND  -2    1    5    1    1
  1947. action ATROOPWALKING     0    4    5    1   12
  1948. action ATROOPWALKINGBACK 15   4    5   -1   12
  1949. action ATROOPRUNNING     0    4    5    1    8
  1950. action ATROOPSHOOT      35    1    5    1   30
  1951. action ATROOPJETPACK    40    1    5    1    1
  1952. action ATROOPJETPACKILL 40    2    5    1   50
  1953. action ATROOPFLINTCH    50    1    1    1    6
  1954. action ATROOPDYING      50    5    1    1   16
  1955. action ATROOPDEAD       54
  1956. action ATROOPPLAYDEAD   54
  1957. action ATROOPSUFFERDEAD 58    2    1   -4   24
  1958. action ATROOPSUFFERING  59    2    1    1   21
  1959. action ATROOPDUCK       64    1    5    1    3
  1960. action ATROOPDUCKSHOOT  64    2    5    1   25
  1961. action ATROOPABOUTHIDE  74    1    1    1   25
  1962. action ATROOPHIDE       79    1    1    1   25
  1963. action ATROOPREAPPEAR   74    1    1    1   25
  1964. action ATROOPFROZEN      0    1    5
  1965.  
  1966. move TROOPWALKVELS 72
  1967. move TROOPWALKVELSBACK -72
  1968. move TROOPJETPACKVELS 64 -84
  1969. move TROOPJETPACKILLVELS 192 -38
  1970. move TROOPRUNVELS 108
  1971. move TROOPSTOPPED
  1972. move DONTGETUP
  1973. move SHRUNKVELS 32
  1974.  
  1975. ai AITROOPSEEKENEMY  ATROOPWALKING   TROOPWALKVELS seekplayer
  1976. ai AITROOPSEEKPLAYER ATROOPWALKING   TROOPWALKVELS seekplayer
  1977. ai AITROOPFLEEING    ATROOPWALKING   TROOPWALKVELS fleeenemy
  1978. ai AITROOPFLEEINGBACK ATROOPWALKINGBACK   TROOPWALKVELSBACK faceplayer
  1979. ai AITROOPDODGE      ATROOPWALKING   TROOPRUNVELS  dodgebullet
  1980. ai AITROOPSHOOTING   ATROOPSHOOT     TROOPSTOPPED  faceplayer
  1981. ai AITROOPDUCKING    ATROOPDUCK      TROOPSTOPPED  faceplayer
  1982. ai AITROOPJETPACK    ATROOPJETPACK   TROOPJETPACKVELS seekplayer
  1983. ai AITROOPSHRUNK     ATROOPWALKING   SHRUNKVELS fleeenemy
  1984. ai AITROOPHIDE       ATROOPABOUTHIDE TROOPSTOPPED faceplayer
  1985.  
  1986. state troophidestate
  1987.     ifaction ATROOPREAPPEAR
  1988.     {
  1989.         ifactioncount 2 { sound TELEPORTER ai AITROOPSHOOTING cstat 257 }
  1990.         else { sizeto 41 40 sizeto 41 40 sizeto 41 40 sizeto 41 40 spawn FRAMEEFFECT1 }
  1991.     }
  1992.     else ifaction ATROOPWALKING
  1993.     {
  1994.         ifpdistl 2448 ifpdistg 1024
  1995.         {
  1996.             ifceilingdistl 48 break
  1997.             ifp pfacing break
  1998.  
  1999.             ifgapzl 64 { } else ifawayfromwall { spawn TRANSPORTERSTAR action ATROOPREAPPEAR move 0 break }
  2000.         }
  2001.     }
  2002.     else ifaction ATROOPHIDE
  2003.     {
  2004.         ifactioncount 2
  2005.         {
  2006.             spawn TRANSPORTERSTAR
  2007.             sound TELEPORTER
  2008.             action ATROOPWALKING move TROOPWALKVELS faceplayer
  2009.             cstat 32768
  2010.         }
  2011.         else
  2012.         {
  2013.             sizeto 0 40
  2014.             sizeto 0 40
  2015.             sizeto 0 40
  2016.             sizeto 0 40
  2017.             spawn FRAMEEFFECT1
  2018.         }
  2019.     }
  2020.     else ifaction ATROOPABOUTHIDE ifactioncount 2 { action ATROOPHIDE cstat 0 }
  2021. ends
  2022.  
  2023.  
  2024. state troopgunnashoot
  2025.     ifp palive
  2026.     {
  2027.         ifpdistl 1024 ai AITROOPSHOOTING
  2028.         else ifactornotstayput
  2029.         {
  2030.             ifactioncount 12 ifrnd 16 ifcanshoottarget
  2031.             {
  2032.                 ifspritepal 21 ifrnd 4 ifpdistg 4096 ai AITROOPHIDE
  2033.                 else
  2034.                 {
  2035.                     ifpdistl 1100 ai AITROOPFLEEING
  2036.                     else
  2037.                     {
  2038.                         ifpdistl 4096 ifcansee ifcanshoottarget ai AITROOPSHOOTING
  2039.                         else { move TROOPRUNVELS seekplayer action ATROOPRUNNING }
  2040.                     }
  2041.                 }
  2042.             }
  2043.         }
  2044.         else ifcount 26 ifrnd 32 ai AITROOPSHOOTING
  2045.     }
  2046. ends
  2047.  
  2048. state troopseekstate
  2049.     state troopgunnashoot
  2050.     ifinwater { ai AITROOPJETPACK break }
  2051.     ifcansee
  2052.     {
  2053.         ifmove TROOPRUNVELS ifpdistl 1596 ai AITROOPDUCKING
  2054.         ifp phigher { ifceilingdistl 128 { } else ifactornotstayput ai AITROOPJETPACK break }
  2055.         else ifrnd 2
  2056.         {
  2057.             ifspritepal 21 ifpdistg 1596 { ai AITROOPHIDE break }
  2058.             ifbulletnear { ifrnd 128 ai AITROOPDODGE else ai AITROOPDUCKING break }
  2059.         }
  2060.     }
  2061.     ifnotmoving { ifrnd 32 operate else ifcount 32 ifp palive ifcansee ifcanshoottarget ai AITROOPSHOOTING }
  2062.     ifrnd 1
  2063.     {
  2064.         ifrnd 128 soundonce PRED_ROAM
  2065.         else soundonce PRED_ROAM2
  2066.     }
  2067. ends
  2068.  
  2069. state troopduckstate
  2070.     ifaction ATROOPDUCK
  2071.         { ifactioncount 8 { ifp palive { ifrnd 128 action ATROOPDUCKSHOOT } else ifmove DONTGETUP break else ai AITROOPSEEKPLAYER } }
  2072.     else ifaction ATROOPDUCKSHOOT
  2073.     {
  2074.         ifcount 64
  2075.         {
  2076.             ifmove DONTGETUP resetcount
  2077.             else
  2078.             {
  2079.                 ifpdistl 1100
  2080.                     ai AITROOPFLEEING
  2081.                 else ai AITROOPSEEKPLAYER
  2082.             }
  2083.         }
  2084.         else ifactioncount 2 { ifcanshoottarget { sound PRED_ATTACK resetactioncount shoot FIRELASER } else ai AITROOPSEEKPLAYER }
  2085.     }
  2086. ends
  2087.  
  2088. state troopshootstate
  2089.     ifactioncount 2
  2090.     {
  2091.         ifcanshoottarget
  2092.         {
  2093.             shoot FIRELASER sound PRED_ATTACK resetactioncount
  2094.             ifrnd 128 ai AITROOPSEEKPLAYER
  2095.             ifcount 24
  2096.             {
  2097.                 ifrnd 96 ifpdistg 2048 ai AITROOPSEEKPLAYER
  2098.                 else
  2099.                 {
  2100.                     ifpdistg 1596 ai AITROOPFLEEING
  2101.                     else ai AITROOPFLEEINGBACK
  2102.                 }
  2103.             }
  2104.         }
  2105.         else ai AITROOPSEEKPLAYER
  2106.     }
  2107. ends
  2108.  
  2109. state troopfleestate
  2110.     ifactioncount 7
  2111.     {
  2112.         ifpdistg 3084 { ai AITROOPSEEKPLAYER break }
  2113.         else ifrnd 32 ifp palive ifcansee ifcanshoottarget { ifrnd 128 ai AITROOPDUCKING else ai AITROOPSHOOTING break }
  2114.     }
  2115.     ifnotmoving
  2116.     {
  2117.         ifrnd 32 operate else ifcount 32 ifp palive ifcansee ifcanshoottarget
  2118.             { ifrnd 128 ai AITROOPSHOOTING else ai AITROOPDUCKING }
  2119.     }
  2120. ends
  2121.  
  2122. state troopdying
  2123.     iffloordistl 32 { ifactioncount 5 { cstat 0 iffloordistl 8 sound THUD ifrnd 64 spawn BLOODPOOL state rf strength 0 move TROOPSTOPPED action ATROOPDEAD } break }
  2124.     else { state rf move 0 action ATROOPDYING }
  2125. ends
  2126.  
  2127. state checktroophit
  2128.     ifaction ATROOPSUFFERING { stopsound LIZARD_BEG sound PRED_DYING cstat 0 strength 0 action ATROOPSUFFERDEAD break }
  2129.     ifdead
  2130.     {
  2131.         ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ATROOPFROZEN strength 0 break }
  2132.  
  2133.         state drop_ammo
  2134.         state random_wall_jibs
  2135.         addkills 1
  2136.  
  2137.         ifwasweapon RPG { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  2138.         else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  2139.         else { sound PRED_DYING ifrnd 32 iffloordistl 32 { sound LIZARD_BEG spawn BLOODPOOL strength 0 move 0 action ATROOPSUFFERING break } action ATROOPDYING break }
  2140.     }
  2141.     else
  2142.     {
  2143.         state random_wall_jibs
  2144.         sound PRED_PAIN
  2145.         ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AITROOPSHRUNK }
  2146.         else iffloordistl 32 ifrnd 96 action ATROOPFLINTCH
  2147.     }
  2148. ends
  2149.  
  2150. state troopjetpackstate
  2151.     ifaction ATROOPJETPACKILL
  2152.     {
  2153.         ifcansee ifactioncount 2
  2154.         {
  2155.             resetactioncount
  2156.             sound PRED_ATTACK
  2157.             shoot FIRELASER
  2158.         }
  2159.  
  2160.         ifp phigher ai AITROOPJETPACK
  2161.         else ifinwater ai AITROOPJETPACK
  2162.         else ifcount 26 iffloordistl 32 ai AITROOPSEEKPLAYER
  2163.     }
  2164.     else ifcount 48 ifcansee
  2165.         { action ATROOPJETPACKILL move TROOPJETPACKILLVELS seekplayer }
  2166. ends
  2167.  
  2168. state checksquished
  2169.     ifsquished { addkills 1 sound SQUISHED state standard_jibs spawn OOZ state delete_enemy }
  2170. ends
  2171.  
  2172. state troopsufferingstate
  2173.     ifactioncount 2
  2174.     {
  2175.         ifrnd 16 spawn WATERDRIP
  2176.         ifactioncount 14 { stopsound LIZARD_BEG cstat 0 strength 0 action ATROOPSUFFERDEAD break }
  2177.     }
  2178. ends
  2179.  
  2180. state troopshrunkstate
  2181.     ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY
  2182.     else ifcount SHRUNKCOUNT sizeto 48 40
  2183.     else state genericshrunkcode
  2184. ends
  2185.  
  2186. state troopcode fall
  2187.     ifinwater ifrnd 1 spawn WATERBUBBLE
  2188.     ifaction ATROOPSTAND { ifrnd 192 ai AITROOPSHOOTING else ai AITROOPSEEKPLAYER }
  2189.     else ifaction ATROOPFROZEN
  2190.     {
  2191.         ifcount THAWTIME { ai AITROOPSEEKENEMY getlastpal }
  2192.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  2193.         ifhitweapon
  2194.         {
  2195.             ifwasweapon FREEZEBLAST { strength 0 break }
  2196.             addkills 1
  2197.  
  2198.             ifrnd 84 spawn BLOODPOOL
  2199.             lotsofglass 30
  2200.             sound GLASS_BREAKING
  2201.             killit
  2202.         }
  2203.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  2204.         break
  2205.     }
  2206.     else ifaction ATROOPPLAYDEAD
  2207.     {
  2208.         ifhitweapon
  2209.         {
  2210.             ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  2211.             break
  2212.         }
  2213.         else state checksquished
  2214.  
  2215.         ifcount PLAYDEADTIME { addkills -1 soundonce PRED_ROAM cstat 257 strength 1 ai AITROOPSHOOTING }
  2216.         else ifp pfacing resetcount
  2217.  
  2218.         break
  2219.     }
  2220.     else ifaction ATROOPDEAD
  2221.     {
  2222.         strength 0
  2223.         ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength TROOPSTRENGTH ai AITROOPSEEKENEMY }
  2224.         ifhitweapon
  2225.         {
  2226.             ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  2227.             break
  2228.         }
  2229.         else state checksquished
  2230.         break
  2231.     }
  2232.     else ifaction ATROOPSUFFERDEAD
  2233.     {
  2234.         ifactioncount 2
  2235.         {
  2236.             ifrnd 64 { resetcount action ATROOPPLAYDEAD }
  2237.             else { soundonce PRED_DYING action ATROOPDEAD }
  2238.         }
  2239.     }
  2240.     else ifaction ATROOPDYING { state troopdying break }
  2241.     else ifaction ATROOPSUFFERING
  2242.         { state troopsufferingstate ifhitweapon state checktroophit break }
  2243.     else ifaction ATROOPFLINTCH { ifactioncount 4 ai AITROOPSEEKENEMY }
  2244.     else
  2245.     {
  2246.         ifai AITROOPSEEKPLAYER state troopseekstate
  2247.         else ifai AITROOPJETPACK
  2248.         {
  2249.             state troopjetpackstate
  2250.             ifinwater { } else soundonce DUKE_JETPACK_IDLE
  2251.         }
  2252.         else ifai AITROOPSEEKENEMY state troopseekstate
  2253.         else ifai AITROOPSHOOTING state troopshootstate
  2254.         else ifai AITROOPFLEEING state troopfleestate
  2255.         else ifai AITROOPFLEEINGBACK state troopfleestate
  2256.         else ifai AITROOPDODGE state troopseekstate
  2257.         else ifai AITROOPDUCKING state troopduckstate
  2258.         else ifai AITROOPSHRUNK state troopshrunkstate
  2259.         else ifai AITROOPHIDE { state troophidestate break }
  2260.     }
  2261.  
  2262.     ifhitweapon state checktroophit else state checksquished
  2263. ends
  2264.  
  2265.  
  2266. actor LIZTROOPJETPACK TROOPSTRENGTH ai AITROOPJETPACK cactor LIZTROOP enda
  2267. actor LIZTROOPDUCKING TROOPSTRENGTH
  2268.     ai AITROOPDUCKING cactor LIZTROOP
  2269.     ifgapzl 48 move DONTGETUP
  2270. enda
  2271.  
  2272. actor LIZTROOPSHOOT TROOPSTRENGTH ATROOPSTAND ai AITROOPSHOOTING cactor LIZTROOP enda
  2273. actor LIZTROOPSTAYPUT TROOPSTRENGTH ATROOPSTAYSTAND ai AITROOPSEEKPLAYER cactor LIZTROOP enda
  2274. actor LIZTROOPRUNNING TROOPSTRENGTH ATROOPSTAND ai AITROOPSEEKPLAYER cactor LIZTROOP enda
  2275. actor LIZTROOPONTOILET TROOPSTRENGTH ifcount 24 { sound FLUSH_TOILET operate ai AITROOPSEEKPLAYER cactor LIZTROOP } enda
  2276. actor LIZTROOP TROOPSTRENGTH ATROOPSTAND state troopcode enda
  2277.  
  2278. action ALIZWALKING       0     4    5    1    15
  2279. action ALIZRUNNING       0     4    5    1    11
  2280. action ALIZTHINK         20    2    5    1    40
  2281. action ALIZSCREAM        30    1    5    1    2
  2282. action ALIZJUMP          45    3    5    1    20
  2283. action ALIZFALL          55
  2284. action ALIZSHOOTING      70    2    5    1    7
  2285. action ALIZDYING         60    6    1    1    15
  2286. action ALIZLYINGDEAD     65    1
  2287. action ALIZFROZEN         0    1    5
  2288.  
  2289. move LIZWALKVEL 72
  2290. move LIZRUNVEL 192
  2291. move LIZJUMPVEL 184
  2292. move LIZSTOP
  2293.  
  2294. ai AILIZGETENEMY ALIZWALKING LIZWALKVEL seekplayer
  2295. ai AILIZDODGE ALIZRUNNING LIZRUNVEL dodgebullet
  2296. ai AILIZCHARGEENEMY ALIZRUNNING LIZRUNVEL seekplayer
  2297. ai AILIZFLEENEMY ALIZWALKING LIZWALKVEL fleeenemy
  2298. ai AILIZSHOOTENEMY ALIZSHOOTING LIZSTOP faceplayer
  2299. ai AILIZJUMPENEMY ALIZJUMP LIZJUMPVEL jumptoplayer
  2300. ai AILIZTHINK ALIZTHINK LIZSTOP faceplayerslow
  2301. ai AILIZSHRUNK ALIZWALKING SHRUNKVELS fleeenemy
  2302. ai AILIZSPIT ALIZSCREAM LIZSTOP faceplayerslow
  2303. ai AILIZDYING ALIZDYING LIZSTOP faceplayer
  2304.  
  2305. state lizseekstate
  2306.  
  2307.     ifactornotstayput
  2308.     {
  2309.         ifcansee ifp palive ifpdistl 2048 ifcount 16 ifcanshoottarget { ai AILIZSHOOTENEMY break }
  2310.         ifai AILIZCHARGEENEMY
  2311.         {
  2312.             ifcount 72 ifcanshoottarget { ai AILIZSHOOTENEMY break }
  2313.             ifp phigher ifpdistg 2048 ifrnd 6 { ai AILIZJUMPENEMY break }
  2314.         }
  2315.         else ifpdistg 4096 { ifrnd 92 { ifcount 48 ifcanshoottarget ai AILIZSHOOTENEMY } else ifcount 24 { ai AILIZCHARGEENEMY break } }
  2316.  
  2317.         iffloordistl 16 { ifcount 48 ifnotmoving ifcansee { ai AILIZJUMPENEMY break } }
  2318.         else { ifpdistg 1280 ai AILIZJUMPENEMY break }
  2319.  
  2320.         ifrnd 4 ifnotmoving operate
  2321.         else ifrnd 1 ifbulletnear
  2322.         {
  2323.             ifgapzl 128 ai AILIZDODGE
  2324.             else ifactornotstayput { ifrnd 32 ai AILIZJUMPENEMY else ai AILIZDODGE }
  2325.         }
  2326.     }
  2327.     else
  2328.     {
  2329.         ifactioncount 16 { ifp palive ifrnd 32 ifcansee ifcanshoottarget ai AILIZSHOOTENEMY }
  2330.         ifcount 16 ifrnd 32 move LIZWALKVEL randomangle geth
  2331.     }
  2332.  
  2333. ends
  2334.  
  2335. state lizshrunkstate
  2336.     ifcount SHRUNKDONECOUNT ai AILIZGETENEMY
  2337.     else ifcount SHRUNKCOUNT sizeto 48 40
  2338.     else state genericshrunkcode
  2339. ends
  2340.  
  2341. state lizfleestate
  2342.     ifcount 16 { ifrnd 48 ifp palive ifcansee ai AILIZSPIT }
  2343.     else { iffloordistl 16 { } else ai AILIZGETENEMY break }
  2344. ends
  2345.  
  2346. state lizthinkstate
  2347.     ifrnd 8 soundonce CAPT_ROAM
  2348.     ifactioncount 3
  2349.     {
  2350.         ifrnd 32 ifp palive ifcansee ai AILIZSPIT
  2351.         else ifrnd 96 ai AILIZGETENEMY
  2352.     }
  2353.     else ifactioncount 2 ifrnd 1 spawn FECES
  2354.     ifrnd 1 ifbulletnear
  2355.     {
  2356.         ifgapzl 96 ai AILIZDODGE
  2357.         else { ifrnd 128 ai AILIZJUMPENEMY else ai AILIZDODGE }
  2358.     }
  2359. ends
  2360.  
  2361. state lizshootstate
  2362.     ifcount 20 ifrnd 8
  2363.     {
  2364.         ifcansee ifpdistl 2048 { ifrnd 128 ai AILIZFLEENEMY break }
  2365.         ifrnd 80 ai AILIZTHINK else ai AILIZGETENEMY
  2366.     }
  2367.     ifactioncount 2
  2368.     {
  2369.         ifcansee
  2370.         {
  2371.             ifcanshoottarget { sound CAPT_ATTACK shoot SHOTSPARK1 resetactioncount }
  2372.             else ai AILIZTHINK
  2373.         }
  2374.         else ai AILIZGETENEMY
  2375.     }
  2376. ends
  2377.  
  2378. state checklizhit
  2379.     spawn BLOOD
  2380.     ifai AILIZSHRUNK
  2381.         { addkills 1 sound SQUISHED state standard_jibs state delete_enemy }
  2382.     ifdead
  2383.     {
  2384.         ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ALIZFROZEN strength 0 break }
  2385.  
  2386.         state drop_chaingun
  2387.         addkills 1
  2388.  
  2389.         ifwasweapon RPG { sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy }
  2390.         else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy }
  2391.         else { state rf ai AILIZDYING ifrnd 64 spawn BLOODPOOL }
  2392.         sound CAPT_DYING
  2393.     }
  2394.     else
  2395.     {
  2396.         sound CAPT_PAIN
  2397.         ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AILIZSHRUNK break }
  2398.         state random_wall_jibs
  2399.         ifp palive ifcansee ifcanshoottarget { ai AILIZSHOOTENEMY break }
  2400.     }
  2401. ends
  2402.  
  2403. state lizjumpstate
  2404.     ifaction ALIZFALL { iffloordistl 16 ai AILIZGETENEMY }
  2405.     else ifactioncount 3 action ALIZFALL
  2406. ends
  2407.  
  2408. state lizdyingstate
  2409.     ifaction ALIZLYINGDEAD
  2410.     {
  2411.         strength 0
  2412.         ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy }
  2413.         ifcount RESPAWNACTORTIME ifrespawn
  2414.         {
  2415.             spawn TRANSPORTERSTAR cstat 257 strength LIZSTRENGTH ai AILIZGETENEMY
  2416.         }
  2417.     }
  2418.     else ifai AILIZDYING ifactioncount 6 { iffloordistl 8 sound THUD move LIZSTOP action ALIZLYINGDEAD }
  2419. ends
  2420.  
  2421. state lizdodgestate
  2422.     ifcount 13 ai AILIZGETENEMY
  2423. ends
  2424.  
  2425. actor LIZMANSTAYPUT LIZSTRENGTH ai AILIZGETENEMY cactor LIZMAN enda
  2426. actor LIZMANSPITTING LIZSTRENGTH ai AILIZSPIT cactor LIZMAN enda
  2427. actor LIZMANJUMP LIZSTRENGTH ai AILIZJUMPENEMY cactor LIZMAN enda
  2428.  
  2429. actor LIZMAN LIZSTRENGTH fall
  2430.     state checksquished
  2431.     ifai 0 ai AILIZGETENEMY
  2432.     else ifaction ALIZLYINGDEAD { fall state lizdyingstate break }
  2433.     else ifaction ALIZFROZEN
  2434.     {
  2435.         ifcount THAWTIME { ai AILIZGETENEMY getlastpal }
  2436.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  2437.  
  2438.         ifhitweapon
  2439.         {
  2440.             ifwasweapon FREEZEBLAST { strength 0 break }
  2441.             addkills 1
  2442.  
  2443.             ifrnd 84 spawn BLOODPOOL
  2444.             lotsofglass 30
  2445.             sound GLASS_BREAKING
  2446.             killit
  2447.         }
  2448.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  2449.         break
  2450.     }
  2451.     else ifai AILIZJUMPENEMY state lizjumpstate
  2452.     else
  2453.     {
  2454.         fall
  2455.         ifai AILIZGETENEMY state lizseekstate
  2456.         else ifai AILIZCHARGEENEMY state lizseekstate
  2457.         else ifai AILIZDODGE state lizdodgestate
  2458.         else ifai AILIZSHOOTENEMY state lizshootstate
  2459.         else ifai AILIZFLEENEMY state lizfleestate
  2460.         else ifai AILIZTHINK state lizthinkstate
  2461.         else ifai AILIZSHRUNK state lizshrunkstate
  2462.         else ifai AILIZDYING state lizdyingstate
  2463.         else ifai AILIZSPIT
  2464.             { ifcount 26 ai AILIZGETENEMY else ifcount 18 ifrnd 96 { shoot SPIT sound LIZARD_SPIT } }
  2465.     }
  2466.  
  2467.     ifai AILIZSHRUNK break
  2468.     ifhitweapon state checklizhit
  2469. enda
  2470.  
  2471. action DRONEFRAMES     0   1   7   1   1
  2472. action DRONESCREAM     0   1   7   1   1
  2473. move DRONERUNVELS 128 64
  2474. move DRONERUNUPVELS 128 -64
  2475. move DRONEBULLVELS 252 -64
  2476. move DRONEBACKWARDS -64 -64
  2477. move DRONERISE 32 -32
  2478. move DRONESTOPPED -16
  2479.  
  2480. ai AIDRONEGETE DRONESCREAM DRONERUNVELS faceplayerslow getv
  2481. ai AIDRONEWAIT DRONEFRAMES DRONESTOPPED faceplayerslow
  2482. ai AIDRONEGETUP DRONESCREAM DRONERUNUPVELS faceplayer getv
  2483. ai AIDRONEPULLBACK DRONEFRAMES DRONEBACKWARDS faceplayerslow
  2484. ai AIDRONEHIT DRONESCREAM DRONEBACKWARDS faceplayer
  2485. ai AIDRONESHRUNK DRONEFRAMES SHRUNKVELS fleeenemy
  2486. ai AIDRONEDODGE DRONEFRAMES DRONEBULLVELS dodgebullet geth
  2487. ai AIDRONEDODGEUP DRONEFRAMES DRONERISE getv geth
  2488.  
  2489. state checkdronehitstate
  2490.  
  2491.     ifdead
  2492.     {
  2493.         addkills 1
  2494.         debris SCRAP1 8
  2495.         debris SCRAP2 4
  2496.         debris SCRAP3 7
  2497.         spawn EXPLOSION2
  2498.         sound RPG_EXPLODE
  2499.         hitradius 2048 15 20 25 30
  2500.         killit
  2501.     }
  2502.     else
  2503.     {
  2504.         sound DRON_PAIN
  2505.         ifbulletnear
  2506.         {
  2507.             ifceilingdistl 64 ifrnd 48 ai AIDRONEDODGE
  2508.             ai AIDRONEDODGEUP
  2509.         }
  2510.         else ai AIDRONEGETE
  2511.     }
  2512. ends
  2513.  
  2514. state droneshrunkstate
  2515.     ifcount 24 state delete_enemy
  2516.     else sizeto 1 1
  2517. ends
  2518.  
  2519. state checkdronenearplayer
  2520.  
  2521.     ifp palive ifpdistl 1596
  2522.     {
  2523.         ifcount 8
  2524.         {
  2525.             addkills 1
  2526.             sound DRON_ATTACK2
  2527.             debris SCRAP1 8
  2528.             debris SCRAP2 4
  2529.             debris SCRAP3 7
  2530.             spawn EXPLOSION2
  2531.             sound RPG_EXPLODE
  2532.             hitradius 2048 15 20 25 30
  2533.             killit
  2534.         }
  2535.         else ifcount 3 { } else sound LASERTRIP_ARMING
  2536.     }
  2537.  
  2538. ends
  2539.  
  2540. state dronegetstate
  2541.     ifrnd 192
  2542.     {
  2543.         ifcansee
  2544.         {
  2545.             ifbulletnear { ai AIDRONEDODGE break }
  2546.             ifmove DRONEBULLVELS
  2547.             {
  2548.                 ifcount 64 ai AIDRONEPULLBACK
  2549.                 else ifnotmoving ifcount 16 ai AIDRONEPULLBACK
  2550.             }
  2551.             else ifcount 32
  2552.             {
  2553.                 ifp phigher move DRONEBULLVELS geth getv
  2554.                 else move DRONEBULLVELS geth
  2555.             }
  2556.         }
  2557.         else ifrnd 1 operate
  2558.     }
  2559. ends
  2560.  
  2561. state dronedodgestate
  2562.     ifai AIDRONEDODGEUP
  2563.     {
  2564.        ifcount 8 ai AIDRONEGETE
  2565.        else ifnotmoving ai AIDRONEGETE
  2566.     }
  2567.     else
  2568.     {
  2569.         ifcount 8 ai AIDRONEGETE
  2570.         else ifnotmoving ai AIDRONEGETE
  2571.     }
  2572. ends
  2573.  
  2574. actor DRONE DRONESTRENGTH
  2575.     state checksquished
  2576.     state checkdronenearplayer
  2577.  
  2578.     ifrnd 2 fall
  2579.     else soundonce DRON_JETSND
  2580.  
  2581.     ifaction 0 ai AIDRONEGETE
  2582.  
  2583.     else ifai AIDRONEWAIT
  2584.     {
  2585.         ifactioncount 4 ifrnd 16
  2586.             ifcansee { sound DRON_ATTACK1 ifp phigher ai AIDRONEGETUP else ai AIDRONEGETE }
  2587.     }
  2588.     else ifai AIDRONEGETE state dronegetstate
  2589.     else ifai AIDRONEGETUP state dronegetstate
  2590.     else ifai AIDRONEPULLBACK { ifcount 32 ai AIDRONEWAIT }
  2591.     else ifai AIDRONEHIT { ifcount 8 ai AIDRONEWAIT }
  2592.     else ifai AIDRONESHRUNK state droneshrunkstate
  2593.     else ifai AIDRONEDODGE state dronedodgestate
  2594.     else ifai AIDRONEDODGEUP state dronedodgestate
  2595.  
  2596.     ifhitweapon state checkdronehitstate
  2597.  
  2598.     ifrnd 1 soundonce DRON_ROAM
  2599.  
  2600. enda
  2601.  
  2602.  
  2603.  
  2604. action AOCTAWALK        0   3   5   1   15
  2605. action AOCTASTAND       0   1   5   1   15
  2606. action AOCTASCRATCH     0   4   5   1   15
  2607. action AOCTAHIT        30   1   1   1   10
  2608. action AOCTASHOOT      20   1   5   1   10
  2609. action AOCTADYING      30   8   1   1   17
  2610. action AOCTADEAD       38   1   1   1    1
  2611. action AOCTAFROZEN      0   1   5
  2612.  
  2613. move OCTAWALKVELS 96 -30
  2614. move OCTAUPVELS 96 -70
  2615. move OCTASTOPPED 0 -30
  2616. move OCTAINWATER 96 24
  2617.  
  2618. ai AIOCTAGETENEMY AOCTAWALK OCTAWALKVELS seekplayer
  2619. ai AIOCTASHOOTENEMY AOCTASHOOT OCTASTOPPED faceplayer
  2620. ai AIOCTASCRATCHENEMY AOCTASCRATCH OCTASTOPPED faceplayer
  2621. ai AIOCTAHIT AOCTAHIT OCTASTOPPED faceplayer
  2622. ai AIOCTASHRUNK AOCTAWALK SHRUNKVELS faceplayer
  2623. ai AIOCTADYING AOCTADYING OCTASTOPPED faceplayer
  2624.  
  2625. state octagetenemystate
  2626.  
  2627.     ifcansee
  2628.     {
  2629.         ifactioncount 32 { ifrnd 48 ifcanshoottarget { sound OCTA_ATTACK1 ai AIOCTASHOOTENEMY break } }
  2630.         else ifpdistl 1280 ai AIOCTASCRATCHENEMY
  2631.     }
  2632.  
  2633. ends
  2634.  
  2635. state octascratchenemystate
  2636.     ifpdistg 1280 ai AIOCTAGETENEMY
  2637.     else ifcount 32 { resetcount sound OCTA_ATTACK2 palfrom 8 32 addphealth OCTASCRATCHINGPLAYER }
  2638. ends
  2639.  
  2640. state octashootenemystate
  2641.     ifcount 25 { ifcount 27 ai AIOCTAGETENEMY }
  2642.     else ifcount 24 shoot COOLEXPLOSION1
  2643.     else ifactioncount 6 resetactioncount
  2644. ends
  2645.  
  2646. state checkoctahitstate
  2647.     ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIOCTASHRUNK }
  2648.     else
  2649.     {
  2650.         ifdead
  2651.         {
  2652.             ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action AOCTAFROZEN strength 0 break }
  2653.  
  2654.             addkills 1
  2655.             ifwasweapon RPG { sound SQUISHED state standard_jibs state delete_enemy }
  2656.             else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy }
  2657.             else { state rf ai AIOCTADYING }
  2658.             sound OCTA_DYING
  2659.         }
  2660.         else
  2661.         {
  2662.             ifwasweapon RPG
  2663.             {
  2664.                 sound OCTA_DYING
  2665.                 addkills 1
  2666.                 state standard_jibs
  2667.                 killit
  2668.             }
  2669.             sound OCTA_PAIN spawn BLOOD
  2670.             ifrnd 64 ai AIOCTAHIT
  2671.  
  2672.         }
  2673.     }
  2674.     state random_wall_jibs
  2675. ends
  2676.  
  2677. state octashrunkstate
  2678.     ifcount SHRUNKDONECOUNT ai AILIZGETENEMY
  2679.     else ifcount SHRUNKCOUNT sizeto 48 40
  2680.     else state genericshrunkcode
  2681. ends
  2682.  
  2683. state octadyingstate
  2684.     ifactioncount 8 { ifrnd 64 spawn BLOODPOOL move OCTASTOPPED action AOCTADEAD break }
  2685.     else ifactioncount 5 { } else ifactioncount 4 iffloordistl 8 sound THUD
  2686. ends
  2687.  
  2688. actor OCTABRAINSTAYPUT OCTASTRENGTH ai AIOCTAGETENEMY cactor OCTABRAIN enda
  2689.  
  2690. actor OCTABRAIN OCTASTRENGTH fall
  2691.  
  2692.     state checksquished
  2693.  
  2694.     ifai 0 ai AIOCTAGETENEMY
  2695.     else ifaction AOCTADEAD
  2696.     {
  2697.         strength 0
  2698.         ifcount RESPAWNACTORTIME ifrespawn
  2699.             { addkills -1 spawn TRANSPORTERSTAR cstat 257 strength OCTASTRENGTH ai AIOCTAGETENEMY }
  2700.         ifhitweapon ifwasweapon RADIUSEXPLOSION { state standard_jibs killit }
  2701.         break
  2702.     }
  2703.     else ifaction AOCTAFROZEN
  2704.     {
  2705.         ifcount THAWTIME { ai AIOCTAGETENEMY getlastpal }
  2706.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  2707.  
  2708.         ifhitweapon
  2709.         {
  2710.             addkills 1
  2711.             ifwasweapon FREEZEBLAST { strength 0 break }
  2712.  
  2713.             lotsofglass 30
  2714.             ifrnd 84 spawn BLOODPOOL
  2715.             sound GLASS_BREAKING
  2716.             killit
  2717.         }
  2718.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  2719.         break
  2720.     }
  2721.     else
  2722.     {
  2723.         ifrnd 1 soundonce OCTA_ROAM
  2724.  
  2725.         ifai AIOCTAGETENEMY state octagetenemystate
  2726.         else ifai AIOCTAHIT { ifcount 8 ai AIOCTASHOOTENEMY }
  2727.         else ifai AIOCTADYING { state octadyingstate break }
  2728.         else ifai AIOCTASCRATCHENEMY state octascratchenemystate
  2729.         else ifai AIOCTASHOOTENEMY state octashootenemystate
  2730.         else ifai AIOCTASHRUNK state octashrunkstate
  2731.  
  2732.         ifmove OCTAUPVELS { } else ifp phigher move OCTAUPVELS seekplayer
  2733.         else ifmove OCTAINWATER { } else ifinwater move OCTAINWATER seekplayer
  2734.  
  2735.         ifhitweapon state checkoctahitstate
  2736.     }
  2737. enda
  2738.  
  2739. action APIGWALK         0  4 5 1 20
  2740. action APIGRUN          0  4 5 1 11
  2741. action APIGSHOOT        30 2 5 1 58
  2742. action APIGCOCK         25 1 5 1 16
  2743. action APIGSTAND        30 1 5 1 1
  2744. action APIGDIVE         40 2 5 1 40
  2745. action APIGDIVESHOOT    45 2 5 1 58
  2746. action APIGDYING        55 5 1 1 15
  2747. action APIGHIT          55 1 1 1 10
  2748. action APIGDEAD         60 1 1 1 1
  2749. action APIGFROZEN        0 1 5
  2750.  
  2751. move PIGWALKVELS 72
  2752. move PIGRUNVELS 108
  2753. move PIGSTOPPED
  2754.  
  2755. ai AIPIGSEEKENEMY APIGWALK PIGWALKVELS seekplayer
  2756. ai AIPIGSHOOTENEMY APIGSHOOT PIGSTOPPED faceplayer
  2757. ai AIPIGFLEEENEMY APIGWALK PIGWALKVELS fleeenemy
  2758. ai AIPIGSHOOT APIGSHOOT PIGSTOPPED faceplayer
  2759. ai AIPIGDODGE APIGRUN PIGRUNVELS dodgebullet
  2760. ai AIPIGCHARGE APIGRUN PIGRUNVELS seekplayer
  2761. ai AIPIGDIVING APIGDIVE PIGSTOPPED faceplayer
  2762. ai AIPIGDYING APIGDYING PIGSTOPPED faceplayer
  2763. ai AIPIGSHRINK APIGWALK SHRUNKVELS fleeenemy
  2764. ai AIPIGHIT APIGHIT PIGSTOPPED faceplayer
  2765.  
  2766. state pigseekenemystate
  2767.  
  2768.     ifai AIPIGCHARGE
  2769.     {
  2770.         ifcansee ifpdistl 3084
  2771.         {
  2772.             ifnotmoving ai AIPIGSEEKENEMY
  2773.             else ai AIPIGDIVING
  2774.         }
  2775.         break
  2776.     }
  2777.     else iffloordistl 32
  2778.     {
  2779.         ifpdistg 4096 { ifactornotstayput ai AIPIGCHARGE }
  2780.         ifrnd 8 { ifbulletnear ai AIPIGDODGE }
  2781.     }
  2782.  
  2783.     ifrnd 128 ifcansee
  2784.     {
  2785.         ifai AIPIGDODGE { ifcount 32 ai AIPIGCHARGE break }
  2786.         iffloordistl 32
  2787.         {
  2788.             ifpdistl 1024 ifp palive ifcanshoottarget
  2789.                 { ai AIPIGSHOOTENEMY break }
  2790.             ifcount 48 { ifrnd 8 ifp palive ifcanshoottarget { ifrnd 192 ai AIPIGSHOOTENEMY else ai AIPIGDIVING break } }
  2791.         }
  2792.     }
  2793. ends
  2794.  
  2795.  
  2796. state pigshootenemystate
  2797. //    ifcansee
  2798.     {
  2799.         ifcount 12 { } else ifcount 11
  2800.         {
  2801.             ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2802.             else ai AIPIGSEEKENEMY
  2803.         }
  2804.         ifcount 25 { } else ifcount 24 { action APIGCOCK sound SHOTGUN_COCK }
  2805.         ifcount 48 { } else ifcount 47
  2806.         {
  2807.             ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2808.             else ai AIPIGSEEKENEMY
  2809.         }
  2810.         ifcount 60 { } else ifcount 59 { action APIGCOCK sound SHOTGUN_COCK }
  2811.         ifcount 72
  2812.         {
  2813.             ifrnd 64 resetcount
  2814.             else
  2815.             {
  2816.                 ifpdistl 768 ai AIPIGFLEEENEMY
  2817.                 else ai AIPIGSEEKENEMY
  2818.             }
  2819.         }
  2820.         ifaction APIGCOCK ifactioncount 2 action APIGSHOOT
  2821.     }
  2822.     else ai AIPIGSEEKENEMY
  2823. ends
  2824.  
  2825. state pigfleeenemystate
  2826.     ifactioncount 8 ai AIPIGSEEKENEMY
  2827.     else ifnotmoving ai AIPIGSEEKENEMY
  2828. ends
  2829.  
  2830. state pigdivestate
  2831.     ifaction APIGDIVESHOOT
  2832.     {
  2833.         ifcansee
  2834.         {
  2835.             ifcount 12 { } else ifcount 11
  2836.             {
  2837.                 ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2838.                 else ai AIPIGSEEKENEMY
  2839.             }
  2840.             ifcount 25 { } else ifcount 24 { sound SHOTGUN_COCK }
  2841.             ifcount 48 { } else ifcount 47
  2842.             {
  2843.                 ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2844.                 else ai AIPIGSEEKENEMY
  2845.             }
  2846.             ifcount 60 { } else ifcount 59
  2847.             {
  2848.                 sound SHOTGUN_COCK
  2849.                 ifgapzl 32 ai AIPIGDIVING
  2850.                 else
  2851.                 {
  2852.                     ifpdistl 4096 ai AIPIGFLEEENEMY
  2853.                     else ai AIPIGSEEKENEMY
  2854.                 }
  2855.             }
  2856.         }
  2857.         else ifgapzl 32 ai AIPIGDIVING else ai AIPIGSEEKENEMY
  2858.     }
  2859.     else ifactioncount 2 ifp palive { resetcount action APIGDIVESHOOT }
  2860. ends
  2861.  
  2862. state checkpighitstate
  2863.     spawn BLOOD
  2864.     ifdead
  2865.     {
  2866.         state random_wall_jibs
  2867.         ifrnd 16 spawn SHIELD else state drop_shotgun
  2868.         ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action APIGFROZEN strength 0 break }
  2869.  
  2870.         addkills 1
  2871.         ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy }
  2872.         else ifwasweapon RPG { sound SQUISHED state standard_jibs state delete_enemy }
  2873.         ai AIPIGDYING sound PIG_DYING
  2874.     }
  2875.     else
  2876.     {
  2877.         sound PIG_PAIN
  2878.         state random_wall_jibs
  2879.  
  2880.         ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIPIGSHRINK }
  2881.         else ifrnd 64 ai AIPIGHIT
  2882.         else ifrnd 64 ai AIPIGSHOOTENEMY
  2883.         else ifrnd 64 { ai AIPIGDIVING action APIGDIVESHOOT }
  2884.     }
  2885. ends
  2886.  
  2887. state pigshrinkstate
  2888.     ifcount SHRUNKDONECOUNT ai AIPIGSEEKENEMY
  2889.     else ifcount SHRUNKCOUNT sizeto 48 40
  2890.     else state genericshrunkcode
  2891. ends
  2892.  
  2893. state pigdyingstate
  2894.     ifactioncount 5 { ifrnd 64 spawn BLOODPOOL state rf iffloordistl 8 sound THUD action APIGDEAD move PIGSTOPPED break }
  2895. ends
  2896.  
  2897.  
  2898.  
  2899. actor PIGCOPDIVE PIGCOPSTRENGTH ai AIPIGDIVING action APIGDIVESHOOT cactor PIGCOP enda
  2900. actor PIGCOPSTAYPUT PIGCOPSTRENGTH ai AIPIGSEEKENEMY cactor PIGCOP enda
  2901. actor PIGCOP PIGCOPSTRENGTH APIGSTAND fall
  2902.     state checksquished
  2903.     ifaction APIGSTAND ai AIPIGSEEKENEMY
  2904.     else ifaction APIGDEAD
  2905.     {
  2906.         ifrespawn ifcount RESPAWNACTORTIME
  2907.             { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH ai AIPIGSEEKENEMY }
  2908.         else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
  2909.     }
  2910.     else ifaction APIGFROZEN
  2911.     {
  2912.         ifcount THAWTIME { ai AIPIGSEEKENEMY getlastpal }
  2913.         else ifcount FROZENDRIPTIME ifrnd 8 spawn WATERDRIP
  2914.  
  2915.         ifhitweapon
  2916.         {
  2917.             ifwasweapon FREEZEBLAST { strength 0 break }
  2918.             addkills 1
  2919.  
  2920.             lotsofglass 30
  2921.             ifrnd 84 spawn BLOODPOOL
  2922.             sound GLASS_BREAKING
  2923.             killit
  2924.         }
  2925.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  2926.         break
  2927.     }
  2928.     else ifai AIPIGDYING state pigdyingstate
  2929.     else ifai AIPIGHIT { ifactioncount 3 ai AIPIGSEEKENEMY }
  2930.     else ifai AIPIGSHRINK state pigshrinkstate
  2931.     else
  2932.     {
  2933.         ifai AIPIGSEEKENEMY state pigseekenemystate
  2934.         else ifai AIPIGDODGE state pigseekenemystate
  2935.         else ifai AIPIGSHOOTENEMY state pigshootenemystate
  2936.         else ifai AIPIGFLEEENEMY state pigfleeenemystate
  2937.         else ifai AIPIGDIVING state pigdivestate
  2938.         else ifai AIPIGCHARGE state pigseekenemystate
  2939.         ifhitweapon state checkpighitstate
  2940.         ifrnd 1
  2941.         {
  2942.             ifrnd 32 soundonce PIG_ROAM
  2943.             else ifrnd 64 soundonce PIG_ROAM2
  2944.             else soundonce PIG_ROAM3
  2945.         }
  2946.     }
  2947. enda
  2948.  
  2949.  
  2950.  
  2951.  
  2952. action ABOSS1WALK                0  4  5  1  12
  2953. action ABOSS1FROZEN              30 1  5
  2954. action ABOSS1RUN                 0  6  5  1  5
  2955. action ABOSS1SHOOT               30 2  5  1  4
  2956. action ABOSS1LOB                 40 2  5  1  35
  2957. action ABOSS1DYING              50 5  1  1  50
  2958. action BOSS1FLINTCH             50 1  1  1  1
  2959. action ABOSS1DEAD               55
  2960.  
  2961. move PALBOSS1SHRUNKRUNVELS 32
  2962. move PALBOSS1RUNVELS 128
  2963. move BOSS1WALKVELS 208
  2964. move BOSS1RUNVELS 296
  2965. move BOSS1STOPPED
  2966.  
  2967. ai AIBOSS1SEEKENEMY ABOSS1WALK BOSS1WALKVELS seekplayer
  2968. ai AIBOSS1RUNENEMY ABOSS1RUN BOSS1RUNVELS faceplayer
  2969. ai AIBOSS1SHOOTENEMY ABOSS1SHOOT BOSS1STOPPED faceplayer
  2970. ai AIBOSS1LOBBED ABOSS1LOB BOSS1STOPPED faceplayer // faceplayersmart
  2971. ai AIBOSS1DYING ABOSS1DYING BOSS1STOPPED faceplayer
  2972. ai AIBOSS1PALSHRINK ABOSS1WALK PALBOSS1SHRUNKRUNVELS furthestdir
  2973.  
  2974. state boss1palshrunkstate
  2975.     ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY
  2976.     else ifcount SHRUNKCOUNT sizeto 40 40
  2977.     else state genericshrunkcode
  2978. ends
  2979.  
  2980. state checkboss1seekstate
  2981.     ai AIBOSS1SEEKENEMY
  2982.     ifspritepal 0 { } else     // a fake way of doing a ifspritepal NOT.
  2983.         move PALBOSS1RUNVELS seekplayer
  2984. ends
  2985.  
  2986. state boss1runenemystate
  2987.     ifpdistl 2048 { ifp palive ai AIBOSS1SHOOTENEMY break }
  2988.     else ifcansee { ifactioncount 6 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS1SEEKENEMY } }
  2989.     else ai AIBOSS1SEEKENEMY
  2990. ends
  2991.  
  2992. state boss1seekenemystate
  2993.     ifrnd 2 soundonce BOS1_ROAM
  2994.     else ifactioncount 6 { resetactioncount sound BOS1_WALK }
  2995.  
  2996.     ifpdistl 2548 ifp palive { ai AIBOSS1SHOOTENEMY break }
  2997.  
  2998.     ifcansee ifcount 32
  2999.     {
  3000.         ifrnd 32 { ifp palive ifcanshoottarget ai AIBOSS1SHOOTENEMY }
  3001.         else ifpdistg 2548 ifrnd 192
  3002.             ifcanshoottarget
  3003.             {
  3004.                 ifrnd 64
  3005.                 {
  3006.                     ai AIBOSS1RUNENEMY
  3007.                     ifspritepal 0 { } else move PALBOSS1RUNVELS seekplayer
  3008.                 }
  3009.                 else ai AIBOSS1LOBBED
  3010.             }
  3011.     }
  3012.  
  3013. ends
  3014.  
  3015. state boss1dyingstate
  3016.   ifaction ABOSS1DEAD
  3017.   {
  3018.       ifspritepal 0 break
  3019.       ifrespawn ifcount RESPAWNACTORTIME
  3020.           { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkboss1seekstate }
  3021.       else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
  3022.   }
  3023.   ifactioncount 5 { iffloordistl 8 sound THUD action ABOSS1DEAD cstat 0 ifspritepal 0 endofgame 52 }
  3024. ends
  3025.  
  3026. state boss1lobbedstate
  3027.     ifcansee
  3028.     {
  3029.         ifactioncount 2
  3030.         {
  3031.             resetactioncount
  3032.             sound BOS1_ATTACK2
  3033.             shoot MORTER
  3034.         }
  3035.         else ifcount 64 ifrnd 16 state checkboss1seekstate
  3036.     }
  3037.     else state checkboss1seekstate
  3038. ends
  3039.  
  3040. state boss1shootenemy
  3041.     ifcount 72 state checkboss1seekstate
  3042.     else ifaction ABOSS1SHOOT ifactioncount 2
  3043.     {
  3044.         sound BOS1_ATTACK1
  3045.         shoot SHOTSPARK1
  3046.         shoot SHOTSPARK1
  3047.         shoot SHOTSPARK1
  3048.         shoot SHOTSPARK1
  3049.         shoot SHOTSPARK1
  3050.         shoot SHOTSPARK1
  3051.         resetactioncount
  3052.     }
  3053. ends
  3054.  
  3055. state checkboss1hitstate
  3056.     ifrnd 2 spawn BLOODPOOL
  3057.     ifdead
  3058.     {
  3059.         ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL
  3060.         else
  3061.         {
  3062.             ifrnd 64 globalsound DUKE_TALKTOBOSSFALL
  3063.             ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS1FROZEN strength 0 break }
  3064.         }
  3065.  
  3066.         sound BOS1_DYING
  3067.  
  3068.         addkills 1
  3069.         ai AIBOSS1DYING
  3070.     }
  3071.     else
  3072.     {
  3073.         ifrnd 32 { action BOSS1FLINTCH move 0 }
  3074.  
  3075.         ifspritepal 0 { }
  3076.         else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS1PALSHRINK break }
  3077.  
  3078.         soundonce BOS1_PAIN
  3079.  
  3080.         debris SCRAP1 1
  3081.         guts JIBS6 1
  3082.     }
  3083. ends
  3084.  
  3085. state boss1code
  3086.  
  3087.     ifaction ABOSS1FROZEN
  3088.     {
  3089.         ifcount THAWTIME { ai AIBOSS1SEEKENEMY spritepal 21 }
  3090.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  3091.  
  3092.         ifhitweapon
  3093.         {
  3094.             ifwasweapon FREEZEBLAST { strength 0 break }
  3095.             addkills 1
  3096.             lotsofglass 30
  3097.  
  3098.             ifrnd 84 spawn BLOODPOOL
  3099.             sound GLASS_BREAKING
  3100.             killit
  3101.         }
  3102.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  3103.         break
  3104.     }
  3105.     ifai 0 { ifspritepal 0 ai AIBOSS1RUNENEMY else { strength BOSS1PALSTRENGTH ai AIBOSS1SHOOTENEMY } }
  3106.     else ifaction BOSS1FLINTCH { ifactioncount 3 ai AIBOSS1SHOOTENEMY }
  3107.     else ifai AIBOSS1SEEKENEMY state boss1seekenemystate
  3108.     else ifai AIBOSS1RUNENEMY state boss1runenemystate
  3109.     else ifai AIBOSS1SHOOTENEMY state boss1shootenemy
  3110.     else ifai AIBOSS1LOBBED state boss1lobbedstate
  3111.     else ifai AIBOSS1PALSHRINK state boss1palshrunkstate
  3112.  
  3113.     ifai AIBOSS1DYING state boss1dyingstate
  3114.     else
  3115.     {
  3116.         ifhitweapon state checkboss1hitstate
  3117.         else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 }
  3118.     }
  3119. ends
  3120.  
  3121. actor BOSS1STAYPUT BOSS1STRENGTH cactor BOSS1 enda
  3122. actor BOSS1 BOSS1STRENGTH fall state boss1code enda
  3123.  
  3124.  
  3125. action ABOSS2WALK                0  4  5  1  30
  3126. action ABOSS2FROZEN              0  1  5
  3127. action ABOSS2RUN                 0  4  5  1  15
  3128. action ABOSS2SHOOT               20 2  5  1  15
  3129. action ABOSS2LOB                 30 2  5  1  105
  3130. action ABOSS2DYING              40 8  1  1  35
  3131. action BOSS2FLINTCH             40 1  1  1  1
  3132. action ABOSS2DEAD               48
  3133.  
  3134. move PALBOSS2SHRUNKRUNVELS 32
  3135. move PALBOSS2RUNVELS 84
  3136. move BOSS2WALKVELS 192
  3137. move BOSS2RUNVELS 256
  3138. move BOSS2STOPPED
  3139.  
  3140. ai AIBOSS2SEEKENEMY ABOSS2WALK BOSS2WALKVELS seekplayer
  3141. ai AIBOSS2RUNENEMY ABOSS2RUN BOSS2RUNVELS faceplayer
  3142. ai AIBOSS2SHOOTENEMY ABOSS2SHOOT BOSS2STOPPED faceplayer
  3143. ai AIBOSS2LOBBED ABOSS2LOB BOSS2STOPPED faceplayer
  3144. ai AIBOSS2DYING ABOSS2DYING BOSS2STOPPED faceplayer
  3145. ai AIBOSS2PALSHRINK ABOSS2WALK PALBOSS2SHRUNKRUNVELS furthestdir
  3146.  
  3147. state boss2palshrunkstate
  3148.     ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY
  3149.     else ifcount SHRUNKCOUNT sizeto 40 40
  3150.     else state genericshrunkcode
  3151. ends
  3152.  
  3153. state checkboss2seekstate
  3154.     ai AIBOSS2SEEKENEMY
  3155.     ifspritepal 0 { } else     // a fake way of doing a ifspritepal NOT.
  3156.         move PALBOSS2RUNVELS seekplayer
  3157. ends
  3158.  
  3159. state boss2runenemystate
  3160.     ifcansee
  3161.     {
  3162.         ifactioncount 3 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS2SEEKENEMY }
  3163.         ifcount 48 ifrnd 2 { ifp palive { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY } break }
  3164.     }
  3165.     else ai AIBOSS2SEEKENEMY
  3166. ends
  3167.  
  3168. state boss2seekenemystate
  3169.     ifrnd 2 soundonce BOS2_ROAM
  3170.     else ifactioncount 3 { resetactioncount sound BOS1_WALK }
  3171.  
  3172.     ifcansee ifcount 32 ifp palive ifrnd 48 ifcanshoottarget
  3173.     {
  3174.         ifrnd 64 ifpdistg 4096
  3175.         {
  3176.             ai AIBOSS2RUNENEMY
  3177.             ifspritepal 0 { }
  3178.             else move PALBOSS2RUNVELS seekplayer
  3179.             break
  3180.         }
  3181.  
  3182.         ifpdistl 10240 { ifrnd 128 { sound BOS2_ATTACK ai AIBOSS2LOBBED } }
  3183.         else { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY }
  3184.     }
  3185. ends
  3186.  
  3187. state boss2dyingstate
  3188.   ifaction ABOSS2DEAD
  3189.   {
  3190.       ifspritepal 0 break
  3191.       ifrespawn ifcount RESPAWNACTORTIME
  3192.           { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkboss2seekstate }
  3193.       else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
  3194.   }
  3195.   ifactioncount 8 { iffloordistl 8 sound THUD action ABOSS2DEAD cstat 0 ifspritepal 0 endofgame 52 }
  3196. ends
  3197.  
  3198. state boss2lobbedstate
  3199.     ifcansee
  3200.     {
  3201.         ifactioncount 2 resetactioncount
  3202.         else ifactioncount 1 { ifrnd 128 shoot COOLEXPLOSION1 }
  3203.         else ifcount 64 ifrnd 16 state checkboss2seekstate
  3204.     }
  3205.     else state checkboss2seekstate
  3206. ends
  3207.  
  3208. state boss2shootenemy
  3209.     ifcount 72 state checkboss2seekstate
  3210.     else ifaction ABOSS2SHOOT ifactioncount 2
  3211.     {
  3212.         shoot RPG
  3213.         resetactioncount
  3214.     }
  3215. ends
  3216.  
  3217. state checkboss2hitstate
  3218.     ifrnd 2 spawn BLOODPOOL
  3219.     ifdead
  3220.     {
  3221.         ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL
  3222.         else
  3223.         {
  3224.             ifrnd 64 globalsound DUKE_TALKTOBOSSFALL
  3225.             ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS2FROZEN strength 0 break }
  3226.         }
  3227.  
  3228.         sound BOS2_DYING
  3229.  
  3230.         addkills 1
  3231.  
  3232.         ai AIBOSS2DYING
  3233.     }
  3234.     else
  3235.     {
  3236.         ifrnd 144
  3237.         {
  3238.             ifrnd 32 { action BOSS2FLINTCH move 0 }
  3239.             else { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY }
  3240.         }
  3241.  
  3242.         ifspritepal 0 { }
  3243.         else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS2PALSHRINK break }
  3244.  
  3245.         soundonce BOS2_PAIN
  3246.  
  3247.         debris SCRAP1 1
  3248.         guts JIBS6 1
  3249.     }
  3250. ends
  3251.  
  3252. state boss2code
  3253.  
  3254.     ifaction ABOSS2FROZEN
  3255.     {
  3256.         ifcount THAWTIME { ai AIBOSS2SEEKENEMY spritepal 21 }
  3257.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  3258.  
  3259.         ifhitweapon
  3260.         {
  3261.             ifwasweapon FREEZEBLAST { strength 0 break }
  3262.             addkills 1
  3263.  
  3264.             lotsofglass 30
  3265.             sound GLASS_BREAKING
  3266.             ifrnd 84 spawn BLOODPOOL
  3267.             killit
  3268.         }
  3269.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  3270.         break
  3271.     }
  3272.     ifai 0 { ifspritepal 0 ai AIBOSS2RUNENEMY else { strength 1 { sound BOS2_ATTACK ai AIBOSS2SHOOTENEMY } } }
  3273.     else ifaction BOSS2FLINTCH { ifactioncount 3 ai AIBOSS2SEEKENEMY }
  3274.     else ifai AIBOSS2SEEKENEMY state boss2seekenemystate
  3275.     else ifai AIBOSS2RUNENEMY state boss2runenemystate
  3276.     else ifai AIBOSS2SHOOTENEMY state boss2shootenemy
  3277.     else ifai AIBOSS2LOBBED state boss2lobbedstate
  3278.     else ifai AIBOSS2PALSHRINK state boss2palshrunkstate
  3279.  
  3280.     ifai AIBOSS2DYING state boss2dyingstate
  3281.     else
  3282.     {
  3283.         ifhitweapon state checkboss2hitstate
  3284.         else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 }
  3285.     }
  3286.  
  3287.  
  3288. ends
  3289.  
  3290. actor BOSS2 BOSS2STRENGTH fall state boss2code enda
  3291.  
  3292.  
  3293. action ABOSS3WALK                0  4  5  1  30
  3294. action ABOSS3FROZEN              0  1  5
  3295. action ABOSS3RUN                 0  4  5  1  15
  3296. action ABOSS3LOB                20 4  5  1  50
  3297. action ABOSS3LOBBING            30 2  5  1  15
  3298. action ABOSS3DYING              40 8  1  1  20
  3299. action BOSS3FLINTCH             40 1  1  1  1
  3300. action ABOSS3DEAD               48
  3301.  
  3302. move PALBOSS3SHRUNKRUNVELS 32
  3303. move PALBOSS3RUNVELS 84
  3304. move BOSS3WALKVELS 208
  3305. move BOSS3RUNVELS 270
  3306. move BOSS3STOPPED
  3307.  
  3308. ai AIBOSS3SEEKENEMY ABOSS3WALK BOSS3WALKVELS seekplayer
  3309. ai AIBOSS3RUNENEMY ABOSS3RUN BOSS3RUNVELS faceplayerslow
  3310. ai AIBOSS3LOBENEMY ABOSS3LOB BOSS3STOPPED faceplayer
  3311. ai AIBOSS3DYING ABOSS3DYING BOSS3STOPPED faceplayer
  3312. ai AIBOSS3PALSHRINK ABOSS3WALK PALBOSS3SHRUNKRUNVELS faceplayer
  3313.  
  3314. state boss3palshrunkstate
  3315.     ifcount SHRUNKDONECOUNT ai AITROOPSEEKENEMY
  3316.     else ifcount SHRUNKCOUNT sizeto 40 40
  3317.     else state genericshrunkcode
  3318. ends
  3319.  
  3320. state checkboss3seekstate
  3321.     ai AIBOSS3SEEKENEMY
  3322.     ifspritepal 0 { } else     // a fake way of doing a ifspritepal NOT.
  3323.         move PALBOSS3RUNVELS seekplayer
  3324. ends
  3325.  
  3326. state boss3runenemystate
  3327.     ifcansee { ifactioncount 3 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS3SEEKENEMY } }
  3328.     else ai AIBOSS3SEEKENEMY
  3329. ends
  3330.  
  3331. state boss3seekenemystate
  3332.     ifrnd 2 soundonce BOS3_ROAM
  3333.     else ifactioncount 3 { resetactioncount sound BOS1_WALK }
  3334.  
  3335.     ifcansee ifcount 32 ifrnd 48 ifcanshoottarget
  3336.     {
  3337.         ifrnd 64
  3338.             ifpdistg 4096
  3339.             {
  3340.                 ai AIBOSS3RUNENEMY
  3341.                 ifspritepal 0 break
  3342.                 move PALBOSS3RUNVELS seekplayer
  3343.                 break
  3344.             }
  3345.  
  3346.         ifp palive
  3347.             ai AIBOSS3LOBENEMY
  3348.     }
  3349. ends
  3350.  
  3351. state boss3dyingstate
  3352.   ifaction ABOSS3DEAD
  3353.   {
  3354.       ifspritepal 0 break
  3355.       ifrespawn ifcount RESPAWNACTORTIME
  3356.           { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkboss3seekstate }
  3357.       else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
  3358.   }
  3359.   ifactioncount 8 { iffloordistl 8 sound THUD action ABOSS3DEAD cstat 0 ifspritepal 0 endofgame 52 }
  3360. ends
  3361.  
  3362. state boss3lobbedstate
  3363.     ifcansee
  3364.     {
  3365.         ifaction ABOSS3LOBBING
  3366.             ifactioncount 2
  3367.         {
  3368.             shoot RPG
  3369.             resetactioncount
  3370.             ifrnd 8 ai AIBOSS3SEEKENEMY
  3371.         }
  3372.  
  3373.         ifactioncount 3 { action ABOSS3LOBBING resetcount }
  3374.     }
  3375.     else state checkboss3seekstate
  3376. ends
  3377.  
  3378. state checkboss3hitstate
  3379.     ifrnd 2 spawn BLOODPOOL
  3380.     ifdead
  3381.     {
  3382.         ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL
  3383.         else
  3384.         {
  3385.             ifrnd 64 globalsound DUKE_TALKTOBOSSFALL
  3386.             ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS3FROZEN strength 0 break }
  3387.         }
  3388.  
  3389.         addkills 1
  3390.         ai AIBOSS3DYING
  3391.  
  3392.         sound BOS3_DYING
  3393.         sound JIBBED_ACTOR9
  3394.  
  3395.     }
  3396.     else
  3397.     {
  3398.         ifrnd 32 { action BOSS3FLINTCH move 0 }
  3399.  
  3400.         ifspritepal 0 { }
  3401.         else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS3PALSHRINK break }
  3402.  
  3403.         soundonce BOS3_PAIN
  3404.  
  3405.         debris SCRAP1 1
  3406.         guts JIBS6 1
  3407.     }
  3408. ends
  3409.  
  3410. state boss3code
  3411.  
  3412.     ifaction ABOSS3FROZEN
  3413.     {
  3414.         ifhitweapon
  3415.         {
  3416.             ifwasweapon FREEZEBLAST { strength 0 break }
  3417.  
  3418.             addkills 1
  3419.             lotsofglass 30
  3420.  
  3421.             ifrnd 84 spawn BLOODPOOL
  3422.             sound GLASS_BREAKING
  3423.             killit
  3424.         }
  3425.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  3426.         break
  3427.     }
  3428.     ifai 0 { ifspritepal 0 ai AIBOSS3RUNENEMY else { strength 1 ai AIBOSS3LOBENEMY } }
  3429.     else ifaction BOSS3FLINTCH { ifactioncount 3 ai AIBOSS3SEEKENEMY }
  3430.     else ifai AIBOSS3SEEKENEMY state boss3seekenemystate
  3431.     else ifai AIBOSS3RUNENEMY state boss3runenemystate
  3432.     else ifai AIBOSS3LOBENEMY state boss3lobbedstate
  3433.     else ifai AIBOSS3PALSHRINK state boss3palshrunkstate
  3434.  
  3435.     ifai AIBOSS3DYING state boss3dyingstate
  3436.     else
  3437.     {
  3438.         ifhitweapon state checkboss3hitstate
  3439.         else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 }
  3440.     }
  3441. ends
  3442.  
  3443. actor BOSS3 BOSS3STRENGTH fall state boss3code enda
  3444.  
  3445.  
  3446. action ACOMMBREETH  0  3  5  1  40
  3447. action ACOMMFROZEN  0  1  5
  3448. action ACOMMSPIN   -5  1  5  1  12
  3449. action ACOMMGET     0  3  5  1  30
  3450. action ACOMMSHOOT  20  1  5   1 35
  3451. action ACOMMABOUTTOSHOOT 20 1 5 1 30
  3452. action ACOMMDYING  30  8  1  1  12
  3453. action ACOMMDEAD   38  1  1  1  1
  3454.  
  3455.  
  3456. move COMMGETUPVELS 128 -64
  3457. move COMMGETVELS 128 64
  3458. move COMMSLOW 64 24
  3459. move COMMSTOPPED
  3460.  
  3461. ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow
  3462. ai AICOMMGET ACOMMGET COMMGETVELS seekplayer
  3463. ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow
  3464. ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow
  3465. ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin
  3466. ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer
  3467. ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir
  3468.  
  3469. state checkcommhitstate
  3470.  
  3471.     ifhitweapon
  3472.     {
  3473.  
  3474.         guts JIBS6 2
  3475.  
  3476.         ifdead
  3477.         {
  3478.             ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ACOMMFROZEN strength 0 break }
  3479.  
  3480.             addkills 1
  3481.  
  3482.             ifwasweapon RADIUSEXPLOSION { spawn BLOODPOOL sound SQUISHED state standard_jibs state delete_enemy }
  3483.             else ifwasweapon RPG { sound SQUISHED spawn BLOODPOOL state standard_jibs state delete_enemy }
  3484.  
  3485.             sound COMM_DYING
  3486.             ai AICOMMDYING
  3487.         }
  3488.         else
  3489.         {
  3490.             soundonce COMM_PAIN
  3491.             ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AICOMMSHRUNK }
  3492.             else ifrnd 24 ai AICOMMABOUTTOSHOOT
  3493.         }
  3494.     }
  3495. ends
  3496.  
  3497. actor COMMANDERSTAYPUT COMMANDERSTRENGTH cactor COMMANDER ai AICOMMABOUTTOSHOOT enda
  3498. actor COMMANDER COMMANDERSTRENGTH
  3499.  
  3500.     state checksquished
  3501.  
  3502.     ifaction ACOMMFROZEN
  3503.     {
  3504.         fall
  3505.  
  3506.         ifcount THAWTIME { getlastpal ai AICOMMWAIT }
  3507.         else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } }
  3508.  
  3509.         ifhitweapon
  3510.         {
  3511.             ifwasweapon FREEZEBLAST { strength 0 break }
  3512.             addkills 1
  3513.  
  3514.             ifrnd 84 spawn BLOODPOOL
  3515.             lotsofglass 30
  3516.             sound GLASS_BREAKING
  3517.             killit
  3518.         }
  3519.         ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick
  3520.         break
  3521.     }
  3522.     ifai 0 ai AICOMMSHOOT
  3523.     else ifai AICOMMWAIT { ifcount 20 { ifcansee { ifcanshoottarget { ifrnd 96 ai AICOMMGET else ai AICOMMABOUTTOSHOOT } } else ai AICOMMGET } }
  3524.     else ifai AICOMMABOUTTOSHOOT
  3525.     {
  3526.         ifactioncount 2 { ifcansee ai AICOMMSHOOT else { ai AICOMMGET break } }
  3527.         soundonce COMM_ATTACK
  3528.     }
  3529.     else ifai AICOMMSHOOT
  3530.     {
  3531.         ifcanshoottarget
  3532.         {
  3533.             ifcount 24 ifrnd 16 ai AICOMMWAIT
  3534.             ifactioncount 2 { shoot RPG resetactioncount }
  3535.         }
  3536.         else ai AICOMMGET
  3537.     }
  3538.     else ifai AICOMMSHRUNK
  3539.     {
  3540.         ifcount SHRUNKDONECOUNT ai AICOMMGET
  3541.         else ifcount SHRUNKCOUNT sizeto 48 40
  3542.         else state genericshrunkcode
  3543.     }
  3544.     else ifai AICOMMGET
  3545.     {
  3546.         ifnotmoving ifrnd 4 operate
  3547.         ifpdistl 1024 ifp palive { sound COMM_SPIN ai AICOMMSPIN break }
  3548.  
  3549.         ifcansee
  3550.         {
  3551.             ifp phigher move COMMGETUPVELS getv geth faceplayer
  3552.             else move COMMGETVELS getv geth faceplayer
  3553.         }
  3554.         ifactioncount 8 ifrnd 2 ai AICOMMABOUTTOSHOOT
  3555.     }
  3556.     else ifai AICOMMSPIN
  3557.     {
  3558.         soundonce COMM_SPIN
  3559.         ifcount 16
  3560.         {
  3561.             ifpdistl 1280 { addphealth CAPTSPINNINGPLAYER sound DUKE_GRUNT palfrom 32 16 resetcount }
  3562.             else ifpdistg 2300 ai AICOMMWAIT
  3563.         }
  3564.         ifactioncount 52 ai AICOMMWAIT
  3565.         ifnotmoving ifrnd 32 operate
  3566.     }
  3567.  
  3568.     ifai AICOMMDYING
  3569.     {
  3570.         fall
  3571.         strength 0
  3572.  
  3573.         ifhitweapon ifwasweapon RADIUSEXPLOSION
  3574.             { sound SQUISHED spawn BLOODPOOL state standard_jibs state delete_enemy }
  3575.  
  3576.         ifaction ACOMMDYING
  3577.             ifactioncount 8 { iffloordistl 8 sound THUD cstat 0 action ACOMMDEAD }
  3578.     }
  3579.     else
  3580.     {
  3581.         ifrnd 2 soundonce COMM_ROAM
  3582.         state checkcommhitstate
  3583.     }
  3584. enda
  3585.  
  3586.  
  3587.