Rejoice, "hold to reload" is now optional and disabled by default.
This commit is contained in:
parent
884ad51aa4
commit
13ed4dee44
8 changed files with 52 additions and 5 deletions
|
|
@ -83,6 +83,7 @@ nosave int swwm_hudscale1 = 0; // force the "one minus" scale of the HUD (used
|
|||
nosave int swwm_hudscale2 = 0; // force the "two minus" scale of the HUD (used by interest points)
|
||||
server bool swwm_altclear = false; // use an alternate, less graphically demanding "All Clear" effect
|
||||
user bool swwm_analogmove = false; // for gamepad users, player movement is adapted for analog sticks
|
||||
user bool swwm_holdreload = false; // hold the reload key to top up hand-loaded weapons, otherwise tap to start then tap again to stop
|
||||
|
||||
// minimap settings
|
||||
nosave bool swwm_mm_enable = true; // show a minimap on the top right corner of the hud
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ SWWM_HS_AUTOL = "Auto Loose";
|
|||
SWWM_HS_AUTOT = "Auto Tight";
|
||||
SWWM_ALTCLEAR = "Alternate 100% FX";
|
||||
SWWM_ANALOGMOVE = "Analog Movement";
|
||||
SWWM_HOLDRELOAD = "Hold To Reload";
|
||||
SWWM_MM_ENABLE = "Show Minimap";
|
||||
SWWM_MM_MISSILES = "Projectiles In Minimap";
|
||||
SWWM_MM_USECANVAS = "Fixed Scale Minimap";
|
||||
|
|
@ -285,6 +286,7 @@ TOOLTIP_SWWM_HUDSCALE1 = "If higher than zero, manually set the scale of Healthb
|
|||
TOOLTIP_SWWM_HUDSCALE2 = "If higher than zero, manually set the scale of Interest Points. Usually, this is two less than the primary HUD scale.";
|
||||
TOOLTIP_SWWM_ALTCLEAR = "Use an alternate, less visually intense effect for getting 100% completion on a level.";
|
||||
TOOLTIP_SWWM_ANALOGMOVE = "For gamepad users, this is a must. For keyboard and mouse users, this should be disabled.";
|
||||
TOOLTIP_SWWM_HOLDRELOAD = "If enabled, you must keep the reload button held load multiple rounds in the Wallbuster, Quadravol and Sparkster Rifle. Some people actually like it that way.";
|
||||
TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements.";
|
||||
TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap on the top right corner of the screen.";
|
||||
TOOLTIP_SWWM_MM_MISSILES = "Displays projectiles in the minimap. Can be toggled if this clutters too much.";
|
||||
|
|
|
|||
|
|
@ -187,6 +187,7 @@ SWWM_HS_AUTOL = "Auto. Holgado";
|
|||
SWWM_HS_AUTOT = "Auto. Ceñido";
|
||||
SWWM_ALTCLEAR = "Efecto Alternativo de 100%";
|
||||
SWWM_ANALOGMOVE = "Movimiento Analógico";
|
||||
SWWM_HOLDRELOAD = "Mantener Para Recarga";
|
||||
SWWM_MM_ENABLE = "Mostrar Minimapa";
|
||||
SWWM_MM_MISSILES = "Proyectiles en Minimapa";
|
||||
SWWM_MM_USECANVAS = "Minimapa a Escala Fija";
|
||||
|
|
@ -280,6 +281,7 @@ TOOLTIP_SWWM_HUDSCALE1 = "Si es mayor que cero, especifica manualmente la escala
|
|||
TOOLTIP_SWWM_HUDSCALE2 = "Si es mayor que cero, especifica manualmente la escala de los Puntos de Interés. Normalmente, es igual a tres menos que la escala primaria del HUD.";
|
||||
TOOLTIP_SWWM_ALTCLEAR = "Usa un efecto alternativo de menor intensidad visual al completar un nivel al 100%.";
|
||||
TOOLTIP_SWWM_ANALOGMOVE = "Para usuarios de mando, esto es esencial. Para usuarios de teclado y ratón, esto debería estar desactivado.";
|
||||
TOOLTIP_SWWM_HOLDRELOAD = "Al activar, debes mantener el boton de recarga para cargar múltiples cartuchos en la Wallbuster, Quadravol o el Rifle Sparkster. Algunas personas lo prefieren así.";
|
||||
TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros.";
|
||||
TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa en la esquina superior derecha de la pantalla.";
|
||||
TOOLTIP_SWWM_MM_MISSILES = "Muestra proyectiles en el minimapa. Puede ser desactivado si causa problemas de visibilidad.";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1203 \cu(dom 16 mar 2025 16:14:34 CET)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r1203 \cu(2025-03-16 16:14:34)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1204 \cu(dom 16 mar 2025 20:21:10 CET)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r1204 \cu(2025-03-16 20:21:10)\c-";
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ OptionMenu "SWWMOptionMenu"
|
|||
Option "$SWWM_USEWEAPONBAR", "swwm_useweaponbar", "YesNo"
|
||||
Option "$SWWM_USETOPICKUP", "swwm_usetopickup", "YesNo"
|
||||
Option "$SWWM_SINGLEFIRST", "swwm_singlefirst", "YesNo"
|
||||
Option "$SWWM_HOLDRELOAD", "swwm_holdreload", "YesNo"
|
||||
Option "$SWWM_COLLECTANIM", "swwm_collectanim", "YesNo"
|
||||
Option "$SWWM_WEAPONTOOLTIPS", "swwm_weapontooltips", "YesNo"
|
||||
SafeCommand "$SWWM_RESETTOOLTIPS", "event swwmresettooltips"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,12 @@ Class Quadravol : SWWMWeapon
|
|||
|
||||
int wastecycle; // for easter egg
|
||||
|
||||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
CheckStopReload('ReloadHold','LoadOverlay');
|
||||
}
|
||||
|
||||
override bool ReportHUDAmmo()
|
||||
{
|
||||
return (chargelevel>0)||(chambered&&!charged)||(clipcount>0)||(Ammo1.Amount > 0);
|
||||
|
|
@ -526,6 +532,7 @@ Class Quadravol : SWWMWeapon
|
|||
Reload:
|
||||
XZW2 A 2
|
||||
{
|
||||
invoker.stopreload = false;
|
||||
if ( (invoker.clipcount >= invoker.default.clipcount) || ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) )
|
||||
return invoker.onehand?ResolveState('Idle1H'):ResolveState('Idle');
|
||||
if ( invoker.onehand ) return ResolveState('Reload1H');
|
||||
|
|
@ -551,7 +558,9 @@ Class Quadravol : SWWMWeapon
|
|||
if ( invoker.fromfire && (player.cmd.buttons&BT_ATTACK) )
|
||||
return ResolveState('ReloadHold');
|
||||
invoker.fromfire = false;
|
||||
if ( player.cmd.buttons&BT_RELOAD ) return ResolveState('ReloadHold');
|
||||
bool holdreload = CVar.GetCVar('swwm_holdreload',player).GetBool();
|
||||
if ( (!holdreload && !invoker.stopreload) || (holdreload && (player.cmd.buttons&BT_RELOAD)) )
|
||||
return ResolveState('ReloadHold');
|
||||
return A_JumpIf(invoker.onehand,'ReloadEnd1H');
|
||||
}
|
||||
XZW6 B 2 A_StartSound("quadshot/twohand",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ Class SWWMWeapon : Weapon abstract
|
|||
Vector3 bvdir;
|
||||
int bvtics, batics;
|
||||
|
||||
transient bool stopreload;
|
||||
|
||||
bool IsSwapWeapon( Inventory i ) const
|
||||
{
|
||||
if ( bNoSwapWeapon || (i.GetClass() == GetClass()) ) return false;
|
||||
|
|
@ -234,6 +236,32 @@ Class SWWMWeapon : Weapon abstract
|
|||
}
|
||||
}
|
||||
|
||||
// check if the player has tapped any of the weapon buttons (not just reload)
|
||||
// (used to cancel reloads when not in hold mode)
|
||||
private bool TapOutReload()
|
||||
{
|
||||
if ( !Owner || !Owner.player ) return false;
|
||||
bool rslt = (Owner.player.cmd.buttons&BT_RELOAD)&&!(Owner.player.oldbuttons&BT_RELOAD);
|
||||
rslt |= (Owner.player.cmd.buttons&BT_ATTACK)&&!(Owner.player.oldbuttons&BT_ATTACK);
|
||||
rslt |= (Owner.player.cmd.buttons&BT_ALTATTACK)&&!(Owner.player.oldbuttons&BT_ALTATTACK);
|
||||
rslt |= (Owner.player.cmd.buttons&BT_ZOOM)&&!(Owner.player.oldbuttons&BT_ZOOM);
|
||||
rslt |= (Owner.player.cmd.buttons&BT_USER1)&&!(Owner.player.oldbuttons&BT_USER1);
|
||||
return rslt;
|
||||
}
|
||||
// check for the button tap within two specific states
|
||||
// to be called inside DoEffect()
|
||||
protected void CheckStopReload( StateLabel first, StateLabel last )
|
||||
{
|
||||
if ( !stopreload && Owner && Owner.player && (Owner.player.ReadyWeapon == self) && !(CVar.GetCVar('swwm_holdreload',Owner.player).GetBool()) )
|
||||
{
|
||||
let firststate = FindState(first);
|
||||
let laststate = FindState(last);
|
||||
let psp = Owner.player.FindPSprite(PSP_WEAPON);
|
||||
if ( psp && psp.curstate && (firststate.DistanceTo(psp.curstate) > 0) && (laststate.DistanceTo(psp.curstate) < 0) )
|
||||
stopreload |= TapOutReload();
|
||||
}
|
||||
}
|
||||
|
||||
// subtracts given ammo from price, drops excess
|
||||
virtual bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ Class Wallbuster : SWWMWeapon
|
|||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
CheckStopReload('Detach','EndReload');
|
||||
// push back selection order if weapon is unloaded
|
||||
if ( !bInitialized )
|
||||
{
|
||||
|
|
@ -576,6 +577,7 @@ Class Wallbuster : SWWMWeapon
|
|||
Detach:
|
||||
XZW4 W 0
|
||||
{
|
||||
invoker.stopreload = false;
|
||||
int rnum = GetShellsToLoad();
|
||||
// if it's a full rotation, don't hand-spin
|
||||
if ( rnum > 20 ) return ResolveState(null);
|
||||
|
|
@ -650,8 +652,10 @@ Class Wallbuster : SWWMWeapon
|
|||
XZW6 C 2 A_LoadShell();
|
||||
XZW6 E 0
|
||||
{
|
||||
int rnum = (player.cmd.buttons&BT_RELOAD)?GetShellsToLoad():0;
|
||||
player.SetPSprite(-9999,null);
|
||||
int rnum = 0;
|
||||
bool holdreload = CVar.GetCVar('swwm_holdreload',player).GetBool();
|
||||
if ( (!holdreload && !invoker.stopreload) || (holdreload && (player.cmd.buttons&BT_RELOAD)) )
|
||||
rnum = GetShellsToLoad();
|
||||
return A_JumpIf(rnum,'AttachSpin');
|
||||
}
|
||||
Goto Attach;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue