Subversion Repositories vaca_plus

Rev

Rev 19 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
--------------------------------------------------------------------------------
Duke Caribbean: Life's A Beach
By Joris Weimar
© 1997 Sunstorm Interactive
--------------------------------------------------------------------------------
Duke Caribbean: Life's A Beach Plus
By Hendricks266
--------------------------------------------------------------------------------
// CON Files for the 'Duke Carribean Add-on' by SunStorm Interactive
//
// Actor - SEAGULL     - Sprite #1553 
// Actor - SEAGULLSHIT - Sprite #1638
//
// --- Resources ---
//
// Sounds:
// Sea Gull Hurt Sound    - GULLHURT.WAV
// Sea Gull Roam Sound    - GULLROAM.WAV
// Sea Gull Dying Sound   - GULLDIE.WAV
// Sea Gull Shit Sound    - GULLSHIT.WAV
//
// Art:
// 3 * 1 frame(s)         - Parallaxed Sea Gull
// 1 * 1 frame(s)         - Sea Gull Shit
*/

action SEAGULLFLY 0 3 1 1 20
action SEAGULLSTILL 1
action SEAGULLFROZEN 1

move SEAGULLSHRUNKSPEED 50
move SEAGULLSPEED 100
move SEAGULLATTACK 200
move SEAGULLSTOP

ai     AISEAGULLFLY SEAGULLFLY SEAGULLSPEED randomangle geth getv 
ai     AISEAGULLATTACK SEAGULLFLY SEAGULLATTACK faceplayer

ai     AISEAGULLFROZEN SEAGULLSTILL SEAGULLSTOP
ai     AISEAGULLSHRUNK SEAGULLFLY SEAGULLSHRUNKSPEED randomangle geth getv
ai     AISEAGULLGROW SEAGULLSTILL SEAGULLSTOP faceplayerslow

state seagullgrowstate
  ifcount 32
  {
    guts JIBS4 24
    guts JIBS6 28
    addkills 1
    sound SQUISHED
    sound PIPEBOMB_EXPLODE
    hitradius 2048 60 70 80 90
    spawn BLOODPOOL
    spawn EXPLOSION2
    killit
  }
  else
  {
    sizeto MAXXSTRETCH MAXYSTRETCH
    sizeto MAXXSTRETCH MAXYSTRETCH
    break
  }
ends

state seagullshrunkstate
  ifcount SHRUNKDONECOUNT
    ai AISEAGULLATTACK
  else
    ifcount SHRUNKCOUNT
      sizeto 48 40
  else
    state genericshrunkcode
ends

state SEAGULLFLYSTATE
  ifrnd 4 ai AISEAGULLFLY

  ifp pdead break

  ifrnd 1 sound SEAGULLROAM

 // ifrnd 32 spawn SEAGULLSHIT


  ifpdistl 8000
    {
      ifrnd 2
        ifp palive
          ai AISEAGULLATTACK
    }
  else
    {
      ifrnd 4
        ifp palive
          ai AISEAGULLATTACK
    }
ends

state SEAGULLATTACKSTATE
  ifp pdead ai AISEAGULLFLY

  ifrnd 2 sound SEAGULLROAM

  ifrnd 1 ifrnd 196 ai AISEAGULLFLY

  ifpdistl 2500
    {
      spawn SEAGULLSHIT
      ai AISEAGULLFLY
    }
ends

state seagullcode
  cstator 257

  ifai 0
  {
    ai AISEAGULLFLY
    
    getactor[THISACTOR].xrepeat vaca_x
    ifvare vaca_x 1
      sizeat 40 40
  }

  clipdist 80

    ifaction SEAGULLFROZEN
  {

    ifcount THAWTIME
    {
      ai AISEAGULLATTACK
      getlastpal
    }
    else
      ifcount FROZENDRIPTIME
    {
      ifactioncount 26
      {
        spawn WATERDRIP
        resetactioncount
      }
    }

    ifhitweapon
    {
      ifwasweapon FREEZEBLAST
      {
        strength 0
        break
      }
      addkills 1

      ifrnd 84
        spawn BLOODPOOL
      lotsofglass 30
      sound GLASS_BREAKING
      killit
    }
    ifp pfacing
      ifpdistl FROZENQUICKKICKDIST
        pkick

    iffloordistl 8
    {
      getsector[THISACTOR].floorpicnum vaca_temp
      switch vaca_temp
        case WATERTILE2 case 337 case 338
        case 3630 case 3631 case 3632 case 3633 case 3634 case 3635 case 3636 case 3637 case 3638 break
  
        default
          addkills 1
          ifrnd 84
            spawn BLOODPOOL
          lotsofglass 30
          sound GLASS_BREAKING
          killit
          break
      endswitch
    }

    fall

    break
  }

 ifhitweapon
   {
     sound SQUISHED
     ifdead
       {
         ifwasweapon GROWSPARK
           {
             cstat 0
             sound ACTOR_GROWING
             ai AISEAGULLGROW
             break
           }
    else ifwasweapon FREEZEBLAST
           {
             sound SOMETHINGFROZE
             spritepal 1
             move 0
             action SEAGULLFROZEN
             strength 0
             break
           }
         else
           {
             guts JIBS2 1
             guts JIBS3 1
             guts JIBS4 1
             guts JIBS5 1
             guts JIBS6 1
             ifrnd 6
             {
               guts JIBS1 1
               spawn BLOODPOOL
             }         // a badly drawn spine
             state jib_sounds
             sound SEAGULLDIE
             killit
           }
       }
     else
       {
         ifwasweapon SHRINKSPARK
           {
             sound ACTOR_SHRINKING
             ai AISEAGULLSHRUNK
           }
         else ifwasweapon GROWSPARK sound EXPANDERHIT

         guts JIBS6 1
         soundonce SEAGULLHURT
       }
   }

      ifai AISEAGULLFLY state SEAGULLFLYSTATE
 else ifai AISEAGULLATTACK state SEAGULLATTACKSTATE
 else ifai AISEAGULLGROW state seagullgrowstate
 else ifai AISEAGULLSHRUNK state seagullshrunkstate
ends

useractor enemy SEAGULL SEAGULLSTRENGTH SEAGULLFLY state seagullcode enda



action ASEAGULLSHIT -1 1 1 

move SEAGULLSHITSPEED 50 100 

ai AISEAGULLSHIT ASEAGULLSHIT SEAGULLSHITSPEED geth getv 

useractor notenemy SEAGULLSHIT 0
 sizeat 8 8
 ifai 0
   {
     sound SEAGULLSHITSOUND
     ai AISEAGULLSHIT
     action ASEAGULLSHIT
   }

 fall

 iffloordistl 10
   {
     ifpdistl 1900
       {
         addphealth SEAGULLSHITHURT
         globalsound DUKE_GRUNT
         palfrom 16 16
         state headhitstate
       }
     spritepal 7
     debris SCRAP3 4
     spawn WATERSPLASH2
     killit
   }
enda