From bd255986558f4aa95f64e19133e360f74d534b87 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Mon, 26 Sep 2022 20:53:20 +0200 Subject: [PATCH] Allow filtering healthbars to only allies. --- cvarinfo.base | 4 ++-- language.def_menu | 1 + language.es_menu | 7 ++++--- language.version | 4 ++-- menudef.txt | 8 +++++++- zscript/hud/swwm_hud.zsc | 5 +++++ 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/cvarinfo.base b/cvarinfo.base index 8495eba5a..1e890e2c7 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -10,8 +10,8 @@ nosave int swwm_mutevoice = 0; // mute demolitionist voice // 3 - map start comment // 4 - pain/death and grunts nosave int swwm_voiceamp = 2; // additional voice line amplification, up to 4x -nosave bool swwm_targeter = true; // show targeter healthbars -nosave bool swwm_targettags = true; // show enemy tags above healthbars +nosave int swwm_targeter = 1; // show healthbars in the hud (2: only show allies) +nosave bool swwm_targettags = true; // show names above healthbars nosave bool swwm_damnums = true; // show damage numbers nosave bool swwm_damnums_color = true; // use color per damage type, rather than just red nosave bool swwm_scorenums = true; // show score numbers diff --git a/language.def_menu b/language.def_menu index 655ed4953..71961aeef 100644 --- a/language.def_menu +++ b/language.def_menu @@ -43,6 +43,7 @@ SWWM_HUDMARGIN = "HUD Margin"; SWWM_ITITLE = "Item Options"; SWWM_AMMOUSE = "Automatically Use Fabricators"; SWWM_TARGET = "Show Healthbars"; +SWWM_T_FRIENDS = "Friends Only"; SWWM_TARGETTAG = "Show Monster Names"; SWWM_DAMNUMS = "Show Damage Numbers"; SWWM_SCORENUMS = "Show Score Numbers"; diff --git a/language.es_menu b/language.es_menu index 26869eca2..2e877d548 100644 --- a/language.es_menu +++ b/language.es_menu @@ -42,6 +42,7 @@ SWWM_FLASH = "Intensidad de Destellos en Pantalla"; SWWM_HUDMARGIN = "Margen del HUD"; SWWM_ITITLE = "Opciones de Ítems"; SWWM_TARGET = "Mostrar Barras de Salud"; +SWWM_T_FRIENDS = "Solo Amigos"; SWWM_TARGETTAG = "Mostrar Nombres de Enemigos"; SWWM_DAMNUMS = "Mostrar Números de Daño"; SWWM_SCORENUMS = "Mostrar Números de Puntuación"; @@ -177,12 +178,12 @@ SWWM_COL_13 = "Amarillo"; SWWM_UTITLE = "Opciones de Interfaz"; SWWM_BONKHAMMER = "Martillo Loco"; SWWM_FRIENDLYFIRE = "Fuego Amigo"; -SWWM_DAMNUMS_COLOR = "Colorear Números de Daño"; -SWWM_SHOWMAPTITLE = "Título de Mapa Animado"; -SWWM_LOBDOUBLED = "LOB Doble Muerte"; SWWM_FF_UNRESTRICTED = "Sin Restricción"; SWWM_FF_INCOMING = "Bloquear Entrante"; SWWM_FF_ALL = "Bloquear Todo"; +SWWM_DAMNUMS_COLOR = "Colorear Números de Daño"; +SWWM_SHOWMAPTITLE = "Título de Mapa Animado"; +SWWM_LOBDOUBLED = "LOB Doble Muerte"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_MISSILES = "Proyectiles en Minimapa"; SWWM_MM_COLORSET = "Set de Colores de Minimapa"; diff --git a/language.version b/language.version index c84b75312..db54f73b0 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r513 \cu(Mon 26 Sep 17:33:40 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r513 \cu(2022-09-26 17:33:40)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r514 \cu(Mon 26 Sep 20:53:20 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r514 \cu(2022-09-26 20:53:20)\c-"; diff --git a/menudef.txt b/menudef.txt index 351b683c9..a2df902de 100644 --- a/menudef.txt +++ b/menudef.txt @@ -105,6 +105,12 @@ OptionValue "SWWMFriendlyFire" 1, "$SWWM_FF_INCOMING" 2, "$SWWM_FF_ALL" } +OptionValue "SWWMTarget" +{ + 0, "$TXT_NO" + 1, "$TXT_YES" + 2, "$SWWM_T_FRIENDS" +} OptionMenu "SWWMOptionMenu" { Class "SWWMOptionMenu" @@ -144,7 +150,7 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_MM_ENABLE", "swwm_mm_enable", "YesNo" Option "$SWWM_MM_MISSILES", "swwm_mm_missiles", "YesNo" Option "$SWWM_MM_COLORSET", "swwm_mm_colorset", "SWWMMinimapColorset" - Option "$SWWM_TARGET", "swwm_targeter", "YesNo" + Option "$SWWM_TARGET", "swwm_targeter", "SWWMTarget" Option "$SWWM_TARGETTAG", "swwm_targettags", "YesNo" Option "$SWWM_BIGTAGS", "swwm_bigtags", "YesNo" Option "$SWWM_DAMNUMS", "swwm_damnums", "YesNo" diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index b12ba0cbd..41d8e7137 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -1480,6 +1480,7 @@ Class SWWMStatusBar : BaseStatusBar if ( !cti ) cti = ThinkerIterator.Create("SWWMQuickCombatTracker",Thinker.STAT_INVENTORY); else cti.Reinit(); SWWMQuickCombatTracker ct; + bool onlyfriends = (swwm_targeter >= 2); while ( ct = SWWMQuickCombatTracker(cti.Next()) ) { // this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing @@ -1499,6 +1500,8 @@ Class SWWMStatusBar : BaseStatusBar if ( (ct.Owner == CPlayer.mo) || (ct.Owner == cam) ) continue; // ignore trackers not of this player if ( ct.myplayer != CPlayer ) continue; + // ignore enemies if filtering friends + if ( onlyfriends && (!ct.Owner.IsFriend(CPlayer.mo) || ct.Owner.player) ) continue; // ignore trackers clearly outside of player view Vector3 smpos = level.Vec3Offset(SWWMUtility.LerpVector3(ct.Owner.prev,ct.Owner.pos,fractic),(0,0,ct.lvheight)); Vector3 tdir = level.Vec3Diff(viewpos,smpos); @@ -1565,6 +1568,8 @@ Class SWWMStatusBar : BaseStatusBar if ( (ct.Owner == CPlayer.mo) || (ct.Owner == cam) ) continue; // ignore trackers not of this player if ( ct.myplayer != CPlayer ) continue; + // ignore enemies if filtering friends + if ( onlyfriends && !ct.Owner.IsFriend(CPlayer.mo) ) continue; // ignore trackers clearly outside of player view Vector3 smpos = level.Vec3Offset(SWWMUtility.LerpVector3(ct.Owner.prev,ct.Owner.pos,fractic),(0,0,ct.lvheight)); Vector3 tdir = level.Vec3Diff(viewpos,smpos);