Subversion Repositories nw_plus

Compare Revisions

Regard whitespace Rev 1 → Rev HEAD

/nw_plus/NWinter.con
9,29 → 9,33
--------------------------------------------------------------------------------
*/
 
definecheat 14 endepisode
definecheat 15 endlevel
definecheat 25 endvolume
 
include NWDefs.con
include NWUser.con
 
setgamename Duke: Nuclear Winter
 
gamevar owner 0 2
gamevar temp2 0 2
gamevar temp3 0 2
gamevar temp4 0 2
gamevar ptemp 0 1
gamevar musicchange 0 1
gamevar skin 0 1
gamevar nw_picnum 0 2
gamevar nw_temp 0 2
gamevar nw_tempb 0 2
gamevar nw_x 0 2
gamevar nw_y 0 2
gamevar nw_z 0 2
 
gamevar nw_owner 0 2
gamevar nw_temp2 0 2
gamevar nw_temp3 0 2
// gamevar nw_temp4 0 0
// gamevar nw_ptemp 0 1
gamevar nw_holodukeid 0 1
gamevar nw_musicchange 0 1
gamevar skin DUKE 132097 // do not reset flag enabled
 
gamevar LOGO_FLAGS 767 0 // default; TEN screen reenabled
 
state cutsceneambience
getactor[THISACTOR].lotag temp
getactor[THISACTOR].lotag nw_temp
 
switch temp
switch nw_temp
 
case WIND_AMBIENCE
case WIND_REPEAT
46,8 → 50,8
ends
 
onevent EVENT_LOADACTOR
getactor[THISACTOR].picnum picnum
switch picnum
getactor[THISACTOR].picnum nw_picnum
switch nw_picnum
 
case SNOWYDOORSHOCK
spritepal 30
71,7 → 75,7
break
 
case JETPACK
ifspritepal 21 setvar temp 1
ifspritepal 21 setvar nw_temp 1
spritepal 0
break
 
84,7 → 88,7
 
case XMASPRESENT
case XMASPRESENT2
getactor[THISACTOR].hitag temp
getactor[THISACTOR].hitag nw_temp
setactor[THISACTOR].hitag 0
break
 
91,7 → 95,14
endswitch
endevent
 
onevent EVENT_SPAWN
getactor[THISACTOR].owner nw_owner
getactor[THISACTOR].picnum nw_picnum
endevent
 
onevent EVENT_EGS
getactor[THISACTOR].picnum nw_picnum
 
ifactor APLAYER setactor[THISACTOR].mdflags 16
ifactor DUKETORSO setactor[THISACTOR].mdflags 16
ifactor DUKEGUN setactor[THISACTOR].mdflags 16
102,18 → 113,18
{
sizeat 8 8
 
setvar temp3 0
randvar temp3 2047
setactor[THISACTOR].ang temp3
setvar nw_temp3 0
randvar nw_temp3 2047
setactor[THISACTOR].ang nw_temp3
 
setvar temp2 -2047
randvar temp2 2047
setvar nw_temp2 -2047
randvar nw_temp2 2047
 
/*
setvar temp3 0
ifrnd 128 addvar temp3 4
ifrnd 128 addvar temp3 8
setactor[THISACTOR].cstat temp3
setvar nw_temp3 0
ifrnd 128 addvar nw_temp3 4
ifrnd 128 addvar nw_temp3 8
setactor[THISACTOR].cstat nw_temp3
*/
}
endevent
193,6 → 204,15
killit
}
else
ifactor CHANDELIER
{
sound GLASS_BREAKING
debris SCRAP3 3
debris SCRAP4 4
lotsofglass 10
killit
}
else
ifactor TREEWITHSOMETHING
{
sound GLASS_HEAVYBREAK
233,6 → 253,8
 
useractor notenemy SNOWGIB WEAK state nwbreakobject enda
 
useractor notenemy CHANDELIER WEAK state nwbreakobject enda
 
useractor notenemy TREEWITHSOMETHING TOUGH state nwbreakobject enda
 
actor JETPACK
248,10 → 270,11
ifpinventory GET_JETPACK JETPACK_AMOUNT
ifcanseetarget
{
ifvare temp 1
ifvare nw_temp 1
{
addinventory GET_JETPACK JETPACK_NEAR_EMPTY
quote 125
redefinequote 122 This jetpack is almost empty!
quote 122
}
else
{
272,22 → 295,22
 
 
state nwbabecode
getactor[THISACTOR].cstat temp
ifvarand temp 1 nullop else addvar temp 1
ifactor HALFBITCH { ifvarand temp 128 nullop else addvar temp 128 }
ifvarand temp 256 nullop else addvar temp 256
getactor[THISACTOR].cstat nw_temp
ifvarand nw_temp 1 nullop else addvar nw_temp 1
ifactor HALFBITCH { ifvarand nw_temp 128 nullop else addvar nw_temp 128 }
ifvarand nw_temp 256 nullop else addvar nw_temp 256
 
getuserdef .lockout temp2
ifvare temp2 1
getuserdef .lockout nw_temp2
ifvare nw_temp2 1
{
ifvarand temp 32768 nullop else addvar temp 32768
ifvarand nw_temp 32768 nullop else addvar nw_temp 32768
}
else
// {
ifvarand temp 32768 subvar temp 32768
ifvarand nw_temp 32768 subvar nw_temp 32768
// }
 
setactor[THISACTOR].cstat temp
setactor[THISACTOR].cstat nw_temp
 
 
 
530,28 → 553,28
{
ifvare LEVEL 2
{
getactor[THISACTOR].sectnum temp
switch temp
getactor[THISACTOR].sectnum nw_temp
switch nw_temp
case 220 case 221
ifvarn musicchange 1
ifvarn nw_musicchange 1
{
starttrack 12 // doom
setvar musicchange 1
setvar nw_musicchange 1
}
break
case 563 case 564 case 565 case 566 case 567
ifvarn musicchange 2
ifvarn nw_musicchange 2
{
starttrack 13 // mario
setvar musicchange 2
setvar nw_musicchange 2
}
break
case 192 case 193 case 194 case 195 case 196 case 197 case 198 case 237 case 238 case 239 case 240
case 166 case 167 case 172 case 173 case 174 case 176 case 179
ifvarn musicchange 0
ifvarn nw_musicchange 0
{
starttrack 2 // level music
setvar musicchange 0
starttrackvar LEVEL // level music
setvar nw_musicchange 0
}
break
endswitch
559,9 → 582,44
}
ends
 
// Flying Frosty
 
/*
action ACOMMBREETH 0 3 5 1 40
action ACOMMFROZEN 0 1 5
action ACOMMSPIN -5 1 5 1 12
action ACOMMGET 0 3 5 1 30
action ACOMMSHOOT 20 1 5 1 35
action ACOMMABOUTTOSHOOT 20 1 5 1 30
action ACOMMDYING 30 8 1 1 12
action ACOMMDEAD 38 1 1 1 1
 
 
move COMMGETUPVELS 128 -64
move COMMGETVELS 128 64
move COMMSLOW 64 24
move COMMSTOPPED
 
ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow
ai AICOMMGET ACOMMGET COMMGETVELS seekplayer
ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow
ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow
ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin
ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer
ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir
ai AICOMMGROW ACOMMGET COMMSTOPPED furthestdir
*/
 
move COMMGETUPVELSNW 128 -64
move COMMGETVELSNW 128 64
move COMMSLOWNW 64 24
move COMMSTOPPEDNW
 
action ACOMMSPINNW 0 1 5 1 12
action ACOMMSHOOTNW 20 1 5 1 16 // this is custom to shorten the delay between firing freezeblasts
 
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELS spin
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELSNW spin
ai AICOMMSHOOTNW ACOMMSHOOTNW COMMSTOPPEDNW faceplayerslow
 
state checkcommhitstate
 
670,7 → 728,7
break
}
ifai 0
ai AICOMMSHOOT
ai AICOMMSHOOTNW
else
ifai AICOMMWAIT
{
696,7 → 754,7
ifactioncount 2
{
ifcansee
ai AICOMMSHOOT
ai AICOMMSHOOTNW
else
{
ai AICOMMGET
706,7 → 764,7
ifrnd 32 soundonce COMM_ATTACK
}
else
ifai AICOMMSHOOT
ifai AICOMMSHOOTNW
{
ifcanshoottarget
{
713,6 → 771,7
ifcount 12
ifrnd 16
ai AICOMMWAIT
ifactioncount 1
{
shoot FREEZEBLAST
719,6 → 778,10
resetactioncount
}
 
getplayer[THISACTOR].i nw_temp
getactor[nw_temp].pal nw_temp
ifvare nw_temp 1 // if player is frozen
ai AICOMMGET
}
else
ai AICOMMGET
744,13 → 807,24
ifrnd 4
operate
ifpdistl 1024
{
ifp palive
{
// sound COMM_SPIN
sound COMM_SPIN
ai AICOMMSPINNW
break
}
 
getplayer[THISACTOR].i nw_temp
getactor[nw_temp].pal nw_temp
ifvare nw_temp 1 // if player is frozen
{
sound COMM_SPIN
ai AICOMMSPINNW
break
}
}
 
ifcansee
{
ifp phigher
770,10 → 844,17
{
ifpdistl 1280
{
addphealth CAPTSPINNINGPLAYER
sound DUKE_GRUNT
palfrom 32
16 resetcount
setvar nw_tempb CAPTSPINNINGPLAYER
mulvar nw_tempb -1
// addphealth CAPTSPINNINGPLAYER
getplayer[THISACTOR].i nw_temp
setactor[nw_temp].htextra nw_tempb
setactor[nw_temp].htpicnum KNEE
setactor[nw_temp].htowner THISACTOR
 
globalsound DUKE_GRUNT
palfrom 32 16
resetcount
}
else
ifpdistg 2300
818,6 → 899,8
}
enda
 
// Frosted Battle Mobile
 
move TANKSTOPNW
 
useractor enemy TANK TANKSTRENGTH
946,22 → 1029,35
// -----------------------------------------------------------------------------
 
onevent EVENT_GAME
ifactor APLAYER state nwl3surprise
ifactor APLAYER
{
state nwl3surprise
getplayer[THISACTOR].holoduke_on nw_holodukeid
ifvarg nw_holodukeid -1
setactor[nw_holodukeid].mdflags 16
// addlogvar skin
}
ifactor FRAMEEFFECT1
ifspawnedby APLAYER
setactor[THISACTOR].mdflags 16
 
/*
ifactor MONEY
{
setactor[THISACTOR].mdflags 16
getactor[THISACTOR].owner owner
switch owner
// getactor[THISACTOR].owner nw_owner
switch nw_owner
case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
getactor[THISACTOR].x x
getactor[THISACTOR].y y
getactor[THISACTOR].z z
getactor[THISACTOR].x nw_x
getactor[THISACTOR].y nw_y
getactor[THISACTOR].z nw_z
 
updatesectorz x y z temp
ifvarn temp -1 getflorzofslope temp x y temp2 else killit
updatesectorz nw_x nw_y nw_z nw_temp
ifvarn nw_temp -1 getflorzofslope nw_temp nw_x nw_y nw_temp2 else killit
 
ifvarvare z temp2 killit
ifvarvare nw_z nw_temp2 killit
break
endswitch
}
968,17 → 1064,15
*/
endevent
 
onevent EVENT_ANIMATESPRITES // This is a hell of a mess because putting get/settspr in states throws warnings, and I don't want that.
getactor[THISACTOR].picnum picnum
getactor[THISACTOR].owner owner
onevent EVENT_ANIMATESPRITES
 
ifvare picnum DOORSHOCK
ifvare nw_picnum DOORSHOCK
{
ifspritepal 30 settspr[THISACTOR].tsprpicnum 3656
ifvare VOLUME 1 ifvare LEVEL 2 settspr[THISACTOR].tsprpicnum 3656
break
}
ifvare picnum SNOWFLAKE
ifvare nw_picnum SNOWFLAKE
{
settspr[THISACTOR].tsprpicnum SNOW
settspr[THISACTOR].tsprxrepeat 4
986,9 → 1080,9
break
}
/*
ifvare picnum MONEY
ifvare nw_picnum MONEY
{
switch owner
switch nw_owner
case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
settspr[THISACTOR].tsprpicnum SNOW
break
995,95 → 1089,75
endswitch
}
*/
getplayervar[THISACTOR].skin temp
ifvare temp 1
switch nw_picnum
case APLAYER
ifvare skin SANTA
{
getplayer[THISACTOR].i temp2
gettspr[temp2].tsprpicnum temp3
ifvarl temp3 1544 addvar temp3 4096
settspr[temp2].tsprpicnum temp3
settspr[temp2].tsprpal 10
gettspr[THISACTOR].tsprpicnum nw_temp3
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096
settspr[THISACTOR].tsprpicnum nw_temp3
 
ifvare picnum DUKETORSO
ifvarg nw_holodukeid -1
{
getactor[owner].picnum temp2
ifvare temp2 APLAYER
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
gettspr[nw_holodukeid].tsprpicnum nw_temp3
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096
settspr[nw_holodukeid].tsprpicnum nw_temp3
}
}
ifvare picnum DUKEGUN
break
case FRAMEEFFECT1
ifvare skin SANTA
ifspawnedby APLAYER
{
getactor[owner].picnum temp2
ifvare temp2 APLAYER
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
gettspr[THISACTOR].tsprpicnum nw_temp3
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096
settspr[THISACTOR].tsprpicnum nw_temp3
}
}
ifvare picnum DUKELEG
{
getactor[owner].picnum temp2
ifvare temp2 APLAYER settspr[THISACTOR].tsprpal 30
break
}
}
 
ifvare picnum DUKETORSO
case DUKETORSO
case DUKEGUN
getactor[nw_owner].picnum nw_temp2
ifvare nw_temp2 SOBBOTWALK
{
getactor[owner].picnum temp2
ifvare temp2 SOBBOTWALK
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
gettspr[THISACTOR].tsprpicnum nw_temp3
addvar nw_temp3 2456
settspr[THISACTOR].tsprpicnum nw_temp3
}
ifvare temp2 SOBBOTFLY
ifvare nw_temp2 SOBBOTFLY
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
gettspr[THISACTOR].tsprpicnum nw_temp3
addvar nw_temp3 2456
settspr[THISACTOR].tsprpicnum nw_temp3
}
}
ifvare picnum DUKEGUN
ifvare nw_temp2 APLAYER
{
getactor[owner].picnum temp2
ifvare temp2 SOBBOTWALK
ifvare skin SANTA
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
gettspr[THISACTOR].tsprpicnum nw_temp3
addvar nw_temp3 2456
settspr[THISACTOR].tsprpicnum nw_temp3
}
ifvare temp2 SOBBOTFLY
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
}
ifvare picnum DUKELEG
{
getactor[owner].picnum temp2
ifvare temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30
ifvare temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30
break
}
ifvare picnum APLAYER
 
case DUKELEG
getactor[nw_owner].picnum nw_temp2
ifvare nw_temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30
ifvare nw_temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30
ifvare nw_temp2 APLAYER ifvare skin SANTA settspr[THISACTOR].tsprpal 30
break
endswitch
 
ifvare nw_picnum APLAYER // this fixes the bug with the misplaced TV screen tiles
{
gettspr[THISACTOR].tsprpicnum temp
switch temp
gettspr[THISACTOR].tsprpicnum nw_temp
switch nw_temp
case 1470 case 1471 case 1472 case 1473 case 1474
subvar temp 5
settspr[THISACTOR].tsprpicnum temp
subvar nw_temp 5
settspr[THISACTOR].tsprpicnum nw_temp
break
endswitch
}
1096,10 → 1170,11
cstat 32768
// sizeat 1 1
 
ifspritepal 31
ifspritepal 31 // phone ringing effect
{
getplayer[THISACTOR].cursectnum temp3
switch temp3
/*
getplayer[THISACTOR].cursectnum nw_temp3
switch nw_temp3
case 60 case 61 case 62 case 63
case 86 case 87
case 299 case 300 case 301 case 302 case 303 case 304 case 305 case 306 case 307 case 308 case 309
1106,50 → 1181,84
case 310 case 311 case 312 case 313 case 314 case 315 case 316 case 317
soundonce PHONE_RING
break
 
default
stopsound PHONE_RING
break
endswitch
*/
 
ifpdistl 8192 // 4096
soundonce PHONE_RING
ifpdistg 16384
stopsound PHONE_RING
 
ifpdistl RETRIEVEDISTANCE
ifp pfacing
ifhitspace
ifvare temp2 0
ifvare nw_temp2 0
{
setvar temp 0
setvar temp2 1
setvar nw_temp 0
setvar nw_temp2 1
setvar nw_temp3 0
setvar nw_tempb 0
}
 
ifvare temp2 1
ifvare nw_temp2 1
{
addvar temp 1
addvar nw_temp 1
 
stopsound PHONE_RING
ifvare temp 1 sound PHONE_PICKUP
else ifvare temp 39
ifvare nw_temp 1
sound PHONE_PICKUP
else ifvare nw_temp 30
{
setvar tempb 0
randvar tempb 3
switch tempb
case 0 sound LOWANG1 break
case 1 sound LOWANG2 break
case 2 sound LOWANG3 break
case 3 sound LOWANG4 break
setvar nw_tempb 0
randvar nw_tempb 3
 
switch nw_tempb
case 0
sound LOWANG1
setvar nw_temp3 57
break
case 1
sound LOWANG2
setvar nw_temp3 124
break
case 2
sound LOWANG3
setvar nw_temp3 121
break
case 3
sound LOWANG4
setvar nw_temp3 156
break
endswitch
 
addvar nw_temp3 60
setvar nw_tempb 0
}
else ifvare temp 195 sound PHONE_HANGUP
else ifvare temp 247
else ifvarvare nw_temp nw_temp3
{
setvar temp2 0
setvar temp 0
sound PHONE_HANGUP
setvarvar nw_tempb nw_temp3
addvar nw_tempb 150
}
else ifvarvare nw_temp nw_tempb
{
setvar nw_temp2 0
setvar nw_temp 0
}
}
}
enda
 
useractor notenemy 3831 0
// cstat 32768
sizeat 12 13
getactor[THISACTOR].sectnum temp
getplayer[THISACTOR].cursectnum temp2
ifvarvare temp temp2
getactor[THISACTOR].sectnum nw_temp
getplayer[THISACTOR].cursectnum nw_temp2
ifvarvare nw_temp nw_temp2
{
setuserdef[THISACTOR].volume_number 1
endofgame 13
1184,19 → 1293,10
define title_zoom 32768
 
onevent EVENT_DISPLAYMENU
// getplayer[THISACTOR].gm temp
// ifvarand temp 4 nullop else
// getplayer[THISACTOR].gm nw_temp
// ifvarand nw_temp 4 nullop else
// {
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 256 0 0 xdim ydim
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 512 0 0 xdim ydim
// }
endevent
 
/*
onevent EVENT_DISPLAYTITLE
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
endevent
*/