From 964dcf84f9b237af0d9e97751fd6fdae7203116b Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Thu, 17 Aug 2023 20:13:16 +0200 Subject: [PATCH] Various UI changes: * Add optional numeric values to healthbars, like in the standalone mod. * Remove minimap themes, keep only the Demolitionist color set. * Draw keys in the minimap using their respective colors. * Don't send AutoAutosave tokens to the minimap. * Tweak the minimap color of shootable actors so they look less like usable lines. * Use smaller font for cumulative damage on boss healthbars. --- FuturePlans.md | 6 +- cvarinfo.base | 2 +- language.def_menu | 9 +- language.es_menu | 9 +- language.version | 4 +- menudef.txt | 10 +- sndinfo.player | 2 - swwmvoicepack.txt | 11 +- zscript/handler/swwm_handler_vanillaboss.zsc | 5 +- zscript/handler/swwm_handler_worldtick.zsc | 2 +- zscript/hud/swwm_hud.zsc | 2 - zscript/hud/swwm_hud_target.zsc | 14 +- zscript/hud/swwm_hud_topstuff.zsc | 182 +++---------------- zscript/hud/swwm_hudobjects.zsc | 4 + 14 files changed, 69 insertions(+), 193 deletions(-) diff --git a/FuturePlans.md b/FuturePlans.md index 2dc2baa77..a8a9e4fa1 100644 --- a/FuturePlans.md +++ b/FuturePlans.md @@ -80,7 +80,11 @@ Re-animation of old FK models. Plus extra score incentives and achievements. - [ ] Burnination *(Kill 100 enemies with a single Hellblazer drum)* *[replaces I Am Become Death]* - [ ] Engineer's Best Friend *(Score 1000 kills using sentries)* * [ ] **Additional Collectibles:** - - [ ] Blåhaj + - [ ] Blåhaj *("Dr. Shorky")* +* [ ] **Combo Collectible Animations:** + - [ ] Saya + Demo + - [ ] Saya + Kirin + - [ ] Demo + Kirin * [ ] **Additional Models:** - [ ] Gibs - [ ] Hexen keys diff --git a/cvarinfo.base b/cvarinfo.base index ff1822255..61fb4a2a0 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -81,12 +81,12 @@ nosave bool swwm_oldcheats = false; // has received the "old cheats" dialogue f nosave bool swwm_ccmessage = false; // has received the "corruption cards" dialogue from Cytho nosave bool swwm_useweaponbar = false; // scroll through weapons using a bar, like with inventory items nosave bool swwm_percentstats = false; // show level stats as percentages, like in intermissions +nosave bool swwm_targetvals = false; // show current/max health values above heathbars // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter nosave noarchive float swwm_mm_zoom = 1; // zoom level of minimap nosave bool swwm_mm_missiles = true; // show projectiles (how revolutionary) -nosave int swwm_mm_colorset = 0; // 0: Demolitionist, 1: GZDoom, 2: Doom, 3: Strife, 4: Raven nosave bool swwm_mm_usecanvas = false; // use a canvas to draw the minimap, so its pixel density is consistent with the rest of the HUD server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; // self-explanatory diff --git a/language.def_menu b/language.def_menu index 16f5178ae..05c06af1f 100644 --- a/language.def_menu +++ b/language.def_menu @@ -185,14 +185,9 @@ SWWM_LOBDOUBLED = "LOB Double Death"; SWWM_BARDIST = "Healthbar Distance"; SWWM_USEWEAPONBAR = "Alternate Weapon Selection"; SWWM_PERCENTSTATS = "Percentual Stats"; +SWWM_TARGETVAL = "Show Health Values"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_MISSILES = "Projectiles In Minimap"; -SWWM_MM_COLORSET = "Minimap Color Set"; -SWWM_OWNCOLORS = "Our Colors"; -SWWM_GZDOOMCOLORS = "GZDoom Custom"; -SWWM_DOOMCOLORS = "Vanilla Doom"; -SWWM_STRIFECOLORS = "Vanilla Strife"; -SWWM_RAVENCOLORS = "Vanilla Raven"; SWWM_MM_USECANVAS = "Fixed Scale Minimap"; SWWM_AC_UNLOCKED = "Unlocked: "; SWWM_AC_INCOMPLETE = "Incomplete: "; @@ -278,10 +273,10 @@ TOOLTIP_SWWM_LOBDOUBLED = "[Legion of Bones] Enables \"Double Death\", which mak TOOLTIP_SWWM_BARDIST = "Distance in map units at which healthbar visibility will begin to fade. Does not affect the healthbars of other players."; TOOLTIP_SWWM_USEWEAPONBAR = "Enables an alternate method for scrolling through weapons akin to the inventory bar. Use Primary Fire to accept, and Alternate Fire to cancel."; TOOLTIP_SWWM_PERCENTSTATS = "Shows kills/items/secrets in the HUD as percentages, rather than counters."; +TOOLTIP_SWWM_TARGETVALS = "Healthbars will show the current and maximum health values of the target."; 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."; -TOOLTIP_SWWM_MM_COLORSET = "Choose what palette to use for the minimap."; TOOLTIP_SWWM_MM_USECANVAS = "Rather than being drawn directly on-screen, the minimap will be drawn to a texture, maintaining the same pixel density as the rest of the HUD. Due to engine quirks, this causes the map to have a one-frame delay."; TOOLTIP_SWWMDEBUGMENU = "Don't touch this unless you know what you're doing."; TOOLTIP_SWWM_DEBUGBLAST = "Shows radii of DoExplosion calls. Damaging explosions are green, with yellow for the hotspot. Non-damaging explosions are blue, with magenta for the hotspot."; diff --git a/language.es_menu b/language.es_menu index f105f36a6..33ecd119b 100644 --- a/language.es_menu +++ b/language.es_menu @@ -182,14 +182,9 @@ SWWM_LOBDOUBLED = "LOB Doble Muerte"; SWWM_BARDIST = "Distancia de Barras de Salud"; SWWM_USEWEAPONBAR = "Selección Alternativa de Armas"; SWWM_PERCENTSTATS = "Estadísticas Percentuales"; +SWWM_TARGETVAL = "Mostrar Valores de Salud"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_MISSILES = "Proyectiles en Minimapa"; -SWWM_MM_COLORSET = "Set de Colores de Minimapa"; -SWWM_OWNCOLORS = "Colores Propios"; -SWWM_GZDOOMCOLORS = "Personalizado de GZDoom"; -SWWM_DOOMCOLORS = "Doom Vanilla"; -SWWM_STRIFECOLORS = "Strife Vanilla"; -SWWM_RAVENCOLORS = "Raven Vanilla"; SWWM_MM_USECANVAS = "Minimapa a Escala Fija"; SWWM_AC_UNLOCKED = "Desbloqueados: "; SWWM_AC_INCOMPLETE = "Incompletos: "; @@ -276,10 +271,10 @@ TOOLTIP_SWWM_LOBDOUBLED = "[Legion of Bones] Habilita \"Doble Muerte\", lo cual TOOLTIP_SWWM_BARDIST = "Distancia en unidades de mapa a la cual la visibilidad de las barras de salud irá desvaneciendo. No afecta a las barras de salud de otros jugadores."; TOOLTIP_SWWM_USEWEAPONBAR = "Habilita un método alternativo para hacer scroll por las armas similar a la barra de inventario. Usa el Fuego Primario para aceptar, y el Fuego Secundario para cancelar."; TOOLTIP_SWWM_PERCENTSTATS = "Muestra las estadísticas de bajas/ítems/secretos en el HUD como porcentajes, en lugar de contadores."; +TOOLTIP_SWWM_TARGETVALS = "Las barras de salud mostrarán los valores de salud actual y máximo del objetivo."; 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."; -TOOLTIP_SWWM_MM_COLORSET = "Selecciona que paleta usar para el minimapa."; TOOLTIP_SWWM_MM_USECANVAS = "En vez de dibujarse directamente a la pantalla, el mapa se dibujará en una texture, mantentiendo la misma densidad de píxel que el resto del HUD. Debido a peculiaridades del motor, esto causa que el mapa tenga un frame de retardo."; TOOLTIP_SWWMDEBUGMENU = "No toques esto a menos que sepas lo que estás haciendo."; TOOLTIP_SWWM_DEBUGBLAST = "Muestra el radio de funciones DoExplosion. Las explosiones con daño son verdes, con amarillo para su punto caliente. Las explosiones sin daño son azules, con magenta para su punto caliente."; diff --git a/language.version b/language.version index fa8913ef4..7178079c1 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r929 \cu(Sun 30 Jul 17:27:20 CEST 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r929 \cu(2023-07-30 17:27:20)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r930 \cu(Thu 17 Aug 20:13:16 CEST 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r930 \cu(2023-08-17 20:13:17)\c-"; diff --git a/menudef.txt b/menudef.txt index 3cb982e97..d3ad5ad0c 100644 --- a/menudef.txt +++ b/menudef.txt @@ -74,14 +74,6 @@ OptionValue "SWWMInterArt" 2, "$SWWM_NORENDER" 3, "$SWWM_NOFANART" } -OptionValue "SWWMMinimapColorset" -{ - 0, "$SWWM_OWNCOLORS" - 1, "$SWWM_GZDOOMCOLORS" - 2, "$SWWM_DOOMCOLORS" - 3, "$SWWM_STRIFECOLORS" - 4, "$SWWM_RAVENCOLORS" -} OptionValue "SWWMTagColor" { 0, "$SWWM_COL_0" @@ -153,10 +145,10 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_HUDALLAMMO", "swwm_hudallammo", "YesNo" 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_MM_USECANVAS", "swwm_mm_usecanvas", "YesNo" Option "$SWWM_TARGET", "swwm_targeter", "SWWMTarget" ScaleSliderFix "$SWWM_BARDIST", "swwm_bardist", 0, 4000, 100, "$SWWM_UNLIMITED" + Option "$SWWM_TARGETVAL", "swwm_targetvals", "YesNo" Option "$SWWM_TARGETTAG", "swwm_targettags", "YesNo" Option "$SWWM_BIGTAGS", "swwm_bigtags", "YesNo" Option "$SWWM_DAMNUMS", "swwm_damnums", "YesNo" diff --git a/sndinfo.player b/sndinfo.player index e43b81ef7..c86484b37 100644 --- a/sndinfo.player +++ b/sndinfo.player @@ -100,8 +100,6 @@ demolitionist/buttslam2 = "sounds/demolitionist/demobutt2.ogg" demolitionist/buttslam3 = "sounds/demolitionist/demobutt3.ogg" $random demolitionist/buttslam { demolitionist/buttslam1 demolitionist/buttslam2 demolitionist/buttslam3 } demolitionist/buttslamx = "sounds/demolitionist/demoxbutt.ogg" -demolitionist/smooch = "sounds/demolitionist/demokiss.ogg" -demolitionist/blowkiss = "sounds/demolitionist/demoblow.ogg" demolitionist/petting = "sounds/demolitionist/demopat.ogg" demolitionist/knockout = "sounds/demolitionist/demoknockout.ogg" demolitionist/dashregen = "sounds/demolitionist/demodashregen.ogg" diff --git a/swwmvoicepack.txt b/swwmvoicepack.txt index 44db4fb9c..0e84ab64a 100644 --- a/swwmvoicepack.txt +++ b/swwmvoicepack.txt @@ -6,10 +6,11 @@ # voice//<#> for the sndinfo entries # SWWM_SUBS__<#>, plus a SWWM_SUBS__N counter, # for the language strings -# with the exception of pain/death/grunt sounds and the like (which should -# additionally have a $random entry in sndinfo), all lines you may want to -# register require a subtitle language string so they can be properly detected, -# but you can set them to an empty string if you don't want text to display. +# all lines you may want to register require a subtitle language string so they +# can be properly detected, but you can set them to an empty string if you +# don't want text to display. +# voices for various grunts, pain and death screams use a different system, +# you can consult the source files for the default voice for reference. # also don't forget to add a SWWM_VOICENAME_* language string for each voice -# type so they have a "human-readable" name in the options menu +# type so they have a "human-readable" name in the options menu. default diff --git a/zscript/handler/swwm_handler_vanillaboss.zsc b/zscript/handler/swwm_handler_vanillaboss.zsc index f78935091..1a2cf98c5 100644 --- a/zscript/handler/swwm_handler_vanillaboss.zsc +++ b/zscript/handler/swwm_handler_vanillaboss.zsc @@ -96,7 +96,7 @@ extend Class SWWMHandler ui int thealth, hmax; ui int oldhealth[30]; ui int cummdamage, lastcummtic; // please do not misread - ui Font mSmallFont; + ui Font mSmallFont, mTinyFont; enum EVanillaMap { @@ -560,6 +560,7 @@ extend Class SWWMHandler { if ( !ui_initialized || (bossalpha <= 0.) ) return; if ( !mSmallFont ) mSmallFont = Font.GetFont('TewiFontOutline'); + if ( !mTinyFont ) mTinyFont = Font.GetFont('MiniwiFontOutline'); if ( !bbar_f ) bbar_f = TexMan.CheckForTexture("graphics/HUD/BossHealthBarBox.png"); if ( !bbar_r ) bbar_r = TexMan.CheckForTexture("graphics/HUD/BossHealthBar.png"); if ( !bbar_d ) bbar_d = TexMan.CheckForTexture("graphics/HUD/BossHealthBarDecay.png"); @@ -576,7 +577,7 @@ extend Class SWWMHandler { double calph = clamp(((lastcummtic+150)-gametic)/50.,0.,1.); string dnum = String.Format("%d",cummdamage); - Screen.DrawText(mSmallFont,Font.CR_RED,vpos.x+300-mSmallFont.StringWidth(dnum),vpos.y-(mSmallFont.GetHeight()+2),dnum,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha*calph); + Screen.DrawText(mTinyFont,Font.CR_RED,vpos.x+300-mTinyFont.StringWidth(dnum),vpos.y-(mTinyFont.GetHeight()+2),dnum,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha*calph); } String bname = bosstag; if ( (bname.Left(1) == "$") && swwm_funtags ) diff --git a/zscript/handler/swwm_handler_worldtick.zsc b/zscript/handler/swwm_handler_worldtick.zsc index 1ec816325..8a18440bd 100644 --- a/zscript/handler/swwm_handler_worldtick.zsc +++ b/zscript/handler/swwm_handler_worldtick.zsc @@ -308,7 +308,7 @@ extend Class SWWMHandler continue; if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed ) continue; - if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner) ) + if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner || (a.GetClassName() == 'aas_token')) ) // autoautosave hotfix continue; if ( (a is 'Chancebox') && (a.CurState != a.SpawnState) ) continue; diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index 51db44a08..19dcfd87a 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -151,9 +151,7 @@ Class SWWMStatusBar : BaseStatusBar const HALFMAPSIZE = 40; // half the size of the minimap draw region (unscaled) // minimap colors (thats a lot of 'em) - int mm_colorset; Color mm_backcolor, mm_cdwallcolor, mm_efwallcolor, mm_fdwallcolor, mm_interlevelcolor, mm_intralevelcolor, mm_lockedcolor, mm_notseencolor, mm_portalcolor, mm_secretsectorcolor, mm_secretwallcolor, mm_specialwallcolor, mm_thingcolor, mm_thingcolor_citem, mm_thingcolor_friend, mm_thingcolor_item, mm_thingcolor_monster, mm_thingcolor_ncmonster, mm_thingcolor_shootable, mm_thingcolor_vipitem, mm_thingcolor_missile, mm_tswallcolor, mm_unexploredsecretcolor, mm_wallcolor, mm_yourcolor; - bool mm_displaylocks; transient bool mm_cvfirstdraw; transient Canvas mm_canvas; transient TextureID mm_canvastex; diff --git a/zscript/hud/swwm_hud_target.zsc b/zscript/hud/swwm_hud_target.zsc index 0fc51bee4..128811cf6 100644 --- a/zscript/hud/swwm_hud_target.zsc +++ b/zscript/hud/swwm_hud_target.zsc @@ -132,6 +132,7 @@ extend Class SWWMStatusBar SWWMQuickCombatTracker ct; bool onlymonsters = (swwm_targeter >= 2); bool onlyfriends = (swwm_targeter >= 3); + bool drawvalues = swwm_targetvals; int fadedist = swwm_bardist; while ( ct = SWWMQuickCombatTracker(cti.Next()) ) { @@ -177,6 +178,16 @@ extend Class SWWMStatusBar alph *= df; } Vector2 barpos = vpos-(27,7); + if ( drawvalues ) + { + String val = String.Format("%d %d",ct.maxhealth,ct.maxhealth); + int valw = MiniHUDFontOutline.StringWidth(val); + val = String.Format("%d \c[MiniWhite]%d",ct.lasthealth,ct.maxhealth); + int ofsw = valw-MiniHUDFontOutline.StringWidth(val); + int col = (ct.lasthealth>ct.maxhealth)?mhudfontcol[MCR_BRASS]:(ct.lasthealth>=(ct.maxhealth/2))?mhudfontcol[MCR_WHITE]:(ct.lasthealth>=(ct.maxhealth/10))?mhudfontcol[MCR_RED]:mhudfontcol[MCR_SAYAHUD]; + Screen.DrawText(MiniHUDFontOutline,col,vpos.x-int((valw/2)-ofsw),barpos.y-(MiniHUDFontOutline.GetHeight()+2),val,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawChar(MiniHUDFontOutline,mhudfontcol[MCR_IBUKIHUD],vpos.x-3,barpos.y-(MiniHUDFontOutline.GetHeight()+2),0x2F,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } if ( swwm_targettags && (ct.mytag != "") ) { Font fnt = swwm_bigtags?mSmallFontOutline:mTinyFontOutline; @@ -193,7 +204,8 @@ extend Class SWWMStatusBar } // voodoo dolls aren't friends if ( ct.Owner.IsFriend(CPlayer.mo) && !ct.Owner.player ) tag = "\cg♥\c- "..tag.." \cg♥\c-"; - Screen.DrawText(fnt,Font.CR_WHITE,vpos.x-fnt.StringWidth(tag)/2,barpos.y-(fnt.GetHeight()+2),tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + int ofsh = drawvalues?(MiniHUDFontOutline.GetHeight()+4):2; + Screen.DrawText(fnt,Font.CR_WHITE,vpos.x-fnt.StringWidth(tag)/2,barpos.y-(fnt.GetHeight()+ofsh),tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); } Screen.DrawTexture(EnemyBTex,false,barpos.x,barpos.y,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); double ht = clamp(ct.intp.GetValue(fractic),0,ct.maxhealth); diff --git a/zscript/hud/swwm_hud_topstuff.zsc b/zscript/hud/swwm_hud_topstuff.zsc index 9825d911d..f3dd509b8 100644 --- a/zscript/hud/swwm_hud_topstuff.zsc +++ b/zscript/hud/swwm_hud_topstuff.zsc @@ -163,155 +163,31 @@ extend Class SWWMStatusBar // minimap helper code private void GetMinimapColors() { - mm_colorset = swwm_mm_colorset; - switch ( mm_colorset ) - { - case 1: - // gzdoom - mm_backcolor = am_backcolor; - mm_cdwallcolor = am_cdwallcolor; - mm_efwallcolor = am_efwallcolor; - mm_fdwallcolor = am_fdwallcolor; - mm_interlevelcolor = am_interlevelcolor; - mm_intralevelcolor = am_intralevelcolor; - mm_lockedcolor = am_lockedcolor; - mm_notseencolor = am_notseencolor; - mm_portalcolor = am_portalcolor; - mm_secretsectorcolor = am_secretsectorcolor; - mm_secretwallcolor = am_secretwallcolor; - mm_specialwallcolor = am_specialwallcolor; - mm_thingcolor = am_thingcolor; - mm_thingcolor_citem = am_thingcolor_citem; - mm_thingcolor_friend = am_thingcolor_friend; - mm_thingcolor_item = am_thingcolor_item; - mm_thingcolor_monster = am_thingcolor_monster; - mm_thingcolor_ncmonster = am_thingcolor_ncmonster; - mm_thingcolor_shootable = am_thingcolor; - mm_thingcolor_vipitem = am_unexploredsecretcolor; - mm_thingcolor_missile = am_specialwallcolor; - mm_tswallcolor = am_tswallcolor; - mm_unexploredsecretcolor = am_unexploredsecretcolor; - mm_wallcolor = am_wallcolor; - mm_yourcolor = am_yourcolor; - mm_displaylocks = true; - break; - case 2: - // doom - mm_backcolor = "00 00 00"; - mm_cdwallcolor = "fc fc 00"; - mm_efwallcolor = "bc 78 48"; - mm_fdwallcolor = "bc 78 48"; - mm_interlevelcolor = 0; - mm_intralevelcolor = 0; - mm_lockedcolor = "fc fc 00"; - mm_notseencolor = "6c 6c 6c"; - mm_portalcolor = "40 40 40"; - mm_secretsectorcolor = 0; - mm_secretwallcolor = 0; - mm_specialwallcolor = 0; - mm_thingcolor = "74 fc 6c"; - mm_thingcolor_citem = "74 fc 6c"; - mm_thingcolor_friend = "74 fc 6c"; - mm_thingcolor_item = "74 fc 6c"; - mm_thingcolor_monster = "74 fc 6c"; - mm_thingcolor_ncmonster = "74 fc 6c"; - mm_thingcolor_shootable = "74 fc 6c"; - mm_thingcolor_vipitem = "74 fc 6c"; - mm_thingcolor_missile = "74 fc 6c"; - mm_tswallcolor = "80 80 80"; - mm_unexploredsecretcolor = 0; - mm_wallcolor = "fc 00 00"; - mm_yourcolor = "ff ff ff"; - mm_displaylocks = false; - break; - case 3: - // strife - mm_backcolor = "00 00 00"; - mm_cdwallcolor = "77 73 73"; - mm_efwallcolor = "37 3b 5b"; - mm_fdwallcolor = "37 3b 5b"; - mm_interlevelcolor = 0; - mm_intralevelcolor = 0; - mm_lockedcolor = "77 73 73"; - mm_notseencolor = "6c 6c 6c"; - mm_portalcolor = "40 40 40"; - mm_secretsectorcolor = 0; - mm_secretwallcolor = 0; - mm_specialwallcolor = 0; - mm_thingcolor = "bb 3b 00"; - mm_thingcolor_citem = "db ab 00"; - mm_thingcolor_friend = "fc 00 00"; - mm_thingcolor_item = "db ab 00"; - mm_thingcolor_monster = "fc 00 00"; - mm_thingcolor_ncmonster = "fc 00 00"; - mm_thingcolor_shootable = "bb 3b 00"; - mm_thingcolor_vipitem = "db ab 00"; - mm_thingcolor_missile = "bb 3b 00"; - mm_tswallcolor = "77 73 73"; - mm_unexploredsecretcolor = 0; - mm_wallcolor = "c7 ce ce"; - mm_yourcolor = "ef ef ef"; - mm_displaylocks = false; - break; - case 4: - // raven - mm_backcolor = "6c 54 40"; - mm_cdwallcolor = "67 3b 1f"; - mm_efwallcolor = "d0 b0 85"; - mm_fdwallcolor = "d0 b0 85"; - mm_interlevelcolor = 0; - mm_intralevelcolor = 0; - mm_lockedcolor = "67 3b 1f"; - mm_notseencolor = "00 00 00"; - mm_portalcolor = "50 50 50"; - mm_secretsectorcolor = 0; - mm_secretwallcolor = 0; - mm_specialwallcolor = 0; - mm_thingcolor = "ec ec ec"; - mm_thingcolor_citem = "ec ec ec"; - mm_thingcolor_friend = "ec ec ec"; - mm_thingcolor_item = "ec ec ec"; - mm_thingcolor_monster = "ec ec ec"; - mm_thingcolor_ncmonster = "ec ec ec"; - mm_thingcolor_shootable = "ec ec ec"; - mm_thingcolor_vipitem = "ec ec ec"; - mm_thingcolor_missile = "ec ec ec"; - mm_tswallcolor = "58 5d 56"; - mm_unexploredsecretcolor = 0; - mm_wallcolor = "4b 32 10"; - mm_yourcolor = "ff ff ff"; - mm_displaylocks = true; - break; - default: - // swwm - mm_backcolor = "10 10 10"; - mm_cdwallcolor = "30 50 70"; - mm_efwallcolor = "80 a0 c0"; - mm_fdwallcolor = "50 70 90"; - mm_interlevelcolor = "ff 00 60"; - mm_intralevelcolor = "00 60 ff"; - mm_lockedcolor = "00 90 80"; - mm_notseencolor = "20 20 30"; - mm_portalcolor = "40 30 20"; - mm_secretsectorcolor = "80 00 ff"; - mm_secretwallcolor = "60 40 80"; - mm_specialwallcolor = "ff a0 00"; - mm_thingcolor = "ff ff ff"; - mm_thingcolor_citem = "00 ff ff"; - mm_thingcolor_friend = "80 ff a0"; - mm_thingcolor_item = "ff c0 00"; - mm_thingcolor_monster = "ff 60 40"; - mm_thingcolor_ncmonster = "a0 40 20"; - mm_thingcolor_shootable = "ff a0 a0"; - mm_thingcolor_vipitem = "80 60 ff"; - mm_thingcolor_missile = "ff a0 20"; - mm_tswallcolor = "30 20 40"; - mm_unexploredsecretcolor = "40 00 80"; - mm_wallcolor = "c0 e0 ff"; - mm_yourcolor = "80 ff 00"; - mm_displaylocks = true; - break; - } + mm_backcolor = "10 10 10"; + mm_cdwallcolor = "30 50 70"; + mm_efwallcolor = "80 a0 c0"; + mm_fdwallcolor = "50 70 90"; + mm_interlevelcolor = "ff 00 60"; + mm_intralevelcolor = "00 60 ff"; + mm_lockedcolor = "00 90 80"; + mm_notseencolor = "20 20 30"; + mm_portalcolor = "40 30 20"; + mm_secretsectorcolor = "80 00 ff"; + mm_secretwallcolor = "60 40 80"; + mm_specialwallcolor = "ff a0 00"; + mm_thingcolor = "ff ff ff"; + mm_thingcolor_citem = "00 ff ff"; + mm_thingcolor_friend = "80 ff a0"; + mm_thingcolor_item = "ff c0 00"; + mm_thingcolor_monster = "ff 60 40"; + mm_thingcolor_ncmonster = "c0 40 20"; + mm_thingcolor_shootable = "a0 30 10"; + mm_thingcolor_vipitem = "80 60 ff"; + mm_thingcolor_missile = "ff c0 40"; + mm_tswallcolor = "30 20 40"; + mm_unexploredsecretcolor = "40 00 80"; + mm_wallcolor = "c0 e0 ff"; + mm_yourcolor = "80 ff 00"; } private bool ShouldDisplaySpecial( int special ) { @@ -540,8 +416,7 @@ extend Class SWWMStatusBar || (l.special == Teleport_ZombieChanger) || (l.special == Teleport_Line)) ) col = mm_intralevelcolor; - else if ( mm_displaylocks - && (lock > 0) && (lock < 256) ) + else if ( (lock > 0) && (lock < 256) ) { let lcol = Key.GetMapColorForLock(lock); if ( !lcol ) @@ -692,7 +567,7 @@ extend Class SWWMStatusBar for ( SWWMSimpleTracker t=hnd.strackers; t; t=t.next ) { if ( !drawmissiles && t.ismissile ) continue; - if ( level.allmap && (t.target is 'Key') ) continue; // don't draw keys over the actual markers they have + if ( level.allmap && t.iskey ) continue; // don't draw keys over the actual markers they have Color col = mm_thingcolor; bool isitem = false; bool plainactor = false; @@ -713,7 +588,8 @@ extend Class SWWMStatusBar } if ( t.isitem ) { - if ( t.vipitem ) col = mm_thingcolor_vipitem; + if ( t.iskey ) col = t.keycolor; + else if ( t.vipitem ) col = mm_thingcolor_vipitem; else if ( t.countitem ) col = mm_thingcolor_citem; else col = mm_thingcolor_item; isitem = true; diff --git a/zscript/hud/swwm_hudobjects.zsc b/zscript/hud/swwm_hudobjects.zsc index 0d8f568b1..a3a120854 100644 --- a/zscript/hud/swwm_hudobjects.zsc +++ b/zscript/hud/swwm_hudobjects.zsc @@ -265,7 +265,9 @@ Class SWWMSimpleTracker play bool expired; bool ismissile; bool isbeam, isybeam; + bool iskey; int lastupdate; + Color keycolor; ui double smoothalpha; // smoothened alpha, for ui SWWMSimpleTracker next; @@ -288,6 +290,8 @@ Class SWWMSimpleTracker play countitem = SWWMUtility.IsScoreItem(target); vipitem = SWWMUtility.IsVipItem(target); lastupdate = level.maptime; + iskey = (target is 'Key'); + if ( iskey ) keycolor = Key.GetMapColorForKey(Key(target)); if ( isitem ) { if ( !target.bSPECIAL || Inventory(target).Owner )