diff --git a/language.version b/language.version index 76b1f4d9a..463feac76 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r434 \cu(Sun 11 Sep 13:58:49 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r434 \cu(2022-09-11 13:58:49)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r435 \cu(Sun 11 Sep 15:05:20 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r435 \cu(2022-09-11 15:05:20)\c-"; diff --git a/zscript/dlc1/swwm_dlcweapons_hud.zsc b/zscript/dlc1/swwm_dlcweapons_hud.zsc index 245bf11a4..b49451201 100644 --- a/zscript/dlc1/swwm_dlcweapons_hud.zsc +++ b/zscript/dlc1/swwm_dlcweapons_hud.zsc @@ -163,7 +163,7 @@ extend Class MisterRifle for ( int i=0; i0)||(Ammo1.Amount>0)||(gchambered&&!gfired)||(Ammo2.Amount>0); @@ -92,6 +111,41 @@ Class MisterRifle : SWWMWeapon else origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP); } + action void A_BoltBack( bool bCasing = false ) + { + A_StartSound("mister/boltback",CHAN_WEAPON,CHANF_OVERLAP); + if ( bCasing ) + { + invoker.waschambered = invoker.chambered; + invoker.wasfired = invoker.fired; + A_ChangeModel("",1,"","",8,"models",invoker.wasfired?"MortalRound_Used.png":"MortalRound.png",CMDL_USESURFACESKIN,-1); + } + invoker.chambered = invoker.fired = false; + } + + action void A_BoltForward() + { + A_StartSound("mister/boltforward",CHAN_WEAPON,CHANF_OVERLAP); + if ( invoker.ClipCount > 0 ) + { + invoker.clipcount--; + invoker.chambered = true; + invoker.fired = false; + } + } + + action void A_DropCasing() + { + // TODO + A_ChangeModel("",1,"","",8,"models","",CMDL_USESURFACESKIN,-1); + } + + action void A_FireSelect() + { + A_StartSound("mister/fireselect",CHAN_WEAPON,CHANF_OVERLAP); + invoker.firemode = (invoker.firemode+1)%4; + } + Default { Tag "$T_MORTALRIFLE"; @@ -132,41 +186,78 @@ Class MisterRifle : SWWMWeapon Goto Ready; SelectCycle: XZWI RSTUVWXYZ 2; - XZWJ A 2 - { - A_StartSound("mister/boltback",CHAN_WEAPON,CHANF_OVERLAP); - invoker.chambered = invoker.fired = false; - } + XZWJ A 2 A_BoltBack(); XZWJ B 2; XZWJ C 4; XZWJ D 2 { - A_StartSound("mister/boltforward",CHAN_WEAPON,CHANF_OVERLAP); - invoker.clipcount--; - invoker.chambered = true; - A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + A_BoltForward(); + A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15); } XZWJ EFG 2; XZWJ HIJK 1; XZWJ LMNO 2; Goto Ready; Ready: - XZW2 A 1 A_WeaponReady(); + XZW2 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); Wait; Fire: - XZW2 A 1; + XZW2 A 2; Goto Ready; AltFire: - XZW2 A 1; + XZW2 A 2; Goto Ready; Reload: - XZW2 A 1; + XZW2 A 2 A_Jump(256,"Idle"); // for now, directly jump to idle until reloading is implemented + Goto Ready; + Idle: + XZW2 A 2 + { + A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerCheckGun(); + } + XZW7 JKLMNO 2; + XZW7 PQR 3; + XZW7 STU 4; + XZW7 V 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW7 WXY 2; + XZW7 Z 3; + XZW8 AB 3; + XZW8 CDEF 4; + XZW8 G 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.2); + XZW8 HIJK 2; + XZW8 L 3; Goto Ready; Zoom: - XZW2 A 1; + XZW2 A 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 PQRSTUVW 2; + XZW6 X 2 A_FireSelect(); + XZW6 YZ 2; + XZW7 A 2; + XZW7 B 2 A_JumpIf(player.cmd.buttons&BT_ZOOM,"ReZoom"); + XZW7 CD 2; + XZW7 E 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.35); + XZW7 FGHI 2; Goto Ready; + ReZoom: + XZW7 B 4; // smoother tween + Goto Zoom+6; User1: - XZW2 A 1; + XZW2 A 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 MN 2; + XZW8 O 2 + { + A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerMelee(); + } + XZW8 PQ 2; + XZW8 R 1; + XZW8 S 1 A_Parry(8); + XZW8 T 1; + XZW8 U 1 A_Melee(50,"demolitionist/whitm",1.1,1.2,1.2); + XZW8 VWXYZ 2; + XZW9 A 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW9 BCDEFGHIJ 2; Goto Ready; Deselect: XZW2 A 2 A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP);