diff --git a/cvarinfo.txt b/cvarinfo.txt index 86a09bc7c..e21856402 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -88,4 +88,5 @@ user bool swwm_ldspoil = false; // [LD] always shows "Legendary" prefix on Leg user bool swwm_camhud = false; // keep full hud visible when operating cameras, otherwise only shows messages user bool swwm_rageshader = false; // alternate ragekit shader for people with photosensitivity server bool swwm_uncapalert = false; // all noise alerts have infinite range +user int swwm_damagetarget = 0; // conditional healthbar hiding (1 - hide until damage is first taken, 2 - hide if at full health) server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; //self-explanatory diff --git a/language.def_menu b/language.def_menu index 3adc1687a..fe08b829b 100644 --- a/language.def_menu +++ b/language.def_menu @@ -160,6 +160,10 @@ SWWM_RAGESHADER = "Alternate Ragekit Shader"; SWWM_CAMHUD = "Full HUD In Cameras"; SWWM_UNCAPALERT = "Uncap Alert Range"; SWWM_COLLECTANIMKEY = "Key Animations"; +SWWM_DAMAGETARGET = "Healthbar Visibility"; +SWWM_TARGET_ALWAYS = "Always Visible"; +SWWM_TARGET_FIRSTHIT = "After First Hit"; +SWWM_TARGET_DAMAGED = "Below Full Health"; TOOLTIP_SWWM_VOICETYPE = "Sets the voice pack for the player."; TOOLTIP_SWWM_MUTEVOICE = "Control what gets muted, if you'd rather have a more silent protagonist."; TOOLTIP_SWWM_FLASHSTRENGTH = "Screen flashes usually happen when firing some weapons, you can lower this if these effects are harmful for you."; @@ -236,6 +240,7 @@ TOOLTIP_SWWM_RAGESHADER = "The normal Ragekit shader may be harmful for people w TOOLTIP_SWWM_CAMHUD = "By default, when the player is looking through a camera, most HUD elements excluding messages will be hidden. Set this to keep the full HUD."; TOOLTIP_SWWM_UNCAPALERT = "If enabled, all weapons and projectiles will have infinite noise radius. May fix maps that employ vanilla-style teleport traps."; TOOLTIP_SWWM_COLLECTANIMKEY = "Play special first person animations when picking up keys."; +TOOLTIP_SWWM_DAMAGETARGET = "Select when targetter healthbars should be shown."; // knowledge base SWWM_COMINGSOON = "(coming soon)"; SWWM_MISSTAB = "Mission"; diff --git a/language.es_menu b/language.es_menu index eed5dfb26..5911a898e 100644 --- a/language.es_menu +++ b/language.es_menu @@ -159,6 +159,10 @@ SWWM_RAGESHADER = "Shader Alternativo de Ragekit"; SWWM_CAMHUD = "HUD Completo en Cámaras"; SWWM_UNCAPALERT = "Rango de Alerta Ilimitado"; SWWM_COLLECTANIMKEY = "Animaciones de Llaves"; +SWWM_DAMAGETARGET = "Visibilidad de Barras de Salud"; +SWWM_TARGET_ALWAYS = "Siempre Visible"; +SWWM_TARGET_FIRSTHIT = "Tras Primer Golpe"; +SWWM_TARGET_DAMAGED = "Debajo de Salud Completa"; TOOLTIP_SWWM_VOICETYPE = "Selecciona el pack de voz para el jugador."; TOOLTIP_SWWM_MUTEVOICE = "Controla lo que se mutea, si prefieres tener un protagonista más silencioso."; TOOLTIP_SWWM_FLASHSTRENGTH = "Los destellos en pantalla suelen ocurrir al disparar algunas armas, puedes reducirlo si este tipo de efectos te causan malestar."; @@ -235,6 +239,7 @@ TOOLTIP_SWWM_RAGESHADER = "El shader normal del Ragekit puede ser dañino para p TOOLTIP_SWWM_CAMHUD = "Por defecto, cuando el jugador está mirando por una cámara, la mayor parte de elementos del HUD excluyendo mensajes son ocultados. Activa esto para mantener el HUD completo."; TOOLTIP_SWWM_UNCAPALERT = "Si se activa, todas las armas y proyectiles tendrán un rango de ruido ilimitado. Puede arreglar mapas que usan trampas de teletransporte estilo vanilla."; TOOLTIP_SWWM_COLLECTANIMKEY = "Muestra animaciones especiales en primera persona al recoger llaves."; +TOOLTIP_SWWM_DAMAGETARGET = "Selecciona cuando deben mostrarse las barras de vida."; // knowledge base SWWM_COMINGSOON = "(próximamente)"; SWWM_MISSTAB = "Misión"; diff --git a/language.version b/language.version index 978f109b4..0da616397 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r637 \cu(Wed 25 Nov 16:44:23 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r639 \cu(Wed 25 Nov 18:08:35 CET 2020)"; diff --git a/menudef.txt b/menudef.txt index 6520ea6f3..d183d2807 100644 --- a/menudef.txt +++ b/menudef.txt @@ -24,6 +24,12 @@ OptionValue "SWWMShadows" 1, "$SWWM_SHADOWS_ON" 2, "$SWWM_SHADOWS_ALL" } +OptionValue "SWWMDamageTarget" +{ + 0, "$SWWM_TARGET_ALWAYS" + 1, "$SWWM_TARGET_FIRSTHIT" + 2, "$SWWM_TARGET_DAMAGED" +} OptionMenu "SWWMOptionMenu" { Class "SWWMOptionMenu" @@ -52,6 +58,7 @@ OptionMenu "SWWMOptionMenu" Slider "$SWWM_PICKLEN", "swwm_pickduration", 1, 30, 1, 0 Option "$SWWM_TARGET", "swwm_targeter", "YesNo" Option "$SWWM_TARGETTAG", "swwm_targettags", "YesNo" + Option "$SWWM_DAMAGETARGET", "swwm_damagetarget", "SWWMDamageTarget" Option "$SWWM_BIGTAGS", "swwm_bigtags", "YesNo" Option "$SWWM_BOSSBAR", "swwm_bosshealthbars", "YesNo" Option "$SWWM_DAMNUMS", "swwm_healthnums", "YesNo" diff --git a/zscript/swwm_thinkers.zsc b/zscript/swwm_thinkers.zsc index 6628174eb..da093564b 100644 --- a/zscript/swwm_thinkers.zsc +++ b/zscript/swwm_thinkers.zsc @@ -804,8 +804,9 @@ Class SWWMCombatTracker : Thinker bool legged, mutated; int tcnt; double height; - transient CVar funtags, maxdist; + transient CVar funtags, maxdist, damagebars; bool bBOSS, bFRIENDLY; + bool firsthit; void UpdateTag() { @@ -941,8 +942,19 @@ Class SWWMCombatTracker : Thinker } bBOSS = mytarget.bBOSS|(maxhealth>1000); bFRIENDLY = mytarget.bFRIENDLY; + if ( mytarget.Health < lasthealth ) firsthit = true; lasthealth = mytarget.Health; intp.Update(lasthealth); + // special update conditions + if ( !damagebars ) damagebars = CVar.GetCVar('swwm_damagetarget',players[consoleplayer]); + int dbar = damagebars.GetInt(); + if ( dbar ) + { + if ( (dbar == 2) && (lasthealth >= maxhealth) ) + return; + else if ( (dbar == 1) && !firsthit ) + return; + } if ( !maxdist ) maxdist = CVar.GetCVar('swwm_maxtargetdist',players[consoleplayer]); if ( (mytarget.bISMONSTER || mytarget.player) && !mytarget.bINVISIBLE && !mytarget.bCORPSE ) {