Weapons with switchable ammos/modes display nametags on change.

This commit is contained in:
Mari the Deer 2021-03-12 17:15:06 +01:00
commit e30eb24936
8 changed files with 95 additions and 2 deletions

View file

@ -607,6 +607,16 @@ SWWM_YOURSELF = "Yourself";
SWWM_DOKIDOKI = "The Power of Love™";
SWWM_GRAVKILL = "Gravity";
SWWM_SETSLOTSTRICT = "\cg!!!WARNING!!!\c-\n\cj\"setslotstrict\" is enabled. This will cause SWWM GZ weapons to not have slots assigned. Please go into Miscellaneous Options and toggle the \"Strict KEYCONF Weapons/Players\" setting.\c-";
SWWM_FCBSEL = "1.150 FCB";
SWWM_XSBSEL = "1.150 XSB";
SWWM_WIDESPREAD = "Wide Spread Mode";
SWWM_TIGHTSPREAD = "Tight Spread Mode";
SWWM_YNYKRONFORWARD = "Beam Mode"; // desya / forward
SWWM_YNYKRONBACKWARD = "Vortex Mode"; // busa / backward
SWWM_GAMMAMODE1 = "Semi-Auto";
SWWM_GAMMAMODE2 = "3-Round Burst";
SWWM_GAMMAMODE3 = "Full Auto";
SWWM_GAMMAMODE4 = "FULLER AUTO";
// boss tags
BT_BRUISERS = "Bruiser Brothers";
BT_CYBIE = "Tyrant of Babel";

View file

@ -530,6 +530,14 @@ SWWM_YOURSELF = "Tú";
SWWM_DOKIDOKI = "El Poder del Amor™";
SWWM_GRAVKILL = "Gravedad";
SWWM_SETSLOTSTRICT = "\cg!!!ADVERTENCIA!!!\c-\n\cj\"setslotstrict\" está activado. Esto causará que las armas de SWWM GZ no tengan ranuras asignadas. Por favor, ve a Opciones Misceláneas y cambia la opción de \"KEYCONF de Armas/Jugadores estricto\".\c-";
SWWM_WIDESPREAD = "Modo Amplio";
SWWM_TIGHTSPREAD = "Modo Concentrado";
SWWM_YNYKRONFORWARD = "Modo de Rayo"; // desya / forward
SWWM_YNYKRONBACKWARD = "Modo de Vórtice"; // busa / backward
SWWM_GAMMAMODE1 = "Semiautomático";
SWWM_GAMMAMODE2 = "Triple Ráfaga";
SWWM_GAMMAMODE3 = "Automático";
SWWM_GAMMAMODE4 = "SUPERAUTOMÁTICO";
// boss tags
BT_BRUISERS = "Hermanos de Guerra";
BT_CYBIE = "Tirano de Babel";

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r349 \cu(Fri 12 Mar 16:05:39 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r349 \cu(2021-03-12 16:05:39)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r350 \cu(Fri 12 Mar 17:15:06 CET 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r350 \cu(2021-03-12 17:15:06)\c-";

View file

@ -92,6 +92,7 @@ Class Hellblazer : SWWMWeapon
bool magstate[6]; // true: rocket was spent
int magpos; // current rotation
Class<Ammo> loadammo, nextammo;
ui Class<Ammo> lastammo;
int spinskipped;
HellblazerXSub pickuprockets[6];
@ -178,6 +179,22 @@ Class Hellblazer : SWWMWeapon
}
}
override void HudTick()
{
Super.HudTick();
if ( lastammo && (lastammo != nextammo) && (Owner.player == players[consoleplayer]) )
{
let bar = SWWMStatusBar(statusbar);
if ( bar )
{
bar.ntagstr = GetDefaultByType(nextammo).GetTag();
bar.ntagtic = level.totaltime;
bar.ntagcol = nametagcolor;
}
}
lastammo = nextammo;
}
override Vector3 GetTraceOffset()
{
return (10.,3.5,-5.);

View file

@ -7,6 +7,7 @@ Class Eviscerator : SWWMWeapon
bool isfiring;
// barrel is extended
bool extended;
ui int lastmode;
// pending shell load
bool pendingload;
// has shell chambered
@ -72,6 +73,22 @@ Class Eviscerator : SWWMWeapon
}
}
override void HudTick()
{
Super.HudTick();
if ( lastmode && (lastmode != extended+1) && (Owner.player == players[consoleplayer]) )
{
let bar = SWWMStatusBar(statusbar);
if ( bar )
{
bar.ntagstr = StringTable.Localize(extended?"$SWWM_TIGHTSPREAD":"$SWWM_WIDESPREAD");
bar.ntagtic = level.totaltime;
bar.ntagcol = nametagcolor;
}
}
lastmode = extended+1;
}
action void A_StartLoad( int delay = 0 )
{
invoker.pendingload = true;

View file

@ -19,6 +19,7 @@ Class Ynykron : SWWMWeapon
int chargestate;
double chargelevel;
bool inverted, invertreload;
ui int lastmode;
double ventalpha, ventfade;
int ventcooldown;
@ -47,6 +48,17 @@ Class Ynykron : SWWMWeapon
Super.HudTick();
if ( !ChargeInter ) ChargeInter = DynamicValueInterpolator.Create(int(chargelevel*10),.5,1,400);
ChargeInter.Update(int(chargelevel*10));
if ( lastmode && (lastmode != inverted+1) && (Owner.player == players[consoleplayer]) )
{
let bar = SWWMStatusBar(statusbar);
if ( bar )
{
bar.ntagstr = StringTable.Localize(inverted?"$SWWM_YNYKRONBACKWARD":"$SWWM_YNYKRONFORWARD");
bar.ntagtic = level.totaltime;
bar.ntagcol = nametagcolor;
}
}
lastmode = inverted+1;
}
override bool ReportHUDAmmo()

View file

@ -122,11 +122,28 @@ Class Spreadgun : SWWMWeapon
bool chambered; // a shell is actually loaded
bool emptyup; // next reload will keep the chamber empty
Class<Ammo> loadammo, nextammo; // currently loaded shell, next shell to load
ui Class<Ammo> lastammo;
bool initialized;
transient ui TextureID WeaponBox, AmmoIcon[7], LoadedIcon[7];
transient ui Font TewiFont;
override void HudTick()
{
Super.HudTick();
if ( lastammo && (lastammo != nextammo) && (Owner.player == players[consoleplayer]) )
{
let bar = SWWMStatusBar(statusbar);
if ( bar )
{
bar.ntagstr = GetDefaultByType(nextammo).GetTag();
bar.ntagtic = level.totaltime;
bar.ntagcol = nametagcolor;
}
}
lastammo = nextammo;
}
override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
{
if ( loadammo is 'RedShell' ) return StringTable.Localize("$O_SPREADGUN_RED");

View file

@ -246,6 +246,7 @@ Class SilverBullet : SWWMWeapon
{
bool chambered, fired;
bool fcbchambered, fcbloaded, fcbselected;
ui int lastammo;
int clipcount;
double casex, casey;
@ -316,6 +317,17 @@ Class SilverBullet : SWWMWeapon
Super.HudTick();
if ( !ZoomInter ) ZoomInter = DynamicValueInterpolator.Create(int(zoomlevel*10),.5,1,20);
ZoomInter.Update(int(zoomlevel*10));
if ( lastammo && (lastammo != fcbselected+1) && (Owner.player == players[consoleplayer]) )
{
let bar = SWWMStatusBar(statusbar);
if ( bar )
{
bar.ntagstr = StringTable.Localize(fcbselected?"$SWWM_FCBSEL":"$SWWM_XSBSEL");
bar.ntagtic = level.totaltime;
bar.ntagcol = nametagcolor;
}
}
lastammo = fcbselected+1;
}
override bool ReportHUDAmmo()