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