diff --git a/language.version b/language.version index 064cef49f..f70fb3022 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\cxSWWM GZ\c- r355 (Wed 17 Jun 08:19:40 CEST 2020)"; +SWWM_MODVER="\cxSWWM GZ\c- r356 (Thu 18 Jun 19:49:28 CEST 2020)"; diff --git a/modeldef.wallbuster b/modeldef.wallbuster index 27e8cc5e0..3c70bf51e 100644 --- a/modeldef.wallbuster +++ b/modeldef.wallbuster @@ -250,6 +250,7 @@ Model "Wallbuster" Offset 0 2 0 Scale -0.005 0.0025 0.005 + ////// Unfired //// Shell0 SurfaceSkin 2 4 "Shell_Normal.png" // Detach @@ -394,8 +395,77 @@ Model "Wallbuster" FrameIndex XZWE R 2 127 FrameIndex XZWE S 2 128 FrameIndex XZWE T 2 129 - // TODO difference between spent/unspent if I actually - // decide to make the textures visually different + ////// Fired + //// Shell0 + SurfaceSkin 2 8 "" + SurfaceSkin 2 4 "Shell_Normal_Used.png" + // Detach + FrameIndex XZWF L 2 91 + FrameIndex XZWF M 2 92 + FrameIndex XZWF N 2 93 + FrameIndex XZWF O 2 94 + FrameIndex XZWF P 2 95 + FrameIndex XZWF Q 2 96 + FrameIndex XZWF R 2 97 + FrameIndex XZWF S 2 98 + FrameIndex XZWF T 2 99 + FrameIndex XZWF U 2 100 + //// Shell1 + SurfaceSkin 2 4 "" + SurfaceSkin 2 5 "Shell_Normal_Used.png" + // Detach + FrameIndex XZWF V 2 91 + FrameIndex XZWF W 2 92 + FrameIndex XZWF X 2 93 + FrameIndex XZWF Y 2 94 + FrameIndex XZWF Z 2 95 + FrameIndex XZWG A 2 96 + FrameIndex XZWG B 2 97 + FrameIndex XZWG C 2 98 + FrameIndex XZWG D 2 99 + FrameIndex XZWG E 2 100 + //// Shell2 + SurfaceSkin 2 5 "" + SurfaceSkin 2 6 "Shell_Normal_Used.png" + // Detach + FrameIndex XZWG F 2 91 + FrameIndex XZWG G 2 92 + FrameIndex XZWG H 2 93 + FrameIndex XZWG I 2 94 + FrameIndex XZWG J 2 95 + FrameIndex XZWG K 2 96 + FrameIndex XZWG L 2 97 + FrameIndex XZWG M 2 98 + FrameIndex XZWG N 2 99 + FrameIndex XZWG O 2 100 + //// Shell3 + SurfaceSkin 2 6 "" + SurfaceSkin 2 7 "Shell_Normal_Used.png" + // Detach + FrameIndex XZWG P 2 91 + FrameIndex XZWG Q 2 92 + FrameIndex XZWG R 2 93 + FrameIndex XZWG S 2 94 + FrameIndex XZWG T 2 95 + FrameIndex XZWG U 2 96 + FrameIndex XZWG V 2 97 + FrameIndex XZWG W 2 98 + FrameIndex XZWG X 2 99 + FrameIndex XZWG Y 2 100 + //// Shell4 + SurfaceSkin 2 7 "" + SurfaceSkin 2 8 "Shell_Normal_Used.png" + // Detach + FrameIndex XZWG Z 2 91 + FrameIndex XZWH A 2 92 + FrameIndex XZWH B 2 93 + FrameIndex XZWH C 2 94 + FrameIndex XZWH D 2 95 + FrameIndex XZWH E 2 96 + FrameIndex XZWH F 2 97 + FrameIndex XZWH G 2 98 + FrameIndex XZWH H 2 99 + FrameIndex XZWH I 2 100 } Model "Wallbuster" diff --git a/zscript/swwm_cbt.zsc b/zscript/swwm_cbt.zsc index 807433103..0a5807a9a 100644 --- a/zscript/swwm_cbt.zsc +++ b/zscript/swwm_cbt.zsc @@ -997,6 +997,7 @@ Class Wallbuster : SWWMWeapon action void A_StartDetachOverlays() { static const statelabel shells[] = {"DetachShell0","DetachShell1","DetachShell2","DetachShell3","DetachShell4"}; + static const statelabel shellsfired[] = {"DetachShellF0","DetachShellF1","DetachShellF2","DetachShellF3","DetachShellF4"}; for ( int i=0; i<5; i++ ) { // get physical index @@ -1011,7 +1012,9 @@ Class Wallbuster : SWWMWeapon while ( gidx > 4 ) gidx -= 5; idx = gidx+group*5; if ( !invoker.loaded[idx] ) continue; - A_Overlay(PSP_WEAPON+1+i,shells[i]); + if ( invoker.fired[idx] ) + A_Overlay(PSP_WEAPON+1+i,shellsfired[i]); + else A_Overlay(PSP_WEAPON+1+i,shells[i]); } A_StartSound("wallbuster/meleestart",CHAN_WEAPON,CHANF_OVERLAP); } @@ -1328,6 +1331,23 @@ Class Wallbuster : SWWMWeapon XZWD WXYZ 1; XZWE ABCDEF 1; Stop; + DetachShellF0: + XZWF LMNOPQRSTU 1; + Stop; + DetachShellF1: + XZWF VWXYZ 1; + XZWG ABCDE 1; + Stop; + DetachShellF2: + XZWG FGHIJKLMNO 1; + Stop; + DetachShellF3: + XZWG PQRSTUVWXY 1; + Stop; + DetachShellF4: + XZWG Z 1; + XZWH ABCDEFGHI 1; + Stop; Attach: XZW6 EF 2; XZW6 G 1 A_StartAttachOverlays();