Subversion Repositories vaca_plus

Rev

Rev 73 | 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
--------------------------------------------------------------------------------
*/

definegamefuncname 34 Sunglasses
definegamefuncname 35 Crate_of_Bananas
definegamefuncname 48 Hot_Sauce

include VacaDefs.con
include VacaUser.con
include VSounds.con
include VBeachBall.con

spritenoshade GROWAMMO

setgamename Duke Caribbean: Life's A Beach

gamevar vaca_temp 0 2
gamevar vaca_x 0 2
gamevar vaca_y 0 2
gamevar vaca_picnum 0 2

gamevar vaca_temp2 0 2
gamevar vaca_temp3 0 2
gamevar vaca_x2 0 2
gamevar vaca_y2 0 2
gamevar vaca_pose 0 0

// disable hardcoded Polymer dynamic lighting muzzle flashes
gamevar WEAPON1_FLASHCOLOR 0 1
gamevar WEAPON2_FLASHCOLOR 0 1
gamevar WEAPON3_FLASHCOLOR 0 1
gamevar WEAPON4_FLASHCOLOR 0 1
gamevar WEAPON7_FLASHCOLOR 0 1
gamevar WEAPON9_FLASHCOLOR 0 1

// disable voodoo ring glowing flag
// even though only the crystals are supposed to glow, bugs in EDuke32 have caused the frames to glow too
gamevar WEAPON6_FLAGS 0 1
gamevar WEAPON11_FLAGS 0 1

// disable visibility clearing
gamevar WEAPON1_FLAGS 33024 1
gamevar WEAPON2_FLAGS 1280 1
gamevar WEAPON3_FLAGS 74068 1
gamevar WEAPON4_FLAGS 256 1
gamevar WEAPON7_FLAGS 328 1
gamevar WEAPON9_FLAGS 65792 1

onevent EVENT_GETMENUTILE
 setvar RETURN 3281
endevent

/*
onevent EVENT_GETLOADTILE
 ifvare VOLUME 2
   {
     ifvare LEVEL 2 setvar RETURN 19665
     ifvare LEVEL 3 setvar RETURN 19665
   }
endevent

onevent EVENT_DISPLAYLOADINGSCREEN
 ifvare VOLUME 2
   {
     ifvare LEVEL 2 rotatesprite 160 100 65536 0 3706 0 0 2 0 0 xdim ydim
     ifvare LEVEL 3 rotatesprite 160 95 65536 0 3639 0 0 2 0 0 xdim ydim
   }
endevent
*/

state cutsceneambience
  getactor[THISACTOR].lotag vaca_temp

  switch vaca_temp

    case WIND_AMBIENCE
    case WIND_REPEAT
     setactor[THISACTOR].lotag WIND2
    break

  endswitch
ends

onevent EVENT_LOADACTOR
  getactor[THISACTOR].picnum vaca_picnum
  switch vaca_picnum

   case DRAGON sizeat 42 50 break
   case BEACHBABE1 sizeat 40 40 break
   case BEACHBALL sizeat 30 30 break
   case BEACHBATHER1 sizeat 42 40 break
   case SEAGULL sizeat 20 20 break

   case GROWSPRITEICON sizeat 28 28 break

   case 681 case 682 case 683 case 684 cactor CHAIR3 break

   case CAMERA1
    getactor[THISACTOR].cstat vaca_temp
    setvar vaca_temp2 0
    ifvarand vaca_temp 4 addvar vaca_temp2 4
    ifvarand vaca_temp 8 addvar vaca_temp2 8
    setactor[THISACTOR].cstat vaca_temp2
   break

   case MUSICANDSFX
    state cutsceneambience
   break

  endswitch
endevent

gamevar LOGO_FLAGS 767 0 // default; TEN screen reenabled

onevent EVENT_GAME
  getactor[THISACTOR].picnum vaca_picnum
  switch vaca_picnum

   case RPG
   case FREEZEBLAST
     setactor[THISACTOR].htflags 256
     break

   case FIRELASER
     spritepal 1
     setactor[THISACTOR].htflags 256
     break

/*
   case MUSICANDSFX
     ifsound WIND_AMBIENCE stopsound WIND_AMBIENCE
     ifsound WIND_REPEAT stopsound WIND_REPEAT
     break
*/

   case CHAIR3
     ifvare vaca_temp3 0
     {
       findnearsprite3d 1037 768 vaca_temp
       ifvarn vaca_temp -1
       {
          getactor[vaca_temp].x vaca_x2
          getactor[vaca_temp].y vaca_y2
          getactor[THISACTOR].x vaca_x
          getactor[THISACTOR].y vaca_y // gets the coordinates of the chair and table
          subvarvar vaca_x2 vaca_x
          subvarvar vaca_y2 vaca_y
          getangle vaca_temp2 vaca_x2 vaca_y2 // calculates the angle to face the table
          setactor[THISACTOR].ang vaca_temp2 // sets the angle
          setvar vaca_temp3 1
       }
       else setvar vaca_temp3 1
     }
     break

   case SHELL
   case SHOTGUNSHELL
     killit
     break

   case CAMERA1
     setactor[THISACTOR].cstat vaca_temp2
     break

   case SMALLSMOKE
     ifspawnedby RPG killit
     break

   case SHOTSPARK1
     ifspawnedby JIBS6 spritepal 1
     ifspawnedby BLOODSPLAT1 spritepal 1
     ifspawnedby SHOTSPARK1 spritepal 1
     ifspawnedby SHOTGUN spritepal 1
     ifspawnedby CHAINGUN spritepal 1
     ifspawnedby FIRELASER spritepal 1
     ifspawnedby APLAYER spritepal 1
     ifspawnedby RPG killit
     ifspritepal 1 setactor[THISACTOR].htflags 256 // replace with blue light placement code when available
     break

   case GROWAMMO
     setactor[THISACTOR].mdflags 16
     break

  endswitch
endevent

onevent EVENT_EGS
  getactor[THISACTOR].picnum vaca_picnum
  switch vaca_picnum

   case FREEZEAMMO
     spritepal 1
     spawn BLOODPOOL // spawn a water puddle as an added "cool" effect
     getlastpal
     break

   case WATERSPLASH2
     ifspawnedby SEAGULLSHIT spritepal 19
     break

  endswitch
endevent

state scrap3_colorchange
        ifspritepal 10 spritepal 2
   else ifspritepal 11 spritepal 8
   else ifspritepal 12 spritepal 0
   else ifspritepal 13 spritepal 0 // needs work
   else ifspritepal 14 spritepal 8
   else ifspritepal 15 spritepal 7 // needs work
   else ifspritepal 16 spritepal 1
   else ifspritepal 18 spritepal 0
   else ifspritepal 21 spritepal 2
   else ifspritepal 22 spritepal 8
   else ifspritepal 23 spritepal 7
   else spritepal 1 // This is so that the white SCRAP3 will turn the color of the object (chair, dragon) (approximately).
ends

onevent EVENT_KILLIT
 ifactor CHAIR3
   {
        state scrap3_colorchange
        debris SCRAP3 12
        getlastpal
        sound GLASS_HEAVYBREAK
        sound VENT_BUST
   }
endevent

// -----------------------------------------------------------------------------

state standard_bjibs
  guts JIBS2 1
  guts JIBS3 2
  guts JIBS4 3
  guts JIBS5 2
  guts JIBS6 3
  ifrnd 6
  {
    guts JIBS1 1
    spawn BLOODPOOL
  }         // a badly drawn spine
ends

state randgetweapsnds
    setvar vaca_temp2 0
    randvar vaca_temp2 2
    switch vaca_temp2
     case 0 globalsound DUKE_GETWEAPON1 break
     case 1 globalsound DUKE_GETWEAPON2 break
     case 2 globalsound DUKE_GETWEAPON4 break
    endswitch
ends

actor FIRSTGUNSPRITE
  fall
  ifmove RESPAWN_ACTOR_FLAG
    state respawnit
  else
    ifp pshrunk nullop
    else
      ifp palive
        ifpdistl RETRIEVEDISTANCE
          ifcount 6
            ifcanseetarget
      {
        ifgotweaponce 0
          break
        addweapon PISTOL_WEAPON 48
        quote 1118
        ifspawnedby FIRSTGUNSPRITE
          state getweaponcode
        else
          state quikweaponget
      }
enda

actor CRYSTALAMMO
  fall
  ifmove RESPAWN_ACTOR_FLAG
    state respawnit
  else
    ifp pshrunk nullop
    else
      ifp palive
        ifpdistl RETRIEVEDISTANCE
          ifcount 6
            ifcanseetarget
      {
        getplayer[THISACTOR].gotweapon SHRINKER_WEAPON vaca_temp2
        getplayer[THISACTOR].gotweapon GROW_WEAPON vaca_temp
        addammo SHRINKER_WEAPON CRYSTALAMMOAMOUNT
        ifvare vaca_temp2 0 ifvare vaca_temp 1 setplayer[THISACTOR].gotweapon SHRINKER_WEAPON 1

        quote 78
        ifspawnedby CRYSTALAMMO
          state getcode
        else
          state quikget
      }
enda

actor GROWAMMO
  fall
  ifmove RESPAWN_ACTOR_FLAG
    state respawnit
  else
    ifp pshrunk nullop
    else
      ifp palive
        ifpdistl RETRIEVEDISTANCE
          ifcount 6
            ifcanseetarget
      {
        getplayer[THISACTOR].gotweapon SHRINKER_WEAPON vaca_temp2
        getplayer[THISACTOR].gotweapon GROW_WEAPON vaca_temp
        addammo GROW_WEAPON GROWCRYSTALAMMOAMOUNT
        ifvare vaca_temp 0 ifvare vaca_temp2 1 setplayer[THISACTOR].gotweapon GROW_WEAPON 1

        quote 123
        ifspawnedby GROWAMMO
          state getcode
        else
          state quikget
      }


enda

actor SHRINKERSPRITE
  fall
  ifmove RESPAWN_ACTOR_FLAG
    state respawnit
  else
    ifp pshrunk nullop
    else
      ifp palive
        ifpdistl RETRIEVEDISTANCE
          ifcount 6
            ifcanseetarget
      {
        ifgotweaponce 0
          break
        getplayer[THISACTOR].gotweapon GROW_WEAPON vaca_temp
        addweapon SHRINKER_WEAPON 10
        ifvare vaca_temp 0 setplayer[THISACTOR].gotweapon GROW_WEAPON 0

        quote 60
        ifspawnedby SHRINKERSPRITE
          state getweaponcode
        else
          state quikweaponget
      }
enda

useractor notenemy GROWSPRITEICON 0
  fall
  ifspritepal 1 ifmultiplayer spritepal 0 else killit

  ifmove RESPAWN_ACTOR_FLAG
    state respawnit
  else
    ifp pshrunk nullop
    else
      ifp palive
        ifpdistl RETRIEVEDISTANCE
          ifcount 6
            ifcanseetarget
      {
        ifgotweaponce 0
          break
        getplayer[THISACTOR].gotweapon SHRINKER_WEAPON vaca_temp
        addweapon GROW_WEAPON 10
        ifvare vaca_temp 0 setplayer[THISACTOR].gotweapon SHRINKER_WEAPON 0

        quote 999
        ifspawnedby GROWSPRITEICON
          state getweaponcode
        else
          state quikweaponget
      }
enda

state babechecksquished
  ifsquished
  {
    sound SQUISHED
    state standard_bjibs
    state random_ooz
    killit
  }
ends

include VSeagull.con
include VDragon.con
include VBeachBather.con
include VBeachBabe.con

// -----------------------------------------------------------------------------

useractor notenemy 3831 0
// cstat 32768
 sizeat 12 13
 getactor[THISACTOR].sectnum vaca_temp
 getplayer[THISACTOR].cursectnum vaca_temp2
 ifvarvare vaca_temp vaca_temp2
   {
     setuserdef[THISACTOR].volume_number 2
     endofgame 13
   }
enda


useractor notenemy TIKIGOD 0 
     getactor[THISACTOR].cstat vaca_temp
     ifvarand vaca_temp 16 setactor[THISACTOR].mdflags 1
enda


onevent EVENT_ANIMATESPRITES
  switch vaca_picnum

    case GROWAMMO
    // t->shade = (sintable[(totalclock<<4)&2047]>>10);
      setvarvar vaca_temp totalclock
      shiftvarl vaca_temp 4
      andvar vaca_temp 2047
      sin vaca_temp vaca_temp
      shiftvarr vaca_temp 10
      settspr[THISACTOR].tsprshade vaca_temp
      break

    case DRAGON
    case DRAGONDEATH
      ifvarn vaca_temp3 -1
        settspr[THISACTOR].tsprang vaca_temp3
      break

  endswitch
endevent

define title_x1 54
define title_x2 306
define title_y1 186
define title_y2 194
define title_zoom 32768

onevent EVENT_DISPLAYMENU
//  getplayer[THISACTOR].gm vaca_temp
//  ifvarand vaca_temp 4 nullop else
// {
  rotatesprite title_x1 title_y1 title_zoom 0 3838 0 0 256 0 0 xdim ydim
  rotatesprite title_x2 title_y2 title_zoom 0 3839 0 0 512 0 0 xdim ydim
// }
endevent