diff --git a/language.version b/language.version index 2293e5117..fa60fac5b 100644 --- a/language.version +++ b/language.version @@ -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-"; diff --git a/modeldef.explodiumgun2 b/modeldef.explodiumgun2 index eeec5cb05..3779c0385 100644 --- a/modeldef.explodiumgun2 +++ b/modeldef.explodiumgun2 @@ -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 diff --git a/models/ExplodiumGun1st.blend b/models/ExplodiumGun1st.blend index 4264edf19..9a912d7f6 100644 Binary files a/models/ExplodiumGun1st.blend and b/models/ExplodiumGun1st.blend differ diff --git a/models/ExplodiumGun1stL_a.3d b/models/ExplodiumGun1stL_a.3d index b20598c1e..314993e0b 100644 Binary files a/models/ExplodiumGun1stL_a.3d and b/models/ExplodiumGun1stL_a.3d differ diff --git a/models/ExplodiumGun1stL_d.3d b/models/ExplodiumGun1stL_d.3d index 60a1d4b2c..ffc69d204 100644 Binary files a/models/ExplodiumGun1stL_d.3d and b/models/ExplodiumGun1stL_d.3d differ diff --git a/models/ExplodiumGun1st_a.3d b/models/ExplodiumGun1st_a.3d index 2912fdfea..33ba085b7 100644 Binary files a/models/ExplodiumGun1st_a.3d and b/models/ExplodiumGun1st_a.3d differ diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index 1545a923e..d7d837095 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -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