Subversion Repositories nw_plus

Rev

Rev 7 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter
By Joris Weimar
© 1997 Simply Silly Software
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/

state snowmangrowcode
  ifcount 32
  {
    addkills 1
    sound SQUISH2
    sound PIPEBOMB_EXPLODE
    hitradius 2048 60 70 80 90
    debris SCRAP3 40
    debris SCRAP3 40
    debris SCRAP3 40
    debris SCRAP3 40
    killit
  }
  else
  {
      sizeto MAXXSTRETCH MAXYSTRETCH
    break
  }
ends

move SNOWBALLSPEED1 750 100
move SNOWBALLUP 0 -2000

action SNOWBALL1 0 1 1 1 1

ai AISNOWBALL1 SNOWBALL1 SNOWBALLSPEED1 geth getv
ai AISNOWBALLUP SNOWBALL1 SNOWBALLUP geth getv

useractor notenemy SNOWBALL 0 SNOWBALL1
   state checksquished

   ifai 0
     {
       sizeat 1 1
       cstat 32768
       clipdist 0
       ai AISNOWBALLUP
     }
   ifai AISNOWBALLUP
     {
       ifcount 1
         {
           ai AISNOWBALL1
           cstat 257
           clipdist 32
           sizeat 30 30
         }
       else break
    }

   ifai AISNOWBALL1
     {
       ifpdistl 1024
         {
           getplayer[THISACTOR].i temp
           setactor[temp].htextra SNOWBALLAMOUNT
           setactor[temp].htpicnum SNOWBALL
          // addphealth SNOWBALLAMOUNT
           debris SCRAP3 5
           globalsound DUKE_GRUNT
           state headhitstate
           palfrom 15 15 15
           killit
         }
       iffloordistl 10
         {
           debris SCRAP3 5
           killit
         }
     }
   ifcount 30 killit
enda

action ASNOWMANIDLE 26 3 5 1 20
action ASNOWMANATTACK 11 3 5 1 30
action ASNOWMANDIE 5 5 1 1 10
action ASNOWMANDEAD 10 1 1
action ASNOWMANFROZEN 0 1 5 1 1

move SNOWMANSPEED

ai AISNOWFOLLOW ASNOWMANIDLE SNOWMANSPEED faceplayerslow
ai AISNOWATTACK ASNOWMANATTACK SNOWMANSPEED faceplayer
ai AISNOWMANSHRINK ASNOWMANIDLE SNOWMANSPEED geth getv
ai AISNOWMANGROW ASNOWMANIDLE SNOWMANSPEED geth getv
ai AISNOWMANDYING ASNOWMANDIE SNOWMANSPEED geth getv

state snowmanidlestate
   ifcansee
     ifpdistl 8192
       {
         ai AISNOWATTACK
         break
       }
ends

state snowmandyingstate
   ifactioncount 5 action ASNOWMANDEAD
ends

state snowmanattackstate
   ifcount 15 nullop else ifcount 14 spawn SNOWBALL
   ifactioncount 3
     {
       resetcount
       ifpdistl 8192 resetactioncount else ai AISNOWFOLLOW
     }
ends

state snowmanshrinkstate
  ifcount SHRUNKDONECOUNT
    ai AISNOWFOLLOW
  else
    ifcount SHRUNKCOUNT
      sizeto 42 36
  else
    state genericshrunkcode
ends

state snowmanhitstate

  ifdead
  {
  //  debris SCRAP3 40
  //  debris SCRAP3 40
    debris SCRAP3 20

    ifwasweapon GROWSPARK
    {
      sound ACTOR_GROWING
      ai AISNOWMANGROW
      break
    }

    addkills 1

    ifwasweapon FREEZEBLAST
    {
      sound SOMETHINGFROZE
      spritepal 1
      move 0
      action ASNOWMANFROZEN
      strength 0
      break
    }
    ifwasweapon RADIUSEXPLOSION
    {
      debris SCRAP3 40
      killit
    }
    else
      ifwasweapon RPG
    {
      debris SCRAP3 20
      killit
    }
    else
    {
      cstat 0
      ai AISNOWMANDYING
    }

  }
  else
  {
   debris SCRAP3 20
   ifwasweapon SHRINKSPARK
    {
      sound ACTOR_SHRINKING
      ai AISNOWMANSHRINK
    }
    else
      ifwasweapon GROWSPARK
        sound EXPANDERHIT
  }
ends


useractor enemy SNOWMAN SNOWMANSTRENGTH ASNOWMANIDLE
   fall

   ifaction ASNOWMANDEAD
     {
  ifrespawn
    {
    ifcount RESPAWNACTORTIME
      {
      spawn TRANSPORTERSTAR
      cstat 257
      strength SNOWMANSTRENGTH
      ai AISNOWFOLLOW
      }
    }
    else
    {
    strength 0
    ifhitweapon
      {
      ifwasweapon RADIUSEXPLOSION
        {
     //  debris SCRAP3 40
     //  debris SCRAP3 40
        debris SCRAP3 20
        killit
        }
      }
    }
  break
  }
  else
ifaction ASNOWMANFROZEN
  {
  ifcount THAWTIME
    {
    ai AISNOWFOLLOW
    getlastpal
    }
    else
    ifcount FROZENDRIPTIME
      ifrnd 8
       spawn WATERDRIP

  ifhitweapon
    {
    ifwasweapon FREEZEBLAST
      {
      strength 0
      break
      }
  addkills 1
  lotsofglass 30
  ifrnd 84 debris SCRAP3 10
  sound GLASS_BREAKING
  killit
  }
  ifp pfacing
    ifpdistl FROZENQUICKKICKDIST
      pkick
  break
  }

ifai AISNOWMANSHRINK
  {
  state snowmanshrinkstate
  break
  }


ifhitweapon state snowmanhitstate

ifp pdead break

ifai 0
  {
  ai AISNOWFOLLOW
  sizeat 42 36
  clipdist 32
  cstat 257
  }

      ifai AISNOWMANDYING state snowmandyingstate
 else ifai AISNOWMANGROW state genericgrowcode
 else ifai AISNOWFOLLOW state snowmanidlestate
 else ifai AISNOWATTACK state snowmanattackstate
enda

move botshrunkspeed   50
move botsteroidspeed  400
move botstopped
move botfall          0 -38
move bothardfall      0
move botflyupspeed    200 -140
move botflydownspeed  200 -38
move botflyspeed      200 // -38
move botdodgespeedfly 250 -140
move botdodgespeeddownfly 250 140

action ABOTFLY        0  1 5 1 13
action ABOTFLYDYING   65 5 1 1 18
action ABOTFLYDIEBACK 69 5 1 -1 18
action ABOTFLYDEAD    65 1 1 1 1
action ABOTFLYFROZEN  0 1 5 1 1

ai AIBOTFLYUP ABOTFLY botflyupspeed faceplayer
ai AIBOTFLYDOWN ABOTFLY botflydownspeed faceplayer
ai AIBOTFLYSEEKUP ABOTFLY botflyupspeed geth seekplayer randomangle
ai AIBOTFLYSEEKDOWN ABOTFLY botflydownspeed geth seekplayer randomangle
ai AIBOTFLYDODGEUP ABOTFLY botdodgespeedfly fleeenemy randomangle
ai AIBOTFLYDODGEDOWN ABOTFLY botdodgespeeddownfly fleeenemy randomangle
ai AIBOTFLYNOTMOVING
ai AIBOTFLYCAMPING ABOTFLY botstopped faceplayer
ai AIBOTFLYDYING ABOTFLYDYING botstopped faceplayer
ai AIFLYWAIT ABOTFLY botstopped faceplayer
ai AIFLYUPMOMENT ABOTFLY botflyupspeed faceplayer
ai AIFLYUPHOLD ABOTFLY botflyupspeed faceplayer
ai AIBOTFLYSTRAIGHT ABOTFLY botflyspeed geth getv
ai AIBOTFLYGROW ABOTFLY botstopped geth getv
ai AIBOTFLYSHRINK ABOTFLY botshrunkspeed fleeenemy
ai AIBOTFLYSTEROIDS ABOTFLY botsteroidspeed randomangle
ai AIBOTFLYFLEE ABOTFLY botflyspeed randomangle

action ABOTWALK   10 4 5 1 13
action ABOTWALK1  10 1 5 1 13
action ABOTWALKGO 10 4 5 1 13
action ABOTKICK   10 2 5 1 25
action ABOTCRAWL  55 3 5 1 13
action ABOTJUMPUP 40 2 5 1 13
action ABOTFALL   50 1 5 1 1
action ABOTWDYING 70 5 1 1 18
action ABOTWDEAD  75 1 1 1 1
action ABOTWALKDIEBACK 74 5 1 -1 18
action ABOTWALKFROZEN  0 1 5 1 1

move   botwalkspeed  250
move   botjumpspeed  250 -115
move   botjumpdspeed 250 150
move   botcrawlspeed 0
move   botfallspeed  250 100

ai AIBOTWALKKICK ABOTKICK botstopped faceplayer
ai AIBOTWALKHUNT ABOTWALK botwalkspeed faceplayer
ai AIBOTWALKSEEK ABOTWALK botwalkspeed seekplayer
ai AIBOTWALKSEEK2
ai AIBOTWALKCAMPING ABOTWALK botstopped faceplayersmart
ai AIBOTWALKSTRJUMP1 ABOTJUMPUP botjumpspeed geth getv
ai AIBOTWALKSTRJUMP2 ABOTFALL   botjumpdspeed geth getv
ai AIBOTWALKSTRJUMP1S ABOTJUMPUP botjumpspeed faceplayer
ai AIBOTWALKSTRJUMP2S ABOTFALL   botjumpdspeed faceplayer
ai AIBOTWALKJUMP1 ABOTJUMPUP botjumpspeed faceplayer
ai AIBOTWALKJUMP2 ABOTFALL   botjumpdspeed faceplayer
ai AIBOTWALKDYING ABOTWDYING botstopped faceplayer
ai AIWALKFALL     ABOTFALL   botstopped faceplayer
ai AIWALKFALLHARD ABOTFALL   botstopped faceplayer
ai AIBOTWALKSTRAIGHT ABOTWALK botwalkspeed geth getv
ai AIBOTWALKGROW ABOTWALK1 botstopped geth getv
ai AIBOTWALKSHRINK ABOTWALK botshrunkspeed fleeenemy
ai AIBOTWALKSTEROIDS ABOTWALK botsteroidspeed randomangle
ai AIBOTWALKFLEE ABOTWALK botwalkspeed randomangle
ai AIBOTLETFALL ABOTFALL botfallspeed getv geth
ai AIBOTWALKNOTMOVING
ai AIWALKWAIT ABOTWALK botstopped faceplayer

state miniboss

   sound SANTA_TRASH1

   spawn EXPLOSION2
   spawn EXPLOSION2
   spawn PIGCOP
   spawn PIGCOP

ends



state stomphisfreakingass

ifp pdead nullop
  else
  {
  ifpdistl SQUISHABLEDISTANCE
    {
    addphealth -1000
    sound SQUISH2
//    state standard_pjibs
    state standard_pjibs
    sound SANTA_TRASH9
    }
  }

ends


state botchangeweaponstate

ifspritepal 0 nullop else break

resetcount

ifspritepal 0
  {
  ifpdistl 4096
    {
    ifrnd 128
      spritepal 3
      else
      spritepal 9
    }
    else
    {
    ifrnd 128
      spritepal 3
    }
  }
  else
ifspritepal 3
  {
  ifpdistg 4096
    {
    ifrnd 128
      spritepal 0
      else
      spritepal 9
    }
    else
    {
    ifrnd 128
      spritepal 9
    }
  }
  else
ifspritepal 9
  {
  ifpdistg 4096
    {
    ifrnd 128
      spritepal 0
      else
      spritepal 3
    }
    else
    {
    ifrnd 128
      spritepal 9
    }
  }

sound SELECT_WEAPON

ends

state botquickshootstate

ifspritepal 0 nullop else break

ifp pshrunk break
ifp pdead break

ifspritepal 0
  {
  shoot RPG sound RPG_SHOOT
  }
  else
ifspritepal 3
  {
  shoot CHAINGUN sound CHAINGUN_FIRE
  }
  else
ifspritepal 9
  {
//  shoot SHRINKER sound SHRINKER_FIRE
  shoot SHOTGUN sound SHOTGUN_FIRE
  }

ends


state botshootstate

ifspritepal 0 nullop else break // ifcanshoottarget nullop // ifcanseetarget nullop

ifp pdead break
ifp pshrunk break

ifspritepal 0
  {
  ifcount 5
    {
    ifactioncount 5
      {
      resetactioncount
      shoot RPG
      sound RPG_SHOOT
      }

    ifpdistl 4096
      {
      ifrnd 5
        state botchangeweaponstate
      }
    }
  }
  else
ifspritepal 3
  {
  ifcount 5
    {
    ifactioncount 1
      {
      resetactioncount
      shoot SHOTSPARK1 shoot CHAINGUN shoot CHAINGUN shoot CHAINGUN
      sound CHAINGUN_FIRE
      }
    ifrnd 1 state botchangeweaponstate
    }
  }
  else
ifspritepal 9
  {
  ifcount 5
    {
    ifactioncount 5
      {
      resetactioncount
//      shoot SHRINKER
//      sound SHRINKER_FIRE
      shoot SHOTGUN
      sound SHOTGUN_FIRE
      }
    ifp ponsteroids
      {
      ifrnd 64
        state botchangeweaponstate
      }
    ifrnd 1 state botchangeweaponstate
    }
  }



ends

state dudehurt

/*
        ifstrength YELLHURTSOUNDSTRENGTHMP
        {
          ifrnd 64
            sound SANTA_GOTHIT
          else
            ifrnd 64
              sound SANTA_DEAD
          else
            ifrnd 64
              sound SANTA_TRASH6
          else
            sound SANTA_TRASH8
        }
        else
        {
          ifrnd 64
            sound SANTA_GOTHIT
          else ifrnd 64
            sound SANTA_DEAD
          else ifrnd 64
            sound SANTA_TRASH6
          else
            sound SANTA_TRASH8
        }
*/

        ifrnd 80
          sound SANTA_GOTHIT
ends

state dukehurt

        ifrnd 80
          sound SANTA_GOTHIT
/*

        ifphealthl YELLHURTSOUNDSTRENGTHMP
        {
          ifrnd 64
            sound DUKE_LONGTERM_PAIN2
          else
            ifrnd 64
              sound DUKE_LONGTERM_PAIN3
          else
            ifrnd 64
              sound DUKE_LONGTERM_PAIN4
          else
            sound DUKE_DEAD
        }
        else
        {
          ifrnd 64
            sound DUKE_LONGTERM_PAIN5
          else ifrnd 64
            sound DUKE_LONGTERM_PAIN6
          else ifrnd 64
            sound DUKE_LONGTERM_PAIN7
          else
            sound DUKE_LONGTERM_PAIN8
        }
*/
ends


// WALK STATES

state botwalkhitstate

state botshootstate

// spawn BLOOD

ifdead
  {
  ifspritepal 21 { state miniboss break } else soundonce SANTA_DEAD

  ifwasweapon FREEZEBLAST
    {
      spritepal 1
      strength 0
      move 0
      action ABOTWALKFROZEN
      sound SOMETHINGFROZE
      break
    }
    else
  ifwasweapon GROWSPARK
    {
      cstat 0
      sound ACTOR_GROWING
      ai AIBOTWALKGROW
      break
    }
    else
  ifwasweapon RADIUSEXPLOSION
    {
//      state standard_pjibs
//      state standard_pjibs
//      state standard_pjibs
      state standard_pjibs
      sound SQUISH2
      addkills 1
      endofgame 52
      killit
    }
    else
  ifwasweapon RPG
    {
//      state standard_pjibs
//      state standard_pjibs
//      state standard_pjibs
      state standard_pjibs
      sound SQUISH2
      addkills 1
      endofgame 52
      killit
    }
    else
    {
      ai AIBOTWALKDYING
      break
    }
   }
  else
  {
  state dudehurt

  ifwasweapon SHRINKSPARK
    {
      ifai AIBOTWALKSTEROIDS nullop else
       {
         ai AIBOTWALKSHRINK
         break
       }
    }
  }

ends

state botwalkdyingstate
  fall
  strength 0

  ifactioncount 5
    {
      action ABOTWDEAD
      endofgame 52
      killit
    }
ends

state botwalkseekstate

ifcansee
  {
    ai AIBOTWALKHUNT
    break
  }

ifgapzl 100
  {
  }
  else
  {
  ifnotmoving
    {
    ifrnd 4 operate
    ifpdistl 8000
      {
      ai AIFLYUPMOMENT
      cactor SOBBOTFLY
      break
      }
      else
      ai AIBOTWALKJUMP1
    break
    }
  }

ends

state botwalkjumpstate

ifrnd 4
  ifpdistl 6000
    state botquickshootstate

ifai AIBOTWALKJUMP1
  {
  ifactioncount 2
    {
    ai AIBOTWALKJUMP2
    break
    }
  }

ifai AIBOTWALKJUMP2
  {
  ifactioncount 1
    {
    state botshootstate
    iffloordistl 16
      {
      sound DUKE_LAND
      operate
      ai AIBOTWALKHUNT
      }
    }
  }

ends

state botwalkhuntstate

state botshootstate

ifrnd 3
  {
  ai AIBOTWALKSTRJUMP1S
  count 10
  }

ifcansee
  {
  ifpdistl 1024
    {
    ifrnd 24
      {
      ifp pdead
        nullop
        else
        ai AIBOTWALKKICK
      break
      }
    }
  }
  else
  {
  ifphealthl 50
    ifrnd 64
      ifpdistl 8000
        {
          ifrnd 80
            sound SANTA_TRASH1
        }

  ifrnd 128
    {
    ifp phigher
      {
      ai AIFLYUPMOMENT
      cactor SOBBOTFLY
      break
      }
      else
      {
      ai AIBOTWALKSTRAIGHT
      break
      }
    }
    else
    {
    ai AIBOTWALKSTRAIGHT
    break
    }
  ai AIBOTWALKSEEK
  break
  }

ifrnd 128
  ifnotmoving
    {
    ifrnd 8
      operate
    ai AIBOTWALKJUMP1
    break
    }

ends

state botwalkkickstate

ifactioncount 2
  {
  resetactioncount
  ifpdistl 1024
    {
    ifp pdead
      {
      ai AIBOTWALKHUNT
      break
      }
    ifp pfacing
      ifrnd 16
        {
          globalsound SANTA_TRASH8
        }
    sound KICK_HIT

    ifspritepal 21 addphealth -1 else addphealth -6
      
    state dukehurt
    }
    else
    {
    ai AIBOTWALKHUNT
    break
    }

  ifrnd 50
    {
    ai AIBOTWALKHUNT
    break
    }
  }

ends

state botwalkstraightjumpstate

ifai AIBOTWALKSTRJUMP1
  {
  ifcount 20
    {
    ai AIBOTWALKSTRJUMP2
    break
    }
  }
  else
ifai AIBOTWALKSTRJUMP2
  {
  ifcount 18
    {
    iffloordistl 16
      {
      operate
      ifrnd 128
      sound DUKE_LAND
      ifrnd 200
        ai AIBOTWALKSTRAIGHT
        else
        ai AIBOTWALKSEEK
      }
    }
  }

ends

state botjumpshootstate

ifai AIBOTWALKSTRJUMP1S
  {
  state botshootstate

  ifcount 20
    {
    ai AIBOTWALKSTRJUMP2S
    resetactioncount
    count 10
    break
    }

  }
  else
ifai AIBOTWALKSTRJUMP2S
  {
  ifcount 18
    {
    iffloordistl 16
      {
      operate
      sound DUKE_LAND
      ai AIBOTWALKHUNT
      count 10
      }
    }
  }


ends


state botwalkstraightstate

ifpdistg 20000
  ai AIBOTWALKSEEK

ifcansee
  {
  ifnotmoving
    {
    ai AIBOTWALKSTRJUMP1
    break
    }
  ifrnd 64
    ai AIBOTWALKHUNT
  }
  else
  {
  ifrnd 128
    ifnotmoving
      ai AIBOTWALKSTRJUMP1
  }

ends

state steroidswalk

soundonce DUKE_HARTBEAT
spawn FRAMEEFFECT1

ifhitweapon
  {
  state botwalkhitstate
  break
  }

ifcount 150
  {
  ai AIBOTWALKHUNT
  }

ifcount 34
  {
  }
  else
  {
  sizeto 42 36
  }

ends

state botletfallstate

ifactioncount 5
  {
  }
  else
  ifactioncount 6
    {
    soundonce SANTA_TRASH7
    }

ifcansee
  {
  ai AIFLYWAIT
  cactor SOBBOTFLY
  break
  }
  else
  {
  iffloordistl 50
    {
    ai AIFLYWAIT
    cactor SOBBOTFLY
    break
    }
  }

ends

useractor enemy SOBBOTWALK SOBBOTSTRENGTH ABOTWALK
   state checksquished

  ifai 0
    {

      ifspawnedby RECON
        {
          spawn PIGCOP
          killit
        }

  ifcansee nullop else break
  
  sizeat 42 36
  cstat 257

  ai AIBOTWALKSEEK

  ifspritepal 21
    {
      strength MINIBOSSSTRENGTH
      ifrnd 64 soundonce SANTA_TRASH9
    }
    else spritepal 0

  sound INSERT_CLIP
  break
  }


   fall
   sleeptime 300

ifaction ABOTWDEAD break
  else
ifaction ABOTWALKFROZEN
  {

  ifcount THAWTIME
    {
    ai AIBOTWALKHUNT
    getlastpal
    }
    else
    ifcount FROZENDRIPTIME
      {
      ifactioncount 26
        {
        spawn WATERDRIP
        resetactioncount
        }
      }
  ifhitweapon
    {
    ifwasweapon FREEZEBLAST
      {
      strength 0
      break
      }
    addkills 1

    ifrnd 84
      spawn BLOODPOOL
    lotsofglass 30
    spawn ATOMICHEALTH
    sound GLASS_BREAKING
    ifspritepal 21
      {
        state miniboss
        break
      }
    endofgame 52
    killit
    }
  ifp pfacing
    ifpdistl FROZENQUICKKICKDIST
      pkick
  break
  }
  else
ifai AIBOTWALKSTEROIDS
  {
    state steroidswalk
    break
  }
  else
ifai AIBOTWALKGROW
  {
  ifcount 32
    {
    guts JIBS4 24
    guts JIBS6 28
    addkills 1
    sound SQUISH2
    sound PIPEBOMB_EXPLODE
    hitradius 2048 60 70 80 90
    spawn BLOODPOOL
    spawn EXPLOSION2
    ifspritepal 21
      {
        state miniboss
        break
      }
    endofgame 52
    killit
    }
    else
    {
    sizeto MAXXSTRETCH MAXYSTRETCH
    break
    }
  break
  }
  else
ifai AIBOTWALKSHRINK
  {

  ifcount SHRUNKDONECOUNT
    ai AIBOTWALKHUNT
    else
    ifcount SHRUNKCOUNT
      {
      spawn FRAMEEFFECT1
      sizeto 42 36
      }
      else
      {
      ifcount 31
        nullop
        else
        {
        ifcount 30
          {
          ifrnd 255
            {
            sound DUKE_TAKEPILLS
            ai AIBOTWALKSTEROIDS
            break
            }
          }
        }
      ifcount 32
        {
        ifpdistl SQUISHABLEDISTANCE
          {
          state standard_pjibs
          sound SQUISH2
          spawn BLOODPOOL
          pkick
//          state headhitstate
//          state headhitstate
//          state headhitstate
          state headhitstate
    ifspritepal 21
      {
        state miniboss
        break
      }
    else
      {
          ifrnd 128
              sound SANTA_DEAD
              else
              sound SANTA_TRASH9
      }
          endofgame 52
          killit
          }
        }
        else
        {
        sizeto MINXSTRETCH MINYSTRETCH
        spawn FRAMEEFFECT1
        }
      }

  break
  }
  else
ifai AIBOTWALKDYING
  {
  state botwalkdyingstate
  break
  }
  else
  ifrnd 1
    operate

ifhitweapon
  {
  state botwalkhitstate
  break
  }
  else
ifai AIWALKFALLHARD
  {
  iffloordistl 16
    {
    ai AIBOTWALKHUNT
    }
    else
    {
    break
    }
  }
  else
  {
  ifai AIWALKFALL
    {
    state botshootstate
    iffloordistl 16
      {
      ai AIBOTWALKHUNT
      }
      else
      {
      break
      }
    }
  }

ifp pshrunk
  state stomphisfreakingass

iffloordistl 550
  nullop
  else
  {
  ai AIFLYWAIT
  cactor SOBBOTFLY
  }

ifonwater
  {
  }
  else
  {
  ifp pjetpack
    ifp phigher
      ifcansee
        {
        ai AIFLYWAIT
        cactor SOBBOTFLY
        }
  }

ifp phigher
  {
  ifrnd 1
    {
    ifrnd 196
      {
      ai AIFLYWAIT
      cactor SOBBOTFLY
      }
    }
  }

ifai AIWALKWAIT
  {
  ai AIBOTWALKSEEK
  break
  }
  else
ifai AIBOTWALKSEEK
  state botwalkseekstate
    else
ifai AIBOTWALKHUNT
  state botwalkhuntstate
    else
ifai AIBOTWALKJUMP1
  state botwalkjumpstate
    else
ifai AIBOTWALKJUMP2
  state botwalkjumpstate
    else
ifai AIBOTWALKKICK
  state botwalkkickstate
    else
ifai AIBOTWALKSTRAIGHT
  state botwalkstraightstate
    else
ifai AIBOTWALKSTRJUMP1
  state botwalkstraightjumpstate
    else
ifai AIBOTWALKSTRJUMP2
  state botwalkstraightjumpstate
    else
ifai AIBOTLETFALL
  state botletfallstate
    else
ifai AIBOTWALKSTRJUMP1S
  state botjumpshootstate
    else
ifai AIBOTWALKSTRJUMP2S
  state botjumpshootstate


enda

state botflydyingstate

fall

strength 0
cstat 0

ifactioncount 5
  {
  action ABOTFLYDEAD
    ifspritepal 21
      {
        state miniboss
        break
      }
  endofgame 52
  }

ends

state choosedodgefly

ifceilingdistl 100
  {
  ifai AIBOTFLYDODGEDOWN
    nullop
    else
    ai AIBOTFLYDODGEDOWN
  }
  else
  {
  ifai AIBOTFLYDODGEUP
    nullop
    else
    ai AIBOTFLYDODGEUP
  }

ends


state botflydodgestate

ifcanshoottarget
  state botshootstate

ifcansee
  {
  ifrnd 2
    {
    ifceilingdistl 100
      ai AIBOTFLYDODGEDOWN
      else
      ai AIBOTFLYDODGEUP
    }
  }
  else
  {
  ai AIBOTFLYSEEKUP
  }

ifcount 10
  ai AIBOTFLYDOWN

ends

state botflyhitstate

state botshootstate

// spawn BLOOD

ifdead
  {
  ifspritepal 21 { state miniboss break } else sound SANTA_DEAD

  ifwasweapon FREEZEBLAST
    {
    spritepal 1
    strength 0
    move 0
    action ABOTFLYFROZEN
    sound SOMETHINGFROZE
    break
    }
    else
  ifwasweapon GROWSPARK
    {
    cstat 0
    sound ACTOR_GROWING
    ai AIBOTFLYGROW
    break
    }
    else
  ifwasweapon RADIUSEXPLOSION
    {
//    state standard_pjibs
//    state standard_pjibs
//    state standard_pjibs
    state standard_pjibs
    sound SQUISH2
    addkills 1
    endofgame 52
    killit
    }
    else
  ifwasweapon RPG
    {
//    state standard_pjibs
//    state standard_pjibs
//    state standard_pjibs
    state standard_pjibs
    sound SQUISH2
    addkills 1
    endofgame 52
    killit
    }
    else
    {
    ai AIBOTFLYDYING
    }

  }
  else
  {
  state dudehurt

  ifwasweapon SHRINKSPARK
    {
    ifai AIBOTFLYSTEROIDS
       {
       }
       else
       {
       ai AIBOTFLYSHRINK
       break
       }
    }
  }

ends

state botflyseekupstate

ifcansee
  {
  ai AIBOTFLYUP
  break
  }

ifp phigher
  {
  }
  else
  {
  ai AIBOTFLYSEEKDOWN
  break
  }

ends

state botflyseekdownstate

ifcansee
  {
  ai AIBOTFLYDOWN
  break
  }
  else
  {
  ifp phigher
    {
    }
    else
    {
    ai AIBOTLETFALL
    cactor SOBBOTWALK
    }
  }

ifp phigher
  {
  ai AIBOTFLYSEEKUP
  break
  }

ends

state botflydownstate

state botshootstate

ifrnd 16
  {
  ifp phigher
    {
    ai AIBOTFLYUP
    break
    }
  }

ifcansee
  {
  }
  else
  {
  ai AIBOTFLYSTRAIGHT
  break
  }

ends

state botflyupstate

state botshootstate

ifrnd 16
  {
  ifp phigher
    nullop
    else
    {
    ai AIBOTFLYDOWN
    break
    }
  }

ifcansee
  {
  }
  else
  {
  ai AIBOTFLYSTRAIGHT
  }

ends

state botflyupmomentstate

ifcansee
  {
  ifcount 10 ai AIBOTFLYUP
  break
  }
  else
  {
  ifcount 50
    {
    ai AIBOTLETFALL
    cactor SOBBOTWALK
    }
  }

ends

state botflyholdstate

state botshootstate

ifcount 50
  {
  ai AIBOTFLYUP
  }

ends

state botflystraightstate

ifpdistg 20000
  ai AIBOTFLYSEEKDOWN

ifcansee
  {
  ai AIBOTFLYDOWN
  }
  else
  {
  ifrnd 128
    ifnotmoving
      ai AIFLYUPMOMENT
  }

ends

state steroidsfly

soundonce DUKE_HARTBEAT
spawn FRAMEEFFECT1

ifcount 100
  {
  ai AIBOTFLYUP
  }

ifcount 34
  {
  }
  else
  {
  sizeto 42 36
  }

ifhitweapon
  {
  state botflyhitstate
  break
  }

ends

// FLY ACTOR

useractor enemy SOBBOTFLY SOBBOTSTRENGTH ABOTFLY
state checksquished

ifai 0
  {
  ifcansee nullop else { break }
  ifspritepal 21 strength MINIBOSSSTRENGTH
  sizeat 42 36
  cstat 257
  sound INSERT_CLIP
  ai AIBOTFLYSEEKDOWN
  spritepal 0
  break
  }


fall

sleeptime 300

ifaction ABOTFLYDEAD
  break
  else
ifaction ABOTFLYFROZEN
  {
  ifcount THAWTIME
    {
    ai AIBOTFLYUP
    getlastpal
    }
    else
    ifcount FROZENDRIPTIME
      {
      ifactioncount 26
        {
        spawn WATERDRIP
        resetactioncount
        }
      }
  ifhitweapon
    {
    ifwasweapon FREEZEBLAST
      {
      strength 0
      break
      }
    addkills 1

    ifrnd 84
      spawn BLOODPOOL

    lotsofglass 30
    spawn ATOMICHEALTH
    sound GLASS_BREAKING
    ifspritepal 21
      {
        state miniboss
        break
      }
    endofgame 52
    killit
    }

  ifp pfacing
    ifpdistl FROZENQUICKKICKDIST
      pkick
  break
  }
  else
ifai AIBOTFLYSTEROIDS
  {
  soundonce DUKE_JETPACK_IDLE
  state steroidsfly
  break
  }
  else
ifai AIBOTFLYGROW
  {
  ifcount 32
    {
    guts JIBS4 24
    guts JIBS6 28
    addkills 1
    sound SQUISH2
    sound PIPEBOMB_EXPLODE
    hitradius 2048 60 70 80 90
    spawn BLOODPOOL
    spawn EXPLOSION2
    ifspritepal 21
      {
        state miniboss
        break
      }
    endofgame 52
    killit
    }
    else
    {
    sizeto MAXXSTRETCH MAXYSTRETCH
    break
    }
  break
  }
  else
ifai AIBOTFLYSHRINK
  {
  ifcount SHRUNKDONECOUNT
    ai AIBOTFLYUP
    else
    ifcount SHRUNKCOUNT
      {
      spawn FRAMEEFFECT1
      sizeto 42 36
      }
      else
      {
      ifcount 31
        nullop
        else
        {
        ifcount 30
          {
          ifrnd 255
            {
            sound DUKE_TAKEPILLS
            ai AIBOTFLYSTEROIDS
            break
            }
          }
        }
      ifcount 32
        {

        ifpdistl SQUISHABLEDISTANCE
          {
//          state standard_pjibs
//          state standard_pjibs
//          state standard_pjibs
          state standard_pjibs
          sound SQUISH2
          spawn BLOODPOOL
          pkick
//          state headhitstate
//          state headhitstate
//          state headhitstate
          state headhitstate
    ifspritepal 21
      {
        state miniboss
        break
      }
    else
      {
          ifrnd 128
              sound SANTA_DEAD
              else
              sound SANTA_TRASH9
      }
          endofgame 52
          killit
          }
        }
        else
        {
        sizeto MINXSTRETCH MINYSTRETCH
        spawn FRAMEEFFECT1
        }
      }
  break
  }

soundonce DUKE_JETPACK_IDLE

ifai AIBOTFLYDYING
  {
  state botflydyingstate
  break
  }

ifhitweapon
  state botflyhitstate

ifrnd 2 operate

ifp pshrunk
  {
  state stomphisfreakingass
  }

ifrnd 25
  {
  ifp phigher
    {
    }
    else
    {
    ifp ponground
      {
      iffloordistl 200
        {
        sound DUKE_JETPACK_OFF
        iffloordistl 100 ai AIWALKFALL else ai AIWALKFALLHARD
        cactor SOBBOTWALK
        }
      }
    }
  }

ifai AIFLYWAIT
  {
  move 0
  sound DUKE_JETPACK_ON
  ai AIBOTFLYSEEKDOWN
  }

ifai AIBOTFLYSEEKUP
  state botflyseekupstate
    else
ifai AIBOTFLYSEEKDOWN
  state botflyseekdownstate
    else
ifai AIBOTFLYDOWN
  state botflydownstate
    else
ifai AIBOTFLYUP
  state botflyupstate
    else
ifai AIBOTFLYDODGEUP
  state botflydodgestate
    else
ifai AIBOTFLYDODGEDOWN
  state botflydodgestate
    else
ifai AIFLYUPMOMENT
  state botflyupmomentstate
    else
ifai AIFLYUPHOLD
  state botflyholdstate
    else
ifai AIBOTFLYSTRAIGHT
  state botflystraightstate

break
enda



action  AELFUZIWALK    0 4 5 1 30
action  AELFUZIRUN     0 4 5 1 15
action  AELFUZIFROZEN  0 1 5 1
action  AELFUZIGROW    0 1 5 1
action  AELFUZIJUMP  266 2 5 1 15
action  AELFUZIFALL  276 1 5 1 1
action  AELFUZIDYING 260 5 1 1 25
action  AELFUZIDEAD  265 1 1 1 1
action  AELFUZISHOOT 281 2 5 1

move    elfuziwalkspeed 100
move    elfuzirunspeed  200
move    elfuzijumpspeed 150 -200
move    elfuzifallspeed 150 150
move    elfuzistopped
move    elfuzishrink1    80

ai      AIELFUZISHRINKING AELFUZIWALK   elfuzishrink1  fleeenemy
ai      AIELFUZIDYING     AELFUZIDYING  elfuzistopped faceplayer
ai      AIELFUZISEEKING   AELFUZIWALK   elfuziwalkspeed seekplayer
ai      AIELFUZIHUNTING   AELFUZIRUN    elfuzirunspeed faceplayer
ai      AIELFUZIJUMPING   AELFUZIJUMP   elfuzijumpspeed geth getv
ai      AIELFUZIFALLING   AELFUZIFALL   elfuzifallspeed geth getv
ai      AIELFUZISHOOTING  AELFUZISHOOT  elfuzistopped faceplayer
ai      AIELFUZIIQ        AELFUZIRUN    elfuzirunspeed geth getv
ai      AIELFUZIGROW      AELFUZIGROW   elfuzistopped geth getv

state elfuziseekstate

ifcansee
  {
  ifp pdead break

  ifpdistl 15000
    {
    ifrnd 16
      {
      ai AIELFUZIHUNTING
      }
    }
  }

ends

state elfuzihuntstate

ifp pdead ai AIELFUZISEEKING


ifcansee
  {
  ifpdistl 2000
    {
    ai AIELFUZISHOOTING
    break
    }
  ifrnd 64 ifnotmoving
    {
    ai AIELFUZIJUMPING
    break
    }

  ifrnd 7
    ifpdistl 8192
      {
      ai AIELFUZISHOOTING
      }
  }
  else
  {
  ifrnd 64 ai AIELFUZIIQ
  }

ends

state elfuziiqstate

ifcansee
  {
  ai AIELFUZIHUNTING
  }
  else
  {
  ifrnd 16
    ifnotmoving
      {
      ai AIELFUZISEEKING
      }
  }

ends

state elfuzishootstate

ifcansee
  {
  ifp pdead ai AIELFUZISEEKING

  ifactioncount 3
    {
    ifspritepal 0
    {
    sound CHAINGUN_FIRE
    shoot CHAINGUN
    }
    else {
    ifrnd 80
      {
      sound SHRINKER_FIRE
      shoot SHRINKER
      } }
    resetactioncount
    }
  ifrnd 4
    ai AIELFUZIHUNTING
  }
  else
  {
  ai AIELFUZIIQ
  }

ends

state elfuzijumpingstate

ifactioncount 2
  ai AIELFUZIFALLING

ends

state elfuzifallingstate

iffloordistl 5
  ai AIELFUZIHUNTING

ends

action NONEACTION 0 1 1 1 1

move forwardspeed 1500
// ai AIMOVEFORWARD NONEACTION forwardspeed faceplayer

useractor notenemy SPECBLOOD 0 // Hendricks266 fixed this actor. Before this fix, this line said "useractor SPECBLOOD 0", and the code was all messed up.
  cstat 32768
  // sizeat 42 36
  // sizeat 32 27
  sizeat 1 1
  // ai AIMOVEFORWARD
  spawn BLOOD
  killit
enda



state elfuzihitstate
spawn BLOOD // Hendricks266 fixed this bug. Before this fix, this line said "spawn SPECBLOOD".  SPECBLOOD is a piece of shit.
state random_wall_jibs

ifdead
  {
  ifrnd 128
    {
    spawn XMASPRESENT2
    }
  ifwasweapon GROWSPARK
    {
    sound ACTOR_GROWING
    ai AIELFUZIGROW
    break
    }

  addkills 1
  state random_wall_jibs

  ifwasweapon FREEZEBLAST
    {
    sound SOMETHINGFROZE
    spritepal 1
    move 0
    action AELFUZIFROZEN
    strength 0
    break
    }
  ifwasweapon RADIUSEXPLOSION
    {
    sound SQUISH2
//    state standard_jibs
//    state standard_jibs
    state standard_jibs
    killit
    }
    else
  ifwasweapon RPG
    {
    sound SQUISH2
//    state standard_jibs
//    state standard_jibs
    state standard_jibs
    killit
    }
    else
    ai AIELFUZIDYING

  }
  else
  {
//  state random_wall_jibs
  ifwasweapon SHRINKSPARK
    {
    sound ACTOR_SHRINKING
    ai AIELFUZISHRINKING
    }
    else
    ifwasweapon GROWSPARK
      sound EXPANDERHIT
      else
      ifrnd 32
        ai AIELFUZISHOOTING
  }
ends

state elfuzishrinkstate

ifcount SHRUNKDONECOUNT
  ai AIELFUZISEEKING
  else
  ifcount SHRUNKCOUNT
//    sizeto 48 40
      sizeto 32 27
    else
    state genericshrunkcode

ends

state elfuzidyingstate

ifactioncount 5
  {
  ifrnd 64
    spawn BLOODPOOL
  state rf
  iffloordistl 8
    sound THUD
  action AELFUZIDEAD
  move elfuzistopped
  break
  }

ends

useractor enemy ELFUZI ELFUZISTRENGTH
fall

state checksquished

ifaction AELFUZIDEAD
  {
  ifrespawn
    ifcount RESPAWNACTORTIME
      {
      spawn TRANSPORTERSTAR
      cstat 257
      strength ELFUZISTRENGTH
      ai AIELFUZISEEKING
      }
      else
      {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
          {
          sound SQUISH2
//          state standard_jibs
//          state standard_jibs
          state standard_jibs
          killit
          }
      break
      }
  break
  }
  else
ifaction AELFUZIFROZEN
  {
  ifcount THAWTIME
    {
    ai AIELFUZISEEKING
    getlastpal
    }
    else
    ifcount FROZENDRIPTIME
      ifrnd 8
        spawn WATERDRIP

  ifhitweapon
    {
    ifwasweapon FREEZEBLAST
      {
      strength 0
      break
      }
    addkills 1
    lotsofglass 30
    ifrnd 84 spawn BLOODPOOL
    sound GLASS_BREAKING
    killit
    }
  ifp pfacing
    ifpdistl FROZENQUICKKICKDIST
      pkick
  break
  }
  else
  ifai AIELFUZIDYING
    state elfuzidyingstate

ifai AIELFUZISHRINKING nullop else { ifai AIELFUZIGROW nullop else { ifhitweapon state elfuzihitstate } }

ifai 0
  {
  ai AIELFUZISEEKING
  cstat 257
  // clipdist 32
//  sizeat 42 36
  sizeat 32 27
  ifspritepal 0 nullop else
    {
  ifrnd 72
    strength ELFUZIALTSTR
  else
    strength ELFUZISTRENGTH
    }
  }
  else

      ifai AIELFUZISEEKING state elfuziseekstate
 else ifai AIELFUZIHUNTING state elfuzihuntstate
 else ifai AIELFUZIIQ state elfuziiqstate
 else ifai AIELFUZISHOOTING state elfuzishootstate
 else ifai AIELFUZIJUMPING state elfuzijumpingstate
 else ifai AIELFUZIFALLING state elfuzifallingstate
 else ifai AIELFUZIGROW state genericgrowcode
      ifai AIELFUZISHRINKING state elfuzishrinkstate
enda

useractor enemystayput ELFUZISTAYPUT ELFUZISTRENGTH
   cstat 257
   // clipdist 32
   ai AIELFUZISEEKING
   cactor ELFUZI
enda

action  AELFGUNWALK    0 4 5 1 20
action  AELFGUNRUN     0 4 5 1 10
action  AELFGUNFROZEN  0 1 5 1
action  AELFGUNGROW    0 1 5 1
action  AELFGUNDYING  35 4 1 1 25
action  AELFGUNDEAD   39 1 1 1 1
action  AELFGUNSHOOT  20 3 5 1 40

move    elfgunwalkspeed 70
move    elfgunrunspeed  110
move    elfgunstopped
move    elfgunshrink1    80

ai      AIELFGUNSHRINKING AELFGUNWALK   elfgunshrink1  fleeenemy
ai      AIELFGUNDYING     AELFGUNDYING  elfgunstopped faceplayer
ai      AIELFGUNSEEKING   AELFGUNWALK   elfgunwalkspeed seekplayer
ai      AIELFGUNHUNTING   AELFGUNRUN    elfgunrunspeed faceplayer
ai      AIELFGUNSHOOTING  AELFGUNSHOOT  elfgunstopped faceplayer
ai      AIELFGUNIQ        AELFGUNRUN    elfgunrunspeed geth getv
ai      AIELFGUNGROW      AELFGUNGROW   elfgunstopped geth getv

state elfgunseekstate

ifcansee
  {
  ifp pdead break

  ifpdistl 15000
    {
    ifrnd 16
      {
      ai AIELFGUNHUNTING
      }
    }
  }

ends

state elfgunhuntstate
   ifp pdead ai AIELFGUNSEEKING

   ifcansee
     {
       ifpdistl 2000
         {
           ai AIELFGUNSHOOTING
           break
         }
     }

  ifrnd 7 
    {
      ifpdistl 8192 ai AIELFGUNSHOOTING
    }
  else ifrnd 48 ai AIELFGUNIQ
ends

state elfguniqstate
   ifcansee ai AIELFGUNHUNTING
  else
  {
  ifrnd 16
    ifnotmoving
      ai AIELFGUNSEEKING
  }
ends

state elfgunshootstate

ifcansee
  {
  ifp pdead ai AIELFGUNSEEKING

  ifcount 20
    {
    ifcount 29
      nullop
      else
      {
      ifcount 28
        {
        sound SHOTGUN_COCK
        }
      }
    }
    else
    {
    ifcount 19
      {
      sound SHOTGUN_FIRE
      shoot SHOTGUN
      shoot SHOTGUN
      shoot SHOTGUN
      shoot SHOTGUN
      shoot SHOTGUN
      }
    }

  ifactioncount 3
    {
    resetcount
    resetactioncount
    ifrnd 64
      ai AIELFGUNHUNTING
    }
  }
  else ai AIELFGUNIQ

ends

state elfgunhitstate
   spawn BLOOD

state random_wall_jibs

ifdead
  {
  state random_wall_jibs
  ifrnd 128
    {
    spawn XMASPRESENT
    }
  ifwasweapon GROWSPARK
    {
    sound ACTOR_GROWING
    ai AIELFGUNGROW
    break
    }

  addkills 1

  ifwasweapon FREEZEBLAST
    {
    sound SOMETHINGFROZE
    spritepal 1
    move 0
    action AELFGUNFROZEN
    strength 0
    break
    }
  ifwasweapon RADIUSEXPLOSION
    {
    sound SQUISH2
//    state standard_jibs
//    state standard_jibs
    state standard_jibs
    killit
    }
    else
  ifwasweapon RPG
    {
    sound SQUISH2
//    state standard_jibs
//    state standard_jibs
    state standard_jibs
    killit
    }
    else
    ai AIELFGUNDYING

  }
  else
  {
  state random_wall_jibs
  ifwasweapon SHRINKSPARK
    {
    sound ACTOR_SHRINKING
    ai AIELFGUNSHRINKING
    }
    else
    ifwasweapon GROWSPARK
      sound EXPANDERHIT
      else
      ifrnd 32
        ai AIELFGUNSHOOTING
  }
ends

state elfgunshrinkstate

ifcount SHRUNKDONECOUNT
  ai AIELFGUNSEEKING
  else
  ifcount SHRUNKCOUNT
//    sizeto 48 40
    sizeto 32 27
    else
    state genericshrunkcode

ends

state elfgundyingstate

ifactioncount 4
  {
  ifrnd 64
    spawn BLOODPOOL
  state rf
  iffloordistl 8
    sound THUD
  action AELFGUNDEAD
  move elfgunstopped
  break
  }

ends

useractor enemy ELFGUN ELFGUNSTRENGTH
fall
state checksquished

ifaction AELFGUNDEAD
  {
  ifrespawn
    ifcount RESPAWNACTORTIME
      {
      spawn TRANSPORTERSTAR
      cstat 257
      strength ELFGUNSTRENGTH
      ai AIELFGUNSEEKING
      }
      else
      {
      strength 0
      ifhitweapon
        ifwasweapon RADIUSEXPLOSION
          {
          sound SQUISH2
//          state standard_jibs
//          state standard_jibs
          state standard_jibs
          killit
          }
      break
      }
  break
  }
  else
ifaction AELFGUNFROZEN
  {
  ifcount THAWTIME
    {
    ai AIELFGUNSEEKING
    getlastpal
    }
    else
    ifcount FROZENDRIPTIME
      ifrnd 8
        spawn WATERDRIP

  ifhitweapon
    { // state elfgunhitstate
    ifwasweapon FREEZEBLAST
      {
      strength 0
      break
      }
    addkills 1
    lotsofglass 30
    ifrnd 84 spawn BLOODPOOL
    sound GLASS_BREAKING
    killit
    }
  ifp pfacing
    ifpdistl FROZENQUICKKICKDIST
      pkick
  break
  }
  else
  ifai AIELFGUNDYING
    state elfgundyingstate

ifai AIELFGUNSHRINKING nullop else { ifai AIELFGUNGROW nullop else { ifhitweapon { state elfgunhitstate } } }

ifai 0
  {
  ai AIELFGUNSEEKING
  cstat 257
  // clipdist 32
//  sizeat 42 36
  sizeat 32 27
  strength ELFGUNSTRENGTH
  }
  else

ifai AIELFGUNSEEKING { state elfgunseekstate } else
ifai AIELFGUNHUNTING { state elfgunhuntstate } else
ifai AIELFGUNIQ { state elfguniqstate } else
ifai AIELFGUNSHOOTING { state elfgunshootstate } else
ifai AIELFGUNGROW { state genericgrowcode }
ifai AIELFGUNSHRINKING { state elfgunshrinkstate }

break
enda

useractor enemystayput ELFGUNSTAYPUT ELFGUNSTRENGTH
ai AIELFGUNSEEKING
cstat 257
// clipdist 32
cactor ELFGUN
break
enda

state present
  fall
  sizeat 20 20
  cstat 257
  clipdist 16
ends

state present1
  ifp pshrunk nullop else
  ifp palive
    ifcount 6
      ifpdistl RETRIEVEDISTANCE
        ifcanseetarget
          {
            sound RIP_PAPER
            ifvarl temp 1 { ifrnd 128 spawn SHIELD else spawn SIXPAK } else espawnvar temp
            killit
          }
ends

state present2
  ifp pshrunk nullop else
  ifp palive
    ifcount 6
      ifpdistl RETRIEVEDISTANCE
        ifcanseetarget
          {
            sound RIP_PAPER
            ifvarl temp 1 { ifrnd 128 spawn CHAINGUNSPRITE else spawn SHOTGUNSPRITE } else espawnvar temp
            killit
          }
ends


useractor notenemy XMASPRESENT 0 // ELFGUN
  state present
  state present1
enda

useractor notenemy XMASPRESENT2 0 // ELFUZI
  state present
  state present2
enda


action VOIDACTION
move NULLSPEED

ai MAKENOISE VOIDACTION NULLSPEED geth getv

useractor notenemy NOISEMAKER 999
  sizeat 48 40
  cstat 17

  ifai 0 ai MAKENOISE

  ifspritepal 21
    {
      ifhitweapon
        {
          ifcount 24
            {
              strength 999
              ifrnd 128 sound MOVIE2 else sound MOVIE3
              resetcount
            }
        }
    }
  else
   {
     hitradius 4096 1 1 1 1
   }
enda

useractor notenemy MALEGEEK 20
 ifhitweapon
   {
     guts JIBS6 3
     sound SQUISH2
     ifdead
       {
         stopsound MALECAROL
         guts JIBS6 2
         guts JIBS6 3
         guts JIBS6 4
         sound MALECAROL_DEAD
         globalsound MOUSEANNOY
         killit
       }
   }
 ifcount 225
   {
     sound MALECAROL
     resetcount
   }
enda

useractor notenemy FEMALEGEEK 20
 ifhitweapon
   {
     guts JIBS6 3
     sound SQUISH2
     ifdead
       {
         stopsound FEMALECAROL
         guts JIBS6 2
         guts JIBS6 3
         guts JIBS6 4
         sound FEMALECAROL_DEAD
         killit
       }
   }
 ifcount 225
   {
     sound FEMALECAROL
     resetcount
   }
enda

state mariocode
 cstat 257
 sizeat 62 62
ends

useractor notenemy NWMARIO 0
 state mariocode
enda

useractor notenemy NWMARIO2 0
 state mariocode
enda