diff --git a/Readme.md b/Readme.md index ac9adf2..64ae3c6 100644 --- a/Readme.md +++ b/Readme.md @@ -73,7 +73,7 @@ This mod requires GZDoom 4.2.3 or later, and runs on top of Doom Tournament. ## In progress - - N/A, this is the 1.0.2 release. + - N/A, this is the 1.0.3 release. ## Planned diff --git a/cvarinfo.txt b/cvarinfo.txt index 0e04d7c..0706b01 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -56,6 +56,11 @@ server bool sting_pshield = false; // p.shield absorbs damage instead of // note that this will make it less // useful as an invulnerability // replacement +server bool sting_pshield2 = true; // p.shield does not drain over time + // when in vanilla mode, this was in + // fact a bug that never got fixed, but + // everyone is used to it so I made it + // toggleable server bool sting_nopstart = false; // players start only with the // dispersion pistol, otherwise they // also get an automag for the sake diff --git a/language.txt b/language.txt index f2d84fb..ce07492 100644 --- a/language.txt +++ b/language.txt @@ -242,6 +242,7 @@ STING_PROTODUAL = "Protomags"; STING_UOPTS = "Compatibility options"; STING_DPISTOL = "Dispersion Pistol altfire isn't upgraded"; STING_PSHIELD = "Power Shield works like in Unreal"; +STING_PSHIELD2 = "Unreal style Power Shield does not drain over time"; STING_NOPSTART = "Players don't start up with an Automag"; STING_OLSMP = "Enable SMP 7243 from Oldskool Amp'd"; STING_MSENTRY = "Enable new Minigun Sentry"; @@ -487,6 +488,7 @@ STING_PROTODUAL = "Protoarmas"; STING_UOPTS = "Opciones de compatibilidad"; STING_DPISTOL = "El fuego alternativo de la Pistola de Dispersión no es mejorado"; STING_PSHIELD = "El Escudo de Fuerza funciona como en Unreal"; +STING_PSHIELD2 = "El Escudo de Fuerza en modo Unreal no se gasta con el tiempo"; STING_NOPSTART = "Los jugadores no empiezan la partida con un Automag"; STING_OLSMP = "Habilitar SMP 7243 de Oldskool Amp'd"; STING_MSENTRY = "Habilitar nueva Torreta"; diff --git a/menudef.txt b/menudef.txt index fd0546b..95dd16d 100644 --- a/menudef.txt +++ b/menudef.txt @@ -42,6 +42,7 @@ OptionMenu "UnrealOptionMenu" StaticText "$STING_UOPTS", "Gold" Option "$STING_DPISTOL", "sting_dpistol", "YesNo" Option "$STING_PSHIELD", "sting_pshield", "YesNo" + Option "$STING_PSHIELD2", "sting_pshield2", "YesNo", "sting_pshield" Option "$STING_NOPSTART", "sting_nopstart", "YesNo" Option "$STING_OLSMP", "sting_olsmp", "YesNo" Option "$STING_MSENTRY", "sting_msentry", "YesNo" diff --git a/zscript/napalm.zsc b/zscript/napalm.zsc index f87229a..a6972b9 100644 --- a/zscript/napalm.zsc +++ b/zscript/napalm.zsc @@ -858,10 +858,15 @@ Class UFlamethrower : UnrealWeapon } action void A_FireFlame() { + if ( Health <= 0 ) + { + player.SetPSprite(-9999,ResolveState("Null")); + return; + } let weap = Weapon(invoker); if ( (weap.Ammo1.Amount <= 0) || !(player.cmd.buttons&BT_ATTACK) ) { - player.SetPSPrite(PSP_WEAPON,invoker.FindState("Release")); + player.SetPSprite(PSP_WEAPON,invoker.FindState("Release")); return; } invoker.count += 10./TICRATE; @@ -921,6 +926,12 @@ Class UFlamethrower : UnrealWeapon } action void A_ChargeUp() { + if ( Health <= 0 ) + { + invoker.bCharging = false; + player.SetPSprite(-9999,ResolveState("Null")); + return; + } let weap = Weapon(invoker); if ( (invoker.chargesize < 4.9) && (weap.Ammo1.Amount > 0) ) { diff --git a/zscript/uarmoritems.zsc b/zscript/uarmoritems.zsc index 652c862..8db907e 100644 --- a/zscript/uarmoritems.zsc +++ b/zscript/uarmoritems.zsc @@ -209,6 +209,7 @@ Class PowerShield : UnrealArmor override void Tick() { Super.Tick(); + if ( sting_pshield && sting_pshield2 ) return; if ( !Owner || !Owner.player || (amount <= 0) ) return; if ( gothit ) { diff --git a/zscript/ubiorifle.zsc b/zscript/ubiorifle.zsc index 723d2cc..b5a18cb 100644 --- a/zscript/ubiorifle.zsc +++ b/zscript/ubiorifle.zsc @@ -640,6 +640,12 @@ Class UBioRifle : UnrealWeapon } action void A_ChargeUp() { + if ( Health <= 0 ) + { + invoker.bCharging = false; + player.SetPSprite(-9999,ResolveState("Null")); + return; + } let weap = Weapon(invoker); if ( (invoker.chargesize < 4.9) && (weap.Ammo1.Amount > 0) ) { diff --git a/zscript/uminigun.zsc b/zscript/uminigun.zsc index 4f9d741..b42c483 100644 --- a/zscript/uminigun.zsc +++ b/zscript/uminigun.zsc @@ -143,6 +143,7 @@ Class UMinigun : UnrealWeapon return; } weap.bAltFire = !!(player.cmd.buttons&BT_ALTATTACK); + invoker.bcnt = 5; A_Refire("Hold"); } @@ -183,11 +184,12 @@ Class UMinigun : UnrealWeapon FireDummy: TNT1 A 1 { + if ( Health <= 0 ) return ResolveState("Null"); let weap = Weapon(invoker); if ( !(player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK)) || (weap.Ammo1.Amount <= 0) ) { A_StopSound(CHAN_WEAPON); - if ( Health > 0 ) player.SetPSprite(PSP_WEAPON,invoker.FindState("Release")); + player.SetPSprite(PSP_WEAPON,invoker.FindState("Release")); return ResolveState("Null"); } return ResolveState(null); @@ -197,7 +199,11 @@ Class UMinigun : UnrealWeapon AltFire: MGNW A 0 A_PlaySound("umini/wind",CHAN_WEAPON,Dampener.Active(self)?.1:1.); MGNW ABCDEFGHIJKLMNO 1; - MGNW O 0 A_Refire(1); + MGNW O 0 + { + invoker.bcnt = 5; + A_Refire(1); + } Goto Release; Hold: MGNF A 0 diff --git a/zscript/utranslocator.zsc b/zscript/utranslocator.zsc index e824450..61623b9 100644 --- a/zscript/utranslocator.zsc +++ b/zscript/utranslocator.zsc @@ -291,26 +291,31 @@ Class UTranslocator : UnrealWeapon TLCT ABCDEFGHI 5; Goto Idle+1; Fire: - TLCF A 0 A_Overlay(-9999,"Null"); - TLCF A 0 A_JumpIf(invoker.module,"Recall"); + #### # 0 A_Overlay(-9999,"Null"); + #### # 0 A_JumpIf(invoker.module,"Recall"); + #### # 2; TLCF ABCDEF 2; TLCF G 0 A_ThrowModule(); - TLCF GHIJKLMNOPQRSTUVWXY 2; + TLCF GHIJKLMNOPQRSTUV 2; + TLCF WXY 2 A_WeaponReady(); Goto Idle; Recall: + #### # 2; TLCR ABCDEF 2; TLCR G 0 A_ReturnModule(); TLCR GHIJKLM 2; Goto Idle; AltFire: - TLCA A 0 A_Overlay(-9999,"Null"); - TLCA A 0 A_JumpIf(!invoker.module,"Reload"); + #### # 0 A_Overlay(-9999,"Null"); + #### # 0 A_JumpIf(!invoker.module,"Reload"); + #### # 2; TLCA ABCDE 2; TLCA A 0 A_Translocate(); TLCA FGHIJKL 2; Goto Idle; Reload: - TLCB A 0 A_Overlay(-9999,"Null"); + #### # 0 A_Overlay(-9999,"Null"); + #### # 2; TLCB ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 2; TLB2 AB 2; Goto Idle;