diff --git a/TEXTURES.majestic b/TEXTURES.majestic index 3bd0aba..559039b 100644 --- a/TEXTURES.majestic +++ b/TEXTURES.majestic @@ -1,5 +1,5 @@ // Texture definitions generated by SLADE3 -// on Tue Jul 18 07:52:17 2023 +// on Sat Nov 11 08:27:47 2023 Sprite "MJMGA0", 15, 10 { @@ -105,15 +105,7 @@ Sprite "MJCGD0", 89, 119 Patch "MJCGD0", 0, 0 } -Sprite "MJCGE0", 110, 156 -{ - XScale 1.200 - YScale 1.400 - Offset -144, -91 - Patch "MJCFA0", 0, 0 -} - -Sprite "MJCGF0", 89, 119 +Sprite "MJCGE0", 89, 119 { XScale 1.100 YScale 1.400 @@ -121,7 +113,7 @@ Sprite "MJCGF0", 89, 119 Patch "MJCGA0", 0, 0 } -Sprite "MJCGG0", 89, 119 +Sprite "MJCGF0", 89, 119 { XScale 1.200 YScale 1.400 @@ -173,12 +165,12 @@ Sprite "MJ2GD0", 89, 119 } } -Sprite "MJ2GE0", 110, 156 +Sprite "MJ2GE0", 89, 119 { - XScale 1.200 + XScale 1.100 YScale 1.400 - Offset -130, -91 - Patch "MJCFA0", 0, 0 + Offset -114, -131 + Patch "MJCGA0", 0, 0 { FlipX } @@ -186,24 +178,21 @@ Sprite "MJ2GE0", 110, 156 Sprite "MJ2GF0", 89, 119 { - XScale 1.100 + XScale 1.200 YScale 1.400 - Offset -114, -131 + Offset -130, -128 Patch "MJCGA0", 0, 0 { FlipX } } -Sprite "MJ2GG0", 89, 119 +Sprite "MJCFA0", 110, 156 { XScale 1.200 YScale 1.400 - Offset -130, -128 - Patch "MJCGA0", 0, 0 - { - FlipX - } + Offset -144, -91 + Patch "MJCFA0", 0, 0 } // End of texture definitions diff --git a/TEXTURES.viper b/TEXTURES.viper index d1363f6..f0bf184 100644 --- a/TEXTURES.viper +++ b/TEXTURES.viper @@ -1,5 +1,5 @@ // Texture definitions generated by SLADE3 -// on Sun Dec 13 22:26:10 2020 +// on Fri Nov 10 18:34:03 2023 Graphic "VPMGNORM", 15, 23 { @@ -82,15 +82,7 @@ Sprite "VPRGB0", 71, 97 Patch "VIPRGB0", 0, 0 } -Sprite "VPRGC0", 83, 106 -{ - XScale 1.100 - YScale 1.300 - Offset -140, -116 - Patch "VIPRGC0", 0, 0 -} - -Sprite "VPRGD0", 71, 97 +Sprite "VPRGC0", 71, 97 { XScale 1.100 YScale 1.300 @@ -120,26 +112,23 @@ Sprite "VP2GB0", 71, 97 } } -Sprite "VP2GC0", 83, 106 +Sprite "VP2GC0", 71, 97 { XScale 1.100 YScale 1.300 - Offset -129, -116 - Patch "VIPRGC0", 0, 0 + Offset -129, -125 + Patch "VIPRGD0", 0, 0 { FlipX } } -Sprite "VP2GD0", 71, 97 +Sprite "VPRFA0", 83, 106 { XScale 1.100 YScale 1.300 - Offset -129, -125 - Patch "VIPRGD0", 0, 0 - { - FlipX - } + Offset -140, -116 + Patch "VIPRGC0", 0, 0 } // End of texture definitions diff --git a/patches/Blackjack/BLJCKGB0.png b/patches/Blackjack/BLJCKGB0.png index b2c63aa..43e3b46 100644 Binary files a/patches/Blackjack/BLJCKGB0.png and b/patches/Blackjack/BLJCKGB0.png differ diff --git a/patches/Blackjack/BLJCKGC0.png b/patches/Blackjack/BLJCKGC0.png index 535963e..d00e246 100644 Binary files a/patches/Blackjack/BLJCKGC0.png and b/patches/Blackjack/BLJCKGC0.png differ diff --git a/patches/Gungnir/GUNGRF0.png b/patches/Gungnir/GUNGRF0.png index a7bb0a7..2cadc2e 100644 Binary files a/patches/Gungnir/GUNGRF0.png and b/patches/Gungnir/GUNGRF0.png differ diff --git a/patches/Hammerhead/BLNFA0.png b/patches/Hammerhead/BLNFA0.png index ea368d6..7450647 100644 Binary files a/patches/Hammerhead/BLNFA0.png and b/patches/Hammerhead/BLNFA0.png differ diff --git a/patches/Hammerhead/BLNFB0.png b/patches/Hammerhead/BLNFB0.png index 414f99a..8d55c56 100644 Binary files a/patches/Hammerhead/BLNFB0.png and b/patches/Hammerhead/BLNFB0.png differ diff --git a/patches/Hammerhead/BLNFC0.png b/patches/Hammerhead/BLNFC0.png index 993781c..5bdd57f 100644 Binary files a/patches/Hammerhead/BLNFC0.png and b/patches/Hammerhead/BLNFC0.png differ diff --git a/patches/Hammerhead/BLNFD0.png b/patches/Hammerhead/BLNFD0.png index 247699b..27364c9 100644 Binary files a/patches/Hammerhead/BLNFD0.png and b/patches/Hammerhead/BLNFD0.png differ diff --git a/patches/Jackdaw/JACKDWB0.png b/patches/Jackdaw/JACKDWB0.png index 8f8c67d..31604bc 100644 Binary files a/patches/Jackdaw/JACKDWB0.png and b/patches/Jackdaw/JACKDWB0.png differ diff --git a/patches/Majestic/MJCFA0.png b/patches/Majestic/MJCFA0.png index 8b60123..caf3657 100644 Binary files a/patches/Majestic/MJCFA0.png and b/patches/Majestic/MJCFA0.png differ diff --git a/patches/Redline/RDLGF0.png b/patches/Redline/RDLGF0.png index 57bb14e..bd31939 100644 Binary files a/patches/Redline/RDLGF0.png and b/patches/Redline/RDLGF0.png differ diff --git a/patches/Scorpion/SCORPB0.png b/patches/Scorpion/SCORPB0.png index de8bd22..77c5c96 100644 Binary files a/patches/Scorpion/SCORPB0.png and b/patches/Scorpion/SCORPB0.png differ diff --git a/patches/Viper/VIPRGC0.png b/patches/Viper/VIPRGC0.png index 48ac4e5..820afb5 100644 Binary files a/patches/Viper/VIPRGC0.png and b/patches/Viper/VIPRGC0.png differ diff --git a/patches/Wyvern/WYVRFA0.png b/patches/Wyvern/WYVRFA0.png index e37f9c4..b40db55 100644 Binary files a/patches/Wyvern/WYVRFA0.png and b/patches/Wyvern/WYVRFA0.png differ diff --git a/patches/Wyvern/WYVRFB0.png b/patches/Wyvern/WYVRFB0.png index 45d31d2..c709032 100644 Binary files a/patches/Wyvern/WYVRFB0.png and b/patches/Wyvern/WYVRFB0.png differ diff --git a/patches/Wyvern/WYVRFC0.png b/patches/Wyvern/WYVRFC0.png index 7a25b0a..1a015d9 100644 Binary files a/patches/Wyvern/WYVRFC0.png and b/patches/Wyvern/WYVRFC0.png differ diff --git a/patches/Wyvern/WYVRFD0.png b/patches/Wyvern/WYVRFD0.png index 4f6f917..32c7bea 100644 Binary files a/patches/Wyvern/WYVRFD0.png and b/patches/Wyvern/WYVRFD0.png differ diff --git a/patches/Wyvern/WYVRFE0.png b/patches/Wyvern/WYVRFE0.png index 3e4ccdd..433e6f5 100644 Binary files a/patches/Wyvern/WYVRFE0.png and b/patches/Wyvern/WYVRFE0.png differ diff --git a/zscript/accensus/weapons/Blackjack/blackjack.zs b/zscript/accensus/weapons/Blackjack/blackjack.zs index 5342753..97399e5 100644 --- a/zscript/accensus/weapons/Blackjack/blackjack.zs +++ b/zscript/accensus/weapons/Blackjack/blackjack.zs @@ -272,7 +272,7 @@ class HDBlackjack : HDWeapon Goto Ready; Fire: - BJKG A 1 + #### A 1 { if (invoker.InvertFire.GetBool()) { @@ -285,7 +285,7 @@ class HDBlackjack : HDWeapon } Goto Nope; RealFire: - BJKF A 1 Bright + #### A 1 { HDBulletActor.FireBullet(self, 'HDB_355', spread: 1.25, speedfactor: 1.15); A_AlertMonsters(); @@ -293,9 +293,9 @@ class HDBlackjack : HDWeapon A_StartSound("Blackjack/Fire", CHAN_WEAPON); A_ZoomRecoil(0.995); A_MuzzleClimb(-frandom(0.3, 0.35), -frandom(0.40, 0.5), -frandom(0.3, 0.35), -frandom(0.40, 0.5)); - A_GunFlash("Flash"); + A_Overlay(PSP_FLASH, 'Flash'); } - BJKG A 2 Offset(0, 36) + #### A 2 Offset(0, 36) { if (invoker.WeaponStatus[BJProp_ChamberPrimary] == 1) { @@ -318,7 +318,7 @@ class HDBlackjack : HDWeapon Goto Ready; AltFire: - BJKG A 1 + #### A 1 { if (invoker.InvertFire.GetBool()) { @@ -331,7 +331,7 @@ class HDBlackjack : HDWeapon } Goto Nope; RealAltFire: - BJKF B 1 Bright + #### A 1 { Hunter.Fire(self, 3); A_AlertMonsters(); @@ -339,9 +339,9 @@ class HDBlackjack : HDWeapon A_StartSound("Blackjack/AltFire", CHAN_WEAPON); A_ZoomRecoil(0.995); A_MuzzleClimb(-frandom(1, 1.2), -frandom(1.5, 2.0), -frandom(1, 1.2), -frandom(1.5, 2.0)); - A_GunFlash("Flash"); + A_Overlay(PSP_FLASH, 'AltFlash'); } - BJKG A 1 Offset(0, 39) + #### A 1 Offset(0, 39) { if (invoker.WeaponStatus[BJProp_ChamberSecondary] == 1) { @@ -362,15 +362,24 @@ class HDBlackjack : HDWeapon } } AltHold: - BJKG A 1; - BJKG A 0 A_Refire(); + #### A 1; + #### A 0 A_Refire(); Goto Ready; Flash: - TNT1 A 1 A_Light1(); + BJKF A 1 Bright + { + HDFlashAlpha(64); + } + goto lightdone; + AltFlash: + BJKF B 1 Bright + { + HDFlashAlpha(-32); + } goto lightdone; Unload: - BJKG A 0 + #### A 0 { bool invert = invoker.InvertFire.GetBool(); bool sec = PressingUse() && !invert || !PressingUse() && invert; @@ -388,12 +397,12 @@ class HDBlackjack : HDWeapon } Goto Nope; UnloadChamber: - BJKG A 1 A_JumpIf(invoker.WeaponStatus[BJProp_LoadType] == 1 && invoker.WeaponStatus[BJProp_ChamberPrimary] == 0 || invoker.WeaponStatus[BJProp_LoadType] == 2 && invoker.WeaponStatus[BJProp_ChamberSecondary] == 0, 'Nope'); - BJKG A 4 Offset(2, 34) + #### A 1 A_JumpIf(invoker.WeaponStatus[BJProp_LoadType] == 1 && invoker.WeaponStatus[BJProp_ChamberPrimary] == 0 || invoker.WeaponStatus[BJProp_LoadType] == 2 && invoker.WeaponStatus[BJProp_ChamberSecondary] == 0, 'Nope'); + #### A 4 Offset(2, 34) { A_StartSound("Blackjack/BoltPull", 8); } - BJKG A 6 Offset(1, 36) + #### A 6 Offset(1, 36) { if (invoker.WeaponStatus[BJProp_LoadType] == 1) { @@ -408,12 +417,12 @@ class HDBlackjack : HDWeapon invoker.WeaponStatus[BJProp_ChamberSecondary] = 0; } } - BJKG A 2 Offset(0, 34); + #### A 2 Offset(0, 34); Goto ReadyEnd; Reload: AltReload: - BJKG A 0 + #### A 0 { bool invert = invoker.InvertFire.GetBool(); @@ -444,13 +453,13 @@ class HDBlackjack : HDWeapon } Goto UnMag; LoadChamber: - BJKG A 1 Offset(0, 34) A_StartSound("weapons/pocket", 9); - BJKG A 1 Offset(2, 36); - BJKG A 1 Offset(2, 44); - BJKG A 1 Offset(5, 54); - BJKG A 2 Offset(7, 60); - BJKG A 6 Offset(8, 70); - BJKG A 5 Offset(8, 77) + #### A 1 Offset(0, 34) A_StartSound("weapons/pocket", 9); + #### A 1 Offset(2, 36); + #### A 1 Offset(2, 44); + #### A 1 Offset(5, 54); + #### A 2 Offset(7, 60); + #### A 6 Offset(8, 70); + #### A 5 Offset(8, 77) { if (invoker.WeaponStatus[BJProp_LoadType] == 1 && CheckInventory("HDRevolverAmmo", 1)) { @@ -465,27 +474,27 @@ class HDBlackjack : HDWeapon A_StartSound("Blackjack/ChamberQuick", 8); } } - BJKG A 3 Offset(9, 74); - BJKG A 2 Offset(5, 70); - BJKG A 1 Offset(5, 64); - BJKG A 1 Offset(5, 52); - BJKG A 1 Offset(5, 42); - BJKG A 1 Offset(2, 36); - BJKG A 2 Offset(0, 34); + #### A 3 Offset(9, 74); + #### A 2 Offset(5, 70); + #### A 1 Offset(5, 64); + #### A 1 Offset(5, 52); + #### A 1 Offset(5, 42); + #### A 1 Offset(2, 36); + #### A 2 Offset(0, 34); Goto Nope; UnMag: - BJKG A 1 Offset(0, 34); - BJKG A 1 Offset(5, 38); - BJKG A 1 Offset(10, 42); - BJKG A 3 Offset(20, 46) A_MuzzleClimb(0.3, 0.4); - BJKG A 2 Offset(26, 52) A_MuzzleClimb(0.3, 0.4); - BJKG A 2 Offset(26, 54) + #### A 1 Offset(0, 34); + #### A 1 Offset(5, 38); + #### A 1 Offset(10, 42); + #### A 3 Offset(20, 46) A_MuzzleClimb(0.3, 0.4); + #### A 2 Offset(26, 52) A_MuzzleClimb(0.3, 0.4); + #### A 2 Offset(26, 54) { A_StartSound("Blackjack/MagOut", 8); A_MuzzleClimb(0.3, 0.4); } - BJKG A 0 + #### A 0 { int type = invoker.WeaponStatus[BJProp_LoadType]; int magAmt = invoker.WeaponStatus[type == 1 ? BJProp_MagPrimary : BJProp_MagSecondary]; @@ -510,9 +519,9 @@ class HDBlackjack : HDWeapon } } PocketMag: - BJKG AAAAAA 5 Offset(26, 54) A_MuzzleClimb(frandom(0.2, -0.8),frandom(-0.2, 0.4)); + #### AAAAA 5 Offset(26, 54) A_MuzzleClimb(frandom(0.2, -0.8),frandom(-0.2, 0.4)); MagOut: - BJKG A 0 + #### A 0 { if (invoker.WeaponStatus[BJProp_Flags] & BJF_JustUnload) { @@ -520,11 +529,11 @@ class HDBlackjack : HDWeapon } } LoadMag: - BJKG A 0 A_StartSound("weapons/pocket", 9); - BJKG A 6 offset(34, 54) A_MuzzleClimb(frandom(0.2, -0.8), frandom(-0.2, 0.4)); - BJKG A 7 offset(34, 52) A_MuzzleClimb(frandom(0.2, -0.8), frandom(-0.2, 0.4)); - BJKG A 10 offset(32, 50); - BJKG A 3 offset(32, 49) + #### A 0 A_StartSound("weapons/pocket", 9); + #### A 6 offset(34, 54) A_MuzzleClimb(frandom(0.2, -0.8), frandom(-0.2, 0.4)); + #### A 7 offset(34, 52) A_MuzzleClimb(frandom(0.2, -0.8), frandom(-0.2, 0.4)); + #### A 10 offset(32, 50); + #### A 3 offset(32, 49) { class whichCls = invoker.WeaponStatus[BJProp_LoadType] == 1 ? 'HDBlackjackMag355' : 'HDBlackjackMagShells'; int whichIndex = invoker.WeaponStatus[BJProp_LoadType] == 1 ? BJProp_MagPrimary : BJProp_MagSecondary; @@ -538,18 +547,18 @@ class HDBlackjack : HDWeapon Goto ReloadEnd; ReloadEnd: - BJKG A 2 Offset(30, 52); - BJKG A 2 Offset(20, 46); - BJKG A 2 Offset(10, 42); - BJKG A 2 Offset(5, 38); - BJKG A 1 Offset(0, 34); + #### A 2 Offset(30, 52); + #### A 2 Offset(20, 46); + #### A 2 Offset(10, 42); + #### A 2 Offset(5, 38); + #### A 1 Offset(0, 34); Goto ChamberManual; ChamberManual: - BJKG A 0 A_JumpIf(invoker.WeaponStatus[BJProp_LoadType] == 1 && (invoker.WeaponStatus[BJProp_MagPrimary] <= 0 || invoker.WeaponStatus[BJProp_ChamberPrimary] == 2) || invoker.WeaponStatus[BJProp_LoadType] == 2 && (invoker.WeaponStatus[BJProp_MagSecondary] <= 0 || invoker.WeaponStatus[BJProp_ChamberSecondary] == 2), "Nope"); - BJKG A 2 Offset(2, 34); - BJKG A 4 Offset(3, 38); - BJKG A 5 Offset(4, 44) + #### A 0 A_JumpIf(invoker.WeaponStatus[BJProp_LoadType] == 1 && (invoker.WeaponStatus[BJProp_MagPrimary] <= 0 || invoker.WeaponStatus[BJProp_ChamberPrimary] == 2) || invoker.WeaponStatus[BJProp_LoadType] == 2 && (invoker.WeaponStatus[BJProp_MagSecondary] <= 0 || invoker.WeaponStatus[BJProp_ChamberSecondary] == 2), "Nope"); + #### A 2 Offset(2, 34); + #### A 4 Offset(3, 38); + #### A 5 Offset(4, 44) { A_StartSound("Blackjack/BoltPull", 8, CHANF_OVERLAP); int type = invoker.WeaponStatus[BJProp_LoadType]; @@ -567,9 +576,9 @@ class HDBlackjack : HDWeapon invoker.WeaponStatus[chamberIndex] = 2; A_WeaponBusy(); } - BJKG A 2 Offset(3, 38); - BJKG A 2 Offset(2, 34); - BJKG A 2 Offset(0, 32); + #### A 2 Offset(3, 38); + #### A 2 Offset(2, 34); + #### A 2 Offset(0, 32); Goto Nope; } } diff --git a/zscript/accensus/weapons/Gungnir/gungnir.zs b/zscript/accensus/weapons/Gungnir/gungnir.zs index ca079b7..1f594ea 100644 --- a/zscript/accensus/weapons/Gungnir/gungnir.zs +++ b/zscript/accensus/weapons/Gungnir/gungnir.zs @@ -417,6 +417,8 @@ class HDGungnir : HDCellWeapon private action void A_FireGungnir() { + A_Overlay(PSP_FLASH, 'Flash'); + int tier = invoker.Charge / A_GetChargePerTier(); A_Light0(); @@ -600,10 +602,17 @@ class HDGungnir : HDCellWeapon } Stop; Shoot: - #### F 2 Bright Offset(0, 44) A_FireGungnir(); + #### C 2 Bright Offset(0, 44) A_FireGungnir(); #### B 2 Offset(0, 38); #### B 1 Offset(0, 32); Goto Nope; + Flash: + GNGR F 2 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + Charge: #### B 1; ActualCharge: diff --git a/zscript/accensus/weapons/Hammerhead/hammerhead.zs b/zscript/accensus/weapons/Hammerhead/hammerhead.zs index eea89e6..7c183df 100644 --- a/zscript/accensus/weapons/Hammerhead/hammerhead.zs +++ b/zscript/accensus/weapons/Hammerhead/hammerhead.zs @@ -330,7 +330,7 @@ class HDHammerhead : HDCellWeapon return; } } - BLNF A 1 Bright + BLNG A 1 Bright { int active = A_GetActiveBatteryCount(true); if (active == 0) @@ -339,8 +339,13 @@ class HDHammerhead : HDCellWeapon return; } - let psp = player.GetPSprite(PSP_WEAPON); - psp.frame = random(0, 3); + switch (random(0, 3)) { + case 0: A_Overlay(PSP_FLASH, 'FlashA'); break; + case 1: A_Overlay(PSP_FLASH, 'FlashB'); break; + case 2: A_Overlay(PSP_FLASH, 'FlashC'); break; + case 3: A_Overlay(PSP_FLASH, 'FlashD'); break; + default: break; + } double rpmFac = invoker.WeaponStatus[HHProp_Rpm] / double(MaxRpm); A_StartSound("Hammerhead/Fire", 8, pitch: 1.2 + 0.10 * rpmFac); @@ -378,6 +383,31 @@ class HDHammerhead : HDCellWeapon BLNG A 0 A_Refire('Fire'); Goto Ready; + FlashA: + BLNF A 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + FlashB: + BLNF B 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + FlashC: + BLNF C 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + FlashD: + BLNF D 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + Altfire: BLNP A 3; BLNP B 3 A_StartSound("Hammerhead/HandlePull", CHAN_WEAPON); diff --git a/zscript/accensus/weapons/Jackdaw/jackdaw.zs b/zscript/accensus/weapons/Jackdaw/jackdaw.zs index 4a82c01..f25efd4 100644 --- a/zscript/accensus/weapons/Jackdaw/jackdaw.zs +++ b/zscript/accensus/weapons/Jackdaw/jackdaw.zs @@ -156,8 +156,10 @@ class HDJackdaw : HDWeapon return; } } - JDWF A 2 + JDWG A 2 { + A_Overlay(PSP_FLASH, 'Flash'); + if (invoker.WeaponStatus[JDProp_Flags] & JDF_RapidFire) { A_SetTics(1); @@ -184,6 +186,13 @@ class HDJackdaw : HDWeapon A_TryLoadChamber(); } Goto Ready; + Flash: + JDWF A 1 Bright + { + HDFlashAlpha(-200); + A_Light1(); + } + goto lightdone; ChamberManual: JDWG A 0 A_JumpIf(invoker.WeaponStatus[JDProp_Chamber] == 2, "Nope"); diff --git a/zscript/accensus/weapons/Majestic/majestic.zs b/zscript/accensus/weapons/Majestic/majestic.zs index 0e9adea..a93b6a9 100644 --- a/zscript/accensus/weapons/Majestic/majestic.zs +++ b/zscript/accensus/weapons/Majestic/majestic.zs @@ -17,10 +17,8 @@ class HDMajestic : HDHandgun override void DetachFromOwner() { - if (Charge > 0) - { - A_FireMajestic(true); - } + if (Charge > 0) A_FireMajestic(); + MustCancel = false; A_ResetCharges(); Super.DetachFromOwner(); @@ -196,13 +194,8 @@ class HDMajestic : HDHandgun invoker.Charge = 0; } - private action void A_FireMajestic(bool fromDrop) + private action void A_FireMajestic() { - // [Ace] Otherwise it freezes the game. - if (!fromDrop) - { - HDFlashAlpha(128); - } A_Light1(); A_StartSound("Majestic/Fire", CHAN_WEAPON); A_StartSound("Majestic/Fire", CHAN_WEAPON, CHANF_OVERLAP); @@ -210,6 +203,7 @@ class HDMajestic : HDHandgun int tier = invoker.Charge / (MaxCharge / Tiers); HDB_500SWElectrified b = HDB_500SWElectrified(HDBulletActor.FireBullet(self, "HDB_500SWElectrified", speedfactor: frandom(0.98, 1.02) + 0.35 * tier)); b.Tier = tier; + A_ResetCharges(); A_AlertMonsters(); A_ZoomRecoil(1.15); @@ -266,18 +260,20 @@ class HDMajestic : HDHandgun { A_CheckMajesticHand(); A_WeaponReady(WRF_NOFIRE | (invoker.Charge == 0 ? WRF_ALL : 0)); + + let psp = player.GetPSprite(PSP_WEAPON); - if (PressingFire() && invoker.WeaponStatus[MJProp_Mag] > 0 || invoker.Charge > 0 && player.GetPSprite(PSP_WEAPON).frame == 1) + if (PressingFire() && invoker.WeaponStatus[MJProp_Mag] > 0 || invoker.Charge > 0 && psp.frame == 1) { if (PressingAltFire() || invoker.WeaponStatus[MJProp_Mag] <= 0 || invoker.MustCancel) { invoker.MustCancel = true; A_ResetCharges(); - if (player.GetPSprite(PSP_WEAPON).frame > 0) + if (psp.frame > 0) { A_MuzzleClimb(frandom(0.05, 0.1), frandom(0.4, 0.6), 0, -frandom(0.2, 0.4)); A_StartSound("Majestic/Hammer", 5); - player.GetPSprite(PSP_WEAPON).frame--; + psp.frame--; A_WeaponOffset(0, 34); } else @@ -289,11 +285,11 @@ class HDMajestic : HDHandgun } A_TakeInventory("IsMoving"); - if (player.GetPSprite(PSP_WEAPON).frame < 2) + if (psp.frame < 2) { A_MuzzleClimb(-frandom(0.05, 0.1), -frandom(0.4, 0.6), 0, frandom(0.2, 0.4)); A_StartSound("Majestic/Hammer", 5); - player.GetPSprite(PSP_WEAPON).frame++; + psp.frame++; A_WeaponOffset(0, 34); } @@ -344,12 +340,23 @@ class HDMajestic : HDHandgun { HDPlayerPawn(self).gunbraced = false; } - #### E 1 Bright A_FireMajestic(false); + #### A 1 + { + A_FireMajestic(); + A_Overlay(PSP_FLASH, 'Flash'); + } + #### E 1; #### F 1; - #### G 1; #### A 2 A_CheckMajesticFrame(); Goto Ready; + Flash: + MJCF A 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + Reload: AltReload: #### # 0 diff --git a/zscript/accensus/weapons/Redline/redline.zs b/zscript/accensus/weapons/Redline/redline.zs index 3907cbc..22ccb83 100644 --- a/zscript/accensus/weapons/Redline/redline.zs +++ b/zscript/accensus/weapons/Redline/redline.zs @@ -302,8 +302,10 @@ class HDRedline : HDCellWeapon #### A 0 A_MagManager("HDBattery"); Goto Ready; Fire: - #### F 1 Bright + #### A 1 { + A_Overlay(PSP_FLASH, 'Flash'); + A_Light0(); A_StartSound("Redline/Fire", CHAN_WEAPON); @@ -344,6 +346,13 @@ class HDRedline : HDCellWeapon #### A 4 A_JumpIf(invoker.LockedTargets.Size() > 0, 'Fire'); Goto Ready; + Flash: + RDLG F 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + Reload: #### A 0 { diff --git a/zscript/accensus/weapons/Scorpion/scorpion.zs b/zscript/accensus/weapons/Scorpion/scorpion.zs index d4041bc..5869281 100644 --- a/zscript/accensus/weapons/Scorpion/scorpion.zs +++ b/zscript/accensus/weapons/Scorpion/scorpion.zs @@ -124,13 +124,14 @@ class HDScorpion : HDWeapon ); if(scopeview){ + double degree=6.; int scaledwidth=89; - int scaledyoffset=60; - double degree=0.1*hdw.weaponstatus[BOSSS_ZOOM]; - double deg=1/degree; + int scaledyoffset=(scaledwidth>>1)+16; int cx,cy,cw,ch; [cx,cy,cw,ch]=screen.GetClipRect(); - sb.SetClipRect(-44+bob.x,16+bob.y,scaledwidth,scaledwidth, + sb.SetClipRect( + bob.x-(scaledwidth>>1),bob.y+scaledyoffset-(scaledwidth>>1), + scaledwidth,scaledwidth, sb.DI_SCREEN_CENTER ); @@ -139,7 +140,7 @@ class HDScorpion : HDWeapon 88,88,sb.DI_SCREEN_CENTER|sb.DI_ITEM_CENTER ); - texman.setcameratotexture(hpc,"HDXCAM_BOSS",4); + texman.setcameratotexture(hpc,"HDXCAM_BOSS",degree); let cam = texman.CheckForTexture("HDXCAM_BOSS",TexMan.Type_Any); let reticle = texman.CheckForTexture("bossret1",TexMan.Type_Any); @@ -153,7 +154,7 @@ class HDScorpion : HDWeapon if((bob.y/fov)<0.4){ let reticleScale = camSize / texman.GetSize(reticle); if(hdw.weaponstatus[0]&BOSSF_FRONTRETICLE){ - sb.DrawCircle(reticle, frontoffs, .5*reticleScale, bob*deg*5-bob, 1.6*deg); + sb.DrawCircle(reticle, frontoffs, .5*reticleScale, bob*(1/degree)*5-bob, 1.6*(1/degree)); }else{ sb.DrawCircle(reticle, (0,scaledyoffset)+bob, .5*reticleScale,uvScale:.5); } @@ -227,7 +228,7 @@ class HDScorpion : HDWeapon return; } } - #### B 1 Bright Offset(0, 34) + #### A 1 Offset(0, 34) { A_GiveInventory("IsMoving", GunBraced() ? 2 : 7); @@ -239,7 +240,8 @@ class HDScorpion : HDWeapon A_ChangeVelocity(cos(pitch) * -frandom(2, 4), 0, sin(pitch) * frandom(2, 4), CVF_RELATIVE); } - HDFlashAlpha(0, true); + A_Overlay(PSP_FLASH, 'Flash'); + A_Light1(); A_StartSound("Scorpion/Fire", CHAN_WEAPON); @@ -270,6 +272,14 @@ class HDScorpion : HDWeapon } } Goto Nope; + + Flash: + SCRP B 1 Bright + { + HDFlashAlpha(0, true); + } + goto lightdone; + AltFire: #### A 1 Offset(0, 34) A_WeaponBusy(); #### C 1 Offset(1, 35); diff --git a/zscript/accensus/weapons/Viper/viper.zs b/zscript/accensus/weapons/Viper/viper.zs index 84d0dd7..a2e3731 100644 --- a/zscript/accensus/weapons/Viper/viper.zs +++ b/zscript/accensus/weapons/Viper/viper.zs @@ -210,7 +210,7 @@ class HDViper : HDHandgun Ready: VPRG A 0 A_CheckViperHand(); #### A 0 A_JumpIf(invoker.WeaponStatus[VPProp_Chamber] > 0, 2); - #### D 0; + #### C 0; #### # 1 A_WeaponReady(WRF_ALL); Goto ReadyEnd; Select0: @@ -224,13 +224,13 @@ class HDViper : HDHandgun A_CheckViperHand(); } #### A 0 A_JumpIf(invoker.WeaponStatus[VPProp_Chamber] > 0, 2); - #### D 0; + #### C 0; #### # 0; Goto Select0Small; Deselect0: VPRG A 0 A_CheckViperHand(); #### A 0 A_JumpIf(invoker.WeaponStatus[VPProp_Chamber] > 0, 2); - #### D 0; + #### C 0; #### # 0; Goto Deselect0Small; User3: @@ -258,9 +258,9 @@ class HDViper : HDHandgun HDPlayerPawn(self).gunbraced = false; } } - #### C 1 Offset(0, 36) + #### B 1 Offset(0, 36) { - HDFlashAlpha(128); + A_Overlay(PSP_FLASH, 'Flash'); A_Light1(); A_StartSound("Viper/Fire", CHAN_WEAPON); @@ -288,7 +288,7 @@ class HDViper : HDHandgun invoker.WeaponStatus[VPProp_Chamber] = 1; } - #### D 1 Offset(0, 44) + #### C 1 Offset(0, 44) { if (invoker.WeaponStatus[VPProp_Chamber] == 1) { @@ -313,6 +313,13 @@ class HDViper : HDHandgun Hold: Goto Nope; + Flash: + VPRF A 1 Bright + { + HDFlashAlpha(128); + } + goto lightdone; + Reload: #### # 0 { @@ -419,7 +426,7 @@ class HDViper : HDHandgun ChamberManual: #### # 0 A_JumpIf(!(invoker.WeaponStatus[VPProp_Flags] & VPF_JustUnload) && (invoker.WeaponStatus[VPProp_Chamber] == 2 || invoker.WeaponStatus[VPProp_Mag] <= 0), "Nope"); #### # 3 Offset(0, 34); - #### D 4 Offset(0, 37) + #### C 4 Offset(0, 37) { if (invoker.WeaponStatus[VPProp_Chamber] > 0) { @@ -445,15 +452,15 @@ class HDViper : HDHandgun Goto Nope; LoadChamber: #### # 0 A_JumpIf(invoker.WeaponStatus[VPProp_Chamber] > 0, "Nope"); - #### D 1 Offset(0, 36) A_StartSound("weapons/pocket",9); - #### D 1 Offset(2, 40); - #### D 1 Offset(2, 50); - #### D 1 Offset(3, 60); - #### D 2 Offset(5, 90); - #### D 2 Offset(7, 80); - #### D 2 Offset(10, 90); - #### D 2 Offset(8, 96); - #### D 3 Offset(6, 88) + #### C 1 Offset(0, 36) A_StartSound("weapons/pocket",9); + #### C 1 Offset(2, 40); + #### C 1 Offset(2, 50); + #### C 1 Offset(3, 60); + #### C 2 Offset(5, 90); + #### C 2 Offset(7, 80); + #### C 2 Offset(10, 90); + #### C 2 Offset(8, 96); + #### C 3 Offset(6, 88) { if (CheckInventory("HD50AM_Ammo", 1)) { diff --git a/zscript/accensus/weapons/Wyvern/wyvern.zs b/zscript/accensus/weapons/Wyvern/wyvern.zs index 09dc8b6..ca0c4b2 100644 --- a/zscript/accensus/weapons/Wyvern/wyvern.zs +++ b/zscript/accensus/weapons/Wyvern/wyvern.zs @@ -162,24 +162,54 @@ class HDWyvern : HDWeapon { A_AlertMonsters(); let psp = player.GetPSprite(PSP_WEAPON); + int flashFrame = -1; + + // Fire Left Chamber if (barrel & 1) { - psp.frame = invoker.weaponStatus[WYVS_CHAMBER2] > 1 ? 0 : 1; + let rightChamber = invoker.weaponStatus[WYVS_CHAMBER2] > 1; + psp.frame = rightChamber ? 2 : 3; + flashFrame = rightChamber ? 0 : 1; A_MuzzleClimb(0, 0, -0.2, -0.8, -frandom(0.5, 0.9), -frandom(3.2, 4.0), -frandom(0.5, 0.9), -frandom(3.2, 4.0)); HDBulletActor.FireBullet(self, "HDB_50OMG"); invoker.weaponStatus[WYVS_CHAMBER1] = 1; A_StartSound("Wyvern/Fire", CHAN_WEAPON, CHANF_OVERLAP); } + // Fire Right Chamber if (barrel & 2) { - psp.frame = invoker.weaponStatus[WYVS_CHAMBER1] > 1 ? 2 : 3; + let leftChamber = invoker.weaponStatus[WYVS_CHAMBER1] > 1; + psp.frame = leftChamber ? 1 : 3; + flashFrame = leftChamber ? 2 : 3; A_MuzzleClimb(0, 0, 0.2, -0.8, frandom(0.5, 0.9), -frandom(3.2, 4.0), frandom(0.5, 0.9), -frandom(3.2, 4.0)); HDBulletActor.FireBullet(self, "HDB_50OMG"); invoker.weaponStatus[WYVS_CHAMBER2] = 1; A_StartSound("Wyvern/Fire", CHAN_WEAPON, CHANF_OVERLAP); } + // Fire Both Chambers if (barrel & 1 && barrel & 2) { - psp.frame = 4; + psp.frame = 3; + flashFrame = 4; + } + + switch (flashFrame) { + case 0: + A_Overlay(10, 'FlashA'); + break; + case 1: + A_Overlay(10, 'FlashB'); + break; + case 2: + A_Overlay(11, 'FlashC'); + break; + case 3: + A_Overlay(11, 'FlashD'); + break; + case 4: + A_Overlay(12, 'FlashE'); + break; + default: + break; } } @@ -262,22 +292,57 @@ class HDWyvern : HDWeapon { Goto ReadyEnd; ShootLeft: - WYVF # 1 Bright A_WyvernFire(1); + WYVG # 1 A_WyvernFire(1); WYVG # 1 Offset(0, 44) A_CheckIdleHammer(); WYVG # 1 Offset(0, 38); Goto Ready; ShootRight: - WYVF # 1 Bright A_WyvernFire(2); + WYVG # 1 A_WyvernFire(2); WYVG # 1 Offset(0, 44) A_CheckIdleHammer(); WYVG # 1 Offset(0, 38); Goto Ready; ShootBoth: - WYVF # 1 Bright A_WyvernFire(3); + WYVG # 1 A_WyvernFire(3); WYVG # 1 Offset(0, 52) A_CheckIdleHammer(); WYVG # 1 Offset(0, 42); WYVG # 1 Offset(0, 36); Goto Ready; + FlashA: + WYVF A 1 Bright + { + HDFlashAlpha(72); + } + goto lightdone; + + FlashB: + WYVF B 1 Bright + { + HDFlashAlpha(72); + } + goto lightdone; + + FlashC: + WYVF C 1 Bright + { + HDFlashAlpha(72); + } + goto lightdone; + + FlashD: + WYVF D 1 Bright + { + HDFlashAlpha(72); + } + goto lightdone; + + FlashE: + WYVF E 1 Bright + { + HDFlashAlpha(72); + } + goto lightdone; + AltReload: WYVG # 0 { if (