Subversion Repositories nw_plus

Rev

Rev 9 | Rev 22 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9 Rev 14
1
/*
1
/*
2
--------------------------------------------------------------------------------
2
--------------------------------------------------------------------------------
3
Duke: Nuclear Winter
3
Duke: Nuclear Winter
4
By Joris Weimar
4
By Joris Weimar
5
© 1997 Simply Silly Software
5
© 1997 Simply Silly Software
6
--------------------------------------------------------------------------------
6
--------------------------------------------------------------------------------
7
Duke: Nuclear Winter Plus
7
Duke: Nuclear Winter Plus
8
By Hendricks266
8
By Hendricks266
9
--------------------------------------------------------------------------------
9
--------------------------------------------------------------------------------
10
*/
10
*/
11
 
11
 
12
definecheat 14 endepisode
12
definecheat 14 endepisode
13
definecheat 15 endlevel
13
definecheat 15 endlevel
14
definecheat 25 endvolume
14
definecheat 25 endvolume
15
 
15
 
16
include NWDefs.con
16
include NWDefs.con
17
include NWUser.con
17
include NWUser.con
18
 
18
 
19
setgamename Duke: Nuclear Winter
19
setgamename Duke: Nuclear Winter
20
 
20
 
21
gamevar picnum 0 2
21
gamevar picnum 0 2
22
gamevar temp 0 2
22
gamevar temp 0 2
23
gamevar tempb 0 2
23
gamevar tempb 0 2
24
gamevar x 0 2
24
gamevar x 0 2
25
gamevar y 0 2
25
gamevar y 0 2
26
gamevar z 0 2
26
gamevar z 0 2
27
 
27
 
28
gamevar owner 0 2
28
gamevar owner 0 2
29
gamevar temp2 0 2
29
gamevar temp2 0 2
30
gamevar temp3 0 2
30
gamevar temp3 0 2
31
gamevar temp4 0 2
31
gamevar temp4 0 2
32
gamevar ptemp 0 1
32
gamevar ptemp 0 1
33
gamevar holodukeid 0 1
33
gamevar holodukeid 0 1
34
gamevar musicchange 0 1
34
gamevar musicchange 0 1
35
gamevar skin DUKE 132097 // do not reset flag enabled
35
gamevar skin DUKE 132097 // do not reset flag enabled
36
 
36
 
37
gamevar LOGO_FLAGS 767 0 // default; TEN screen reenabled
37
gamevar LOGO_FLAGS 767 0 // default; TEN screen reenabled
38
 
38
 
39
state cutsceneambience
39
state cutsceneambience
40
  getactor[THISACTOR].lotag temp
40
  getactor[THISACTOR].lotag temp
41
 
41
 
42
  switch temp
42
  switch temp
43
 
43
 
44
    case WIND_AMBIENCE
44
    case WIND_AMBIENCE
45
    case WIND_REPEAT
45
    case WIND_REPEAT
46
     setactor[THISACTOR].lotag WIND2
46
     setactor[THISACTOR].lotag WIND2
47
    break
47
    break
48
 
48
 
49
    case FLY_BY
49
    case FLY_BY
50
     setactor[THISACTOR].lotag FLY_BY2
50
     setactor[THISACTOR].lotag FLY_BY2
51
    break
51
    break
52
 
52
 
53
  endswitch
53
  endswitch
54
ends
54
ends
55
 
55
 
56
onevent EVENT_LOADACTOR
56
onevent EVENT_LOADACTOR
57
  getactor[THISACTOR].picnum picnum
57
  getactor[THISACTOR].picnum picnum
58
  switch picnum
58
  switch picnum
59
 
59
 
60
   case SNOWYDOORSHOCK 
60
   case SNOWYDOORSHOCK 
61
     spritepal 30
61
     spritepal 30
62
     cactor DOORSHOCK
62
     cactor DOORSHOCK
63
   break
63
   break
64
 
64
 
65
   case 3765 case 3766 case 3767 case 3768 cactor WOODENHORSE2 break
65
   case 3765 case 3766 case 3767 case 3768 cactor WOODENHORSE2 break
66
 
66
 
67
  // case PIGCOP case PIGCOPSTAYPUT case PIGCOPDIVE sizeat 48 40 break
67
  // case PIGCOP case PIGCOPSTAYPUT case PIGCOPDIVE sizeat 48 40 break
68
   case SOBBOTWALK case SOBBOTFLY sizeat 42 36 break
68
   case SOBBOTWALK case SOBBOTFLY sizeat 42 36 break
69
   case ELFUZI case ELFUZISTAYPUT sizeat 32 27 break
69
   case ELFUZI case ELFUZISTAYPUT sizeat 32 27 break
70
   case ELFGUN case ELFGUNSTAYPUT sizeat 32 27 break
70
   case ELFGUN case ELFGUNSTAYPUT sizeat 32 27 break
71
   case SNOWMAN sizeat 42 36 break
71
   case SNOWMAN sizeat 42 36 break
72
 
72
 
73
   case 1915
73
   case 1915
74
    cactor COMMANDER // failsafe fix for NWL5 bug
74
    cactor COMMANDER // failsafe fix for NWL5 bug
75
   break
75
   break
76
 
76
 
77
   case MUSICANDSFX
77
   case MUSICANDSFX
78
     state cutsceneambience
78
     state cutsceneambience
79
   break
79
   break
80
 
80
 
81
   case JETPACK
81
   case JETPACK
82
     ifspritepal 21 setvar temp 1
82
     ifspritepal 21 setvar temp 1
83
     spritepal 0
83
     spritepal 0
84
   break
84
   break
85
 
85
 
86
/*
86
/*
87
   case SNOWFLAKE
87
   case SNOWFLAKE
88
     cactor SNOW
88
     cactor SNOW
89
     sizeat 8 8
89
     sizeat 8 8
90
   break
90
   break
91
*/
91
*/
92
 
92
 
93
   case XMASPRESENT
93
   case XMASPRESENT
94
   case XMASPRESENT2
94
   case XMASPRESENT2
95
     getactor[THISACTOR].hitag temp
95
     getactor[THISACTOR].hitag temp
96
     setactor[THISACTOR].hitag 0
96
     setactor[THISACTOR].hitag 0
97
   break
97
   break
98
 
98
 
99
  endswitch
99
  endswitch
100
endevent
100
endevent
101
 
101
 
102
onevent EVENT_EGS
102
onevent EVENT_EGS
-
 
103
 getactor[THISACTOR].picnum picnum
-
 
104
 getactor[THISACTOR].owner owner
-
 
105
 
103
 ifactor APLAYER setactor[THISACTOR].mdflags 16
106
 ifactor APLAYER setactor[THISACTOR].mdflags 16
104
 ifactor DUKETORSO setactor[THISACTOR].mdflags 16
107
 ifactor DUKETORSO setactor[THISACTOR].mdflags 16
105
 ifactor DUKEGUN setactor[THISACTOR].mdflags 16
108
 ifactor DUKEGUN setactor[THISACTOR].mdflags 16
106
 ifactor DUKELEG setactor[THISACTOR].mdflags 16
109
 ifactor DUKELEG setactor[THISACTOR].mdflags 16
107
 ifactor DOORSHOCK setactor[THISACTOR].mdflags 16
110
 ifactor DOORSHOCK setactor[THISACTOR].mdflags 16
108
 
111
 
109
 ifactor SNOW
112
 ifactor SNOW
110
   {
113
   {
111
     sizeat 8 8
114
     sizeat 8 8
112
 
115
 
113
     setvar temp3 0
116
     setvar temp3 0
114
     randvar temp3 2047
117
     randvar temp3 2047
115
     setactor[THISACTOR].ang temp3
118
     setactor[THISACTOR].ang temp3
116
 
119
 
117
     setvar temp2 -2047
120
     setvar temp2 -2047
118
     randvar temp2 2047
121
     randvar temp2 2047
119
 
122
 
120
/*
123
/*
121
     setvar temp3 0
124
     setvar temp3 0
122
     ifrnd 128 addvar temp3 4
125
     ifrnd 128 addvar temp3 4
123
     ifrnd 128 addvar temp3 8
126
     ifrnd 128 addvar temp3 8
124
     setactor[THISACTOR].cstat temp3
127
     setactor[THISACTOR].cstat temp3
125
*/
128
*/
126
   }
129
   }
127
endevent
130
endevent
128
 
131
 
129
// -----------------------------------------------------------------------------
132
// -----------------------------------------------------------------------------
130
 
133
 
131
state standard_bjibs
134
state standard_bjibs
132
  guts JIBS2 1
135
  guts JIBS2 1
133
  guts JIBS3 2
136
  guts JIBS3 2
134
  guts JIBS4 3
137
  guts JIBS4 3
135
  guts JIBS5 2
138
  guts JIBS5 2
136
  guts JIBS6 3
139
  guts JIBS6 3
137
  ifrnd 6
140
  ifrnd 6
138
  {
141
  {
139
    guts JIBS1 1
142
    guts JIBS1 1
140
  }         // a badly drawn spine
143
  }         // a badly drawn spine
141
ends
144
ends
142
 
145
 
143
state nwbreakobject
146
state nwbreakobject
144
  ifaction 0
147
  ifaction 0
145
  {
148
  {
146
    action ANULLACTION
149
    action ANULLACTION
147
    cstator 257
150
    cstator 257
148
  }
151
  }
149
    ifhitweapon
152
    ifhitweapon
150
    {
153
    {
151
      ifdead
154
      ifdead
152
      {
155
      {
153
        ifactor WOODSLATS
156
        ifactor WOODSLATS
154
        {
157
        {
155
          sound GLASS_HEAVYBREAK
158
          sound GLASS_HEAVYBREAK
156
	  debris SCRAP3 5
159
	  debris SCRAP3 5
157
	  debris SCRAP4 3
160
	  debris SCRAP4 3
158
          killit
161
          killit
159
        }
162
        }
160
      else
163
      else
161
        ifactor RIBBON
164
        ifactor RIBBON
162
        {
165
        {
163
          sound GLASS_HEAVYBREAK
166
          sound GLASS_HEAVYBREAK
164
	  debris SCRAP3 5
167
	  debris SCRAP3 5
165
	  debris SCRAP4 3
168
	  debris SCRAP4 3
166
          killit
169
          killit
167
        }
170
        }
168
      else
171
      else
169
        ifactor MYBOX
172
        ifactor MYBOX
170
        {
173
        {
171
          sound GLASS_HEAVYBREAK
174
          sound GLASS_HEAVYBREAK
172
	  debris SCRAP3 5
175
	  debris SCRAP3 5
173
	  debris SCRAP4 3
176
	  debris SCRAP4 3
174
          killit
177
          killit
175
        }
178
        }
176
      else
179
      else
177
        ifactor SNOWGIB killit
180
        ifactor SNOWGIB killit
178
      else
181
      else
179
        ifactor DRUNKELF
182
        ifactor DRUNKELF
180
        {
183
        {
181
          sound PRED_DYING
184
          sound PRED_DYING
182
          guts JIBS6 2
185
          guts JIBS6 2
183
          guts JIBS6 3
186
          guts JIBS6 3
184
          guts JIBS6 4
187
          guts JIBS6 4
185
          killit
188
          killit
186
        }
189
        }
187
      else
190
      else
188
        ifactor CHOOCHOOSLUT
191
        ifactor CHOOCHOOSLUT
189
        {
192
        {
190
          sound GLASS_HEAVYBREAK
193
          sound GLASS_HEAVYBREAK
191
	  debris SCRAP3 5
194
	  debris SCRAP3 5
192
	  debris SCRAP4 3
195
	  debris SCRAP4 3
193
          killit
196
          killit
194
        }
197
        }
195
      else
198
      else
196
        ifactor HORSEPOWER
199
        ifactor HORSEPOWER
197
        {
200
        {
198
          sound GLASS_HEAVYBREAK
201
          sound GLASS_HEAVYBREAK
199
	  debris SCRAP3 5
202
	  debris SCRAP3 5
200
	  debris SCRAP4 3
203
	  debris SCRAP4 3
201
          killit
204
          killit
202
        }
205
        }
203
      else
206
      else
204
        ifactor CHANDELIER
207
        ifactor CHANDELIER
205
        {
208
        {
206
          sound GLASS_BREAKING
209
          sound GLASS_BREAKING
207
          debris SCRAP3 3
210
          debris SCRAP3 3
208
          debris SCRAP4 4
211
          debris SCRAP4 4
209
          lotsofglass 10
212
          lotsofglass 10
210
          killit
213
          killit
211
        }
214
        }
212
      else
215
      else
213
        ifactor TREEWITHSOMETHING
216
        ifactor TREEWITHSOMETHING
214
        {
217
        {
215
          sound GLASS_HEAVYBREAK
218
          sound GLASS_HEAVYBREAK
216
	  debris SCRAP3 5
219
	  debris SCRAP3 5
217
          ifrnd 96
220
          ifrnd 96
218
          {
221
          {
219
            ifrnd 64 spawn ATOMICHEALTH else spawn SHIELD
222
            ifrnd 64 spawn ATOMICHEALTH else spawn SHIELD
220
          }
223
          }
221
          else
224
          else
222
          {
225
          {
223
            ifrnd 128 spawn STEROIDS else spawn FECES
226
            ifrnd 128 spawn STEROIDS else spawn FECES
224
          }
227
          }
225
          killit
228
          killit
226
        }
229
        }
227
      else
230
      else
228
        ifactor SSPEAKER
231
        ifactor SSPEAKER
229
        {
232
        {
230
	  debris SCRAP4 3
233
	  debris SCRAP4 3
231
          killit
234
          killit
232
        }
235
        }
233
      }
236
      }
234
    }
237
    }
235
ends
238
ends
236
 
239
 
237
useractor notenemy WOODSLATS MEDIUMSTRENGTH state nwbreakobject enda
240
useractor notenemy WOODSLATS MEDIUMSTRENGTH state nwbreakobject enda
238
 
241
 
239
useractor notenemy RIBBON WEAK state nwbreakobject enda
242
useractor notenemy RIBBON WEAK state nwbreakobject enda
240
 
243
 
241
useractor notenemy SSPEAKER WEAK state nwbreakobject enda
244
useractor notenemy SSPEAKER WEAK state nwbreakobject enda
242
 
245
 
243
useractor notenemy MYBOX WEAK state nwbreakobject enda
246
useractor notenemy MYBOX WEAK state nwbreakobject enda
244
 
247
 
245
useractor notenemy DRUNKELF WEAK state nwbreakobject enda
248
useractor notenemy DRUNKELF WEAK state nwbreakobject enda
246
 
249
 
247
useractor notenemy CHOOCHOOSLUT WEAK state nwbreakobject enda
250
useractor notenemy CHOOCHOOSLUT WEAK state nwbreakobject enda
248
 
251
 
249
useractor notenemy HORSEPOWER WEAK state nwbreakobject enda
252
useractor notenemy HORSEPOWER WEAK state nwbreakobject enda
250
 
253
 
251
useractor notenemy SNOWGIB WEAK state nwbreakobject enda
254
useractor notenemy SNOWGIB WEAK state nwbreakobject enda
252
 
255
 
253
useractor notenemy CHANDELIER WEAK state nwbreakobject enda
256
useractor notenemy CHANDELIER WEAK state nwbreakobject enda
254
 
257
 
255
useractor notenemy TREEWITHSOMETHING TOUGH state nwbreakobject enda
258
useractor notenemy TREEWITHSOMETHING TOUGH state nwbreakobject enda
256
 
259
 
257
actor JETPACK
260
actor JETPACK
258
  fall
261
  fall
259
  ifmove RESPAWN_ACTOR_FLAG
262
  ifmove RESPAWN_ACTOR_FLAG
260
    state respawnit
263
    state respawnit
261
  else
264
  else
262
    ifp pshrunk nullop
265
    ifp pshrunk nullop
263
    else
266
    else
264
      ifp palive
267
      ifp palive
265
        ifpdistl RETRIEVEDISTANCE
268
        ifpdistl RETRIEVEDISTANCE
266
          ifcount 6
269
          ifcount 6
267
            ifpinventory GET_JETPACK JETPACK_AMOUNT
270
            ifpinventory GET_JETPACK JETPACK_AMOUNT
268
              ifcanseetarget
271
              ifcanseetarget
269
      {
272
      {
270
        ifvare temp 1
273
        ifvare temp 1
271
        {
274
        {
272
          addinventory GET_JETPACK JETPACK_NEAR_EMPTY
275
          addinventory GET_JETPACK JETPACK_NEAR_EMPTY
273
          quote 125
276
          quote 125
274
        }
277
        }
275
        else
278
        else
276
        {
279
        {
277
          addinventory GET_JETPACK JETPACK_AMOUNT
280
          addinventory GET_JETPACK JETPACK_AMOUNT
278
          quote 41
281
          quote 41
279
        }
282
        }
280
        ifspawnedby JETPACK
283
        ifspawnedby JETPACK
281
          state getcode
284
          state getcode
282
        else
285
        else
283
          state quikget
286
          state quikget
284
      }
287
      }
285
enda
288
enda
286
 
289
 
287
action FEMHDANCE1 205 1 1 1 16
290
action FEMHDANCE1 205 1 1 1 16
288
action FEMHDANCE3 205 1 1 1 26
291
action FEMHDANCE3 205 1 1 1 26
289
action FEMHDANCE2 206 2 1 1 10
292
action FEMHDANCE2 206 2 1 1 10
290
 
293
 
291
 
294
 
292
 
295
 
293
state nwbabecode
296
state nwbabecode
294
 getactor[THISACTOR].cstat temp
297
 getactor[THISACTOR].cstat temp
295
 ifvarand temp 1 nullop else addvar temp 1
298
 ifvarand temp 1 nullop else addvar temp 1
296
 ifactor HALFBITCH { ifvarand temp 128 nullop else addvar temp 128 }
299
 ifactor HALFBITCH { ifvarand temp 128 nullop else addvar temp 128 }
297
 ifvarand temp 256 nullop else addvar temp 256
300
 ifvarand temp 256 nullop else addvar temp 256
298
 
301
 
299
 getuserdef .lockout temp2
302
 getuserdef .lockout temp2
300
 ifvare temp2 1
303
 ifvare temp2 1
301
   {
304
   {
302
     ifvarand temp 32768 nullop else addvar temp 32768
305
     ifvarand temp 32768 nullop else addvar temp 32768
303
   }
306
   }
304
 else
307
 else
305
  // {
308
  // {
306
     ifvarand temp 32768 subvar temp 32768
309
     ifvarand temp 32768 subvar temp 32768
307
  // }
310
  // }
308
 
311
 
309
 setactor[THISACTOR].cstat temp
312
 setactor[THISACTOR].cstat temp
310
 
313
 
311
 
314
 
312
 
315
 
313
  ifactor HALFBITCH nullop else fall
316
  ifactor HALFBITCH nullop else fall
314
 
317
 
315
  ifaction FEMSHRUNK
318
  ifaction FEMSHRUNK
316
  {
319
  {
317
    ifcount SHRUNKDONECOUNT
320
    ifcount SHRUNKDONECOUNT
318
    {
321
    {
319
      action FEMANIMATE
322
      action FEMANIMATE
320
      cstat 257
323
      cstat 257
321
    }
324
    }
322
    else
325
    else
323
      ifcount SHRUNKCOUNT
326
      ifcount SHRUNKCOUNT
324
        sizeto 40 40
327
        sizeto 40 40
325
    else
328
    else
326
      state genericshrunkcode
329
      state genericshrunkcode
327
  }
330
  }
328
  else ifaction FEMGROW
331
  else ifaction FEMGROW
329
  {
332
  {
330
    ifcount 32
333
    ifcount 32
331
    {
334
    {
332
      respawnhitag
335
      respawnhitag
333
      guts JIBS4 20
336
      guts JIBS4 20
334
      guts JIBS6 20
337
      guts JIBS6 20
335
      spritepal 6
338
      spritepal 6
336
      soundonce LADY_SCREAM
339
      soundonce LADY_SCREAM
337
      ifactor SLUTASS debris SCRAP6 1
340
      ifactor SLUTASS debris SCRAP6 1
338
      sound SQUISH2
341
      sound SQUISH2
339
      killit
342
      killit
340
    }
343
    }
341
    else
344
    else
342
      sizeto MAXXSTRETCH MAXYSTRETCH
345
      sizeto MAXXSTRETCH MAXYSTRETCH
343
  }
346
  }
344
 
347
 
345
 
348
 
346
  else
349
  else
347
    ifaction FEMHDANCE1
350
    ifaction FEMHDANCE1
348
  {
351
  {
349
    ifactioncount 2
352
    ifactioncount 2
350
      action FEMHDANCE2
353
      action FEMHDANCE2
351
  }
354
  }
352
  else
355
  else
353
    ifaction FEMHDANCE2
356
    ifaction FEMHDANCE2
354
  {
357
  {
355
    ifactioncount 8
358
    ifactioncount 8
356
      action FEMHDANCE3
359
      action FEMHDANCE3
357
  }
360
  }
358
  else
361
  else
359
    ifaction FEMHDANCE3
362
    ifaction FEMHDANCE3
360
  {
363
  {
361
    ifactioncount 2
364
    ifactioncount 2
362
    action FEMANIMATE
365
    action FEMANIMATE
363
  }
366
  }
364
  else
367
  else
365
    ifaction FEMFROZEN1
368
    ifaction FEMFROZEN1
366
  {
369
  {
367
    ifcount THAWTIME
370
    ifcount THAWTIME
368
    {
371
    {
369
      action FEMANIMATE
372
      action FEMANIMATE
370
      getlastpal
373
      getlastpal
371
    }
374
    }
372
    else
375
    else
373
      ifcount FROZENDRIPTIME
376
      ifcount FROZENDRIPTIME
374
    {
377
    {
375
      ifactioncount 26
378
      ifactioncount 26
376
      {
379
      {
377
        spawn WATERDRIP
380
        spawn WATERDRIP
378
        resetactioncount
381
        resetactioncount
379
      }
382
      }
380
    }
383
    }
381
 
384
 
382
    ifhitweapon
385
    ifhitweapon
383
    {
386
    {
384
      ifwasweapon FREEZEBLAST
387
      ifwasweapon FREEZEBLAST
385
      {
388
      {
386
        strength 0
389
        strength 0
387
        break
390
        break
388
      }
391
      }
389
      lotsofglass 30
392
      lotsofglass 30
390
      sound GLASS_BREAKING
393
      sound GLASS_BREAKING
391
      respawnhitag
394
      respawnhitag
392
      ifrnd 84
395
      ifrnd 84
393
        spawn BLOODPOOL
396
        spawn BLOODPOOL
394
      killit
397
      killit
395
    }
398
    }
396
    else
399
    else
397
      ifp pfacing
400
      ifp pfacing
398
        ifpdistl FROZENQUICKKICKDIST
401
        ifpdistl FROZENQUICKKICKDIST
399
          pkick
402
          pkick
400
    break
403
    break
401
  }
404
  }
402
  else ifaction FEMFROZEN2
405
  else ifaction FEMFROZEN2
403
  {
406
  {
404
    ifcount THAWTIME
407
    ifcount THAWTIME
405
    {
408
    {
406
      action FEMANIMATE
409
      action FEMANIMATE
407
      getlastpal
410
      getlastpal
408
    }
411
    }
409
    else
412
    else
410
      ifcount FROZENDRIPTIME
413
      ifcount FROZENDRIPTIME
411
    {
414
    {
412
      ifactioncount 26
415
      ifactioncount 26
413
      {
416
      {
414
        spawn WATERDRIP
417
        spawn WATERDRIP
415
        resetactioncount
418
        resetactioncount
416
      }
419
      }
417
    }
420
    }
418
 
421
 
419
    ifhitweapon
422
    ifhitweapon
420
    {
423
    {
421
      ifwasweapon FREEZEBLAST
424
      ifwasweapon FREEZEBLAST
422
      {
425
      {
423
        strength 0
426
        strength 0
424
          break
427
          break
425
      }
428
      }
426
 
429
 
427
      lotsofglass 30
430
      lotsofglass 30
428
 
431
 
429
      sound GLASS_BREAKING
432
      sound GLASS_BREAKING
430
      ifrnd 84
433
      ifrnd 84
431
        spawn BLOODPOOL
434
        spawn BLOODPOOL
432
      respawnhitag
435
      respawnhitag
433
 
436
 
434
      ifrnd 128
437
      ifrnd 128
435
        sound DUKE_HIT_STRIPPER1
438
        sound DUKE_HIT_STRIPPER1
436
      else
439
      else
437
        sound DUKE_HIT_STRIPPER2
440
        sound DUKE_HIT_STRIPPER2
438
 
441
 
439
      killit
442
      killit
440
    }
443
    }
441
    else
444
    else
442
      ifp pfacing
445
      ifp pfacing
443
        ifpdistl FROZENQUICKKICKDIST
446
        ifpdistl FROZENQUICKKICKDIST
444
          pkick
447
          pkick
445
    break
448
    break
446
  }
449
  }
447
 
450
 
448
  ifhitweapon
451
  ifhitweapon
449
  {
452
  {
450
    ifdead
453
    ifdead
451
    {
454
    {
452
      ifwasweapon GROWSPARK
455
      ifwasweapon GROWSPARK
453
      {
456
      {
454
        cstat 0
457
        cstat 0
455
        move 0
458
        move 0
456
        sound ACTOR_GROWING
459
        sound ACTOR_GROWING
457
        action FEMGROW
460
        action FEMGROW
458
        break
461
        break
459
      }
462
      }
460
      else ifwasweapon FREEZEBLAST
463
      else ifwasweapon FREEZEBLAST
461
      {
464
      {
462
        ifaction FEMSHRUNK
465
        ifaction FEMSHRUNK
463
          break
466
          break
464
 
467
 
465
          action FEMFROZEN1
468
          action FEMFROZEN1
466
 
469
 
467
        move 0
470
        move 0
468
        spritepal 1
471
        spritepal 1
469
        strength 0
472
        strength 0
470
 
473
 
471
        sound SOMETHINGFROZE
474
        sound SOMETHINGFROZE
472
 
475
 
473
        break
476
        break
474
      }
477
      }
475
 
478
 
476
      ifrnd 128
479
      ifrnd 128
477
        sound DUKE_HIT_STRIPPER1
480
        sound DUKE_HIT_STRIPPER1
478
      else
481
      else
479
        sound DUKE_HIT_STRIPPER2
482
        sound DUKE_HIT_STRIPPER2
480
 
483
 
481
      respawnhitag
484
      respawnhitag
482
      state standard_bjibs
485
      state standard_bjibs
483
      state random_wall_jibs
486
      state random_wall_jibs
484
      spawn BLOODPOOL
487
      spawn BLOODPOOL
485
 
488
 
486
        ifactor HALFBITCH
489
        ifactor HALFBITCH
487
          money 3
490
          money 3
488
      else
491
      else
489
        ifactor SLUTASS
492
        ifactor SLUTASS
490
          money 3
493
          money 3
491
 
494
 
492
 
495
 
493
        spritepal 6
496
        spritepal 6
494
        soundonce LADY_SCREAM
497
        soundonce LADY_SCREAM
495
        ifactor NAKED1
498
        ifactor NAKED1
496
	  debris SCRAP3 18
499
	  debris SCRAP3 18
497
        else
500
        else
498
          ifactor PODFEM1
501
          ifactor PODFEM1
499
	    debris SCRAP3 18
502
	    debris SCRAP3 18
500
        killit
503
        killit
501
    }
504
    }
502
    else
505
    else
503
    {
506
    {
504
      ifwasweapon SHRINKSPARK
507
      ifwasweapon SHRINKSPARK
505
      {
508
      {
506
        sound ACTOR_SHRINKING
509
        sound ACTOR_SHRINKING
507
        move 0
510
        move 0
508
        action FEMSHRUNK
511
        action FEMSHRUNK
509
        cstat 0
512
        cstat 0
510
        break
513
        break
511
      }
514
      }
512
      else
515
      else
513
        ifwasweapon GROWSPARK
516
        ifwasweapon GROWSPARK
514
          sound EXPANDERHIT
517
          sound EXPANDERHIT
515
 
518
 
516
 
519
 
517
      sound SQUISH2
520
      sound SQUISH2
518
 
521
 
519
      guts JIBS6 1
522
      guts JIBS6 1
520
    }
523
    }
521
  }
524
  }
522
 
525
 
523
 
526
 
524
 
527
 
525
  ifp pfacing
528
  ifp pfacing
526
    ifpdistl 1280
529
    ifpdistl 1280
527
      ifhitspace
530
      ifhitspace
528
  {
531
  {
529
    tip
532
    tip
530
    ifrnd 128
533
    ifrnd 128
531
      soundonce DUKE_TIP1
534
      soundonce DUKE_TIP1
532
    else
535
    else
533
      soundonce DUKE_TIP2
536
      soundonce DUKE_TIP2
534
ifactor HALFBITCH
537
ifactor HALFBITCH
535
      action FEMHDANCE1
538
      action FEMHDANCE1
536
  }
539
  }
537
ends
540
ends
538
 
541
 
539
useractor notenemy HALFBITCH TOUGH
542
useractor notenemy HALFBITCH TOUGH
540
  state nwbabecode
543
  state nwbabecode
541
enda
544
enda
542
 
545
 
543
useractor notenemy SLUTASS TOUGH
546
useractor notenemy SLUTASS TOUGH
544
  state nwbabecode
547
  state nwbabecode
545
enda
548
enda
546
 
549
 
547
state nwl3surprise
550
state nwl3surprise
548
ifvare VOLUME 1
551
ifvare VOLUME 1
549
  {
552
  {
550
    ifvare LEVEL 2
553
    ifvare LEVEL 2
551
      {
554
      {
552
        getactor[THISACTOR].sectnum temp
555
        getactor[THISACTOR].sectnum temp
553
        switch temp
556
        switch temp
554
          case 220 case 221
557
          case 220 case 221
555
            ifvarn musicchange 1
558
            ifvarn musicchange 1
556
              {
559
              {
557
                starttrack 12 // doom
560
                starttrack 12 // doom
558
                setvar musicchange 1
561
                setvar musicchange 1
559
              }
562
              }
560
          break
563
          break
561
          case 563 case 564 case 565 case 566 case 567
564
          case 563 case 564 case 565 case 566 case 567
562
            ifvarn musicchange 2
565
            ifvarn musicchange 2
563
              {
566
              {
564
                starttrack 13 // mario
567
                starttrack 13 // mario
565
                setvar musicchange 2
568
                setvar musicchange 2
566
              }
569
              }
567
          break
570
          break
568
          case 192 case 193 case 194 case 195 case 196 case 197 case 198 case 237 case 238 case 239 case 240
571
          case 192 case 193 case 194 case 195 case 196 case 197 case 198 case 237 case 238 case 239 case 240
569
          case 166 case 167 case 172 case 173 case 174 case 176 case 179
572
          case 166 case 167 case 172 case 173 case 174 case 176 case 179
570
            ifvarn musicchange 0
573
            ifvarn musicchange 0
571
              {
574
              {
572
                starttrackvar LEVEL // level music
575
                starttrackvar LEVEL // level music
573
                setvar musicchange 0
576
                setvar musicchange 0
574
              }
577
              }
575
          break
578
          break
576
        endswitch
579
        endswitch
577
      }
580
      }
578
  }
581
  }
579
ends
582
ends
580
 
583
 
581
/*
584
/*
582
action ACOMMBREETH  0  3  5  1  40
585
action ACOMMBREETH  0  3  5  1  40
583
action ACOMMFROZEN  0  1  5
586
action ACOMMFROZEN  0  1  5
584
action ACOMMSPIN   -5  1  5  1  12
587
action ACOMMSPIN   -5  1  5  1  12
585
action ACOMMGET   0  3  5  1  30
588
action ACOMMGET   0  3  5  1  30
586
action ACOMMSHOOT  20  1  5   1 35
589
action ACOMMSHOOT  20  1  5   1 35
587
action ACOMMABOUTTOSHOOT 20 1 5 1 30
590
action ACOMMABOUTTOSHOOT 20 1 5 1 30
588
action ACOMMDYING  30  8  1  1  12
591
action ACOMMDYING  30  8  1  1  12
589
action ACOMMDEAD   38  1  1  1  1
592
action ACOMMDEAD   38  1  1  1  1
590
 
593
 
591
 
594
 
592
move COMMGETUPVELS 128 -64
595
move COMMGETUPVELS 128 -64
593
move COMMGETVELS 128 64
596
move COMMGETVELS 128 64
594
move COMMSLOW 64 24
597
move COMMSLOW 64 24
595
move COMMSTOPPED
598
move COMMSTOPPED
596
 
599
 
597
ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow
600
ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow
598
ai AICOMMGET ACOMMGET COMMGETVELS seekplayer
601
ai AICOMMGET ACOMMGET COMMGETVELS seekplayer
599
ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow
602
ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow
600
ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow
603
ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow
601
ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin
604
ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin
602
ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer
605
ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer
603
ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir
606
ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir
604
ai AICOMMGROW ACOMMGET COMMSTOPPED furthestdir
607
ai AICOMMGROW ACOMMGET COMMSTOPPED furthestdir
605
*/
608
*/
606
 
609
 
607
move COMMGETUPVELSNW 128 -64
610
move COMMGETUPVELSNW 128 -64
608
move COMMGETVELSNW 128 64
611
move COMMGETVELSNW 128 64
609
move COMMSLOWNW 64 24
612
move COMMSLOWNW 64 24
610
move COMMSTOPPEDNW
613
move COMMSTOPPEDNW
611
 
614
 
612
action ACOMMSPINNW   0  1  5  1  12
615
action ACOMMSPINNW   0  1  5  1  12
613
action ACOMMSHOOTNW  20  1  5 1  16 // this is custom to shorten the delay between firing freezeblasts
616
action ACOMMSHOOTNW  20  1  5 1  16 // this is custom to shorten the delay between firing freezeblasts
614
 
617
 
615
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELSNW spin
618
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELSNW spin
616
ai AICOMMSHOOTNW ACOMMSHOOTNW COMMSTOPPEDNW faceplayerslow
619
ai AICOMMSHOOTNW ACOMMSHOOTNW COMMSTOPPEDNW faceplayerslow
617
 
620
 
618
state checkcommhitstate
621
state checkcommhitstate
619
 
622
 
620
  ifhitweapon
623
  ifhitweapon
621
  {
624
  {
622
    debris SCRAP3 5
625
    debris SCRAP3 5
623
    ifdead
626
    ifdead
624
    {
627
    {
625
      ifwasweapon FREEZEBLAST
628
      ifwasweapon FREEZEBLAST
626
      {
629
      {
627
        break
630
        break
628
      }
631
      }
629
      else
632
      else
630
        ifwasweapon GROWSPARK
633
        ifwasweapon GROWSPARK
631
      {
634
      {
632
        sound ACTOR_GROWING
635
        sound ACTOR_GROWING
633
        ai AICOMMGROW
636
        ai AICOMMGROW
634
        break
637
        break
635
      }
638
      }
636
 
639
 
637
      addkills 1
640
      addkills 1
638
 
641
 
639
      ifwasweapon RADIUSEXPLOSION
642
      ifwasweapon RADIUSEXPLOSION
640
      {
643
      {
641
        debris SCRAP3 5
644
        debris SCRAP3 5
642
        sound SQUISH2
645
        sound SQUISH2
643
        killit
646
        killit
644
      }
647
      }
645
      else
648
      else
646
        ifwasweapon RPG
649
        ifwasweapon RPG
647
      {
650
      {
648
        sound SQUISH2
651
        sound SQUISH2
649
        debris SCRAP3 5
652
        debris SCRAP3 5
650
        state standard_jibs
653
        state standard_jibs
651
        killit
654
        killit
652
      }
655
      }
653
 
656
 
654
      debris SCRAP3 100
657
      debris SCRAP3 100
655
      sound COMM_DYING
658
      sound COMM_DYING
656
      ai AICOMMDYING
659
      ai AICOMMDYING
657
    }
660
    }
658
    else
661
    else
659
    {
662
    {
660
      soundonce COMM_PAIN
663
      soundonce COMM_PAIN
661
      ifwasweapon SHRINKSPARK
664
      ifwasweapon SHRINKSPARK
662
      {
665
      {
663
        sound ACTOR_SHRINKING
666
        sound ACTOR_SHRINKING
664
        ai AICOMMSHRUNK
667
        ai AICOMMSHRUNK
665
      }
668
      }
666
      else
669
      else
667
        ifwasweapon GROWSPARK
670
        ifwasweapon GROWSPARK
668
          sound EXPANDERHIT
671
          sound EXPANDERHIT
669
      else
672
      else
670
        ifrnd 24
673
        ifrnd 24
671
          ai AICOMMABOUTTOSHOOT
674
          ai AICOMMABOUTTOSHOOT
672
    }
675
    }
673
  }
676
  }
674
ends
677
ends
675
 
678
 
676
actor COMMANDERSTAYPUT COMMANDERSTRENGTH
679
actor COMMANDERSTAYPUT COMMANDERSTRENGTH
677
  cactor COMMANDER
680
  cactor COMMANDER
678
  ai AICOMMABOUTTOSHOOT
681
  ai AICOMMABOUTTOSHOOT
679
enda
682
enda
680
 
683
 
681
actor COMMANDER COMMANDERSTRENGTH
684
actor COMMANDER COMMANDERSTRENGTH
682
 
685
 
683
  state checksquished
686
  state checksquished
684
 
687
 
685
  ifaction ACOMMFROZEN
688
  ifaction ACOMMFROZEN
686
  {
689
  {
687
    fall
690
    fall
688
 
691
 
689
    ifcount THAWTIME
692
    ifcount THAWTIME
690
    {
693
    {
691
      getlastpal
694
      getlastpal
692
      ai AICOMMWAIT
695
      ai AICOMMWAIT
693
    }
696
    }
694
    else
697
    else
695
      ifcount FROZENDRIPTIME
698
      ifcount FROZENDRIPTIME
696
    {
699
    {
697
      ifactioncount 26
700
      ifactioncount 26
698
      {
701
      {
699
        spawn WATERDRIP
702
        spawn WATERDRIP
700
        resetactioncount
703
        resetactioncount
701
      }
704
      }
702
    }
705
    }
703
 
706
 
704
    ifhitweapon
707
    ifhitweapon
705
    {
708
    {
706
      ifwasweapon FREEZEBLAST
709
      ifwasweapon FREEZEBLAST
707
      {
710
      {
708
        strength 0
711
        strength 0
709
        break
712
        break
710
      }
713
      }
711
      addkills 1
714
      addkills 1
712
 
715
 
713
      ifrnd 84
716
      ifrnd 84
714
        spawn BLOODPOOL
717
        spawn BLOODPOOL
715
      lotsofglass 30
718
      lotsofglass 30
716
      sound GLASS_BREAKING
719
      sound GLASS_BREAKING
717
      killit
720
      killit
718
    }
721
    }
719
    ifp pfacing
722
    ifp pfacing
720
      ifpdistl FROZENQUICKKICKDIST
723
      ifpdistl FROZENQUICKKICKDIST
721
        pkick
724
        pkick
722
    break
725
    break
723
  }
726
  }
724
  ifai 0
727
  ifai 0
725
    ai AICOMMSHOOTNW
728
    ai AICOMMSHOOTNW
726
  else
729
  else
727
    ifai AICOMMWAIT
730
    ifai AICOMMWAIT
728
  {
731
  {
729
    ifcount 20
732
    ifcount 20
730
    {
733
    {
731
      ifcansee
734
      ifcansee
732
      {
735
      {
733
        ifcanshoottarget
736
        ifcanshoottarget
734
        {
737
        {
735
          ifrnd 96
738
          ifrnd 96
736
            ai AICOMMGET
739
            ai AICOMMGET
737
          else
740
          else
738
            ai AICOMMABOUTTOSHOOT
741
            ai AICOMMABOUTTOSHOOT
739
        }
742
        }
740
      }
743
      }
741
      else
744
      else
742
        ai AICOMMGET
745
        ai AICOMMGET
743
    }
746
    }
744
  }
747
  }
745
  else
748
  else
746
    ifai AICOMMABOUTTOSHOOT
749
    ifai AICOMMABOUTTOSHOOT
747
  {
750
  {
748
    ifactioncount 2
751
    ifactioncount 2
749
    {
752
    {
750
      ifcansee
753
      ifcansee
751
        ai AICOMMSHOOTNW
754
        ai AICOMMSHOOTNW
752
      else
755
      else
753
      {
756
      {
754
        ai AICOMMGET
757
        ai AICOMMGET
755
        break
758
        break
756
      }
759
      }
757
    }
760
    }
758
    ifrnd 32 soundonce COMM_ATTACK
761
    ifrnd 32 soundonce COMM_ATTACK
759
  }
762
  }
760
  else
763
  else
761
    ifai AICOMMSHOOTNW
764
    ifai AICOMMSHOOTNW
762
  {
765
  {
763
    ifcanshoottarget
766
    ifcanshoottarget
764
    {
767
    {
765
      ifcount 12
768
      ifcount 12
766
        ifrnd 16
769
        ifrnd 16
767
          ai AICOMMWAIT
770
          ai AICOMMWAIT
768
	
771
	
769
      ifactioncount 1
772
      ifactioncount 1
770
      {
773
      {
771
        shoot FREEZEBLAST
774
        shoot FREEZEBLAST
772
        resetactioncount
775
        resetactioncount
773
      }
776
      }
774
 
777
 
775
      getplayer[THISACTOR].i temp
778
      getplayer[THISACTOR].i temp
776
      getactor[temp].pal temp
779
      getactor[temp].pal temp
777
      ifvare temp 1 // if player is frozen
780
      ifvare temp 1 // if player is frozen
778
        ai AICOMMGET
781
        ai AICOMMGET
779
    }
782
    }
780
    else
783
    else
781
      ai AICOMMGET
784
      ai AICOMMGET
782
  }
785
  }
783
  else
786
  else
784
    ifai AICOMMSHRUNK
787
    ifai AICOMMSHRUNK
785
  {
788
  {
786
    ifcount SHRUNKDONECOUNT
789
    ifcount SHRUNKDONECOUNT
787
      ai AICOMMGET
790
      ai AICOMMGET
788
    else
791
    else
789
      ifcount SHRUNKCOUNT
792
      ifcount SHRUNKCOUNT
790
        sizeto 48 40
793
        sizeto 48 40
791
    else
794
    else
792
      state genericshrunkcode
795
      state genericshrunkcode
793
  }
796
  }
794
  else
797
  else
795
    ifai AICOMMGROW
798
    ifai AICOMMGROW
796
      state genericgrowcode
799
      state genericgrowcode
797
  else
800
  else
798
    ifai AICOMMGET
801
    ifai AICOMMGET
799
  {
802
  {
800
    ifnotmoving
803
    ifnotmoving
801
      ifrnd 4
804
      ifrnd 4
802
        operate
805
        operate
803
    ifpdistl 1024
806
    ifpdistl 1024
804
    {
807
    {
805
      ifp palive
808
      ifp palive
806
      {
809
      {
807
        sound COMM_SPIN
810
        sound COMM_SPIN
808
        ai AICOMMSPINNW
811
        ai AICOMMSPINNW
809
        break
812
        break
810
      }
813
      }
811
      
814
      
812
      getplayer[THISACTOR].i temp
815
      getplayer[THISACTOR].i temp
813
      getactor[temp].pal temp
816
      getactor[temp].pal temp
814
      ifvare temp 1 // if player is frozen
817
      ifvare temp 1 // if player is frozen
815
      {
818
      {
816
        sound COMM_SPIN
819
        sound COMM_SPIN
817
        ai AICOMMSPINNW
820
        ai AICOMMSPINNW
818
        break
821
        break
819
      }
822
      }
820
    }
823
    }
821
 
824
 
822
    ifcansee
825
    ifcansee
823
    {
826
    {
824
      ifp phigher
827
      ifp phigher
825
        move COMMGETUPVELS getv geth faceplayer
828
        move COMMGETUPVELS getv geth faceplayer
826
      else
829
      else
827
        move COMMGETVELS getv geth faceplayer
830
        move COMMGETVELS getv geth faceplayer
828
    }
831
    }
829
    ifactioncount 8
832
    ifactioncount 8
830
      ifrnd 2
833
      ifrnd 2
831
        ai AICOMMABOUTTOSHOOT
834
        ai AICOMMABOUTTOSHOOT
832
  }
835
  }
833
  else
836
  else
834
    ifai AICOMMSPINNW
837
    ifai AICOMMSPINNW
835
  {
838
  {
836
    soundonce COMM_SPIN
839
    soundonce COMM_SPIN
837
    ifcount 16
840
    ifcount 16
838
    {
841
    {
839
      ifpdistl 1280
842
      ifpdistl 1280
840
      {
843
      {
841
        setvar tempb CAPTSPINNINGPLAYER
844
        setvar tempb CAPTSPINNINGPLAYER
842
        mulvar tempb -1
845
        mulvar tempb -1
843
        // addphealth CAPTSPINNINGPLAYER
846
        // addphealth CAPTSPINNINGPLAYER
844
        getplayer[THISACTOR].i temp
847
        getplayer[THISACTOR].i temp
845
        setactor[temp].htextra tempb
848
        setactor[temp].htextra tempb
846
        setactor[temp].htpicnum KNEE
849
        setactor[temp].htpicnum KNEE
847
        setactor[temp].htowner THISACTOR
850
        setactor[temp].htowner THISACTOR
848
 
851
 
849
        globalsound DUKE_GRUNT
852
        globalsound DUKE_GRUNT
850
        palfrom 32 16
853
        palfrom 32 16
851
        resetcount
854
        resetcount
852
      }
855
      }
853
      else
856
      else
854
        ifpdistg 2300
857
        ifpdistg 2300
855
          ai AICOMMWAIT
858
          ai AICOMMWAIT
856
    }
859
    }
857
    ifactioncount 52
860
    ifactioncount 52
858
      ai AICOMMWAIT
861
      ai AICOMMWAIT
859
    ifnotmoving
862
    ifnotmoving
860
      ifrnd 32
863
      ifrnd 32
861
        operate
864
        operate
862
  }
865
  }
863
 
866
 
864
  ifai AICOMMDYING
867
  ifai AICOMMDYING
865
  {
868
  {
866
    fall
869
    fall
867
    strength 0
870
    strength 0
868
 
871
 
869
    ifhitweapon
872
    ifhitweapon
870
      ifwasweapon RADIUSEXPLOSION
873
      ifwasweapon RADIUSEXPLOSION
871
    {
874
    {
872
      sound SQUISH2
875
      sound SQUISH2
873
      spawn BLOODPOOL
876
      spawn BLOODPOOL
874
      state standard_jibs
877
      state standard_jibs
875
 
878
 
876
      killit
879
      killit
877
    }
880
    }
878
 
881
 
879
    ifaction ACOMMDYING
882
    ifaction ACOMMDYING
880
      ifactioncount 8
883
      ifactioncount 8
881
    {
884
    {
882
      iffloordistl 8
885
      iffloordistl 8
883
        sound THUD
886
        sound THUD
884
      cstat 0
887
      cstat 0
885
      action ACOMMDEAD
888
      action ACOMMDEAD
886
    }
889
    }
887
  }
890
  }
888
  else
891
  else
889
  {
892
  {
890
    ifrnd 2
893
    ifrnd 2
891
      soundonce COMM_ROAM
894
      soundonce COMM_ROAM
892
    state checkcommhitstate
895
    state checkcommhitstate
893
  }
896
  }
894
enda
897
enda
895
 
898
 
896
move TANKSTOPNW
899
move TANKSTOPNW
897
 
900
 
898
useractor enemy TANK TANKSTRENGTH
901
useractor enemy TANK TANKSTRENGTH
899
    fall
902
    fall
900
 
903
 
901
//  sizeat 45 45
904
//  sizeat 45 45
902
  ifaction 0
905
  ifaction 0
903
  {
906
  {
904
    action ATANKWAIT
907
    action ATANKWAIT
905
    cstat 257
908
    cstat 257
906
    clipdist 100
909
    clipdist 100
907
  }
910
  }
908
  else
911
  else
909
    ifaction ATANKSPIN
912
    ifaction ATANKSPIN
910
  {
913
  {
911
    soundonce TANK_ROAM
914
    soundonce TANK_ROAM
912
 
915
 
913
    ifactioncount 20
916
    ifactioncount 20
914
    {
917
    {
915
      ifrnd 16
918
      ifrnd 16
916
        ifcansee
919
        ifcansee
917
          ifcanshoottarget
920
          ifcanshoottarget
918
      {
921
      {
919
        move TANKSTOPNW geth
922
        move TANKSTOPNW geth
920
        action ATANKSHOOTING
923
        action ATANKSHOOTING
921
        stopsound TANK_ROAM
924
        stopsound TANK_ROAM
922
      }
925
      }
923
    }
926
    }
924
 
927
 
925
    ifrnd 16
928
    ifrnd 16
926
      move TANKFORWARD seekplayer
929
      move TANKFORWARD seekplayer
927
  }
930
  }
928
  else
931
  else
929
    ifaction ATANKSHOOTING
932
    ifaction ATANKSHOOTING
930
  {
933
  {
931
    ifactioncount 22
934
    ifactioncount 22
932
    {
935
    {
933
      ifpdistg 8192
936
      ifpdistg 8192
934
      {
937
      {
935
        sound BOS1_ATTACK2
938
        sound BOS1_ATTACK2
936
        shoot MORTER
939
        shoot MORTER
937
      }
940
      }
938
      resetcount
941
      resetcount
939
      move 0 action ATANKWAIT
942
      move 0 action ATANKWAIT
940
    }
943
    }
941
    else
944
    else
942
      ifactioncount 2
945
      ifactioncount 2
943
    {
946
    {
944
      ifcansee
947
      ifcansee
945
      {
948
      {
946
        ifpdistl 16384
949
        ifpdistl 16384
947
        {
950
        {
948
          ifrnd 128
951
          ifrnd 128
949
          {
952
          {
950
 
953
 
951
 
954
 
952
            sound PISTOL_FIRE
955
            sound PISTOL_FIRE
953
            shoot SHOTSPARK1
956
            shoot SHOTSPARK1
954
          }
957
          }
955
        }
958
        }
956
        else
959
        else
957
          ifrnd 128
960
          ifrnd 128
958
        {
961
        {
959
          sound PRED_ATTACK
962
          sound PRED_ATTACK
960
          shoot FIRELASER
963
          shoot FIRELASER
961
        }
964
        }
962
      }
965
      }
963
      else
966
      else
964
      {
967
      {
965
        move TANKFORWARD seekplayer
968
        move TANKFORWARD seekplayer
966
        action ATANKSPIN
969
        action ATANKSPIN
967
      }
970
      }
968
    }
971
    }
969
 
972
 
970
    ifrnd 16
973
    ifrnd 16
971
    {
974
    {
972
      stopsound TANK_ROAM
975
      stopsound TANK_ROAM
973
      move TANKSTOPNW faceplayerslow
976
      move TANKSTOPNW faceplayerslow
974
    }
977
    }
975
  }
978
  }
976
  else
979
  else
977
    ifaction ATANKWAIT
980
    ifaction ATANKWAIT
978
  {
981
  {
979
    ifactioncount 32
982
    ifactioncount 32
980
    {
983
    {
981
      move TANKFORWARD seekplayer
984
      move TANKFORWARD seekplayer
982
      action ATANKSPIN
985
      action ATANKSPIN
983
    }
986
    }
984
  }
987
  }
985
  else
988
  else
986
    ifaction ATANKDEAD
989
    ifaction ATANKDEAD
987
  {
990
  {
988
    addkills 1
991
    addkills 1
989
    hitradius 6144 TOUGH TOUGH TOUGH TOUGH
992
    hitradius 6144 TOUGH TOUGH TOUGH TOUGH
990
    sound LASERTRIP_EXPLODE
993
    sound LASERTRIP_EXPLODE
991
    debris SCRAP1 15
994
    debris SCRAP1 15
992
    spawn EXPLOSION2
995
    spawn EXPLOSION2
993
    ifrnd 128 spawn SNOWMAN
996
    ifrnd 128 spawn SNOWMAN
994
    killit
997
    killit
995
  }
998
  }
996
 
999
 
997
  ifhitweapon
1000
  ifhitweapon
998
  {
1001
  {
999
    ifdead
1002
    ifdead
1000
      action ATANKDEAD
1003
      action ATANKDEAD
1001
    else
1004
    else
1002
    {
1005
    {
1003
      debris SCRAP1 1
1006
      debris SCRAP1 1
1004
      ifaction ATANKSHOOTING break
1007
      ifaction ATANKSHOOTING break
1005
 
1008
 
1006
      ifrnd 192
1009
      ifrnd 192
1007
      {
1010
      {
1008
        move TANKSTOPNW geth
1011
        move TANKSTOPNW geth
1009
        action ATANKSHOOTING
1012
        action ATANKSHOOTING
1010
        stopsound TANK_ROAM
1013
        stopsound TANK_ROAM
1011
      }
1014
      }
1012
    }
1015
    }
1013
  }
1016
  }
1014
 
1017
 
1015
enda
1018
enda
1016
 
1019
 
1017
 
1020
 
1018
include NWActor.con
1021
include NWActor.con
1019
include NWSnow.con
1022
include NWSnow.con
1020
 
1023
 
1021
// -----------------------------------------------------------------------------
1024
// -----------------------------------------------------------------------------
1022
 
1025
 
1023
onevent EVENT_GAME
1026
onevent EVENT_GAME
1024
  ifactor APLAYER
1027
  ifactor APLAYER
1025
  {
1028
  {
1026
    state nwl3surprise
1029
    state nwl3surprise
1027
    
1030
    
1028
    getplayer[THISACTOR].holoduke_on holodukeid
1031
    getplayer[THISACTOR].holoduke_on holodukeid
1029
    ifvarg holodukeid -1
1032
    ifvarg holodukeid -1
1030
      setactor[holodukeid].mdflags 16
1033
      setactor[holodukeid].mdflags 16
1031
    
1034
    
1032
   // addlogvar skin
1035
   // addlogvar skin
1033
  }
1036
  }
1034
  ifactor FRAMEEFFECT1
1037
  ifactor FRAMEEFFECT1
1035
    ifspawnedby APLAYER
1038
    ifspawnedby APLAYER
1036
      setactor[THISACTOR].mdflags 16
1039
      setactor[THISACTOR].mdflags 16
1037
 
1040
 
1038
/*
1041
/*
1039
  ifactor MONEY
1042
  ifactor MONEY
1040
    {
1043
    {
1041
      setactor[THISACTOR].mdflags 16
1044
      setactor[THISACTOR].mdflags 16
1042
      getactor[THISACTOR].owner owner
1045
      // getactor[THISACTOR].owner owner
1043
      switch owner
1046
      switch owner
1044
      case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
1047
      case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
1045
        getactor[THISACTOR].x x
1048
        getactor[THISACTOR].x x
1046
        getactor[THISACTOR].y y
1049
        getactor[THISACTOR].y y
1047
        getactor[THISACTOR].z z
1050
        getactor[THISACTOR].z z
1048
 
1051
 
1049
        updatesectorz x y z temp
1052
        updatesectorz x y z temp
1050
        ifvarn temp -1 getflorzofslope temp x y temp2 else killit
1053
        ifvarn temp -1 getflorzofslope temp x y temp2 else killit
1051
 
1054
 
1052
        ifvarvare z temp2 killit
1055
        ifvarvare z temp2 killit
1053
      break
1056
      break
1054
      endswitch
1057
      endswitch
1055
    }
1058
    }
1056
*/
1059
*/
1057
endevent
1060
endevent
1058
 
1061
 
1059
onevent EVENT_ANIMATESPRITES // This is a hell of a mess because putting get/settspr in states throws warnings, and I don't want that.
-
 
1060
 getactor[THISACTOR].picnum picnum
-
 
1061
 getactor[THISACTOR].owner owner
1062
onevent EVENT_ANIMATESPRITES
1062
 
1063
 
1063
 ifvare picnum DOORSHOCK
1064
 ifvare picnum DOORSHOCK
1064
   {
1065
   {
1065
     ifspritepal 30 settspr[THISACTOR].tsprpicnum 3656
1066
     ifspritepal 30 settspr[THISACTOR].tsprpicnum 3656
1066
     ifvare VOLUME 1 ifvare LEVEL 2 settspr[THISACTOR].tsprpicnum 3656
1067
     ifvare VOLUME 1 ifvare LEVEL 2 settspr[THISACTOR].tsprpicnum 3656
1067
     break
1068
     break
1068
   }
1069
   }
1069
 ifvare picnum SNOWFLAKE
1070
 ifvare picnum SNOWFLAKE
1070
   {
1071
   {
1071
     settspr[THISACTOR].tsprpicnum SNOW
1072
     settspr[THISACTOR].tsprpicnum SNOW
1072
     settspr[THISACTOR].tsprxrepeat 4
1073
     settspr[THISACTOR].tsprxrepeat 4
1073
     settspr[THISACTOR].tspryrepeat 4
1074
     settspr[THISACTOR].tspryrepeat 4
1074
     break
1075
     break
1075
   }
1076
   }
1076
/*
1077
/*
1077
 ifvare picnum MONEY
1078
 ifvare picnum MONEY
1078
   {
1079
   {
1079
      switch owner
1080
      switch owner
1080
      case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
1081
      case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
1081
        settspr[THISACTOR].tsprpicnum SNOW
1082
        settspr[THISACTOR].tsprpicnum SNOW
1082
      break
1083
      break
1083
      endswitch
1084
      endswitch
1084
   }
1085
   }
1085
*/
1086
*/
1086
 
1087
 
1087
  switch picnum
1088
  switch picnum
1088
    case APLAYER
1089
    case APLAYER
1089
      ifvare skin SANTA
1090
      ifvare skin SANTA
1090
      {
1091
      {
1091
        gettspr[THISACTOR].tsprpicnum temp3
1092
        gettspr[THISACTOR].tsprpicnum temp3
1092
        ifvarl temp3 1544 addvar temp3 4096
1093
        ifvarg temp3 1399 ifvarl temp3 1544 addvar temp3 4096
1093
        settspr[THISACTOR].tsprpicnum temp3
1094
        settspr[THISACTOR].tsprpicnum temp3
1094
 
1095
 
1095
        ifvarg holodukeid -1
1096
        ifvarg holodukeid -1
1096
        {
1097
        {
1097
          gettspr[holodukeid].tsprpicnum temp3
1098
          gettspr[holodukeid].tsprpicnum temp3
1098
          ifvarl temp3 1544 addvar temp3 4096
1099
          ifvarg temp3 1399 ifvarl temp3 1544 addvar temp3 4096
1099
          settspr[holodukeid].tsprpicnum temp3
1100
          settspr[holodukeid].tsprpicnum temp3
1100
        }
1101
        }
1101
      }
1102
      }
1102
      break
1103
      break
1103
 
1104
 
1104
    case FRAMEEFFECT1
1105
    case FRAMEEFFECT1
1105
      ifvare skin SANTA
1106
      ifvare skin SANTA
1106
        ifspawnedby APLAYER
1107
        ifspawnedby APLAYER
1107
        {
1108
        {
1108
          gettspr[THISACTOR].tsprpicnum temp3
1109
          gettspr[THISACTOR].tsprpicnum temp3
1109
          ifvarl temp3 1544 addvar temp3 4096
1110
          ifvarg temp3 1399 ifvarl temp3 1544 addvar temp3 4096
1110
          settspr[THISACTOR].tsprpicnum temp3
1111
          settspr[THISACTOR].tsprpicnum temp3
1111
        }
1112
        }
1112
      break
1113
      break
1113
 
1114
 
1114
    case DUKETORSO
1115
    case DUKETORSO
1115
    case DUKEGUN
1116
    case DUKEGUN
1116
      getactor[owner].picnum temp2
1117
      getactor[owner].picnum temp2
1117
      ifvare temp2 SOBBOTWALK
1118
      ifvare temp2 SOBBOTWALK
1118
      {
1119
      {
1119
        gettspr[THISACTOR].tsprpicnum temp3
1120
        gettspr[THISACTOR].tsprpicnum temp3
1120
        addvar temp3 2456
1121
        addvar temp3 2456
1121
        settspr[THISACTOR].tsprpicnum temp3
1122
        settspr[THISACTOR].tsprpicnum temp3
1122
      }
1123
      }
1123
      ifvare temp2 SOBBOTFLY
1124
      ifvare temp2 SOBBOTFLY
1124
      {
1125
      {
1125
        gettspr[THISACTOR].tsprpicnum temp3
1126
        gettspr[THISACTOR].tsprpicnum temp3
1126
        addvar temp3 2456
1127
        addvar temp3 2456
1127
        settspr[THISACTOR].tsprpicnum temp3
1128
        settspr[THISACTOR].tsprpicnum temp3
1128
      }
1129
      }
1129
      ifvare temp2 APLAYER
1130
      ifvare temp2 APLAYER
1130
      {
1131
      {
1131
        ifvare skin SANTA
1132
        ifvare skin SANTA
1132
        {
1133
        {
1133
          gettspr[THISACTOR].tsprpicnum temp3
1134
          gettspr[THISACTOR].tsprpicnum temp3
1134
          addvar temp3 2456
1135
          addvar temp3 2456
1135
          settspr[THISACTOR].tsprpicnum temp3
1136
          settspr[THISACTOR].tsprpicnum temp3
1136
        }
1137
        }
1137
      }
1138
      }
1138
      break
1139
      break
1139
 
1140
 
1140
    case DUKELEG
1141
    case DUKELEG
1141
      getactor[owner].picnum temp2
1142
      getactor[owner].picnum temp2
1142
      ifvare temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30
1143
      ifvare temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30
1143
      ifvare temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30
1144
      ifvare temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30
1144
      ifvare temp2 APLAYER ifvare skin SANTA settspr[THISACTOR].tsprpal 30
1145
      ifvare temp2 APLAYER ifvare skin SANTA settspr[THISACTOR].tsprpal 30
1145
      break
1146
      break
1146
  endswitch
1147
  endswitch
1147
 
1148
 
1148
 ifvare picnum APLAYER // this fixes the bug with the misplaced TV screen tiles
1149
 ifvare picnum APLAYER // this fixes the bug with the misplaced TV screen tiles
1149
   {
1150
   {
1150
     gettspr[THISACTOR].tsprpicnum temp
1151
     gettspr[THISACTOR].tsprpicnum temp
1151
     switch temp
1152
     switch temp
1152
      case 1470 case 1471 case 1472 case 1473 case 1474
1153
      case 1470 case 1471 case 1472 case 1473 case 1474
1153
       subvar temp 5
1154
       subvar temp 5
1154
       settspr[THISACTOR].tsprpicnum temp
1155
       settspr[THISACTOR].tsprpicnum temp
1155
      break
1156
      break
1156
     endswitch
1157
     endswitch
1157
   }
1158
   }
1158
endevent
1159
endevent
1159
 
1160
 
1160
 
1161
 
1161
 
1162
 
1162
 
1163
 
1163
useractor notenemy NWEFFECTOR 0 
1164
useractor notenemy NWEFFECTOR 0 
1164
 cstat 32768
1165
 cstat 32768
1165
 // sizeat 1 1
1166
 // sizeat 1 1
1166
 
1167
 
1167
 ifspritepal 31
1168
 ifspritepal 31
1168
   {
1169
   {
1169
      getplayer[THISACTOR].cursectnum temp3
1170
      getplayer[THISACTOR].cursectnum temp3
1170
      switch temp3
1171
      switch temp3
1171
        case 60 case 61 case 62 case 63
1172
        case 60 case 61 case 62 case 63
1172
        case 86 case 87
1173
        case 86 case 87
1173
        case 299 case 300 case 301 case 302 case 303 case 304 case 305 case 306 case 307 case 308 case 309
1174
        case 299 case 300 case 301 case 302 case 303 case 304 case 305 case 306 case 307 case 308 case 309
1174
        case 310 case 311 case 312 case 313 case 314 case 315 case 316 case 317
1175
        case 310 case 311 case 312 case 313 case 314 case 315 case 316 case 317
1175
         soundonce PHONE_RING 
1176
         soundonce PHONE_RING 
1176
        break
1177
        break
1177
      endswitch
1178
      endswitch
1178
 
1179
 
1179
      ifpdistl RETRIEVEDISTANCE
1180
      ifpdistl RETRIEVEDISTANCE
1180
      ifp pfacing
1181
      ifp pfacing
1181
      ifhitspace
1182
      ifhitspace
1182
      ifvare temp2 0
1183
      ifvare temp2 0
1183
        {
1184
        {
1184
          setvar temp 0
1185
          setvar temp 0
1185
          setvar temp2 1
1186
          setvar temp2 1
1186
        }
1187
        }
1187
 
1188
 
1188
      ifvare temp2 1
1189
      ifvare temp2 1
1189
        {
1190
        {
1190
          addvar temp 1
1191
          addvar temp 1
1191
 
1192
 
1192
          stopsound PHONE_RING
1193
          stopsound PHONE_RING
1193
          ifvare temp 1 sound PHONE_PICKUP
1194
          ifvare temp 1 sound PHONE_PICKUP
1194
     else ifvare temp 39
1195
     else ifvare temp 39
1195
            {
1196
            {
1196
              setvar tempb 0
1197
              setvar tempb 0
1197
              randvar tempb 3
1198
              randvar tempb 3
1198
              switch tempb
1199
              switch tempb
1199
               case 0 sound LOWANG1 break
1200
               case 0 sound LOWANG1 break
1200
               case 1 sound LOWANG2 break
1201
               case 1 sound LOWANG2 break
1201
               case 2 sound LOWANG3 break
1202
               case 2 sound LOWANG3 break
1202
               case 3 sound LOWANG4 break
1203
               case 3 sound LOWANG4 break
1203
              endswitch
1204
              endswitch
1204
            }
1205
            }
1205
     else ifvare temp 195 sound PHONE_HANGUP
1206
     else ifvare temp 195 sound PHONE_HANGUP
1206
     else ifvare temp 247
1207
     else ifvare temp 247
1207
            {
1208
            {
1208
              setvar temp2 0
1209
              setvar temp2 0
1209
              setvar temp 0
1210
              setvar temp 0
1210
            }
1211
            }
1211
        }
1212
        }
1212
   }
1213
   }
1213
enda
1214
enda
1214
 
1215
 
1215
useractor notenemy 3831 0
1216
useractor notenemy 3831 0
1216
// cstat 32768
1217
// cstat 32768
1217
 sizeat 12 13
1218
 sizeat 12 13
1218
 getactor[THISACTOR].sectnum temp
1219
 getactor[THISACTOR].sectnum temp
1219
 getplayer[THISACTOR].cursectnum temp2
1220
 getplayer[THISACTOR].cursectnum temp2
1220
 ifvarvare temp temp2
1221
 ifvarvare temp temp2
1221
   {
1222
   {
1222
     setuserdef[THISACTOR].volume_number 1
1223
     setuserdef[THISACTOR].volume_number 1
1223
     endofgame 13
1224
     endofgame 13
1224
   }
1225
   }
1225
enda
1226
enda
1226
 
1227
 
1227
action WOODENHORSE2FRAME  0   1   5
1228
action WOODENHORSE2FRAME  0   1   5
1228
action WOODEN2FALLFRAME  -2738  1   5
1229
action WOODEN2FALLFRAME  -2738  1   5
1229
useractor notenemy WOODENHORSE2 WEAK WOODENHORSE2FRAME
1230
useractor notenemy WOODENHORSE2 WEAK WOODENHORSE2FRAME
1230
  fall
1231
  fall
1231
  ifhitweapon
1232
  ifhitweapon
1232
  {
1233
  {
1233
    ifdead
1234
    ifdead
1234
    {
1235
    {
1235
      debris SCRAP1 4
1236
      debris SCRAP1 4
1236
      debris SCRAP2 3
1237
      debris SCRAP2 3
1237
      killit
1238
      killit
1238
    }
1239
    }
1239
    else
1240
    else
1240
      action WOODEN2FALLFRAME
1241
      action WOODEN2FALLFRAME
1241
  }
1242
  }
1242
enda
1243
enda
1243
 
1244
 
1244
useractor notenemy NWSTEAM 0 
1245
useractor notenemy NWSTEAM 0 
1245
  ifpdistl 6144
1246
  ifpdistl 6144
1246
    soundonce STEAM_HISSING
1247
    soundonce STEAM_HISSING
1247
enda
1248
enda
1248
 
1249
 
1249
define title_x1 73
1250
define title_x1 73
1250
define title_x2 306
1251
define title_x2 306
1251
define title_y 194
1252
define title_y 194
1252
define title_zoom 32768
1253
define title_zoom 32768
1253
 
1254
 
1254
onevent EVENT_DISPLAYMENU
1255
onevent EVENT_DISPLAYMENU
1255
//  getplayer[THISACTOR].gm temp
1256
//  getplayer[THISACTOR].gm temp
1256
//  ifvarand temp 4 nullop else
1257
//  ifvarand temp 4 nullop else
1257
// {
1258
// {
1258
  rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
1259
  rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
1259
  rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
1260
  rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
1260
// }
1261
// }
1261
endevent
1262
endevent
1262
 
1263
 
1263
/*
1264
/*
1264
onevent EVENT_DISPLAYTITLE
1265
onevent EVENT_DISPLAYTITLE
1265
  rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
1266
  rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
1266
  rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
1267
  rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
1267
endevent
1268
endevent
1268
*/
1269
*/
1269
 
1270
 
1270
 
1271
 
1271
 
1272