Dual Explodium guns can now reload independently.

This commit is contained in:
Mari the Deer 2022-02-10 13:38:58 +01:00
commit b36b2f808c
7 changed files with 283 additions and 404 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r140 \cu(Sun 6 Feb 02:15:05 CET 2022)\c-";
SWWM_SHORTVER="\cw1.2pre r140 \cu(2022-02-06 02:15:05)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r141 \cu(Thu 10 Feb 13:38:58 CET 2022)\c-";
SWWM_SHORTVER="\cw1.2pre r141 \cu(2022-02-10 13:38:58)\c-";

View file

@ -99,68 +99,59 @@ Model "DualExplodiumGun"
FrameIndex XZW2 R 1 22
FrameIndex XZW2 S 1 23
// Reload (Part 1)
FrameIndex XZW2 T 1 25
FrameIndex XZW2 U 1 26
FrameIndex XZW2 V 1 27
FrameIndex XZW2 W 1 28
FrameIndex XZW2 X 1 29
FrameIndex XZW2 Y 1 30
FrameIndex XZW2 Z 1 31
FrameIndex XZW3 A 1 32
FrameIndex XZW3 B 1 33
FrameIndex XZW3 C 1 34
FrameIndex XZW3 D 1 35
FrameIndex XZW3 E 1 36
FrameIndex XZW3 F 1 37
FrameIndex XZW3 G 1 38
FrameIndex XZW3 H 1 39
FrameIndex XZW3 I 1 40
FrameIndex XZW2 T 1 310
FrameIndex XZW2 U 1 311
FrameIndex XZW2 V 1 312
FrameIndex XZW2 W 1 313
FrameIndex XZW2 X 1 314
FrameIndex XZW2 Y 1 315
FrameIndex XZW2 Z 1 316
FrameIndex XZW3 A 1 317
FrameIndex XZW3 B 1 318
FrameIndex XZW3 C 1 319
FrameIndex XZW3 D 1 320
FrameIndex XZW3 E 1 321
FrameIndex XZW3 F 1 322
FrameIndex XZW3 G 1 323
FrameIndex XZW3 H 1 324
// Reload (Part 1 w/ Empty Mag)
SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag
FrameIndex XZW3 J 1 25
FrameIndex XZW3 K 1 26
FrameIndex XZW3 L 1 27
FrameIndex XZW3 M 1 28
FrameIndex XZW3 N 1 29
FrameIndex XZW3 O 1 30
FrameIndex XZW3 P 1 31
FrameIndex XZW3 Q 1 32
FrameIndex XZW3 R 1 33
FrameIndex XZW3 S 1 34
FrameIndex XZW3 T 1 35
FrameIndex XZW3 U 1 36
FrameIndex XZW3 V 1 37
FrameIndex XZW3 W 1 38
FrameIndex XZW3 X 1 39
FrameIndex XZW3 Y 1 40
SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png"
FrameIndex XZW3 I 1 310
FrameIndex XZW3 J 1 311
FrameIndex XZW3 K 1 312
FrameIndex XZW3 L 1 313
FrameIndex XZW3 M 1 314
FrameIndex XZW3 N 1 315
FrameIndex XZW3 O 1 316
FrameIndex XZW3 P 1 317
FrameIndex XZW3 Q 1 318
FrameIndex XZW3 R 1 319
FrameIndex XZW3 S 1 320
FrameIndex XZW3 T 1 321
FrameIndex XZW3 U 1 322
FrameIndex XZW3 V 1 323
FrameIndex XZW3 W 1 324
// Reload (Part 2)
SurfaceSkin 1 5 "" // hide mag
SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag
FrameIndex XZW3 Z 1 41
FrameIndex XZW4 A 1 42
FrameIndex XZW4 B 1 43
FrameIndex XZW4 C 1 44
FrameIndex XZW4 D 1 45
FrameIndex XZW4 E 1 46
FrameIndex XZW4 F 1 47
FrameIndex XZW4 G 1 48
SurfaceSkin 1 6 "" // hide new mag
FrameIndex XZW4 H 1 49
FrameIndex XZW4 I 1 50
FrameIndex XZW4 J 1 51
SurfaceSkin 1 5 "ExplodiumGun.png" // show mag
FrameIndex XZW4 K 1 52
FrameIndex XZW4 L 1 53
FrameIndex XZW4 M 1 54
FrameIndex XZW4 N 1 55
FrameIndex XZW4 O 1 56
FrameIndex XZW4 P 1 57
FrameIndex XZW4 Q 1 58
FrameIndex XZW4 R 1 59
FrameIndex XZW4 S 1 60
FrameIndex XZW4 T 1 61
FrameIndex XZW4 U 1 62
FrameIndex XZW4 V 1 63
SurfaceSkin 1 3 "ExplodiumGun.png"
FrameIndex XZW3 X 1 325
FrameIndex XZW3 Y 1 326
FrameIndex XZW3 Z 1 327
FrameIndex XZW4 A 1 328
FrameIndex XZW4 B 1 329
FrameIndex XZW4 C 1 330
FrameIndex XZW4 D 1 331
FrameIndex XZW4 E 1 332
FrameIndex XZW4 F 1 333
FrameIndex XZW4 G 1 334
FrameIndex XZW4 H 1 335
FrameIndex XZW4 I 1 336
FrameIndex XZW4 J 1 337
FrameIndex XZW4 K 1 338
FrameIndex XZW4 L 1 339
FrameIndex XZW4 M 1 340
FrameIndex XZW4 N 1 341
FrameIndex XZW4 O 1 342
FrameIndex XZW4 P 1 343
// Slide
FrameIndex XZW4 W 1 65
FrameIndex XZW4 X 1 66
@ -251,68 +242,59 @@ Model "DualExplodiumGun"
FrameIndex XZWB R 1 22
FrameIndex XZWB S 1 23
// Reload (Part 1)
FrameIndex XZWB T 1 25
FrameIndex XZWB U 1 26
FrameIndex XZWB V 1 27
FrameIndex XZWB W 1 28
FrameIndex XZWB X 1 29
FrameIndex XZWB Y 1 30
FrameIndex XZWB Z 1 31
FrameIndex XZWC A 1 32
FrameIndex XZWC B 1 33
FrameIndex XZWC C 1 34
FrameIndex XZWC D 1 35
FrameIndex XZWC E 1 36
FrameIndex XZWC F 1 37
FrameIndex XZWC G 1 38
FrameIndex XZWC H 1 39
FrameIndex XZWC I 1 40
FrameIndex XZWB T 1 310
FrameIndex XZWB U 1 311
FrameIndex XZWB V 1 312
FrameIndex XZWB W 1 313
FrameIndex XZWB X 1 314
FrameIndex XZWB Y 1 315
FrameIndex XZWB Z 1 316
FrameIndex XZWC A 1 317
FrameIndex XZWC B 1 318
FrameIndex XZWC C 1 319
FrameIndex XZWC D 1 320
FrameIndex XZWC E 1 321
FrameIndex XZWC F 1 322
FrameIndex XZWC G 1 323
FrameIndex XZWC H 1 324
// Reload (Part 1 w/ Empty Mag)
SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag
FrameIndex XZWC J 1 25
FrameIndex XZWC K 1 26
FrameIndex XZWC L 1 27
FrameIndex XZWC M 1 28
FrameIndex XZWC N 1 29
FrameIndex XZWC O 1 30
FrameIndex XZWC P 1 31
FrameIndex XZWC Q 1 32
FrameIndex XZWC R 1 33
FrameIndex XZWC S 1 34
FrameIndex XZWC T 1 35
FrameIndex XZWC U 1 36
FrameIndex XZWC V 1 37
FrameIndex XZWC W 1 38
FrameIndex XZWC X 1 39
FrameIndex XZWC Y 1 40
SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png"
FrameIndex XZWC I 1 310
FrameIndex XZWC J 1 311
FrameIndex XZWC K 1 312
FrameIndex XZWC L 1 313
FrameIndex XZWC M 1 314
FrameIndex XZWC N 1 315
FrameIndex XZWC O 1 316
FrameIndex XZWC P 1 317
FrameIndex XZWC Q 1 318
FrameIndex XZWC R 1 319
FrameIndex XZWC S 1 320
FrameIndex XZWC T 1 321
FrameIndex XZWC U 1 322
FrameIndex XZWC V 1 323
FrameIndex XZWC W 1 324
// Reload (Part 2)
SurfaceSkin 1 5 "" // hide mag
SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag
FrameIndex XZWC Z 1 41
FrameIndex XZWD A 1 42
FrameIndex XZWD B 1 43
FrameIndex XZWD C 1 44
FrameIndex XZWD D 1 45
FrameIndex XZWD E 1 46
FrameIndex XZWD F 1 47
FrameIndex XZWD G 1 48
SurfaceSkin 1 6 "" // hide new mag
FrameIndex XZWD H 1 49
FrameIndex XZWD I 1 50
FrameIndex XZWD J 1 51
SurfaceSkin 1 5 "ExplodiumGun.png" // show mag
FrameIndex XZWD K 1 52
FrameIndex XZWD L 1 53
FrameIndex XZWD M 1 54
FrameIndex XZWD N 1 55
FrameIndex XZWD O 1 56
FrameIndex XZWD P 1 57
FrameIndex XZWD Q 1 58
FrameIndex XZWD R 1 59
FrameIndex XZWD S 1 60
FrameIndex XZWD T 1 61
FrameIndex XZWD U 1 62
FrameIndex XZWD V 1 63
SurfaceSkin 1 3 "ExplodiumGun.png"
FrameIndex XZWC X 1 325
FrameIndex XZWC Y 1 326
FrameIndex XZWC Z 1 327
FrameIndex XZWD A 1 328
FrameIndex XZWD B 1 329
FrameIndex XZWD C 1 330
FrameIndex XZWD D 1 331
FrameIndex XZWD E 1 332
FrameIndex XZWD F 1 333
FrameIndex XZWD G 1 334
FrameIndex XZWD H 1 335
FrameIndex XZWD I 1 336
FrameIndex XZWD J 1 337
FrameIndex XZWD K 1 338
FrameIndex XZWD L 1 339
FrameIndex XZWD M 1 340
FrameIndex XZWD N 1 341
FrameIndex XZWD O 1 342
FrameIndex XZWD P 1 343
// Slide
FrameIndex XZWD W 1 65
FrameIndex XZWD X 1 66
@ -425,58 +407,43 @@ Model "DualExplodiumGun"
// Still
FrameIndex XZWI V 1 248
// Reload (Part 1)
SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag
FrameIndex XZWI W 1 249
FrameIndex XZWI X 1 250
FrameIndex XZWI Y 1 251
FrameIndex XZWI Z 1 252
FrameIndex XZWJ A 1 253
FrameIndex XZWJ B 1 254
FrameIndex XZWJ C 1 255
FrameIndex XZWJ D 1 256
FrameIndex XZWJ E 1 257
FrameIndex XZWJ F 1 258
FrameIndex XZWJ G 1 259
FrameIndex XZWJ H 1 260
FrameIndex XZWJ I 1 261
FrameIndex XZWJ J 1 262
FrameIndex XZWJ K 1 263
FrameIndex XZWJ L 1 264
SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png"
FrameIndex XZWI W 1 346
FrameIndex XZWI X 1 347
FrameIndex XZWI Y 1 348
FrameIndex XZWI Z 1 349
FrameIndex XZWJ A 1 350
FrameIndex XZWJ B 1 351
FrameIndex XZWJ C 1 352
FrameIndex XZWJ D 1 353
FrameIndex XZWJ E 1 354
FrameIndex XZWJ F 1 355
FrameIndex XZWJ G 1 356
FrameIndex XZWJ H 1 357
FrameIndex XZWJ I 1 358
FrameIndex XZWJ J 1 359
FrameIndex XZWJ K 1 360
// Reload (Part 2)
SurfaceSkin 1 5 "" // hide mag
SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag
FrameIndex XZWJ M 1 265
FrameIndex XZWJ N 1 266
FrameIndex XZWJ O 1 267
FrameIndex XZWJ P 1 268
FrameIndex XZWJ Q 1 269
FrameIndex XZWJ R 1 270
FrameIndex XZWJ S 1 271
FrameIndex XZWJ T 1 272
SurfaceSkin 1 6 "" // hide new mag
FrameIndex XZWJ U 1 273
FrameIndex XZWJ V 1 274
FrameIndex XZWJ W 1 275
SurfaceSkin 1 5 "ExplodiumGun.png" // show mag
FrameIndex XZWJ X 1 276
FrameIndex XZWJ Y 1 277
FrameIndex XZWJ Z 1 278
FrameIndex XZWK A 1 279
FrameIndex XZWK B 1 280
FrameIndex XZWK C 1 281
FrameIndex XZWK D 1 282
FrameIndex XZWK E 1 283
FrameIndex XZWK F 1 284
FrameIndex XZWK G 1 285
FrameIndex XZWK H 1 286
FrameIndex XZWK I 1 287
FrameIndex XZWK J 1 288
FrameIndex XZWK K 1 289
FrameIndex XZWK L 1 290
FrameIndex XZWK M 1 291
FrameIndex XZWK N 1 292
FrameIndex XZWK O 1 293
FrameIndex XZWK P 1 294
FrameIndex XZWJ L 1 361
FrameIndex XZWJ M 1 362
FrameIndex XZWJ N 1 363
FrameIndex XZWJ O 1 364
FrameIndex XZWJ P 1 365
FrameIndex XZWJ Q 1 366
FrameIndex XZWJ R 1 367
FrameIndex XZWJ S 1 368
FrameIndex XZWJ T 1 369
FrameIndex XZWJ U 1 370
FrameIndex XZWJ V 1 371
FrameIndex XZWJ W 1 372
FrameIndex XZWJ X 1 373
FrameIndex XZWJ Y 1 374
FrameIndex XZWJ Z 1 375
FrameIndex XZWK A 1 376
FrameIndex XZWK B 1 377
FrameIndex XZWK C 1 378
FrameIndex XZWK D 1 379
SurfaceSkin 1 3 "ExplodiumGun.png"
// Lower
FrameIndex XZWM U 1 297
FrameIndex XZWM V 1 298
@ -505,58 +472,43 @@ Model "DualExplodiumGun"
// Still
FrameIndex XZWK Z 1 248
// Reload (Part 1)
SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag
FrameIndex XZWL A 1 249
FrameIndex XZWL B 1 250
FrameIndex XZWL C 1 251
FrameIndex XZWL D 1 252
FrameIndex XZWL E 1 253
FrameIndex XZWL F 1 254
FrameIndex XZWL G 1 255
FrameIndex XZWL H 1 256
FrameIndex XZWL I 1 257
FrameIndex XZWL J 1 258
FrameIndex XZWL K 1 259
FrameIndex XZWL L 1 260
FrameIndex XZWL M 1 261
FrameIndex XZWL N 1 262
FrameIndex XZWL O 1 263
FrameIndex XZWL P 1 264
SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png"
FrameIndex XZWL A 1 346
FrameIndex XZWL B 1 347
FrameIndex XZWL C 1 348
FrameIndex XZWL D 1 349
FrameIndex XZWL E 1 350
FrameIndex XZWL F 1 351
FrameIndex XZWL G 1 352
FrameIndex XZWL H 1 353
FrameIndex XZWL I 1 354
FrameIndex XZWL J 1 355
FrameIndex XZWL K 1 356
FrameIndex XZWL L 1 357
FrameIndex XZWL M 1 358
FrameIndex XZWL N 1 359
FrameIndex XZWL O 1 360
// Reload (Part 2)
SurfaceSkin 1 5 "" // hide mag
SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag
FrameIndex XZWL Q 1 265
FrameIndex XZWL R 1 266
FrameIndex XZWL S 1 267
FrameIndex XZWL T 1 268
FrameIndex XZWL U 1 269
FrameIndex XZWL V 1 270
FrameIndex XZWL W 1 271
FrameIndex XZWL X 1 272
SurfaceSkin 1 6 "" // hide new mag
FrameIndex XZWL Y 1 273
FrameIndex XZWL Z 1 274
FrameIndex XZWM A 1 275
SurfaceSkin 1 5 "ExplodiumGun.png" // show mag
FrameIndex XZWM B 1 276
FrameIndex XZWM C 1 277
FrameIndex XZWM D 1 278
FrameIndex XZWM E 1 279
FrameIndex XZWM F 1 280
FrameIndex XZWM G 1 281
FrameIndex XZWM H 1 282
FrameIndex XZWM I 1 283
FrameIndex XZWM J 1 284
FrameIndex XZWM K 1 285
FrameIndex XZWM L 1 286
FrameIndex XZWM M 1 287
FrameIndex XZWM N 1 288
FrameIndex XZWM O 1 289
FrameIndex XZWM P 1 290
FrameIndex XZWM Q 1 291
FrameIndex XZWM R 1 292
FrameIndex XZWM S 1 293
FrameIndex XZWM T 1 294
SurfaceSkin 1 3 "ExplodiumGun.png"
FrameIndex XZWL P 1 361
FrameIndex XZWL Q 1 362
FrameIndex XZWL R 1 363
FrameIndex XZWL S 1 364
FrameIndex XZWL T 1 365
FrameIndex XZWL U 1 366
FrameIndex XZWL V 1 367
FrameIndex XZWL W 1 368
FrameIndex XZWL X 1 369
FrameIndex XZWL Y 1 370
FrameIndex XZWL Z 1 371
FrameIndex XZWM A 1 372
FrameIndex XZWM B 1 373
FrameIndex XZWM C 1 374
FrameIndex XZWM D 1 375
FrameIndex XZWM E 1 376
FrameIndex XZWM F 1 377
FrameIndex XZWM G 1 378
FrameIndex XZWM H 1 379
// Lower
FrameIndex XZWN F 1 297
FrameIndex XZWN G 1 298

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -832,35 +832,43 @@ Class DualExplodiumGun : SWWMWeapon
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReady"));
sis = player.FindPSprite(PSP_WEAPON+1);
}
if ( sis.CurState.InStateSequence(ResolveState("LeftReady")) || sis.CurState.InStateSequence(ResolveState("LeftWaitLast")) )
if ( sis.CurState.InStateSequence(ResolveState("LeftReady")) )
{
if ( (ExplodiumGun(invoker.SisterWeapon).clipcount > 0) && !ExplodiumGun(invoker.SisterWeapon).chambered )
player.SetPSprite(PSP_WEAPON,ResolveState("PreSlide"));
else if ( (invoker.clipcount <= 0) && !invoker.chambered )
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReloadLast"));
player.SetPSprite(PSP_WEAPON,ResolveState("Slide"));
else if ( (invoker.clipcount > 0) && !invoker.chambered )
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftPreSlide"));
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftSlide"));
else if ( (player.cmd.buttons&BT_RELOAD) && (ExplodiumGun(invoker.SisterWeapon).clipcount < ExplodiumGun(invoker.SisterWeapon).default.clipcount)
&& (ExplodiumGun(invoker.SisterWeapon).clipcount <= invoker.clipcount) ) // give priority only if less than left hand
player.SetPSprite(PSP_WEAPON,ResolveState("Reload"));
else if ( (player.cmd.buttons&BT_RELOAD) && (invoker.clipcount < invoker.default.clipcount) )
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReload"));
else if ( !sis.CurState.InStateSequence(ResolveState("LeftWaitLast")) ) A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWUSER1);
else A_WeaponReady();
else A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWUSER1);
}
else
{
int flg = WRF_NOSWITCH|WRF_NOSECONDARY;
if ( !ExplodiumGun(invoker.SisterWeapon).chambered )
flg |= WRF_NOPRIMARY;
A_WeaponReady(flg);
// left weapon isn't ready, but we can still reload right weapon if needed
if ( (player.cmd.buttons&BT_RELOAD) && (ExplodiumGun(invoker.SisterWeapon).clipcount < ExplodiumGun(invoker.SisterWeapon).default.clipcount)
&& (ExplodiumGun(invoker.SisterWeapon).clipcount <= invoker.clipcount) ) // give priority only if less than left hand
player.SetPSprite(PSP_WEAPON,ResolveState("Reload"));
else
{
int flg = WRF_NOSWITCH|WRF_NOSECONDARY;
if ( !ExplodiumGun(invoker.SisterWeapon).chambered )
flg |= WRF_NOPRIMARY;
A_WeaponReady(flg);
}
}
}
Wait;
LeftReady:
XZWB A 1
{
if ( player.cmd.buttons&BT_ALTATTACK && invoker.chambered )
let sis = player.FindPSprite(PSP_WEAPON);
if ( (invoker.clipcount <= 0) && !invoker.chambered )
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReloadLast"));
else if ( (player.cmd.buttons&BT_RELOAD) && (invoker.clipcount < invoker.default.clipcount)
&& (invoker.clipcount <= ExplodiumGun(invoker.SisterWeapon).clipcount) ) // give priority only if less than right hand
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReload"));
else if ( player.cmd.buttons&BT_ALTATTACK && invoker.chambered )
player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftFire"));
}
Wait;
@ -893,49 +901,35 @@ Class DualExplodiumGun : SWWMWeapon
XZWI N 1 A_StartSound("explodium/slidelock",CHAN_WEAPON,CHANF_OVERLAP);
XZWI OPQR 1;
XZWI S 2;
Goto WaitLast;
WaitLast:
Goto ReloadLast;
ReloadLast:
XZWI V 1
{
let sis = player.FindPSprite(PSP_WEAPON+1);
return A_JumpIf(sis.CurState.InStateSequence(ResolveState("LeftReady"))||sis.CurState.InStateSequence(ResolveState("LeftWaitLast")),"ReloadLast");
A_PlayerReload();
A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP);
}
Wait;
ReloadLast:
XZWI V 9
{
let sis = player.FindPSprite(PSP_WEAPON+1);
if ( sis.CurState.InStateSequence(ResolveState("LeftWaitLast")) )
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLowerLast"));
else player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower"));
}
XZWI V 1 A_PlayerReload();
XZWI WXYZ 1;
XZWJ ABCD 1;
XZWI WXYZ 2;
XZWJ AB 2;
XZWJ CD 1;
XZWJ E 1 { ExplodiumGun(invoker.SisterWeapon).clipcount = 0; }
XZWJ F 1;
XZWJ G 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZWJ HIJK 1;
XZWJ L 1 A_DropMag();
XZWJ MNOPQR 1;
XZWJ S 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZWJ TUVWXYZ 1;
XZWK ABCD 1;
XZWK E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; }
XZWK FGHI 1;
XZWK J 1
XZWJ HIJ 1;
XZWJ K 0 A_DropMag();
XZWJ LMN 3;
XZWJ O 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZWJ PQR 2;
XZWJ S 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; }
XZWJ TUVW 1;
XZWJ X 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP);
XZWJ Y 2
{
A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP);
ExplodiumGun(invoker.SisterWeapon).clipcount--;
ExplodiumGun(invoker.SisterWeapon).chambered = true;
let sis = player.FindPSprite(PSP_WEAPON+1);
if ( sis.CurState.InStateSequence(ResolveState("LeftLowerLast")) )
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaiseLast"));
else player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise"));
}
XZWK K 1;
XZWK L 3;
XZWK MNOP 1;
XZWJ Z 2;
XZWK ABCD 2;
Goto Ready;
LeftFire:
XZWB A 1
@ -966,38 +960,41 @@ Class DualExplodiumGun : SWWMWeapon
XZWK T 1 A_StartSound("explodium/slidelock",CHAN_WEAPON,CHANF_OVERLAP);
XZWK UVWX 1;
XZWK Y 2;
Goto LeftWaitLast;
LeftWaitLast:
XZWK Z 1;
Wait;
Goto LeftReloadLast;
LeftReloadLast:
XZWK Z 9 { player.SetPSPrite(PSP_WEAPON,ResolveState("Lower")); }
XZWK Z 1 A_PlayerReload();
XZWL ABCDEFGH 1;
XZWK Z 4
{
let sis = player.FindPSprite(PSP_WEAPON);
if ( !sis.CurState.InStateSequence(ResolveState("Reload")) && !sis.CurState.InStateSequence(ResolveState("ReloadEmpty")) && !sis.CurState.InStateSequence(ResolveState("ReloadLast")) )
return ResolveState("LeftReloadLast")+1;
return ResolveState(null);
}
XZWK Z 1
{
A_PlayerReload();
A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP);
}
XZWL ABCDEF 2;
XZWL GH 1;
XZWL I 1 { invoker.clipcount = 0; }
XZWL J 1;
XZWL K 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZWL LMNO 1;
XZWL P 1 A_DropMag();
XZWL QRSTUV 1;
XZWL W 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZWL LMN 1;
XZWL O 0 A_DropMag();
XZWL PQR 3;
XZWL S 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZWL TUV 2;
XZWL W 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; }
XZWL XYZ 1;
XZWM ABCDEFGH 1;
XZWM I 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; }
XZWM JKLM 1;
XZWM N 1
XZWM A 1;
XZWM B 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP);
XZWM C 2
{
A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP);
invoker.clipcount--;
invoker.chambered = true;
let sis = player.FindPSprite(PSP_WEAPON);
if ( sis.CurState.InStateSequence(ResolveState("LowerLast")) )
player.SetPSPrite(PSP_WEAPON,ResolveState("RaiseLast"));
else player.SetPSPrite(PSP_WEAPON,ResolveState("Raise"));
}
XZWM O 1;
XZWM P 3;
XZWM QRST 1;
XZWM DEFGH 2;
Goto LeftReady;
Casing:
XZWA A 1
@ -1039,84 +1036,42 @@ Class DualExplodiumGun : SWWMWeapon
XZWG VUT 2;
XZWB A 1;
Goto LeftReady;
LowerLast:
XZWI V 2;
XZWM UVW 2;
XZWM Y -1;
Stop;
LeftLowerLast:
XZWK Z 2;
XZWN FGH 2;
XZWN J -1;
Stop;
RaiseLast:
XZWM Y 2;
XZWN WVU 2;
XZWI V 1;
Goto WaitLast;
LeftRaiseLast:
XZWN JHGF 2;
XZWK Z 1;
Goto LeftWaitLast;
Reload:
XZW2 A 9
{
let sis = player.FindPSprite(PSP_WEAPON+1);
if ( sis.CurState.InStateSequence(ResolveState("LeftWaitLast")) )
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLowerLast"));
else player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower"));
}
XZW2 A 1
{
A_PlayerReload();
A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP);
if ( ExplodiumGun(invoker.SisterWeapon).clipcount <= 0 ) return ResolveState("ReloadEmpty");
return ResolveState(null);
}
XZW2 TUVWXYZ 1;
XZW2 TUVWXY 2;
XZW2 Z 1;
XZW3 A 1;
XZW3 B 1 { ExplodiumGun(invoker.SisterWeapon).clipcount = 0; }
XZW3 C 1;
XZW3 D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZW3 EFGH 1;
XZW3 I 1 A_DropMag();
XZW3 EFG 1;
XZW3 H 0 A_DropMag();
Goto ReloadEnd;
ReloadEmpty:
XZW2 A 1;
XZW3 JKLMNOPQRS 1;
XZW3 T 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZW3 UVWX 1;
XZW3 Y 1 A_DropMag();
XZW3 IJKLMN 2;
XZW3 OPQR 1;
XZW3 S 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZW3 TUV 1;
XZW3 W 0 A_DropMag();
Goto ReloadEnd;
ReloadEnd:
XZW3 Z 1;
XZW4 ABCDE 1;
XZW4 F 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZW4 GHIJKLMNOPQ 1;
XZW4 R 1
{
A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP);
ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount;
}
XZW4 STUV 1;
XZW2 A 0 A_JumpIf(!ExplodiumGun(invoker.SisterWeapon).chambered,"Slide");
XZW2 A 0
{
let sis = player.FindPSprite(PSP_WEAPON+1);
if ( sis.CurState.InStateSequence(ResolveState("LeftLowerLast")) )
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaiseLast"));
else player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise"));
}
XZW3 XYZ 3;
XZW4 A 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZW4 BCD 2;
XZW4 E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; }
XZW4 FGHI 1;
XZW4 J 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP);
XZW4 KLMNOP 2;
Goto Ready;
PreSlide:
XZW2 A 9
{
let sis = player.FindPSprite(PSP_WEAPON+1);
if ( sis.CurState.InStateSequence(ResolveState("LeftWaitLast")) )
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLowerLast"));
else player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower"));
}
Slide:
XZW2 A 1;
XZW2 A 10 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower")); }
XZW4 WXY 1;
XZW5 A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP);
XZW5 BC 1;
@ -1128,73 +1083,51 @@ Class DualExplodiumGun : SWWMWeapon
XZW5 EFG 1;
XZW5 H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP);
XZW5 IJKLM 1;
XZW2 A 0
{
let sis = player.FindPSprite(PSP_WEAPON+1);
if ( sis.CurState.InStateSequence(ResolveState("LeftLowerLast")) )
player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaiseLast"));
else player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise"));
}
XZW2 A 0 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise")); }
Goto Ready;
LeftReload:
XZWB A 9
XZWB A 4
{
let sis = player.FindPSprite(PSP_WEAPON);
if ( sis.CurState.InStateSequence(ResolveState("WaitLast")) )
player.SetPSPrite(PSP_WEAPON,ResolveState("LowerLast"));
else player.SetPSPrite(PSP_WEAPON,ResolveState("Lower"));
if ( !sis.CurState.InStateSequence(ResolveState("Reload")) && !sis.CurState.InStateSequence(ResolveState("ReloadEmpty")) && !sis.CurState.InStateSequence(ResolveState("ReloadLast")) )
return ResolveState("LeftReload")+1;
return ResolveState(null);
}
XZWB A 1
{
A_PlayerReload();
A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP);
if ( invoker.clipcount <= 0 ) return ResolveState("LeftReloadEmpty");
return ResolveState(null);
}
XZWB TUVWXYZ 1;
XZWB TUVWXY 2;
XZWB Z 1;
XZWC A 1;
XZWC B 1 { invoker.clipcount = 0; }
XZWC C 1;
XZWC D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZWC EFGH 1;
XZWC I 1 A_DropMag(-1);
XZWC EFG 1;
XZWC H 0 A_DropMag();
Goto LeftReloadEnd;
LeftReloadEmpty:
XZWB A 1;
XZWC JKLMNOPQRS 1;
XZWC T 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZWC UVWX 1;
XZWC Y 1 A_DropMag(-1);
XZWC IJKLMN 2;
XZWC OPQR 1;
XZWC S 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP);
XZWC TUV 1;
XZWC W 0 A_DropMag();
Goto LeftReloadEnd;
LeftReloadEnd:
XZWC Z 1;
XZWD ABCDE 1;
XZWD F 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZWD GHIJKLMNOPQ 1;
XZWD R 1
{
A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP);
invoker.clipcount = invoker.default.clipcount;
}
XZWD STUV 1;
XZWB A 0 A_JumpIf(!invoker.chambered,"LeftSlide");
XZWB A 0
{
let sis = player.FindPSprite(PSP_WEAPON);
if ( sis.CurState.InStateSequence(ResolveState("LowerLast")) )
player.SetPSPrite(PSP_WEAPON,ResolveState("RaiseLast"));
else player.SetPSPrite(PSP_WEAPON,ResolveState("Raise"));
}
XZWC XYZ 3;
XZWD A 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP);
XZWD BCD 2;
XZWD E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; }
XZWD FGHI 1;
XZWD J 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP);
XZWD KLMNOP 2;
Goto LeftReady;
LeftPreSlide:
XZWB A 9
{
let sis = player.FindPSprite(PSP_WEAPON);
if ( sis.CurState.InStateSequence(ResolveState("WaitLast")) )
player.SetPSPrite(PSP_WEAPON,ResolveState("LowerLast"));
else player.SetPSPrite(PSP_WEAPON,ResolveState("Lower"));
}
LeftSlide:
XZWB A 1;
XZWB A 10 { player.SetPSPrite(PSP_WEAPON,ResolveState("Lower")); }
XZWD WXY 1;
XZWE A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP);
XZWE BC 1;
@ -1206,13 +1139,7 @@ Class DualExplodiumGun : SWWMWeapon
XZWE EFG 1;
XZWE H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP);
XZWE IJKLM 1;
XZWB A 0
{
let sis = player.FindPSprite(PSP_WEAPON);
if ( sis.CurState.InStateSequence(ResolveState("LowerLast")) )
player.SetPSPrite(PSP_WEAPON,ResolveState("RaiseLast"));
else player.SetPSPrite(PSP_WEAPON,ResolveState("Raise"));
}
XZWB A 0 { player.SetPSPrite(PSP_WEAPON,ResolveState("Raise")); }
Goto LeftReady;
Zoom:
XZW2 A 1