Release Candidate 3 Hotfix 2:

- Corrections on Power Shield behaviour, added option to make it absorb damage
  normally like in Unreal instead of individual hits, although this will make
  it less viable as an Invulnerability replacement.
This commit is contained in:
Marisa the Magician 2019-10-11 13:25:22 +02:00
commit a06ab42a4a
4 changed files with 27 additions and 18 deletions

View file

@ -143,12 +143,8 @@ Generates a protective barrier around you that can completely block out up to
## Power Shield ## Power Shield
A much more potent version of the Shield Belt. This one, rather than degrade A much more potent version of the Shield Belt, which can absorb up to 200
with damage taken, wears down based on the NUMBER of hits it takes. So ideally individual hits, but loses charge over time.
it can eat up 200 attacks from anywhere.
By default, it also drains slowly over time for balance reasons, but this can
be disabled for the original behaviour.
## Dispersion Pistol Powerups ## Dispersion Pistol Powerups

View file

@ -51,12 +51,11 @@ server bool sting_dpistol = false; // d.pistol altfire always level 0
// the weapon, but it's very likely // the weapon, but it's very likely
// that this was kept like this for // that this was kept like this for
// the sake of balance // the sake of balance
server bool sting_pshield = false; // p.shield does not drain over time server bool sting_pshield = false; // p.shield absorbs damage instead of
// this is unbalanced as all hell and // individual hits, like in vanilla.
// it's not recommended to enable the // note that this will make it less
// compatibility option unless you are // useful as an invulnerability
// a die-hard purist who despises the // replacement
// change
server bool sting_nopstart = false; // players start only with the server bool sting_nopstart = false; // players start only with the
// dispersion pistol, otherwise they // dispersion pistol, otherwise they
// also get an automag for the sake // also get an automag for the sake

View file

@ -242,7 +242,7 @@ STING_AUTODUAL = "Automags";
STING_PROTODUAL = "Protomags"; STING_PROTODUAL = "Protomags";
STING_UOPTS = "Compatibility options"; STING_UOPTS = "Compatibility options";
STING_DPISTOL = "Dispersion Pistol altfire isn't upgraded"; STING_DPISTOL = "Dispersion Pistol altfire isn't upgraded";
STING_PSHIELD = "Power Shield does not drain over time"; STING_PSHIELD = "Power Shield works like in Unreal";
STING_NOPSTART = "Players don't start up with an Automag"; STING_NOPSTART = "Players don't start up with an Automag";
STING_OLSMP = "Enable SMP 7243 from Oldskool Amp'd"; STING_OLSMP = "Enable SMP 7243 from Oldskool Amp'd";
STING_MSENTRY = "Enable new Minigun Sentry"; STING_MSENTRY = "Enable new Minigun Sentry";
@ -488,7 +488,7 @@ STING_AUTODUAL = "Autoarmas";
STING_PROTODUAL = "Protoarmas"; STING_PROTODUAL = "Protoarmas";
STING_UOPTS = "Opciones de compatibilidad"; STING_UOPTS = "Opciones de compatibilidad";
STING_DPISTOL = "El fuego alternativo de la Pistola de Dispersión no es mejorado"; STING_DPISTOL = "El fuego alternativo de la Pistola de Dispersión no es mejorado";
STING_PSHIELD = "El Escudo de Fuerza no pierde carga con el tiempo"; STING_PSHIELD = "El Escudo de Fuerza funciona como en Unreal";
STING_NOPSTART = "Los jugadores no empiezan la partida con un Automag"; STING_NOPSTART = "Los jugadores no empiezan la partida con un Automag";
STING_OLSMP = "Habilitar SMP 7243 de Oldskool Amp'd"; STING_OLSMP = "Habilitar SMP 7243 de Oldskool Amp'd";
STING_MSENTRY = "Habilitar nueva Torreta"; STING_MSENTRY = "Habilitar nueva Torreta";

View file

@ -201,6 +201,7 @@ Class ShieldBelt : UnrealArmor
Class PowerShield : UnrealArmor Class PowerShield : UnrealArmor
{ {
bool gothit; bool gothit;
int draintimer;
override void AbsorbDamage( int damage, Name damageType, out int newdamage ) override void AbsorbDamage( int damage, Name damageType, out int newdamage )
{ {
@ -208,9 +209,17 @@ Class PowerShield : UnrealArmor
{ {
Owner.A_PlaySound("belt/absorb",CHAN_7); Owner.A_PlaySound("belt/absorb",CHAN_7);
UTMainHandler.DoFlash(Owner,Color(80,224,0,255),5); UTMainHandler.DoFlash(Owner,Color(80,224,0,255),5);
gothit = true; if ( !sting_pshield )
damage = 0; {
newdamage = 0; gothit = true;
damage = 0;
newdamage = 0;
}
}
if ( sting_pshield )
{
Super.AbsorbDamage(damage,damageType,newdamage);
return;
} }
if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage); if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage);
} }
@ -229,7 +238,12 @@ Class PowerShield : UnrealArmor
amount--; amount--;
gothit = false; gothit = false;
} }
if ( !(level.maptime%15) && !sting_pshield ) amount--; draintimer++;
if ( draintimer > 35 )
{
amount--;
draintimer = 0;
}
if ( amount <= 0 ) DepleteOrDestroy(); if ( amount <= 0 ) DepleteOrDestroy();
} }
Default Default