1.0.3 release:

- Add option for vanilla style Power Shield to not drain over time (defaults to true).
 - Fix various weapons being able to fire after player dies while charging (Biorifle, Flamethrower).
 - Fix Minigun not firing bullets immediately at start of fire loop or on refire.
 - Fix Minigun playing unwind animation on death, this time for real.
 - Added interpolation to some Teleport Capsule states and made refire a bit quicker.
This commit is contained in:
Marisa the Magician 2019-10-29 13:32:11 +01:00
commit 8061ce28b2
9 changed files with 47 additions and 10 deletions

View file

@ -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

View file

@ -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

View file

@ -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";

View file

@ -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"

View file

@ -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) )
{

View file

@ -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 )
{

View file

@ -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) )
{

View file

@ -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

View file

@ -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;