action ABOSS5WALK 0 4 5 1 30 action ABOSS5FROZEN 0 1 5 action ABOSS5RUN 0 4 5 1 15 action ABOSS5SHOOT 20 2 5 1 15 action ABOSS5LOB 30 2 5 1 105 action ABOSS5DYING 40 8 1 1 35 action BOSS5FLINTCH 40 1 1 1 1 action ABOSS5DEAD 48 move PALBOSS5SHRUNKRUNVELS 32 move PALBOSS5RUNVELS 84 move BOSS5WALKVELS 192 move BOSS5RUNVELS 256 move BOSS5STOPPED ai AIBOSS5SEEKENEMY ABOSS5WALK BOSS5WALKVELS seekplayer ai AIBOSS5RUNENEMY ABOSS5RUN BOSS5RUNVELS faceplayer ai AIBOSS5SHOOTENEMY ABOSS5SHOOT BOSS5STOPPED faceplayer ai AIBOSS5SHOOTENEMYFAR ABOSS5SHOOT BOSS5STOPPED faceplayer ai AIBOSS5LOBBED ABOSS5LOB BOSS5STOPPED faceplayer ai AIBOSS5DYING ABOSS5DYING BOSS5STOPPED faceplayer ai AIBOSS5PALSHRINK ABOSS5WALK PALBOSS5SHRUNKRUNVELS furthestdir // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5palshrunkstate ifcount SHRUNKDONECOUNT { cstat 257 ai AITROOPSEEKENEMY } else ifcount SHRUNKCOUNT sizeto 40 40 else state genericshrunkcode ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state checkBOSS5seekstate ai AIBOSS5SEEKENEMY ifspritepal 0 nullop else // a fake way of doing a ifspritepal NOT. move PALBOSS5RUNVELS seekplayer ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5runenemystate ifcansee { ifactioncount 3 { ifcanshoottarget { resetactioncount sound BOS1_WALK } else ai AIBOSS5SEEKENEMY } ifcount 48 ifrnd 2 { ifp palive { sound BOS2_ATTACK ai AIBOSS5SHOOTENEMY } break } ifpdistl 3072 { ifp palive { ai AIBOSS5SHOOTENEMY } } } else ai AIBOSS5SEEKENEMY ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5seekenemystate ifrnd 2 soundonce BOS2_ROAM else ifactioncount 3 { resetactioncount sound BOS1_WALK } ifcansee ifcount 32 ifp palive ifrnd 48 ifcanshoottarget { ifrnd 64 ifpdistg 4096 { ai AIBOSS5RUNENEMY ifspritepal 0 nullop else move PALBOSS5RUNVELS seekplayer break } ifpdistl 3072 { sound BOS2_ATTACK ai AIBOSS5SHOOTENEMY } else ifpdistl 10240 { ifrnd 50 { sound BOS2_ATTACK ai AIBOSS5LOBBED } else ifrnd 50 { sound BOS2_ATTACK ai AIBOSS5SHOOTENEMYFAR } } } ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5dyingstate ifaction ABOSS5DEAD { ifspritepal 0 break ifrespawn ifcount RESPAWNACTORTIME { spawn TRANSPORTERSTAR cstat 257 strength PIGCOPSTRENGTH state checkBOSS5seekstate } else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs killit } break } } ifactioncount 8 { iffloordistl 8 sound THUD action ABOSS5DEAD cstat 0 ifspritepal 0 endofgame 52 } ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5lobbedstate ifcansee { ifactioncount 2 resetactioncount else ifactioncount 1 { ifrnd 20 shoot COOLEXPLOSION1 } else ifcount 52 { state checkBOSS5seekstate } } else state checkBOSS5seekstate ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5shootenemy ifcount 72 { soundonce FLAMETHROWER_END state checkBOSS5seekstate } else ifaction ABOSS5SHOOT { ifcanshoottarget { shoot RPG soundonce FLAMETHROWER_ENEMY } } ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5shootenemyfar ifcount 52 { state checkBOSS5seekstate } else { ifaction ABOSS5SHOOT { ifactioncount 2 { shoot FIREBALL resetactioncount } } } ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state checkBOSS5hitstate ifrnd 2 spawn BLOODPOOL ifdead { ifspritepal 0 globalsound DUKE_TALKTOBOSSFALL else { ifrnd 64 globalsound DUKE_TALKTOBOSSFALL ifwasweapon FREEZEBLAST { sound SOMETHINGFROZE spritepal 1 move 0 action ABOSS5FROZEN strength 0 break } } sound BOS2_DYING addkills 1 ai AIBOSS5DYING } else { ifrnd 144 { ifrnd 32 { action BOSS5FLINTCH move 0 } else { sound BOS2_ATTACK ai AIBOSS5SHOOTENEMY } } ifspritepal 0 nullop else ifwasweapon SHRINKSPARK { sound ACTOR_SHRINKING ai AIBOSS5PALSHRINK break } soundonce BOS2_PAIN debris SCRAP1 1 guts JIBS6 1 } ends // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- state BOSS5code ifaction ABOSS5FROZEN { ifcount THAWTIME { ai AIBOSS5SEEKENEMY spritepal 21 } else ifcount FROZENDRIPTIME { ifactioncount 26 { spawn WATERDRIP resetactioncount } } ifhitweapon { ifwasweapon FREEZEBLAST { strength 0 break } addkills 1 lotsofglass 30 sound GLASS_BREAKING ifrnd 84 spawn BLOODPOOL killit } ifp pfacing ifpdistl FROZENQUICKKICKDIST pkick break } ifai 0 { ifspritepal 0 ai AIBOSS5RUNENEMY else { ifspritepal 21 strength BOSS5PALSTRENGTH sound BOS2_ATTACK ai AIBOSS5SHOOTENEMY } } else ifaction BOSS5FLINTCH { ifactioncount 3 ai AIBOSS5SEEKENEMY } else ifai AIBOSS5SEEKENEMY state BOSS5seekenemystate else ifai AIBOSS5RUNENEMY state BOSS5runenemystate else ifai AIBOSS5SHOOTENEMY state BOSS5shootenemy else ifai AIBOSS5LOBBED state BOSS5lobbedstate else ifai AIBOSS5SHOOTENEMYFAR state BOSS5shootenemyfar else ifai AIBOSS5PALSHRINK state BOSS5palshrunkstate ifai AIBOSS5DYING state BOSS5dyingstate else { ifhitweapon state checkBOSS5hitstate else ifp palive ifspritepal 0 ifpdistl 1280 { addphealth -1000 palfrom 63 63 } } ends actor BOSS5 BOSS5STRENGTH fall state BOSS5code enda actor BOSS5STAYPUT BOSS5STRENGTH cactor BOSS5 enda