home *** CD-ROM | disk | FTP | other *** search
/ Total Meltdown / dukenukemtotalmeltdown.img / doco / the / fun.con next >
Text File  |  1996-05-25  |  71KB  |  2,488 lines

  1.  
  2. /*
  3. --------------------------------------------------------------------------------
  4. Duke Nukem 3D Script Code.
  5. Todd Replogle.
  6. --------------------------------------------------------------------------------
  7. */
  8.  
  9. include defs.con
  10. include user.con
  11.  
  12. state rats
  13.     ifrnd 128 spawn RAT
  14.     ifrnd 128 spawn RAT
  15.     ifrnd 128 spawn RAT
  16.     ifrnd 128 spawn RAT
  17.     ifrnd 128 spawn RAT
  18.     ifrnd 128 spawn RAT
  19.     ifrnd 128 spawn RAT
  20.     ifrnd 128 spawn RAT
  21. ends
  22.  
  23. move RESPAWN_ACTOR_FLAG
  24.  
  25. action RUBCANDENT 1 1 1 1 1
  26. action RUBCAN
  27.  
  28. actor RUBBERCAN WEAK
  29.     ifaction RUBCANDENT { ifactioncount 16 { strength 0 action RUBCAN break } } 
  30.      
  31.     else ifhitweapon
  32.     {   
  33.         ifwasweapon THROWFLAME { state rats ifrnd 48 spawn BURNING debris SCRAP3 4 /* spawn EXPLOSION2 */ killit }
  34.         else ifwasweapon RADIUSEXPLOSION { state rats ifrnd 48 spawn BURNING debris SCRAP3 12 /* spawn EXPLOSION2 */ killit }
  35.         else action RUBCANDENT spawn FLAMETHROWERSPRITE   
  36.     }    
  37. enda
  38.  
  39.  
  40. action EXPBARRELFRAME         0   2   1   1   15
  41. actor EXPLODINGBARREL 26
  42.     fall
  43.     ifaction EXPBARRELFRAME
  44.     {
  45.         ifactioncount 2
  46.         {
  47.             hitradius 1024 WEAKEST WEAK MEDIUMSTRENGTH TOUGH
  48.             spawn EXPLOSION2
  49.             debris SCRAP2 2
  50.             sound PIPEBOMB_EXPLODE
  51.             killit
  52.         }
  53.         break
  54.     }
  55.     ifsquished
  56.     {
  57.         debris SCRAP1 5
  58.         killit
  59.         break
  60.     }
  61.     ifhitweapon
  62.         action EXPBARRELFRAME
  63. enda
  64.  
  65. action BURNING_FLAME    0   12   1   1   2
  66. move BURNING_VELS 
  67.  
  68. state burningstate
  69.  
  70.     ifgapzl 16 break
  71.     ifpdistg 10240 break
  72. //    ifpdistl 8192 soundonce FLESH_BURNING
  73.  
  74.     ifcount 128
  75.     {
  76.         ifspawnedby TIRE
  77.         {
  78.             ifactioncount 512
  79.             {
  80.                 sizeto 16 16
  81.                 killit
  82.             }
  83.             ifrnd 16 sizeto 64 48
  84.         }
  85.         else
  86.         {
  87.             sizeto 8 8 sizeto 8 8
  88.             ifactioncount 192 killit
  89.         }
  90.     }
  91.     else
  92.     {
  93.         ifmove 0 move BURNING_VELS
  94.  
  95.         ifspawnedby BOX
  96.             { sizeto 32 32 ifcount 32 { spawn SMALLSMOKE killit } }
  97.         else ifspawnedby TREE1 sizeto 96 96
  98.         else ifspawnedby TREE2 sizeto 96 96
  99.         else ifspawnedby APLAYER { sizeto 40 40 sizeto 40 40 }
  100.         else sizeto 52 52
  101.         ifp palive ifpdistl 844 ifrnd 32 ifcansee { soundonce DUKE_LONGTERM_PAIN addphealth -1 palfrom 24 16 }
  102.     }
  103.  
  104. ends
  105.  
  106. actor BURNING WEAK BURNING_FLAME
  107.     state burningstate
  108. enda
  109.  
  110. actor BURNING2 WEAK BURNING_FLAME
  111.     state burningstate
  112. enda
  113.  
  114. action TOILETWATERFRAMES 0 4 1 1 1
  115. actor TOILETWATER 0 TOILETWATERFRAMES
  116.     ifpdistl 8192
  117.     {
  118.         ifpdistl 6144 soundonce WATER_GURGLE
  119.         ifspawnedby TOILET
  120.             sizeto 34 34
  121.         else
  122.         {
  123.             ifspawnedby WATERFOUNTAINBROKE
  124.                 sizeto 6 15
  125.             else sizeto 24 32
  126.         }
  127.         ifp pdead break
  128.         else ifpdistl RETRIEVEDISTANCE ifp pfacing ifactioncount 32 ifphealthl MAXPLAYERHEALTH
  129.             ifhitspace ifcansee
  130.         {
  131.             addphealth 1
  132.             globalsound DUKE_DRINKING
  133.             resetactioncount
  134.         }
  135.     }
  136. enda
  137.  
  138. action WOODENHORSEFRAME  0   1   4
  139. action WOODENFALLFRAME  122  1   5
  140.  
  141. actor HORSEONSIDE WEAKEST cactor WOODENHORSE action WOODENFALLFRAME enda
  142. actor WOODENHORSE WEAK WOODENHORSEFRAME
  143.     fall
  144.     ifhitweapon
  145.     {
  146.         ifdead
  147.         {
  148.             debris SCRAP1 4
  149.             debris SCRAP2 3
  150.             killit
  151.         }
  152.         else action WOODENFALLFRAME
  153.     }
  154. enda
  155.  
  156. state steamcode
  157.     ifpdistl 5144 soundonce STEAM_HISSING
  158.  
  159.     ifcount 26        // Turn it on
  160.     {
  161.         resetcount
  162.         ifpdistl 844
  163.         {
  164.             addphealth -1
  165.             palfrom 16 16
  166.         }
  167.     }
  168.     else
  169.     {
  170.         ifspawnedby STEAM break ifspawnedby CEILINGSTEAM break
  171.         sizeto 24 24
  172.     }
  173. ends
  174.  
  175. actor STEAM
  176.     state steamcode
  177. enda
  178.  
  179. actor CEILINGSTEAM
  180.     state steamcode
  181. enda
  182.  
  183. actor WATERBUBBLEMAKER 0 0 random_angle
  184.     ifpdistl 2048 ifrnd 24 spawn WATERBUBBLE
  185. enda
  186.  
  187. action BUBBLE
  188. action CRACKEDBUBBLE    1
  189. move BUBMOVE           -10 -36
  190. move BUBMOVEFAST           -10 -52
  191.  
  192. actor WATERBUBBLE 0 BUBBLE BUBMOVE getv geth random_angle
  193.  
  194.     ifaction CRACKEDBUBBLE
  195.     {
  196.         ifinwater ifrnd 192 killit
  197.         ifactioncount 7 killit
  198.     }
  199.     else
  200.     {
  201.         ifcount 4
  202.         {
  203.             ifrnd 192 move BUBMOVE getv geth random_angle
  204.             else move BUBMOVEFAST getv geth random_angle
  205.             resetcount
  206.         }
  207.  
  208.         ifonwater
  209.         {
  210.             iffloordistl 8 action CRACKEDBUBBLE
  211.         }
  212.         else ifactioncount 40 action CRACKEDBUBBLE
  213.     }
  214. enda
  215.  
  216.  
  217. move SMOKEVEL 8 -16
  218. move ENGINE_SMOKE 64 -64
  219. move SMOKESHOOTOUT -192
  220. action SMOKEFRAMES 0 4 1 1 10
  221. actor SMALLSMOKE 0 SMOKEFRAMES
  222.     ifmove 0
  223.     {
  224.         ifspawnedby RECON
  225.             move SMOKESHOOTOUT geth
  226.         else ifspawnedby SECTOREFFECTOR
  227.             move ENGINE_SMOKE geth getv
  228.         else move SMOKEVEL geth getv face_player
  229.  
  230.     }
  231.     ifactioncount 4 killit
  232. enda
  233.  
  234. action BARREL_DENTING  2 2 1 1 6
  235. action BARREL_DENTED   1
  236. action BARREL_DENTED2  2
  237.  
  238. move SPAWNED_BLOOD
  239.  
  240. actor NUKEBARRELDENTED WEAK
  241.     cactor NUKEBARREL
  242.     action BARREL_DENTED
  243. enda
  244.  
  245. actor NUKEBARRELLEAKED WEAK
  246.     cactor NUKEBARREL
  247.     action BARREL_DENTED2
  248. enda 
  249.  
  250. actor NUKEBARREL MEDIUMSTRENGTH
  251.     ifsquished
  252.     {
  253.         debris SCRAP1 32
  254.         spawn BLOODPOOL
  255.         spawn OOZ
  256.         killit
  257.     }
  258.     fall
  259.     ifaction BARREL_DENTING
  260.     {
  261.         ifactioncount 2
  262.         {
  263.             debris SCRAP1 10
  264.             ifrnd 2 spawn BLOODPOOL
  265.             killit
  266.         }
  267.     }
  268.     else ifhitweapon
  269.     {
  270.         ifdead
  271.         {
  272.             sound VENT_BUST
  273.  
  274.             ifrnd 128
  275.                 spawn BLOODPOOL
  276.             action BARREL_DENTING
  277.         }
  278.         else
  279.         {
  280.             ifaction 0
  281.                 action BARREL_DENTED
  282.             else ifaction BARREL_DENTED
  283.             {
  284.                 action BARREL_DENTED2
  285.                 spawn BLOODPOOL
  286.             }
  287.             else ifaction BARREL_DENTED2
  288.                 action BARREL_DENTING
  289.         }
  290.     }
  291. enda
  292.  
  293. actor FIREBARREL
  294.     fall
  295.     ifcount 32
  296.     {
  297.         resetcount
  298.         ifpdistl 1480 ifp phigher
  299.         {
  300.             addphealth -1
  301.             palfrom 16 16
  302.             ifrnd 96 sound DUKE_LONGTERM_PAIN
  303.         }
  304.     }
  305.     ifhitweapon
  306.     {
  307.         sound VENT_BUST
  308.         debris SCRAP1 10
  309.         ifrnd 128 spawn BURNING
  310.         else spawn BURNING2
  311.         killit
  312.     }
  313. enda
  314.  
  315. action SHRINKERFRAMES 0 4 1 1 10
  316. actor SHRINKEREXPLOSION 0 SHRINKERFRAMES
  317.     ifactioncount 4 killit
  318. enda
  319.  
  320. action EXPLOSION_FRAMES 0 20 1 1  4
  321. actor EXPLOSION2 1 EXPLOSION_FRAMES
  322. //    ifspawnedby FIREEXT spritepal 1
  323.     ifactioncount 20 killit
  324. enda
  325.  
  326. actor EXPLOSION2BOT 1 EXPLOSION_FRAMES
  327.     ifactioncount 20 killit
  328. enda
  329.  
  330. action FFLAME_FR 0 16 1 1 1
  331. action FFLAME 0 1 1 1 1
  332.  
  333. actor FLOORFLAME 0 FFLAME_FR
  334.         ifaction FFLAME_FR
  335.         {
  336.                 shadeto -127
  337.                 ifpdistl 1024 hitradius 1024 WEAKEST WEAKEST WEAKEST WEAKEST
  338.                 ifactioncount 16
  339.                     action FFLAME
  340.         }
  341.         ifaction FFLAME ifrnd 4
  342.         {
  343.              action FFLAME_FR
  344.              sound CAT_FIRE
  345.              resetactioncount
  346.         }
  347.  
  348. enda
  349.  
  350.  
  351.  
  352. action ASATNSPIN   0 5 1 1 4
  353. action ASATSHOOTING -10 3 5 1 40
  354. action ASATWAIT 0 1 5 1 1
  355. move TURRVEL
  356.  
  357. actor ROTATEGUN ROTTURRETSTRENGTH ASATWAIT TURRVEL face_player
  358.  
  359.     ifaction ASATNSPIN
  360.         { ifactioncount 32 { action ASATWAIT move TURRVEL face_player } }
  361.     else ifaction ASATSHOOTING
  362.     {
  363.         ifactioncount 12 { ifrnd 32 action ASATWAIT }
  364.         ifcount 32 resetcount
  365.         else ifcount 16 { ifcount 17 { } else { sound PRED_ATTACK shoot FIRELASER } }
  366.         else ifcount 4 { ifcount 5 { } else { sound PRED_ATTACK shoot FIRELASER } }
  367.     }
  368.     else ifaction ASATWAIT
  369.         { ifactioncount 64 ifrnd 32 ifp palive ifcansee { action ASATSHOOTING move TURRVEL face_player } }
  370.     ifhitweapon { ifdead { addkills 1 sound LASERTRIP_EXPLODE debris SCRAP1 15 spawn EXPLOSION2 killit }
  371.         else { action ASATNSPIN debris SCRAP1 4 } move 0 }
  372.  
  373. enda
  374.  
  375. action RIP_F 0 8 1 1 1
  376. actor FORCERIPPLE 0 RIP_F
  377.     ifactioncount 8 killit
  378.     ifrnd 16 sound SHORT_CIRCUIT
  379. enda
  380.  
  381. action TRANSFOWARD 0  6  1  1  2
  382. action TRANSBACK   5  6  1 -1  2
  383. actor TRANSPORTERSTAR 0 TRANSFOWARD
  384.     ifaction TRANSFOWARD
  385.     {
  386.         ifactioncount 6
  387.             action TRANSBACK
  388.     }
  389.     else
  390.         ifactioncount 6 killit
  391. enda
  392.  
  393. action BEAMFOWARD  0  4  1  1  9
  394. actor TRANSPORTERBEAM 0 BEAMFOWARD
  395.     sizeto 32 64 sizeto 32 64 sizeto 32 64
  396.     ifactioncount 4 killit
  397. enda
  398.  
  399. state getcode
  400.     globalsound DUKE_GET
  401.     palfrom 16 0 32
  402.     ifrespawn
  403.     {
  404.         move RESPAWN_ACTOR_FLAG
  405.         cstat 32768
  406.     }
  407.     else killit
  408. ends
  409.  
  410. state randgetweapsnds
  411.     ifrnd 32 globalsound DUKE_GETWEAPON1
  412.     else ifrnd 32 globalsound DUKE_GETWEAPON2
  413.     else ifrnd 32 globalsound DUKE_GETWEAPON3
  414.     else ifrnd 32 globalsound DUKE_GETWEAPON4
  415.     else globalsound DUKE_GET
  416. ends
  417.  
  418. state getweaponcode
  419.  
  420.     state randgetweapsnds
  421.  
  422.     palfrom 32 0 32
  423.     ifrespawn
  424.     {
  425.         move RESPAWN_ACTOR_FLAG
  426.         cstat 32768
  427.     }
  428.     else killit
  429. ends
  430.  
  431.  
  432. state respawnit
  433.     ifcount RESPAWNTIME { spawn TRANSPORTERSTAR move 0 cstat 0 sound TELEPORTER }
  434. ends
  435.  
  436. state quikget
  437.     globalsound DUKE_GET
  438.     palfrom 16 0 32 killit
  439. ends
  440.  
  441. state quikweaponget
  442.     state randgetweapsnds
  443.     palfrom 32 0 32 killit
  444. ends
  445.  
  446. actor STEROIDS
  447.     fall
  448.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  449.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE
  450.     ifpinventory GET_STEROIDS STEROID_AMOUNT ifcanseetarget
  451.     {
  452.         addinventory GET_STEROIDS STEROID_AMOUNT quote 37 state getcode
  453.     }
  454. enda
  455.  
  456. actor HEATSENSOR
  457.     fall
  458.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  459.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  460.     {
  461.         addinventory GET_HEATS HEAT_AMOUNT quote 101 state getcode
  462.     }
  463. enda
  464.  
  465.  
  466. actor BOOTS
  467.     fall
  468.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  469.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_BOOTS BOOT_AMOUNT
  470.         ifcanseetarget
  471.     {
  472.         addinventory GET_BOOTS BOOT_AMOUNT quote 6 state getcode
  473.     }
  474. enda
  475.  
  476. actor SHIELD
  477.     fall
  478.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  479.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_SHIELD SHIELD_AMOUNT
  480.         ifcanseetarget
  481.     {
  482.         ifspawnedby PIGCOP
  483.         {
  484.             ifrnd 128 addinventory GET_SHIELD PIG_SHIELD_AMOUNT1
  485.             else addinventory GET_SHIELD PIG_SHIELD_AMOUNT2
  486.             quote 104
  487.             sound KICK_HIT palfrom 24 0 32 killit
  488.         }
  489.         else addinventory GET_SHIELD SHIELD_AMOUNT quote 38
  490.         ifspawnedby SHIELD state getcode
  491.         else state quikget
  492.     }
  493. enda
  494.  
  495. actor BODYSUIT
  496.     fall
  497.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  498.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifpinventory GET_BSUIT BODYSUIT_AMOUNT ifcanseetarget
  499.     {
  500.         addinventory GET_BSUIT BODYSUIT_AMOUNT quote 42 state getcode
  501.     }
  502. enda
  503.  
  504. actor AIRTANK
  505.     fall
  506.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  507.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifpinventory GET_SCUBA SCUBA_AMOUNT ifcanseetarget
  508.     {
  509.         addinventory GET_SCUBA SCUBA_AMOUNT quote 39 state getcode
  510.     }
  511. enda
  512.  
  513. action HOLODUKE_FRAMES 0 4 1 1 8
  514. actor HOLODUKE 0 HOLODUKE_FRAMES
  515.     fall
  516.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  517.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifpinventory GET_HOLODUKE HOLODUKE_AMOUNT ifcanseetarget
  518.     {
  519.         addinventory GET_HOLODUKE HOLODUKE_AMOUNT quote 51 state getcode
  520.     }
  521. enda
  522.  
  523. actor JETPACK
  524.     fall
  525.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  526.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifpinventory GET_JETPACK JETPACK_AMOUNT ifcanseetarget
  527.     {
  528.         addinventory GET_JETPACK JETPACK_AMOUNT quote 41 state getcode
  529.     }
  530. enda
  531.  
  532. actor ACCESSCARD
  533.     fall
  534.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  535.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  536.     {
  537.         ifpinventory GET_ACCESS 0 break
  538.         addinventory GET_ACCESS 1
  539.         quote 43
  540.         state getcode
  541.     }
  542. enda
  543.  
  544. // test boss_recod
  545.  
  546.  
  547. actor AMMO
  548.     fall
  549.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  550.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  551.     {
  552.         addammo PISTOL_WEAPON PISTOLAMMOAMOUNT quote 65
  553.         ifspawnedby AMMO state getcode
  554.         else state quikget
  555.     }
  556. enda
  557.  
  558. actor SHOTGUNAMMO
  559.     fall
  560.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  561.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  562.     {
  563.         addammo SHOTGUN_WEAPON SHOTGUNAMMOAMOUNT quote 69
  564.         ifspawnedby SHOTGUNAMMO state getcode
  565.         else state quikget
  566.     }
  567. enda
  568.  
  569. actor AMMOLOTS
  570.     fall
  571.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  572.     else ifp pshrunk { } else ifcount 6 ifpdistl RETRIEVEDISTANCE ifcanseetarget
  573.     {
  574.         addammo PISTOL_WEAPON 48 quote 65
  575.         ifspawnedby AMMOLOTS state getcode
  576.         else state quikget
  577.     }
  578. enda
  579.  
  580. actor FUELCAN
  581.     fall
  582.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  583.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  584.     {
  585.         addammo FLAMETHROWER_WEAPON FUELAMMOAMOUNT quote 66
  586.         ifspawnedby FUELCAN state getcode
  587.         else state quikget
  588.     }
  589. enda
  590.  
  591. actor CRYSTALAMMO
  592.     fall
  593.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  594.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  595.     {
  596.         addammo SHRINKER_WEAPON CRYSTALAMMOAMOUNT quote 78
  597.         ifspawnedby CRYSTALAMMO state getcode
  598.         else state quikget
  599.     }
  600. enda
  601.  
  602. actor BATTERYAMMO
  603.     fall
  604.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  605.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  606.     {
  607.         addammo CHAINGUN_WEAPON CHAINGUNAMMOAMOUNT quote 63
  608.         ifspawnedby BATTERYAMMO state getcode
  609.         else state quikget
  610.     }
  611. enda
  612.  
  613. actor RPGAMMO
  614.     fall
  615.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  616.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  617.     {
  618.         addammo RPG_WEAPON RPGAMMOBOX quote 64
  619.         ifspawnedby RPGAMMO state getcode
  620.         else state quikget
  621.     }
  622. enda
  623.  
  624. actor HBOMBAMMO
  625.     fall
  626.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  627.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  628.     {
  629.         addweapon HANDBOMB_WEAPON 0
  630.         addammo HANDBOMB_WEAPON HANDBOMBBOX
  631.  
  632.         quote 55
  633.         ifspawnedby HBOMBAMMO state getweaponcode
  634.         else state quikweaponget
  635.     }
  636. enda
  637.  
  638. actor RPGSPRITE
  639.     fall
  640.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  641.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  642.     {
  643.         addweapon RPG_WEAPON RPGAMMOBOX quote 56
  644.         ifspawnedby RPGSPRITE state getweaponcode
  645.         else state quikweaponget
  646.     }
  647. enda
  648.  
  649. actor SHOTGUNSPRITE
  650.     fall
  651.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  652.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  653.     {
  654.         ifspawnedby PIGCOP
  655.         {
  656.             addweapon SHOTGUN_WEAPON 0
  657.             ifrnd 64 addammo SHOTGUN_WEAPON 4
  658.             else ifrnd 64 addammo SHOTGUN_WEAPON 3
  659.             else ifrnd 64 addammo SHOTGUN_WEAPON 2
  660.             else addammo SHOTGUN_WEAPON 1
  661.         }
  662.         else addweapon SHOTGUN_WEAPON SHOTGUNAMMOAMOUNT quote 57
  663.         ifspawnedby SHOTGUNSPRITE state getweaponcode
  664.         else state quikweaponget
  665.     }
  666. enda
  667.  
  668.  
  669.  
  670. actor SIXPAK
  671.     fall
  672.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  673.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifphealthl MAXPLAYERHEALTH ifcanseetarget
  674.     {
  675.         addphealth 30 quote 62
  676.         ifspawnedby SIXPAK state getcode
  677.         else state quikget
  678.     }
  679. enda
  680.  
  681. actor COLA
  682.     fall
  683.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  684.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifphealthl MAXPLAYERHEALTH // ifcanseetarget
  685.     {
  686.         addphealth 10 quote 61
  687.         ifspawnedby COLA state getcode
  688.         else state quikget
  689.     }
  690. enda
  691.  
  692. actor ATOMICHEALTH
  693.     fall
  694.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  695.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  696.         ifphealthl MAXPLAYERATOMICHEALTH
  697.     {
  698.         addphealth 50 quote 19
  699.         ifspawnedby ATOMICHEALTH state getcode
  700.         else state quikget
  701.     }
  702. enda
  703.  
  704.  
  705.  
  706.  
  707. actor FIRSTAID
  708.     fall
  709.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  710.     else ifp pshrunk { } else ifpdistl RETRIEVEDISTANCE ifcount 6
  711.         ifpinventory GET_FIRSTAID FIRSTAID_AMOUNT
  712.     ifcanseetarget
  713.     {
  714.         addinventory GET_FIRSTAID FIRSTAID_AMOUNT quote 3 state getcode
  715.     }
  716. enda
  717.  
  718.  
  719. actor FIRSTGUNSPRITE
  720.     fall
  721.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  722.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  723.     {
  724.         addweapon PISTOL_WEAPON 48
  725.         ifspawnedby FIRSTGUNSPRITE state getweaponcode
  726.         else state quikweaponget
  727.     }
  728. enda
  729.  
  730. actor TRIPBOMBSPRITE
  731.     fall
  732.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  733.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  734.     {
  735.         addweapon TRIPBOMB_WEAPON 1
  736.         quote 58
  737.         state getweaponcode 
  738.      }
  739. enda
  740.  
  741. actor CHAINGUNSPRITE
  742.     fall
  743.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  744.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  745.     {
  746.         addweapon CHAINGUN_WEAPON 50 quote 54
  747.         ifspawnedby CHAINGUNSPRITE state getweaponcode
  748.         else state quikweaponget
  749.     }
  750. enda
  751.  
  752.  
  753.  
  754. actor SHRINKERSPRITE
  755.     fall
  756.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  757.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  758.     {
  759.         addweapon SHRINKER_WEAPON 10 quote 60
  760.         ifspawnedby SHRINKERSPRITE state getweaponcode
  761.         else state quikweaponget
  762.     }
  763. enda
  764.  
  765. actor FLAMETHROWERSPRITE
  766.     fall
  767.     ifmove RESPAWN_ACTOR_FLAG state respawnit
  768.     else ifp pshrunk { } else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget
  769.     {
  770.         addweapon FLAMETHROWER_WEAPON 48 quote 59
  771.         ifspawnedby FLAMETHROWERSPRITE state getweaponcode
  772.         else state quikweaponget
  773.     }
  774. enda
  775.  
  776. state firestate
  777.  
  778.     ifgapzl 16 break
  779.     ifpdistg 10240 break
  780.     ifinwater killit
  781.  
  782.     ifp palive ifpdistl 844 ifrnd 32 ifcansee { soundonce DUKE_LONGTERM_PAIN addphealth -1 palfrom 32 32 }
  783.  
  784.     ifactor FIRE ifspawnedby FIRE break
  785.     else ifactor FIRE2 ifspawnedby FIRE2 break
  786.  
  787.     iffloordistl 128
  788.     {
  789.         ifcount 32 sizeto 8 8
  790.         ifcount 64 killit
  791.     }
  792.     else killit
  793.  
  794. ends
  795.  
  796. action FIRE_FRAMES     -1 14 1 1 1
  797. move FIREVELS
  798. actor FIRE WEAK FIRE_FRAMES FIREVELS state firestate enda
  799. actor FIRE2 WEAK FIRE_FRAMES FIREVELS state firestate enda
  800.  
  801. actor FECES
  802.     ifcount 24
  803.     {
  804.         ifpdistl RETRIEVEDISTANCE
  805.         {
  806.             spawn BLOODPOOL   // Will be brown
  807.             killit
  808.         }
  809.     }
  810.     else sizeto 32 32
  811. enda
  812.  
  813. state drop_ammo ifrnd SPAWNAMMOODDS spawn AMMO ends
  814. state drop_battery ifrnd SPAWNAMMOODDS spawn BATTERYAMMO ends
  815. state drop_fuel ifrnd SPAWNAMMOODDS spawn FUELCAN ends
  816. state drop_sgshells ifrnd SPAWNAMMOODDS spawn SHOTGUNAMMO ends
  817. state drop_shotgun ifrnd SPAWNAMMOODDS spawn SHOTGUNSPRITE ends
  818.  
  819. // Shotgun 1-2 shotgun blasts.
  820.  
  821. state standard_jibs
  822.     guts JIBS2 1
  823.     guts JIBS3 2
  824.     guts JIBS4 3
  825.     guts JIBS5 2
  826.     guts JIBS6 3
  827.     ifrnd 16 guts JIBS1 1                // spine
  828.  
  829.     ifrnd 96
  830.     {
  831.         ifrnd 32 globalsound JIBBED_ACTOR1
  832.         else ifrnd 42 globalsound JIBBED_ACTOR2
  833.         else ifrnd 52 globalsound JIBBED_ACTOR3
  834.         else ifrnd 62 globalsound JIBBED_ACTOR5
  835.         else ifrnd 72 globalsound JIBBED_ACTOR6
  836.         else ifrnd 82  globalsound JIBBED_ACTOR7
  837.         else ifrnd 92 globalsound JIBBED_ACTOR4
  838.     }
  839. //    else sound SQUISHED
  840. ends
  841.  
  842. state troop_body_jibs
  843.     ifrnd 64 guts HEADJIB1 1
  844.     ifrnd 64 guts LEGJIB1 2
  845.     ifrnd 64 guts ARMJIB1 1
  846.     ifrnd 48 spawn BLOODPOOL
  847. ends
  848.  
  849. state liz_body_jibs
  850. ifrnd 64 guts LIZMANHEAD1 1
  851.     ifrnd 64 guts LIZMANLEG1 2
  852.     ifrnd 64 guts LIZMANARM1 1
  853.     ifrnd 48 spawn BLOODPOOL
  854. ends
  855.  
  856. state delete_enemy killit ends
  857.  
  858.  
  859. action BLOODFRAMES 0 4 1 1 15
  860. actor BLOOD 0 BLOODFRAMES
  861.     sizeto 72 72 sizeto 72 72 sizeto 72 72
  862.     ifpdistg 3144 killit
  863.     ifactioncount 4 killit
  864. enda
  865.  
  866. action EGGOPEN1 1 1 1 1 4
  867. action EGGOPEN2 2 1 1 1 4
  868. action EGGOPEN3 2 1 1 1 4
  869.  
  870. actor EGG TOUGH
  871.     ifaction EGGOPEN1 ifactioncount 4 action EGGOPEN2
  872.     ifaction EGGOPEN2 ifactioncount 4 { spawn GREENSLIME action EGGOPEN3 }
  873.     ifhitweapon { ifdead { addkills 1 state standard_jibs state delete_enemy } else ifaction 0 action EGGOPEN1 }
  874. enda
  875.  
  876. actor KNEE KNEE_WEAPON_STRENGTH enda
  877. actor SPIT SPIT_WEAPON_STRENGTH enda
  878. actor CHAINGUN CHAINGUN_WEAPON_STRENGTH enda
  879. actor SHOTGUN SHOTGUN_WEAPON_STRENGTH enda
  880. actor FIRELASER FIRELASER_WEAPON_STRENGTH enda
  881. actor HEAVYHBOMB HANDBOMB_WEAPON_STRENGTH enda
  882. actor BOUNCEMINE BOUNCEMINE_WEAPON_STRENGTH enda
  883. actor MORTER MORTER_WEAPON_STRENGTH enda
  884. actor SHRINKSPARK SHRINKER_WEAPON_STRENGTH enda
  885. actor RPG RPG_WEAPON_STRENGTH enda
  886. actor THROWFLAME FLAMETHROWER_WEAPON_STRENGTH enda
  887. actor COOLEXPLOSION1 COOL_EXPLOSION_STRENGTH enda
  888. actor TRIPBOMB TRIPBOMB_STRENGTH enda
  889.  
  890. action WEAP2FRAMES 0  4  1  1  6
  891. actor SHOTSPARK1 PISTOL_WEAPON_STRENGTH WEAP2FRAMES
  892.     ifdead killit
  893.     ifactioncount 4 killit
  894.     else
  895.     {
  896.         ifactioncount 3 { ifinwater spawn WATERBUBBLE }
  897.         else ifcount 2 { } else ifonwater spawn WATERSPLASH2
  898.     }
  899. enda
  900.  
  901. state standard_pjibs
  902.     guts JIBS1 1
  903.     guts JIBS3 2
  904.     guts JIBS4 1
  905.     guts JIBS5 1
  906.     guts JIBS6 2
  907.     guts DUKETORSO 1
  908.     guts DUKELEG 2
  909.     guts DUKEGUN 1
  910.     ifrnd 16 money 1
  911. ends
  912.  
  913. move DUKENOTMOVING
  914. state handle_dead_dukes
  915.     fall
  916.     ifmove 0     // 1st time initializiation...
  917.     {
  918.         ifrnd 128 cstat 4
  919.         else cstat 0
  920.         move DUKENOTMOVING
  921.     }
  922.  
  923.     ifsquished
  924.     {
  925.         sound SQUISHED
  926.         spawn OOZ
  927.         killit
  928.     }
  929.     else ifcount 1024 ifpdistg 4096 killit
  930.     else
  931.     {
  932.         strength 0
  933.         ifhitweapon ifwasweapon RADIUSEXPLOSION
  934.         {
  935.             state standard_jibs
  936.             killit
  937.         }
  938.     }
  939. ends
  940.  
  941. action PLYINGFRAMES 0 1 0 1 1
  942. actor DUKELYINGDEAD 0 PLYINGFRAMES
  943.     state handle_dead_dukes
  944. enda
  945.  
  946. action PSTAND       0   1   5   1    1
  947. action PEXPLODE     106   5   1   1   10
  948. action PEXPLODEAD   113   1   1
  949.  
  950. action PJPHOUVER    15   1   5   1
  951. action PWALK        20   4   5   1   16
  952. action PRUN         20   4   5   1   10
  953. action PWALKBACK    45   4   5  -1   16
  954. action PRUNBACK     45   4   5  -1   10
  955. action PJUMPING     50   4   5   1   30
  956. action PFALLING     65   1   5
  957. action PDUCKING     86   1   5
  958. action PCRAWLING    86   3   5   1   20
  959. action PAKICKING    40   2   5   1   25
  960. action PFLINTCHING  106  1   1   1   10
  961. action PTHROWNBACK  106  5   1   1   18
  962. action PLYINGDEAD   113  1   1
  963.  
  964. action PSWIMMINGGO   375   1   5   1   10
  965. action PSWIMMING     375   4   5   1   13
  966. action PSWIMMINGWAIT 395   1   5   1   13
  967. action PTREDWATER    395   2   5   1   17
  968.  
  969. // move PHITHARD   0 -32
  970. move PSTOPED
  971. move PSHRINKING // used as a var only
  972.  
  973. state check_dead_thrown_back
  974.     ifdead
  975.     {
  976.         strength 0
  977.         action PTHROWNBACK
  978. //        move PHITHARD geth getv
  979.     }
  980. ends
  981.  
  982. state check_pstandard
  983.     ifp pwalking action PWALK
  984.     else ifp pkicking action PAKICKING
  985.     else ifp pwalkingback action PWALKBACK
  986.     else ifp prunning action PRUN
  987.     else ifp prunningback action PRUNBACK
  988.     else ifp pjumping
  989.         action PJUMPING
  990.     else ifp pducking action PDUCKING
  991. ends
  992.  
  993. state random_wall_jibs
  994.     ifrnd 96 shoot BLOODSPLAT1
  995.     ifrnd 96 shoot BLOODSPLAT2
  996.     ifrnd 96 shoot BLOODSPLAT3
  997.     ifrnd 96 shoot BLOODSPLAT4
  998.     ifrnd 96 shoot BLOODSPLAT1
  999. ends
  1000.  
  1001. actor APLAYER 100 PSTAND
  1002.  
  1003.     ifaction 0 action PSTAND
  1004.     ifhitspace { shoot COOLEXPLOSION1 shoot FIRELASER sound PRED_ATTACK  }
  1005.     ifdead
  1006.     {
  1007.         ifsquished palfrom 32 63 63 63
  1008.         else fall
  1009.  
  1010.         ifactioncount 7 { move 0 } else ifactioncount 6
  1011.         {
  1012.             ifrnd 84 globalsound DUKE_KILLED1
  1013.             else ifrnd 108 globalsound DUKE_KILLED2
  1014.             else globalsound DUKE_KILLED3
  1015.         }
  1016.  
  1017.         ifaction PLYINGDEAD
  1018.         {
  1019.             ifactioncount 3 move PSTOPED
  1020.             quote 13
  1021.             ifhitspace
  1022.             {
  1023.                 action PSTAND
  1024.                 spawn DUKELYINGDEAD
  1025.                 resetplayer
  1026.             }
  1027.             break
  1028.         }
  1029.         else ifaction PTHROWNBACK
  1030.         {
  1031.             ifactioncount 5
  1032.             {
  1033.                 spawn BLOODPOOL
  1034.                 action PLYINGDEAD
  1035.             }
  1036.             else ifactioncount 1 move 0
  1037.             break
  1038.         }
  1039.         else ifaction PEXPLODEAD
  1040.         {
  1041.             quote 13
  1042.             ifhitspace
  1043.             {
  1044.                 action PSTAND
  1045.                 resetplayer
  1046.             }
  1047.             break
  1048.         }
  1049.         else ifaction PEXPLODE
  1050.         {
  1051.             ifactioncount 5
  1052.             {
  1053.                 action PEXPLODEAD
  1054.                 spawn BLOODPOOL
  1055.             }
  1056.             break
  1057.         }
  1058.  
  1059.         else ifp pshrunk
  1060.         {
  1061.             state standard_pjibs
  1062.             spawn BLOODPOOL
  1063.  
  1064.             sound SQUISHED
  1065.             cstat 32768                 // Hide the sprite
  1066.  
  1067.             action PLYINGDEAD
  1068.         }
  1069.  
  1070.         else
  1071.         {
  1072.             ifinwater
  1073.             {
  1074.                 action PLYINGDEAD
  1075.                 spawn WATERBUBBLE
  1076.                 spawn WATERBUBBLE
  1077.             }
  1078.             else
  1079.             {
  1080.                 action PEXPLODE
  1081.                 state standard_pjibs
  1082.                 cstat 32768
  1083.                 sound SQUISHED
  1084.             }
  1085.         }
  1086.         break
  1087.     }
  1088.     ifsquished
  1089.     {
  1090.         strength -1
  1091.         sound SQUISHED
  1092.         spawn OOZ
  1093.         break
  1094.     }
  1095.  
  1096.     ifp ponsteroids
  1097.     {
  1098.         ifp pstanding { }
  1099.         else spawn FRAMEEFFECT1
  1100.     }
  1101.  
  1102.     ifmove PSHRINKING
  1103.     {
  1104.         ifcount 32
  1105.         {
  1106.             ifcount SHRUNKDONECOUNT move 0
  1107.             else ifcount SHRUNKCOUNT
  1108.             {
  1109.                 sizeto 42 36
  1110.                 ifgapzl 24
  1111.                 {
  1112.                     strength 0
  1113.                     sound SQUISHED
  1114.                     palfrom 48 64
  1115.                     break
  1116.                 }
  1117.             }
  1118.             else ifp ponsteroids count SHRUNKCOUNT
  1119.         }
  1120.         else
  1121.         {
  1122.             ifp ponsteroids count SHRUNKCOUNT
  1123.             else { sizeto 8 9 spawn FRAMEEFFECT1 }
  1124.         }
  1125.     }
  1126.  
  1127.     else ifhitweapon
  1128.     {
  1129.         ifdead cstat 0 else sound DUKE_LONGTERM_PAIN
  1130.  
  1131.         ifstrength TOUGH
  1132.         {
  1133.             state headhitstate
  1134.             ifp pstanding action PFLINTCHING
  1135.         }
  1136.  
  1137.         ifwasweapon RPG
  1138.         {
  1139.             ifrnd 32 spawn BLOOD
  1140.             ifdead state standard_pjibs
  1141.             palfrom 48 52
  1142.             break
  1143.         }
  1144.         ifwasweapon RADIUSEXPLOSION
  1145.         {
  1146.             ifrnd 32 spawn BLOOD
  1147.             ifdead state standard_pjibs
  1148.             palfrom 48 52
  1149.             break
  1150.         }
  1151.         ifwasweapon FIREEXT
  1152.         {
  1153.             ifrnd 32 spawn BLOOD
  1154.             ifdead state standard_pjibs
  1155.             palfrom 48 52
  1156.             break
  1157.         }
  1158.  
  1159.  
  1160.         ifwasweapon SHRINKSPARK
  1161.         {
  1162.             palfrom 48 0 48
  1163.             move PSHRINKING // used as a var only.
  1164.             sound ACTOR_SHRINKING
  1165.             break
  1166.         }
  1167.  
  1168.         ifwasweapon SHOTSPARK1 palfrom 24 48
  1169.         else ifwasweapon COOLEXPLOSION1 palfrom 48 48 0 48
  1170.         else ifwasweapon KNEE palfrom 16 32
  1171.         else ifwasweapon FIRELASER palfrom 32 32
  1172.         else ifwasweapon THROWFLAME { quote 108 palfrom 32 64 ifrnd 16 spawn BURNING }
  1173.  
  1174.         state check_dead_thrown_back
  1175.         state random_wall_jibs
  1176.  
  1177.         break
  1178.     }
  1179.  
  1180.     ifaction PFLINTCHING
  1181.     {
  1182.         ifactioncount 2 action PSTAND
  1183.         break
  1184.     }
  1185.  
  1186.     ifinwater
  1187.     {
  1188.         ifaction PTREDWATER
  1189.         {
  1190.             ifp pwalking prunning action PSWIMMINGGO
  1191.         }
  1192.         else ifp pstanding pwalkingback prunningback action PTREDWATER
  1193.         else
  1194.         {
  1195.             ifaction PSWIMMING
  1196.             {
  1197.                 ifrnd 4 spawn WATERBUBBLE
  1198.                 ifactioncount 4
  1199.                     action PSWIMMINGWAIT
  1200.             }
  1201.             else ifaction PSWIMMINGWAIT
  1202.             {
  1203.                 ifactioncount 2
  1204.                     action PSWIMMINGGO
  1205.             }
  1206.             else ifaction PSWIMMINGGO
  1207.             {
  1208.                 ifactioncount 2
  1209.                     action PSWIMMING
  1210.             }
  1211.             else action PTREDWATER
  1212.         }
  1213.  
  1214.         ifrnd 4 spawn WATERBUBBLE // For effect
  1215.  
  1216.         break
  1217.     }
  1218.     else ifp pjetpack
  1219.     {
  1220.         ifaction PJPHOUVER
  1221.         {
  1222.             ifactioncount 4
  1223.                 resetactioncount
  1224.         }
  1225.         else action PJPHOUVER
  1226.         break
  1227.     }
  1228.     else
  1229.     {
  1230.         ifaction PTREDWATER action PSTAND
  1231.         ifaction PSWIMMING action PSTAND
  1232.         ifaction PSWIMMINGWAIT action PSTAND
  1233.         ifaction PSWIMMINGGO action PSTAND
  1234.         ifaction PJPHOUVER action PFALLING
  1235.     }
  1236.  
  1237.     ifaction PFALLING
  1238.     {
  1239.         ifp ponground
  1240.             action PSTAND
  1241.         else
  1242.         {
  1243.             ifp pfalling break
  1244.             else state check_pstandard
  1245.         }
  1246.     }
  1247.  
  1248.     ifaction PDUCKING
  1249.     {
  1250.         ifgapzl 48
  1251.         {
  1252.             ifp pwalking pwalkingback prunning prunningback action PCRAWLING
  1253.         }
  1254.         else ifp pducking
  1255.         {
  1256.             ifp pwalking pwalkingback prunning prunningback action PCRAWLING
  1257.         }
  1258.         else
  1259.         {
  1260.             ifp pstanding action PSTAND
  1261.             else state check_pstandard
  1262.         }
  1263.     }
  1264.  
  1265.     else ifaction PCRAWLING
  1266.     {
  1267.         ifgapzl 48
  1268.         {
  1269.             ifp pstanding action PCRAWLING
  1270.         }
  1271.         else ifp pducking
  1272.         {
  1273.             ifp pstanding action PDUCKING
  1274.         }
  1275.         else
  1276.         {
  1277.             ifp pstanding action PSTAND
  1278.             else state check_pstandard
  1279.         }
  1280.     }
  1281.     else ifgapzl 48 action PDUCKING
  1282.  
  1283.     else ifaction PJUMPING
  1284.     {
  1285.         ifp ponground action PSTAND
  1286.         else ifactioncount 4 ifp pfalling action PFALLING
  1287.     }
  1288.  
  1289.     ifp pfalling action PFALLING
  1290.     else ifaction PSTAND state check_pstandard
  1291.     else ifaction PAKICKING
  1292.     {
  1293.         ifactioncount 2 action PSTAND
  1294.         break
  1295.     }
  1296.     else ifaction PWALK
  1297.     {
  1298.         ifp pfalling action PFALLING
  1299.         else ifp pstanding action PSTAND
  1300.         else ifp prunning action PRUN
  1301.         else ifp pwalkingback action PWALKBACK
  1302.         else ifp prunningback action PRUNBACK
  1303.         else ifp pjumping
  1304.             action PJUMPING
  1305.         else ifp pducking action PDUCKING
  1306.     }
  1307.  
  1308.     else ifaction PRUN
  1309.     {
  1310.         ifp pstanding action PSTAND
  1311.         else ifp pwalking action PWALK
  1312.         else ifp pwalkingback action PWALKBACK
  1313.         else ifp prunningback action PRUNBACK
  1314.         else ifp pjumping
  1315.             action PJUMPING
  1316.         else ifp pducking action PDUCKING
  1317.     }
  1318.  
  1319.     else ifaction PWALKBACK
  1320.     {
  1321.         ifp pstanding action PSTAND
  1322.         else ifp pwalking action PWALK
  1323.         else ifp prunning action PRUN
  1324.         else ifp prunningback action PRUNBACK
  1325.         else ifp pjumping
  1326.             action PJUMPING
  1327.         else ifp pducking action PDUCKING
  1328.     }
  1329.  
  1330.     else ifaction PRUNBACK
  1331.     {
  1332.         ifp pstanding action PSTAND
  1333.         else ifp pwalking action PWALK
  1334.         else ifp prunning action PRUN
  1335.         else ifp pwalkingback action PWALKBACK
  1336.         else ifp pjumping
  1337.             action PJUMPING
  1338.         else ifp pducking action PDUCKING
  1339.     }
  1340. enda
  1341.  
  1342. state genericshrunkcode
  1343.     ifcount 32 { ifpdistl RETRIEVEDISTANCE pstomp }
  1344.     else { sizeto 512 510 spawn FRAMEEFFECT1 }
  1345. ends
  1346.  
  1347. actor ORGANTIC TURRETSTRENGTH
  1348.     ifcount 48 resetcount
  1349.     else { ifcount 32 sizeto 32 32 }
  1350.     else ifcount 16 { sizeto 48 18 ifpdistl 2048 { sound TURR_ATTACK addphealth -2 palfrom 32 16 } }
  1351.     ifhitweapon { ifdead { addkills 1 sound TURR_DYING guts JIBS5 10 state delete_enemy } sound TURR_PAIN break }
  1352.     ifrnd 1 soundonce TURR_ROAM
  1353. enda
  1354.  
  1355. state rf
  1356.     ifrnd 128 cstat 4
  1357.     else cstat 0
  1358. ends
  1359.  
  1360. //
  1361. //
  1362. //      TROOP/LIZTROOP CODE
  1363. //
  1364. //
  1365.  
  1366. action ATROOPSTAND       0    1    5    1    1
  1367. action ATROOPSTAYSTAND  -2    1    5    1    1
  1368. action ATROOPWALKING     0    4    5    1   12
  1369. action ATROOPWALKINGBACK 15   4    5   -1   12
  1370. action ATROOPRUNNING     0    4    5    1    8
  1371. action ATROOPSHOOT      35    1    5    1   30
  1372. action ATROOPJETPACK    40    1    5    1    1
  1373. action ATROOPJETPACKILL 40    2    5    1   50
  1374. action ATROOPFLINTCH    50    1    1    1    6
  1375. action ATROOPDYING      50    5    1    1   16  
  1376. action ATROOPDEAD       54
  1377. action ATROOPPLAYDEAD   54
  1378. action ATROOPSUFFERDEAD 58    2    1   -4   24
  1379. action ATROOPSUFFERING  59    2    1    1   21
  1380. action ATROOPDUCK       64    1    5    1    3
  1381. action ATROOPDUCKSHOOT  64    2    5    1   25
  1382. action ATROOPABOUTHIDE  74    1    1    1   25
  1383. action ATROOPHIDE       79    1    1    1   25
  1384. action ATROOPREAPPEAR   74    1    1    1   25
  1385.  
  1386. move TROOPWALKVELS 72
  1387. move TROOPWALKVELSBACK -72
  1388. move TROOPJETPACKVELS 64 -84
  1389. move TROOPJETPACKILLVELS 192 -38
  1390. move TROOPRUNVELS 108
  1391. move TROOPSTOPPED
  1392. move DONTGETUP
  1393. move SHRUNKVELS 32
  1394.  
  1395. ai AITROOPSEEKENEMY  ATROOPWALKING   TROOPWALKVELS seekplayer
  1396. ai AITROOPSEEKPLAYER ATROOPWALKING   TROOPWALKVELS seekplayer
  1397. ai AITROOPFLEEING    ATROOPWALKING   TROOPWALKVELS fleeenemy
  1398. ai AITROOPFLEEINGBACK ATROOPWALKINGBACK   TROOPWALKVELSBACK face_player
  1399. ai AITROOPDODGE      ATROOPWALKING   TROOPRUNVELS  dodgebullet
  1400. ai AITROOPSHOOTING   ATROOPSHOOT     TROOPSTOPPED  face_player
  1401. ai AITROOPDUCKING    ATROOPDUCK      TROOPSTOPPED  face_player
  1402. ai AITROOPJETPACK    ATROOPJETPACK   TROOPJETPACKVELS seekplayer
  1403. ai AITROOPSHRUNK     ATROOPWALKING   SHRUNKVELS fleeenemy
  1404. ai AITROOPHIDE       ATROOPABOUTHIDE TROOPSTOPPED face_player
  1405.  
  1406. state troophidestate
  1407.     ifaction ATROOPREAPPEAR
  1408.     {
  1409.         ifactioncount 2 { sound TELEPORTER ai AITROOPSHOOTING cstat 257 }
  1410.         else { sizeto 41 40 sizeto 41 40 sizeto 41 40 sizeto 41 40 spawn FRAMEEFFECT1 }
  1411.     }
  1412.     else ifaction ATROOPWALKING
  1413.     {
  1414.         ifpdistl 2448 ifpdistg 1024
  1415.         {
  1416.             ifceilingdistl 48 break
  1417.             ifp pfacing break
  1418.  
  1419.             ifgapzl 48 { } else ifcanshoottarget { spawn TRANSPORTERSTAR action ATROOPREAPPEAR move 0 break }
  1420.         }
  1421.     }
  1422.     else ifaction ATROOPHIDE
  1423.     {
  1424.         ifactioncount 2
  1425.         {
  1426.             spawn TRANSPORTERSTAR
  1427.             sound TELEPORTER
  1428.             action ATROOPWALKING move TROOPWALKVELS face_player
  1429.             cstat 32768
  1430.         }
  1431.         else
  1432.         {
  1433.             sizeto 0 40
  1434.             sizeto 0 40
  1435.             sizeto 0 40
  1436.             sizeto 0 40
  1437.             spawn FRAMEEFFECT1
  1438.         }
  1439.     }
  1440.     else ifaction ATROOPABOUTHIDE ifactioncount 2 { action ATROOPHIDE cstat 0 }
  1441. ends
  1442.  
  1443.  
  1444. state troopgunnashoot
  1445.     ifp palive
  1446.     {
  1447.         ifpdistl 1024 ai AITROOPSHOOTING
  1448.         else ifactornotstayput
  1449.         {
  1450.             ifactioncount 12 ifrnd 16 ifcanshoottarget
  1451.             {
  1452.                 ifspritepal 21 ifpdistg 4096 ai AITROOPHIDE
  1453.                 else
  1454.                 {
  1455.                     ifpdistl 1100 ai AITROOPFLEEING
  1456.                     else
  1457.                     {
  1458.                         ifpdistl 4096 ifcansee ifcanshoottarget ai AITROOPSHOOTING
  1459.                         else { move TROOPRUNVELS seekplayer action ATROOPRUNNING }
  1460.                     }
  1461.                 }
  1462.             }
  1463.         }
  1464.         else ifcount 26 ifrnd 32 ai AITROOPSHOOTING
  1465.     }
  1466. ends
  1467.  
  1468. state troopseekstate
  1469.     state troopgunnashoot
  1470.     ifcansee
  1471.     {
  1472.         ifmove TROOPRUNVELS ifpdistl 1596 ai AITROOPDUCKING
  1473.         ifp phigher { ifceilingdistl 128 { } else ifactornotstayput ai AITROOPJETPACK break }
  1474.         else ifrnd 2 ifbulletnear { ifrnd 128 ai AITROOPDODGE else ai AITROOPDUCKING }
  1475.         ifrnd 16 ifspritepal 21 ifpdistg 1596 ai AITROOPHIDE
  1476.     }
  1477.     ifnotmoving { ifrnd 32 operate else ifcount 32 ifp palive ifcansee ifcanshoottarget ai AITROOPSHOOTING }
  1478.     ifrnd 1
  1479.     {
  1480.         ifrnd 128 soundonce PRED_ROAM
  1481.         else soundonce PRED_ROAM2
  1482.     }
  1483. ends
  1484.  
  1485. state troopduckstate
  1486.     ifaction ATROOPDUCK
  1487.         { ifactioncount 8 { ifp palive { ifrnd 128 action ATROOPDUCKSHOOT } else ifmove DONTGETUP break else ai AITROOPSEEKPLAYER } }
  1488.     else ifaction ATROOPDUCKSHOOT
  1489.     {
  1490.         ifcount 64
  1491.         {
  1492.             ifmove DONTGETUP resetcount
  1493.             else
  1494.             {
  1495.                 ifpdistl 1100
  1496.                     ai AITROOPFLEEING
  1497.                 else ai AITROOPSEEKPLAYER
  1498.             }
  1499.         }
  1500.         else ifactioncount 2 { ifcanshoottarget { sound PRED_ATTACK resetactioncount shoot FIRELASER shoot RPG shoot MORTER shoot CHAINGUN shoot SHOTGUN shoot FLAMETHROWER } else ai AITROOPSEEKPLAYER }
  1501.     }
  1502. ends
  1503.  
  1504. state troopshootstate
  1505.     ifactioncount 2 
  1506.     
  1507.     {
  1508.         ifcanshoottarget
  1509.         {
  1510.             shoot FIRELASER shoot RPG shoot MORTER shoot CHAINGUN shoot SHOTGUN shoot FLAMETHROWER sound PRED_ATTACK resetactioncount
  1511.             ifrnd 128 ai AITROOPSEEKPLAYER
  1512.             ifcount 24
  1513.             {
  1514.                 ifrnd 96 ifpdistg 2048 ai AITROOPSEEKPLAYER
  1515.                 else
  1516.                 {
  1517.                     ifpdistg 1596 ai AITROOPFLEEING
  1518.                     else ai AITROOPFLEEINGBACK
  1519.                 }
  1520.             }
  1521.         }
  1522.         else ai AITROOPSEEKPLAYER
  1523.     }
  1524. ends
  1525.  
  1526. state troopfleestate
  1527.     ifactioncount 7
  1528.     {
  1529.         ifpdistg 3084 { ai AITROOPSEEKPLAYER break }
  1530.         else ifrnd 32 ifp palive ifcansee ifcanshoottarget { ifrnd 128 ai AITROOPDUCKING else ai AITROOPSHOOTING break }
  1531.     }
  1532.     ifnotmoving
  1533.     {
  1534.         ifrnd 32 operate else ifcount 32 ifp palive ifcansee ifcanshoottarget
  1535.             { ifrnd 128 ai AITROOPSHOOTING else ai AITROOPDUCKING }
  1536.     }
  1537. ends
  1538.  
  1539. state troopdying
  1540.     iffloordistl 32 { ifactioncount 5 { cstat 0 iffloordistl 8 sound THUD ifrnd 64 spawn BLOODPOOL state rf strength 0 move TROOPSTOPPED action ATROOPDEAD } break }
  1541.     else { state rf move 0 action ATROOPDYING }
  1542. ends
  1543.  
  1544. state checktroophit
  1545.     ifaction ATROOPSUFFERING { stopsound LIZARD_BEG sound PRED_DYING cstat 0 strength 0 action ATROOPSUFFERDEAD break }
  1546.     ifdead
  1547.     {   
  1548.         spawn FIRSTGUNSPRITE
  1549.         state random_wall_jibs
  1550.         addkills 1
  1551.  
  1552.         ifwasweapon RPG { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  1553.         else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  1554.         else ifwasweapon THROWFLAME { spawn BURNING sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  1555.         else { ifrnd 64 iffloordistl 32 { sound LIZARD_BEG spawn BLOODPOOL strength 0 move 0 action ATROOPSUFFERING break } action ATROOPDYING break }
  1556.         sound PRED_DYING
  1557.     }
  1558.     else
  1559.     {
  1560.         state random_wall_jibs
  1561.         sound PRED_PAIN
  1562.         ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AITROOPSHRUNK }
  1563.         else ifwasweapon THROWFLAME quote 14
  1564.         iffloordistl 32 ifrnd 96 action ATROOPFLINTCH
  1565.         ifp palive ai AITROOPSHRUNK
  1566.  
  1567.         }
  1568. ends
  1569.  
  1570. state troopjetpackstate
  1571.     ifaction ATROOPJETPACKILL
  1572.     {
  1573.         ifcansee ifactioncount 2
  1574.         {
  1575.             resetactioncount
  1576.             sound PRED_ATTACK
  1577.             shoot FIRELASER shoot RPG shoot MORTER shoot CHAINGUN shoot SHOTGUN shoot FLAMETHROWER 
  1578.         }
  1579.  
  1580.         ifp phigher ai AITROOPJETPACK
  1581.         else ifinwater ai AITROOPJETPACK
  1582.         ifcount 26 iffloordistl 32 ai AITROOPSEEKPLAYER
  1583.     }
  1584.     else ifcount 48 ifcansee
  1585.         { action ATROOPJETPACKILL move TROOPJETPACKILLVELS seekplayer }
  1586. ends
  1587.  
  1588. state checksquished
  1589.     ifsquished { addkills 1 sound SQUISHED state standard_jibs spawn OOZ state delete_enemy }
  1590. ends
  1591.  
  1592. state troopsufferingstate
  1593.     ifactioncount 2
  1594.     {
  1595.         ifrnd 16 spawn WATERDRIP
  1596.         ifactioncount 14 { stopsound LIZARD_BEG cstat 0 strength 0 action ATROOPSUFFERDEAD break }
  1597.     }
  1598. ends
  1599.  
  1600. state troopshrunkstate
  1601.     ifcount SHRUNKDONECOUNT { ifdead { addkills 1 sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy } ai AITROOPSEEKENEMY }
  1602.     else ifcount SHRUNKCOUNT sizeto 48 40
  1603.     else state genericshrunkcode
  1604. ends
  1605.  
  1606. state troopcode fall
  1607.     ifinwater ifrnd 1 spawn WATERBUBBLE
  1608.     ifaction ATROOPSTAND { ifrnd 192 ai AITROOPSHOOTING else ai AITROOPSEEKPLAYER }
  1609.  
  1610.     ifinwater ifrnd 4 spawn WATERBUBBLE
  1611.     else ifaction ATROOPPLAYDEAD
  1612.     {
  1613.         ifhitweapon
  1614.         {
  1615.             ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  1616.             break
  1617.         }
  1618.         else state checksquished
  1619.  
  1620.         ifcount PLAYDEADTIME { addkills -1 soundonce PRED_ROAM cstat 257 strength 1 ai AITROOPSHOOTING }
  1621.         else ifp pfacing resetcount
  1622.  
  1623.         break
  1624.     }
  1625.     else ifaction ATROOPDEAD
  1626.     {
  1627.         strength 0
  1628.         ifrespawn ifcount RESPAWNTIME { spawn TRANSPORTERSTAR cstat 257 strength TROOPSTRENGTH ai AITROOPSEEKENEMY }
  1629.         ifhitweapon
  1630.         {
  1631.             ifwasweapon RADIUSEXPLOSION { sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy }
  1632.             break
  1633.         }
  1634.         else state checksquished
  1635.         break
  1636.     }
  1637.     else ifaction ATROOPSUFFERDEAD
  1638.     {
  1639.         ifactioncount 2
  1640.         {
  1641.             ifrnd 64 { resetcount action ATROOPPLAYDEAD }
  1642.             else { soundonce PRED_DYING action ATROOPDEAD }
  1643.         }
  1644.     }
  1645.     else ifaction ATROOPDYING { state troopdying break }
  1646.     else ifaction ATROOPSUFFERING
  1647.         { state troopsufferingstate ifhitweapon state checktroophit break }
  1648.     else ifaction ATROOPFLINTCH { ifactioncount 4 ai AITROOPSEEKENEMY }
  1649.     else    
  1650.     {
  1651.         ifai AITROOPSEEKPLAYER state troopseekstate
  1652.         else ifai AITROOPJETPACK { state troopjetpackstate soundonce DUKE_JETPACK_IDLE }
  1653.         else ifai AITROOPSEEKENEMY state troopseekstate
  1654.         else ifai AITROOPSHOOTING state troopshootstate
  1655.         else ifai AITROOPFLEEING state troopfleestate
  1656.         else ifai AITROOPFLEEINGBACK state troopfleestate
  1657.         else ifai AITROOPDODGE state troopseekstate
  1658.         else ifai AITROOPDUCKING state troopduckstate
  1659.         else ifai AITROOPSHRUNK state troopshrunkstate
  1660.         else ifai AITROOPHIDE { state troophidestate break }
  1661.     }
  1662.  
  1663.     ifhitweapon state checktroophit else state checksquished
  1664. ends
  1665.  
  1666.  
  1667. actor LIZTROOPJETPACK TROOPSTRENGTH ai AITROOPJETPACK cactor LIZTROOP enda
  1668. actor LIZTROOPDUCKING TROOPSTRENGTH
  1669.     ai AITROOPDUCKING cactor LIZTROOP
  1670.     ifgapzl 48 move DONTGETUP
  1671. enda
  1672.  
  1673. actor LIZTROOPSHOOT TROOPSTRENGTH ATROOPSTAND ai AITROOPSHOOTING cactor LIZTROOP enda
  1674. actor LIZTROOPSTAYPUT TROOPSTRENGTH ATROOPSTAYSTAND ai AITROOPSEEKPLAYER cactor LIZTROOP enda
  1675. actor LIZTROOPRUNNING TROOPSTRENGTH ATROOPSTAND ai AITROOPSEEKPLAYER cactor LIZTROOP enda
  1676. actor LIZTROOPONTOILET TROOPSTRENGTH ifcount 24 { sound FLUSH_TOILET operate ai AITROOPSEEKPLAYER cactor LIZTROOP } enda
  1677.  
  1678. actor LIZTROOP TROOPSTRENGTH ATROOPSTAND state troopcode enda
  1679.  
  1680.  
  1681. action ALIZWALKING       0     4    5    1    15
  1682. action ALIZRUNNING       0     4    5    1    11
  1683. action ALIZTHINK         20    2    5    1    40
  1684. action ALIZSCREAM        30    1    5    1    2
  1685. action ALIZJUMP          40    4    5    1    16
  1686. action ALIZSHOOTING      70    2    5    1    20
  1687. action ALIZDYING         60    6    1    1    15
  1688. action ALIZLYINGDEAD     66    1
  1689.  
  1690. move LIZWALKVEL 72
  1691. move LIZRUNVEL 192
  1692. move LIZJUMPVEL  96 -84
  1693. move LIZSTOP
  1694.  
  1695. ai AILIZGETENEMY ALIZWALKING LIZWALKVEL seekplayer
  1696. ai AILIZDODGE ALIZRUNNING LIZRUNVEL dodgebullet
  1697. ai AILIZCHARGEENEMY ALIZRUNNING LIZRUNVEL face_player
  1698. ai AILIZFLEENEMY ALIZWALKING LIZWALKVEL fleeenemy
  1699. ai AILIZSHOOTENEMY ALIZSHOOTING LIZSTOP face_player
  1700. ai AILIZJUMPENEMY ALIZJUMP LIZJUMPVEL face_player
  1701. ai AILIZTHINK ALIZTHINK LIZSTOP face_player
  1702. ai AILIZSHRUNK ALIZWALKING SHRUNKVELS face_player
  1703. ai AILIZSPIT ALIZSCREAM LIZSTOP face_player
  1704. ai AILIZDYING ALIZDYING LIZSTOP face_player
  1705.  
  1706. state lizseekstate
  1707.  
  1708.     ifp palive ifcount 52 ifcansee ifcanshoottarget { ai AILIZSHOOTENEMY break }
  1709.  
  1710.     ifai AILIZCHARGEENEMY
  1711.     {
  1712.         ifpdistl 2048
  1713.         {
  1714.             ifrnd 128 ifcansee ifcanshoottarget ai AILIZSHOOTENEMY
  1715.             else ifgapzl 128 ifactornotstayput ai AILIZJUMPENEMY
  1716.         }
  1717.         break
  1718.     }
  1719.     ifrnd 32 ifnotmoving operate
  1720.     ifpdistg 4096 { ifrnd 32 ai AILIZCHARGEENEMY }
  1721.  
  1722.     ifrnd 1 ifbulletnear
  1723.     {
  1724.         ifgapzl 128 ai AILIZDODGE
  1725.         else ifactornotstayput { ifrnd 32 ai AILIZJUMPENEMY else ai AILIZDODGE }
  1726.     }
  1727. ends
  1728.  
  1729. state lizshrunkstate
  1730.     ifcount SHRUNKDONECOUNT { ifdead { addkills 1 sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy } ai AILIZGETENEMY }
  1731.     else ifcount SHRUNKCOUNT sizeto 48 40
  1732.     else state genericshrunkcode
  1733. ends
  1734.  
  1735. state lizfleestate
  1736.     ifnotmoving ai AILIZGETENEMY
  1737.     else ifrnd 16 ifpdistl 2048 ifp palive ifcansee ai AILIZSPIT
  1738. ends
  1739.  
  1740. state lizthinkstate
  1741.     ifrnd 8 soundonce CAPT_ROAM
  1742.     ifactioncount 3
  1743.     {
  1744.         ifrnd 32 ifp palive ifcansee ai AILIZSPIT
  1745.         else ifrnd 96 ai AILIZGETENEMY
  1746.     }
  1747.     else ifactioncount 2 ifrnd 8 spawn FECES
  1748.     ifrnd 1 ifbulletnear
  1749.     {
  1750.         ifgapzl 128 ai AILIZDODGE
  1751.         else { ifrnd 32 ai AILIZJUMPENEMY else ai AILIZDODGE }
  1752.     }
  1753. ends
  1754.  
  1755. state lizshootstate
  1756.     ifcount 32 ifrnd 128 { ifpdistl 2048 ai AILIZFLEENEMY else { ifrnd 96 ai AILIZTHINK else ai AILIZGETENEMY } }
  1757.     ifactioncount 2 { ifcanshoottarget { sound CAPT_ATTACK shoot FLAMETHROWER resetactioncount } else ai AILIZTHINK }
  1758. ends
  1759.  
  1760. state checklizhit
  1761.     spawn BLOOD
  1762.     ifai AILIZSHRUNK
  1763.         { sound SQUISHED state standard_jibs state delete_enemy }
  1764.     ifdead
  1765.     {
  1766.         state drop_fuel
  1767.         addkills 1
  1768.  
  1769.         ifwasweapon RPG { sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy }
  1770.         else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy }
  1771.         else ifwasweapon THROWFLAME { spawn BURNING sound SQUISHED state liz_body_jibs state standard_jibs state delete_enemy }
  1772.         else { state rf ai AILIZDYING ifrnd 64 spawn BLOODPOOL }
  1773.         sound CAPT_DYING
  1774.     }
  1775.     else
  1776.     {
  1777.         sound CAPT_PAIN
  1778.         ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AILIZSHRUNK }
  1779.         else ifwasweapon THROWFLAME quote 14
  1780.         state random_wall_jibs
  1781.     }
  1782. ends
  1783.  
  1784. state lizjumpstate
  1785.     ifactioncount 6
  1786.     {
  1787.         ifpdistl 1024
  1788.             hitradius 1024 WEAKEST WEAK MEDIUMSTRENGTH TOUGH
  1789.         else ai AILIZGETENEMY else ifactioncount 2 fall
  1790.     }
  1791. ends
  1792.  
  1793. state lizdyingstate
  1794.     ifaction ALIZLYINGDEAD
  1795.     {
  1796.         strength 0
  1797.         ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy }
  1798.         ifcount RESPAWNTIME ifrespawn
  1799.         {
  1800.             spawn TRANSPORTERSTAR cstat 257 strength LIZSTRENGTH ai AILIZGETENEMY
  1801.         }
  1802.     }
  1803.     else ifai AILIZDYING ifactioncount 6 { iffloordistl 8 sound THUD move LIZSTOP action ALIZLYINGDEAD }
  1804. ends
  1805.  
  1806. state lizdodgestate
  1807.     ifcount 32 ai AILIZGETENEMY
  1808. ends
  1809.  
  1810. actor LIZMANSTAYPUT LIZSTRENGTH ai AILIZGETENEMY cactor LIZMAN enda
  1811.  
  1812. actor LIZMAN LIZSTRENGTH
  1813.     state checksquished
  1814.     ifai 0 ai AILIZGETENEMY
  1815.     else ifaction ALIZLYINGDEAD { fall state lizdyingstate break }
  1816.     else ifai AILIZJUMPENEMY state lizjumpstate
  1817.     else
  1818.     {
  1819.         fall
  1820.         ifai AILIZGETENEMY state lizseekstate
  1821.         else ifai AILIZCHARGEENEMY state lizseekstate
  1822.         else ifai AILIZDODGE state lizdodgestate
  1823.         else ifai AILIZSHOOTENEMY state lizshootstate
  1824.         else ifai AILIZFLEENEMY state lizfleestate
  1825.         else ifai AILIZTHINK state lizthinkstate
  1826.         else ifai AILIZSHRUNK state lizshrunkstate
  1827.         else ifai AILIZDYING state lizdyingstate
  1828.         else ifai AILIZSPIT
  1829.             { ifcount 26 ai AILIZGETENEMY else ifcount 18 ifrnd 96 { shoot SPIT sound LIZARD_SPIT } }
  1830.     }
  1831.     ifhitweapon state checklizhit
  1832. enda
  1833.  
  1834. action SNAKEFRAMES     0   1   5   1   1
  1835. action SNAKESCREAM     5   1   5   1   1
  1836. move SNAKERUNVELS 244 256
  1837. move SNAKERUNUPVELS 244 -256
  1838. move SNAKEBACKWARDS -48 -64
  1839. move SNAKEWALK 72
  1840. move SNAKERISE 32 -16
  1841. move SNAKESTOPPED
  1842. ai AISNAKEGETE SNAKESCREAM SNAKERUNVELS seekplayer
  1843. ai AISNAKEGETUP SNAKESCREAM SNAKERUNUPVELS seekplayer
  1844. ai AISNAKEWALK SNAKEFRAMES SNAKEWALK seekplayer
  1845. ai AISNAKELOOK SNAKEFRAMES SNAKESTOPPED looking
  1846. ai AISNAKEPULLBACK SNAKEFRAMES SNAKEBACKWARDS face_player
  1847. ai AISNAKEHIT SNAKESCREAM SNAKEBACKWARDS face_player
  1848. ai AISNAKESHRUNK SNAKEFRAMES SHRUNKVELS fleeenemy
  1849.  
  1850. state checksnakehitstate
  1851.     state random_wall_jibs
  1852.     ifwasweapon SHRINKSPARK ai AISNAKESHRUNK
  1853.     else
  1854.     {
  1855.         ifdead { addkills 1 sound SNAK_DYING state standard_jibs state delete_enemy }
  1856.         else { sound SNAK_PAIN ai AISNAKEHIT }
  1857.     }
  1858. ends
  1859.  
  1860. state snakeshrunkstate
  1861.     ifcount 24 state delete_enemy
  1862.     else sizeto 1 1
  1863. ends
  1864.  
  1865. actor SNAKEDRONE SNAKESTRENGTH
  1866.     ifaction 0 ai AISNAKELOOK
  1867.     ifrnd 8 spawn WATERDRIP
  1868.  
  1869.     state checksquished
  1870.  
  1871.     ifai AISNAKELOOK
  1872.     {
  1873.         ifrnd 1 soundonce SNAK_ROAM
  1874.         ifactioncount 8 ifrnd 2
  1875.         {
  1876.             ifcansee
  1877.             {
  1878.                 ifcanshoottarget { sound SNAK_ATTACK1 ifp phigher ai AISNAKEGETUP else ai AISNAKEGETE }
  1879.                 else ai AISNAKEWALK
  1880.             }
  1881.             else ai AISNAKEWALK
  1882.         }
  1883.     }
  1884.     else ifai AISNAKEWALK
  1885.     {
  1886.         ifcansee { }
  1887.         ifrnd 32 ifnotmoving move SNAKERISE seekplayer
  1888.  
  1889.         ifcount 64
  1890.         {
  1891.             ifpdistl 4096 ifcanseetarget { ifp phigher ai AISNAKEGETUP else ai AISNAKEGETE }
  1892.             else resetcount
  1893.         }
  1894.     }
  1895.     else ifai AISNAKEGETE
  1896.     {
  1897.         ifcansee { }
  1898.         ifcount 64 ai AISNAKEPULLBACK
  1899.         ifpdistl 1024
  1900.         {
  1901.             sound SNAK_ATTACK2
  1902.             shoot SHOTSPARK1
  1903.             ai AISNAKEPULLBACK
  1904.         }
  1905.         ifnotmoving
  1906.             ifcount 16 ai AISNAKEPULLBACK
  1907.     }
  1908.     else ifai AISNAKEGETUP
  1909.     {
  1910.         ifcansee { }
  1911.         ifcount 64 ai AISNAKEPULLBACK
  1912.         ifpdistl 1024
  1913.         {
  1914.             sound SNAK_ATTACK2
  1915.             shoot SHOTSPARK1
  1916.             ai AISNAKEPULLBACK
  1917.         }
  1918.         ifnotmoving
  1919.             ifcount 16 ai AISNAKEPULLBACK
  1920.     }
  1921.     ifai AISNAKEPULLBACK { ifnotmoving ai AISNAKELOOK ifcount 32 ai AISNAKELOOK }
  1922.     else ifai AISNAKEHIT ifcount 8 ai AISNAKELOOK
  1923.     else ifai AISNAKESHRUNK state snakeshrunkstate
  1924.     ifhitweapon state checksnakehitstate
  1925. enda
  1926.  
  1927.  
  1928.  
  1929. action AJELLYWALK        0   3   5   1   15
  1930. action AJELLYSTAND       0   1   5   1   15
  1931. action AJELLYSCRATCH     0   4   5   1   15
  1932. action AJELLYHIT        30   1   1   1   10
  1933. action AJELLYSHOOT      20   1   5   1   10
  1934. action AJELLYDYING      30   8   1   1   17
  1935. action AJELLYDEAD       38   1   1   1    1
  1936.  
  1937. move JELLYWALKVELS 96 -30
  1938. move JELLYUPVELS 96 -70
  1939. move JELLYSTOPPED 0 -30
  1940. move JELLYINWATER 96 24
  1941.  
  1942. ai AIJELLYGETENEMY AJELLYWALK JELLYWALKVELS seekplayer
  1943. ai AIJELLYSHOOTENEMY AJELLYSHOOT JELLYSTOPPED face_player
  1944. ai AIJELLYSCRATCHENEMY AJELLYSCRATCH JELLYSTOPPED face_player
  1945. ai AIJELLYHIT AJELLYHIT JELLYSTOPPED face_player
  1946. ai AIJELLYSHRUNK AJELLYWALK SHRUNKVELS face_player
  1947. ai AIJELLYDYING AJELLYDYING JELLYSTOPPED face_player
  1948.  
  1949. state jellygetenemystate
  1950.  
  1951.     ifcansee
  1952.     {
  1953.         ifactioncount 32 { ifrnd 48 ifcansee ifcanshoottarget { sound OCTA_ATTACK1 ai AIJELLYSHOOTENEMY break } }
  1954.         else
  1955.         {
  1956.             ifpdistl 1024 ai AIJELLYSCRATCHENEMY
  1957.             sizeto 40 40
  1958.         }
  1959.     }
  1960.  
  1961. ends
  1962.  
  1963. state jellyscratchenemystate
  1964.     ifpdistg 1280 ai AIJELLYGETENEMY
  1965.     else ifcount 32 { resetcount sound OCTA_ATTACK2 addphealth JELLYSCRATCHINGPLAYER }
  1966. ends
  1967.  
  1968. state jellyshootenemystate
  1969.     ifcount 25 { ifcount 27 ai AIJELLYGETENEMY }
  1970.     else ifcount 24 shoot COOLEXPLOSION1
  1971.     else
  1972.     {
  1973.         ifactioncount 6 resetactioncount
  1974.         else ifactioncount 3 { shadeto -127 shadeto -127 shadeto -127 shadeto -127 }
  1975.         else { shadeto 127 shadeto 127 shadeto 127 shadeto 127 }
  1976.     }
  1977. ends
  1978.  
  1979. state checkjellyhitstate
  1980.     ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIJELLYSHRUNK }
  1981.     else
  1982.     {
  1983.         ifdead
  1984.         {
  1985.             addkills 1
  1986.             spawn RPGSPRITE
  1987.             ifwasweapon RPG { sound SQUISHED state standard_jibs state delete_enemy }
  1988.             else ifwasweapon THROWFLAME { sound SQUISHED spawn BURNING state standard_jibs state delete_enemy }
  1989.             else ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy }
  1990.             else { state rf ai AIJELLYDYING }
  1991.             sound OCTA_DYING
  1992.         }
  1993.         else
  1994.         {
  1995.             ifwasweapon RPG
  1996.             {
  1997.                 sound OCTA_DYING addkills 1
  1998.                 state standard_jibs
  1999.                 killit
  2000.             }
  2001.             ifwasweapon THROWFLAME quote 14
  2002.             sound OCTA_PAIN spawn BLOOD
  2003.             ifrnd 64 ai AIJELLYHIT
  2004.             ifp palive ai AIJELLYSHRUNK
  2005.  
  2006.         }
  2007.     }
  2008.     state random_wall_jibs
  2009. ends
  2010.  
  2011. state jellyshrunkstate
  2012.     ifcount SHRUNKDONECOUNT ai AILIZGETENEMY
  2013.     else ifcount SHRUNKCOUNT sizeto 48 40
  2014.     else state genericshrunkcode
  2015. ends
  2016.  
  2017. state jellydyingstate
  2018.     ifactioncount 8 { ifrnd 64 spawn BLOODPOOL move JELLYSTOPPED action AJELLYDEAD break }
  2019.     else ifactioncount 5 { } else ifactioncount 4 iffloordistl 8 sound THUD
  2020. ends
  2021.  
  2022. actor JELLYFISHSTAYPUT JELLYSTRENGTH ai AIJELLYGETENEMY cactor JELLYFISH enda
  2023.  
  2024. actor JELLYFISH JELLYSTRENGTH fall
  2025.  
  2026.     state checksquished
  2027.  
  2028.     ifai 0 ai AIJELLYGETENEMY
  2029.     else ifaction AJELLYDEAD
  2030.     {
  2031.         strength 0
  2032.         ifcount RESPAWNTIME ifrespawn
  2033.             { addkills -1 spawn TRANSPORTERSTAR cstat 257 strength JELLYSTRENGTH ai AIJELLYGETENEMY }
  2034.         ifhitweapon ifwasweapon RADIUSEXPLOSION { state standard_jibs killit }
  2035.         break
  2036.     }
  2037.     else
  2038.     {
  2039.         ifrnd 1 soundonce OCTA_ROAM
  2040.  
  2041.         ifai AIJELLYGETENEMY state jellygetenemystate
  2042.         else ifai AIJELLYHIT { ifcount 8 ai AIJELLYSHOOTENEMY }
  2043.         else ifai AIJELLYDYING { state jellydyingstate break }
  2044.         else ifai AIJELLYSCRATCHENEMY state jellyscratchenemystate
  2045.         else ifai AIJELLYSHOOTENEMY state jellyshootenemystate
  2046.         else ifai AIJELLYSHRUNK state jellyshrunkstate
  2047.  
  2048.         ifmove JELLYUPVELS { } else ifp phigher move JELLYUPVELS seekplayer
  2049.         else ifmove JELLYINWATER { } else ifinwater move JELLYINWATER seekplayer
  2050.  
  2051.         ifhitweapon state checkjellyhitstate
  2052.     }
  2053. enda
  2054.  
  2055. action APIGWALK         0  4 5 1 20
  2056. action APIGRUN          0  4 5 1 11
  2057. action APIGSHOOT        30 2 5 1 58
  2058. action APIGCOCK         25 1 5 1 16
  2059. action APIGSTAND        30 1 5 1 1
  2060. action APIGDIVE         40 2 5 1 40
  2061. action APIGDIVESHOOT    45 2 5 1 58
  2062. action APIGDYING        55 5 1 1 15
  2063. action APIGHIT          55 1 1 1 10
  2064. action APIGDEAD         60 1 1 1 1
  2065.  
  2066. move PIGWALKVELS 72
  2067. move PIGRUNVELS 108
  2068. move PIGSTOPPED
  2069.  
  2070. ai AIPIGSEEKENEMY APIGWALK PIGWALKVELS seekplayer
  2071. ai AIPIGSHOOTENEMY APIGSHOOT PIGSTOPPED face_player
  2072. ai AIPIGFLEEENEMY APIGWALK PIGWALKVELS fleeenemy
  2073. ai AIPIGSHOOT APIGSHOOT PIGSTOPPED face_player
  2074. ai AIPIGDODGE APIGRUN PIGRUNVELS dodgebullet
  2075. ai AIPIGCHARGE APIGRUN PIGRUNVELS seekplayer
  2076. ai AIPIGDIVING APIGDIVE PIGSTOPPED face_player
  2077. ai AIPIGDYING APIGDYING PIGSTOPPED face_player
  2078. ai AIPIGSHRINK APIGWALK SHRUNKVELS fleeenemy
  2079. ai AIPIGHIT APIGHIT PIGSTOPPED face_player
  2080.  
  2081. state pigseekenemystate
  2082.  
  2083.     ifai AIPIGCHARGE
  2084.     {
  2085.         ifcansee ifpdistl 3084
  2086.         {
  2087.             ifnotmoving ai AIPIGSEEKENEMY
  2088.             else ai AIPIGDIVING
  2089.         }
  2090.         break
  2091.     }
  2092.     else iffloordistl 32
  2093.     {
  2094.         ifpdistg 4096 { ifactornotstayput ai AIPIGCHARGE }
  2095.         ifrnd 8 { ifbulletnear ai AIPIGDODGE }
  2096.     }
  2097.  
  2098.     ifrnd 128 ifcansee
  2099.     {
  2100.         ifai AIPIGDODGE { ifcount 32 ai AIPIGCHARGE break }
  2101.         iffloordistl 32
  2102.         {
  2103.             ifpdistl 1024 ifp palive ifcanshoottarget
  2104.                 { ai AIPIGSHOOTENEMY break }
  2105.             ifcount 48 { ifrnd 8 ifp palive ifcanshoottarget { ifrnd 192 ai AIPIGSHOOTENEMY else ai AIPIGDIVING break } }
  2106.         }
  2107.     }
  2108. ends
  2109.  
  2110. state pigshootenemystate
  2111. //    ifcansee
  2112.     {
  2113.         ifcount 12 { } else ifcount 11
  2114.         {
  2115.             ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2116.             else ai AIPIGSEEKENEMY
  2117.         }
  2118.         ifcount 25 { } else ifcount 24 { action APIGCOCK sound SHOTGUN_COCK }
  2119.         ifcount 48 { } else ifcount 47
  2120.         {
  2121.             ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2122.             else ai AIPIGSEEKENEMY
  2123.         }
  2124.         ifcount 60 { } else ifcount 59 { action APIGCOCK sound SHOTGUN_COCK }
  2125.         ifcount 72
  2126.         {
  2127.             ifrnd 64 resetcount
  2128.             else
  2129.             {
  2130.                 ifpdistl 768 ai AIPIGFLEEENEMY
  2131.                 else ai AIPIGSEEKENEMY
  2132.             }
  2133.         }
  2134.         ifaction APIGCOCK ifactioncount 2 action APIGSHOOT
  2135.     }
  2136.     else ai AIPIGSEEKENEMY
  2137. ends
  2138.  
  2139. state pigfleeenemystate
  2140.     ifactioncount 8 ai AIPIGSEEKENEMY
  2141.     else ifnotmoving ai AIPIGSEEKENEMY
  2142. ends
  2143.  
  2144. state pigdivestate
  2145.     ifaction APIGDIVESHOOT
  2146.     {
  2147.         ifcansee
  2148.         {
  2149.             ifcount 12 { } else ifcount 11
  2150.             {
  2151.                 ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2152.                 else ai AIPIGSEEKENEMY
  2153.             }
  2154.             ifcount 25 { } else ifcount 24 { sound SHOTGUN_COCK }
  2155.             ifcount 48 { } else ifcount 47
  2156.             {
  2157.                 ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN shoot SHOTGUN }
  2158.                 else ai AIPIGSEEKENEMY
  2159.             }
  2160.             ifcount 60 { } else ifcount 59
  2161.             {
  2162.                 sound SHOTGUN_COCK
  2163.                 ifgapzl 32 ai AIPIGDIVING
  2164.                 else
  2165.                 {
  2166.                     ifpdistl 4096 ai AIPIGFLEEENEMY
  2167.                     else ai AIPIGSEEKENEMY
  2168.                 }
  2169.             }
  2170.         }
  2171.         else ifgapzl 32 ai AIPIGDIVING else ai AIPIGSEEKENEMY
  2172.     }
  2173.     else ifactioncount 2 ifp palive { resetcount action APIGDIVESHOOT }
  2174. ends
  2175.  
  2176. state checkpighitstate
  2177.     spawn BLOOD
  2178.     ifdead
  2179.     {
  2180.         addkills 1
  2181.         state random_wall_jibs
  2182.         ifrnd 16 spawn SHIELD else spawn SHOTGUNSPRITE
  2183.         ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy }
  2184.         else ifwasweapon RPG { sound SQUISHED state standard_jibs state delete_enemy }
  2185.         else ifwasweapon THROWFLAME spawn BURNING
  2186.  
  2187.         ai AIPIGDYING sound PIG_DYING
  2188.     }
  2189.     else
  2190.     {
  2191.         sound PIG_PAIN
  2192.         state random_wall_jibs
  2193.         ifwasweapon SHRINKSPARK ai AIPIGSHRINK
  2194.         else ifwasweapon THROWFLAME quote 14
  2195.         else ifrnd 64 ai AIPIGHIT ai AIPIGSHRINK
  2196.         else ifrnd 64 ai AIPIGSHOOTENEMY ai AIPIGSHRINK
  2197.         else ifrnd 64 { ai AIPIGDIVING action APIGDIVESHOOT } ai AIPIGSHRINK
  2198.         }
  2199. ends
  2200.  
  2201. state pigshrinkstate
  2202.     ifcount SHRUNKDONECOUNT { ifdead { addkills 1 sound SQUISHED state troop_body_jibs state standard_jibs state delete_enemy } ai AIPIGSEEKENEMY }
  2203.     else ifcount SHRUNKCOUNT sizeto 48 40
  2204.     else state genericshrunkcode
  2205. ends                                                                   
  2206.  
  2207. state pigdyingstate
  2208.     ifactioncount 5 { ifrnd 64 spawn BLOODPOOL state rf iffloordistl 8 sound THUD action APIGDEAD move PIGSTOPPED break }
  2209. ends
  2210.  
  2211.  
  2212.  
  2213. actor PIGCOPDIVE PIGCOPSTRENGTH ai AIPIGDIVING action APIGDIVESHOOT cactor PIGCOP enda
  2214. actor PIGCOPSTAYPUT PIGCOPSTRENGTH ai AIPIGSEEKENEMY cactor PIGCOP enda
  2215. actor PIGCOP PIGCOPSTRENGTH APIGSTAND fall
  2216.     state checksquished
  2217.     ifaction APIGSTAND ai AIPIGSEEKENEMY
  2218.     else ifaction APIGDEAD
  2219.     {
  2220.         ifrespawn ifcount RESPAWNTIME
  2221.             { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH ai AIPIGSEEKENEMY }
  2222.         else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
  2223.     }
  2224.     else ifai AIPIGDYING state pigdyingstate
  2225.     else ifai AIPIGHIT { ifactioncount 3 ai AIPIGSEEKENEMY }
  2226.     else ifai AIPIGSHRINK state pigshrinkstate
  2227.     else
  2228.     {
  2229.         ifai AIPIGSEEKENEMY state pigseekenemystate
  2230.         else ifai AIPIGDODGE state pigseekenemystate
  2231.         else ifai AIPIGSHOOTENEMY state pigshootenemystate
  2232.         else ifai AIPIGFLEEENEMY state pigfleeenemystate
  2233.         else ifai AIPIGDIVING state pigdivestate
  2234.         else ifai AIPIGCHARGE state pigseekenemystate
  2235.         ifhitweapon state checkpighitstate
  2236.         ifrnd 1
  2237.         {
  2238.             ifrnd 32 soundonce PIG_ROAM
  2239.             else ifrnd 64 soundonce PIG_ROAM2
  2240.             else soundonce PIG_ROAM3
  2241.         }
  2242.     }
  2243. enda
  2244.  
  2245. action ABOSSWALK                0  6  5  1  12
  2246. action ABOSSRUN                 0  6  5  1  5
  2247. action ABOSSSHOOT               30 2  5  1  4
  2248. action ABOSSLOB                 40 2  5  1  35
  2249. action ABOSS1DYING              60 5  1  1  50
  2250. action BOSS1FLINTCH             60 1  1  1  1
  2251. action ABOSS1DEAD               65
  2252.  
  2253. move BOSSWALKVELS 208
  2254. move BOSSRUNVELS 296
  2255. move BOSSSTOPPED
  2256.  
  2257. ai AIBOSSSEEKENEMY ABOSSWALK BOSSWALKVELS seekplayer
  2258. ai AIBOSSRUNENEMY ABOSSRUN BOSSRUNVELS face_player
  2259. ai AIBOSSFLEEENEMY ABOSSWALK BOSSWALKVELS fleeenemy
  2260. ai AIBOSSSHOOTENEMY ABOSSSHOOT BOSSSTOPPED face_player
  2261. ai AIBOSSLOBBED ABOSSLOB BOSSSTOPPED face_player
  2262. ai AIBOSSDYING ABOSS1DYING BOSSSTOPPED face_player
  2263.  
  2264. state bossfleeenemy
  2265.     ifcount 16 ifpdistl 1024 ifp palive ifcansee ifcanshoottarget ai AIBOSSSHOOTENEMY
  2266.     ifcount 32 ai AIBOSSSEEKENEMY
  2267. ends
  2268.  
  2269. state bossrunenemystate
  2270.     ifpdistl 2048 { ifp palive ai AIBOSSSHOOTENEMY break }
  2271.     else ifcansee { ifactioncount 6 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSSSEEKENEMY } }
  2272.     else ai AIBOSSSEEKENEMY
  2273. ends
  2274.  
  2275. state bossseekenemystate
  2276.     ifrnd 2 { ifactor BOSS1 soundonce BOS1_ROAM else soundonce BOS3_ROAM }
  2277.     else ifactioncount 6 { resetactioncount sound BOS1_WALK }
  2278.  
  2279.     ifpdistl 2548 ifp palive { ai AIBOSSSHOOTENEMY break }
  2280.  
  2281.     ifcansee ifcount 32
  2282.     {
  2283.         ifrnd 32 { ifp palive ifcanshoottarget ai AIBOSSSHOOTENEMY }
  2284.         else ifpdistg 2548 ifrnd 192
  2285.             ifcanshoottarget
  2286.             {
  2287.                 ifrnd 64 ai AIBOSSRUNENEMY
  2288.                 else ai AIBOSSLOBBED
  2289.             }
  2290.     }
  2291.  
  2292. ends
  2293.  
  2294. state bossdyingstate
  2295.   ifaction ABOSS1DEAD break
  2296.   ifactioncount 5 { iffloordistl 8 sound THUD action ABOSS1DEAD endoflevel 52 }
  2297. ends
  2298.  
  2299. state bosslobbedstate
  2300.     ifcansee
  2301.     {
  2302.         ifactioncount 2
  2303.         {
  2304.             resetactioncount
  2305.             ifactor BOSS1 sound BOS1_ATTACK2
  2306.             else sound BOS3_ATTACK2
  2307.             shoot MORTER
  2308.         }
  2309.         else ifcount 64 ifrnd 16 ai AIBOSSSEEKENEMY
  2310.     }
  2311.     else ai AIBOSSSEEKENEMY
  2312.  
  2313. ends
  2314.  
  2315. state bossshootenemy
  2316.     ifcount 72 ai AIBOSSSEEKENEMY
  2317.     else ifaction ABOSSSHOOT ifactioncount 2
  2318.     {
  2319.         ifactor BOSS1 sound BOS1_ATTACK1 else sound BOS3_ATTACK1
  2320.         shoot SHOTSPARK1 shoot SHOTSPARK1 shoot SHOTSPARK1 resetactioncount
  2321.     }
  2322. ends
  2323.  
  2324. state checkbosshitstate
  2325.     ifrnd 8 spawn BLOODPOOL
  2326.     ifdead { addkills 1 ifactor BOSS1 globalsound DUKE_TALKTOBOSSFALL sound BOS1_DYING else sound BOS3_DYING ai AIBOSSDYING }
  2327.     else
  2328.     {
  2329.         ifactor BOSS1 sound BOS1_PAIN else sound BOS3_PAIN
  2330.  
  2331.         debris SCRAP1 1
  2332.         guts JIBS6 1
  2333.         ifwasweapon THROWFLAME quote 14
  2334.         ifrnd 32 { action BOSS1FLINTCH move 0 }
  2335.     }
  2336. ends
  2337.  
  2338. state bosscode
  2339.     ifai 0 ai AIBOSSRUNENEMY
  2340.     else ifaction BOSS1FLINTCH { ifactioncount 3 ai AIBOSSSHOOTENEMY }
  2341.     else ifai AIBOSSSEEKENEMY state bossseekenemystate
  2342.     else ifai AIBOSSRUNENEMY state bossrunenemystate
  2343.     else ifai AIBOSSFLEEENEMY state bossfleeenemy
  2344.     else ifai AIBOSSSHOOTENEMY state bossshootenemy
  2345.     else ifai AIBOSSLOBBED state bosslobbedstate
  2346.  
  2347.     ifai AIBOSSDYING state bossdyingstate
  2348.  
  2349.     ifhitweapon state checkbosshitstate
  2350. ends
  2351.  
  2352. actor BOSS1STAYPUT BOSS1STRENGTH cactor BOSS1 enda
  2353. actor BOSS1 BOSS1STRENGTH fall state bosscode enda
  2354. actor BOSS3 BOSS3STRENGTH fall state bosscode enda
  2355.  
  2356. action AFATBREETH  0  3  5  1  40
  2357. action AFATSPIN   25  3  1  1  10
  2358. action AFATGET     0  3  5  1  30
  2359. action AFATSHOOT  15  2  5  1  50
  2360. action AFATDYING  30  8  1  1  12
  2361. action AFATDEAD   38  1  1  1  1
  2362.  
  2363. move FATGETVELS 96
  2364. move FATSTOPPED
  2365.  
  2366. ai AIFATWAIT AFATBREETH FATSTOPPED face_player
  2367. ai AIFATGET AFATGET FATGETVELS face_player
  2368. ai AIFATSHOOT AFATSHOOT FATSTOPPED face_player
  2369. ai AIFATSPIN AFATSPIN FATGETVELS face_player
  2370. ai AIFATDYING AFATDYING FATSTOPPED face_player
  2371.  
  2372. actor FATGUY FATGUYSTRENGTH
  2373.  
  2374.     fall
  2375.     state checksquished
  2376.     ifai 0 ai AIFATWAIT
  2377.     else ifai AIFATWAIT { ifcount 64 { ifrnd 92 ai AIFATGET else ai AIFATSHOOT } }
  2378.     else ifai AIFATSHOOT
  2379.     {
  2380.         ifcount 32 { ifrnd 32 ai AIFATWAIT }
  2381.         else { ifactioncount 2 { sound COMM_ATTACK shoot RPG resetactioncount } }
  2382.     }
  2383.     else ifai AIFATDYING
  2384.     {
  2385.         ifhitweapon ifwasweapon RADIUSEXPLOSION
  2386.             { sound SQUISHED state standard_jibs state delete_enemy }
  2387.         ifaction AFATDEAD break
  2388.         strength 0
  2389.         ifactioncount 8 { iffloordistl 8 sound THUD cstat 0 action AFATDEAD }
  2390.         break
  2391.     }
  2392.     else ifai AIFATGET { ifnotmoving ifrnd 32 operate ifpdistl 1596 { sound COMM_SPIN ai AIFATSPIN } }
  2393.     else ifai AIFATSPIN
  2394.     {
  2395.         soundonce COMM_SPIN
  2396.         ifcount 16 ifpdistl 1024 { addphealth CAPTSPINNINGPLAYER sound DUKE_GRUNT palfrom 32 16 resetcount }
  2397.         ifactioncount 32 ai AIFATWAIT
  2398.         ifnotmoving ifrnd 32 operate
  2399.  
  2400.     }
  2401.     ifhitweapon { ifdead { addkills 1 sound COMM_DYING ai AIFATDYING } else sound COMM_PAIN }
  2402.     ifrnd 1 soundonce COMM_ROAM
  2403. enda
  2404.  
  2405. move DUMMYWALK 144
  2406. move DUMMYSTOP
  2407. action ADUMMYDUKEWALK    0    4    5    1    20
  2408. action ADUMMYDUKESTAND -20    0    5    1    1
  2409. action ADUMMYDUKESHOOT -20    1    5    1    10
  2410. ai AIDUMMYFINDDUKE   ADUMMYDUKEWALK DUMMYWALK seekplayer
  2411. ai AIDUMMYHIDEDUKE   ADUMMYDUKEWALK DUMMYWALK seekplayer
  2412. ai AIDUMMYFLEEDUKE   ADUMMYDUKEWALK DUMMYWALK fleeplayer
  2413. ai AIDUMMYSHOOTDUKE  ADUMMYDUKESHOOT DUMMYSTOP face_player
  2414.  
  2415. state dummyshootstate
  2416.     ifactioncount 2 { resetactioncount shoot CHAINGUN }
  2417.     ifcount 48 { ifcansee { ifrnd 128 { cstat 32768 spawn TRANSPORTERSTAR ai AIDUMMYHIDEDUKE } else ai AIDUMMYFINDDUKE } else ai 0 }
  2418. ends
  2419.  
  2420. state dummyfindstate
  2421.     ifcansee ifpdistl 768 ai AIDUMMYSHOOTDUKE
  2422.     ifrnd 32 ifcount 64 ifcanseetarget ai AIDUMMYSHOOTDUKE
  2423. ends
  2424.  
  2425. state dummyfleestate
  2426.     ifcount 4 ifpdistl 1228 ifcanseetarget ai AIDUMMYSHOOTDUKE
  2427.     ifcount 32 ifcanseetarget ai AIDUMMYSHOOTDUKE else ai AIDUMMYFINDDUKE
  2428. ends
  2429.  
  2430. state dummyhidestate
  2431.     ifcount 4 ifpdistl 1228 ifcanseetarget { cstat 257 spawn TRANSPORTERBEAM ai AIDUMMYSHOOTDUKE }
  2432.     ifcount 32 ifcanseetarget { cstat 257 spawn TRANSPORTERBEAM ai AIDUMMYSHOOTDUKE }
  2433. ends
  2434.  
  2435. actor DUMMYDUKE BOSS2SMALLDUKESTRENGTH fall
  2436.     spritepal 7
  2437.     ifaction ADUMMYDUKESTAND
  2438.     {
  2439.         ifcount 64 ifcansee ai AIDUMMYFINDDUKE
  2440.         ifrnd 2 ifpdistl 2048 ifcanseetarget ai AIDUMMYSHOOTDUKE
  2441.     }
  2442.     else ifai 0 { ifmove 0 spawn TRANSPORTERBEAM action ADUMMYDUKESTAND move DUMMYSTOP looking }
  2443.     else ifai AIDUMMYFINDDUKE state dummyfindstate
  2444.     else ifai AIDUMMYHIDEDUKE state dummyhidestate
  2445.     else ifai AIDUMMYFLEEDUKE state dummyfleestate
  2446.     else ifai AIDUMMYSHOOTDUKE state dummyshootstate
  2447.     ifhitweapon { ifdead { addkills 1 sound SQUISHED state standard_jibs state delete_enemy break } else cstat 257 }
  2448. enda
  2449.  
  2450. move BIGWALK 64
  2451. move BIGSTOP
  2452. action ABIGDUKEWALK   -5    4    5    1    40
  2453. action ABIGDUKESTAND -25    0    5
  2454. action ABIGDUKESHOOT -25    1    5
  2455. ai AIBIGFINDDUKE   ABIGDUKEWALK BIGWALK seekplayer
  2456. ai AIBIGFLEEDUKE   ABIGDUKEWALK BIGWALK fleeplayer
  2457. ai AIBIGSHOOTDUKE  ABIGDUKESHOOT BIGSTOP face_player
  2458.  
  2459. state bigshootstate
  2460.     ifactioncount 2 { resetactioncount shoot CHAINGUN }
  2461.     ifcount 48 { ifcansee ai AIBIGFINDDUKE else ai 0 }
  2462. ends
  2463.  
  2464. state bigfindstate
  2465.     ifcansee ifpdistl 768 ai AIBIGSHOOTDUKE
  2466.     ifrnd 32 ifcount 64 ifcanseetarget ai AIBIGSHOOTDUKE
  2467. ends
  2468.  
  2469. state bigfleestate
  2470.     ifcount 4 ifpdistl 1228 ifcanseetarget ai AIBIGSHOOTDUKE
  2471.     ifcount 32 ifcanseetarget ai AIBIGSHOOTDUKE else ai AIBIGFINDDUKE
  2472. ends
  2473.  
  2474. actor BIGDUMMYDUKE BOSS2LARGEDUKESTRENGTH fall
  2475.     sizeto 96 96
  2476.     spritepal 7
  2477.     ifaction ABIGDUKESTAND
  2478.     {
  2479.         ifcount 64 ifcansee ai AIBIGFINDDUKE
  2480.         ifrnd 2 ifpdistl 2048 ifcanshoottarget ai AIBIGSHOOTDUKE
  2481.     }
  2482.     else ifai 0 { ifmove 0 spawn TRANSPORTERBEAM action ABIGDUKESTAND move BIGSTOP looking }
  2483.     else ifai AIBIGFINDDUKE state bigfindstate
  2484.     else ifai AIBIGFLEEDUKE state bigfleestate
  2485.     else ifai AIBIGSHOOTDUKE state bigshootstate
  2486.     ifhitweapon { sound SQUISHED state standard_jibs state delete_enemy break }
  2487. enda
  2488.