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