home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 31 / CDASC_31_1996_juillet_aout.iso / vrac / bldclot4.zip / BLODCLOT.LOW < prev    next >
Text File  |  1996-05-09  |  104KB  |  3,705 lines

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