diff --git a/cvarinfo.base b/cvarinfo.base index aa79ba603..6f6af95e3 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -53,7 +53,7 @@ nosave int swwm_scrscale = 2; // score scaling (0 = use GZDoom scaling) nosave int swwm_numscale = 3; // damnum scaling (0 = use GZDoom scaling) nosave int swwm_poiscale = 1; // point of interest scaling (0 = use GZDoom scaling) nosave int swwm_detscale = 2; // item sense scaling (0 = use GZDoom scaling) -server bool swwm_blood = false; // custom blood/gibbing +server bool swwm_blood = true; // custom blood/gibbing server int swwm_maxblood = 400; // max blood effects at any time server int swwm_maxgibs = 100; // max gibs at any time server int swwm_maxcasings = 200; // max casings and spent mags at any time @@ -69,7 +69,7 @@ server bool swwm_notrack = false; // disables all combat tracking (useful to sp server bool swwm_ynykronalert = false; // caps ynykron alert (so it doesn't wake everyone up) nosave bool swwm_menupause = true; // pause the game when demolitionist menu is open nosave noarchive bool swwm_debugblast = false; // debug visual aid for DoExplosion -nosave bool swwm_funtags = false; // replace vanilla monster names with silly ones +nosave bool swwm_funtags = true; // replace vanilla monster names with silly ones server bool swwm_omnibust = false; // add wallbusting effect to all weapons server bool swwm_superfuel = false; // enable unlimited fuel server bool swwm_partytime = false; // killed enemies burst into confetti @@ -87,10 +87,10 @@ nosave bool swwm_camhud = false; // keep full hud visible when operating camera server bool swwm_uncapalert = false; // all noise alerts have infinite range nosave int swwm_damagetarget = 1; // conditional healthbar hiding (1 - hide until damage is first taken, 2 - hide if at full health) server int swwm_strictuntouchable = 0; // untouchable bonus ends... (1 - even if your armor absorbed all the damage, 2 - if you get hit by anything PERIOD) -server bool swwm_silencemap = false; // silences the map when all kills/items/secrets are achieved +server bool swwm_silencemap = true; // silences the map when all kills/items/secrets are achieved nosave int swwm_shadowdist = 2000; // max distance beyond which blob shadows are no longer rendered, helps performance server bool swwm_swapweapons = true; // [DLC1] allows carrying only one weapon in each slot (excluding starter melee) -nosave int swwm_forcestats = 0; // always shows level stats on the HUD, not just when the automap is open (2 - also show map name, otherwise only stats) +nosave int swwm_forcestats = 1; // always shows level stats on the HUD, not just when the automap is open (2 - also show map name, otherwise only stats) user int swwm_funtrails = 0; // recolors trails of eviscerator chunks and sheen bullets server int swwm_pistolstart = 0; // enforces pistol start for all maps (excluding hubs) [2 - only between clusters] nosave int swwm_numcolor_scr = 5; // font color for score numbers (default: gold) @@ -99,8 +99,8 @@ nosave int swwm_numcolor_dmg = 6; // font color for damage numbers (default: re nosave int swwm_numcolor_hp = 7; // font color for health numbers (default: blue) nosave int swwm_numcolor_ap = 3; // font color for armor numbers (default: green) server int swwm_drlaskill = 3; // [DRLA Monsters] skill setting for monster spawns -nosave bool swwm_itemsparkles = false; // visual aid for low visibility items -nosave bool swwm_itemglows = false; // distant items glow +nosave bool swwm_itemsparkles = true; // visual aid for low visibility items +nosave bool swwm_itemglows = true; // distant items glow server bool swwm_singlefirst = false; // single weapons are selected before dual ones, has to be a server cvar due to limitations nosave bool swwm_uniqstats = false; // only list stats from the same map once, rather than for each single visit nosave int swwm_filterachievements = 1; // filter for achievements at 0%: 0 - no filter, 1 - obscure text, 2 - don't show @@ -108,15 +108,16 @@ nosave noarchive bool swwm_debugview = false; // debug visual aid for various th nosave noarchive bool swwm_oldcheat = false; // set to true if you used a SWWM Platinum cheat, so the easter egg only appears once per session server bool swwm_selflight = true; // player emits light server bool swwm_usetopickup = false; // allow item pickup only by pressing use -server bool swwm_meleepickup = false; // allow picking up items through melee +server bool swwm_meleepickup = true; // allow picking up items through melee nosave bool swwm_buttsfx = true; // buttslam homerun SFX nosave int swwm_sewercount = 0; // I'm sorry Civvie -server bool swwm_ondemandammo = false; // don't spawn ammo for unavailable weapons +server bool swwm_ondemandammo = true; // don't spawn ammo for unavailable weapons user float swwm_bumpstrength = 1.0; // intensity of fov bumping server bool swwm_nomagdrop = true; // does not drop spent magazines (the "environmentally conscious" option) user bool swwm_autousebarrier = true; // auto-use elemental coating when standing on damaging floors server int swwm_enforceautousebarrier = 0; // enforced auto-use for coating nosave bool swwm_nomapmsg = false; // disables special map dialogue messages +nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation when first selected // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter diff --git a/language.def_base b/language.def_base index 4f05a4cf7..dd77e6552 100644 --- a/language.def_base +++ b/language.def_base @@ -717,6 +717,129 @@ SWWM_DMSPREAD = "Spread:"; SWWM_PLACE1 = "1st"; SWWM_PLACE2 = "2nd"; SWWM_PLACE3 = "3rd"; +// weapon tooltips +TT_PUSHER = +"\cfFire:\c- Drill.\n" +"\cfAltfire:\c- Charged attack."; +TT_DEEPIMPACT = +"\cfFire:\c- Air push.\n" +"\cfAltfire:\c- Charged shot.\n" +"\cfReload:\c- Pump air."; +TT_EXPLODIUM = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Throw magazine.\n" +"\cfReload:\c- Reload weapon."; +TT_EXPLODIUM2 = +"\cfFire:\c- Shoot right weapon.\n" +"\cfAltfire:\c- Shoot left weapon.\n" +"\cfReload:\c- Reload weapon(s)."; +TT_SPREADGUN = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Select ammo.\n" +"\cfReload:\c- Reload / switch ammo.\n" +"\cfAltfire+Fire:\c- Unload ammo."; +TT_WALLBUSTER = +"\cfFire:\c- Shoot one barrel.\n" +"\cfAltfire:\c- Shoot one cylinder.\n" +"\cfZoom:\c- Shoot everything.\n" +"\cfReload:\c- Reload weapon."; +TT_EVISCERATOR = +"\cfFire:\c- Shrapnel shot.\n" +"\cfAltfire:\c- Grenade shot.\n" +"\cfZoom:\c- Toggle spread."; +TT_HELLBLAZER = +"\cfFire:\c- Load rockets, release to shoot.\n" +"\cfAltfire:\c- Load grenades, release to shoot.\n" +"\cfZoom:\c- Select ammo.\n" +"\cfReload:\c- Reload / switch ammo.\n" +"\cx(More controls in library)\c-"; +TT_SPARKSTER = +"\cfFire:\c- Orb shot.\n" +"\cfAltfire:\c- Beam shot.\n" +"\cfZoom:\c- Seeker shot.\n" +"\cfReload:\c- Reload / double load."; +TT_SILVERBULLET = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Select ammo.\n" +"\cfZoom:\c- Use scope.\n" +"\cfReload:\c- Reload / switch ammo.\n" +"\cfAltfire+Fire:\c- Manual bolt cycle."; +TT_CANDYGUN = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Throw magazine.\n" +"\cfReload:\c- Reload weapon.\n" +"\cfAltfire+Fire:\c- Throw gun."; +TT_YNYKRON = +"\cfFire:\c- Charge / shoot weapon.\n" +"\cfAltfire:\c- Flip magazine.\n" +"\cfReload:\c- Reload weapon / cancel charge."; +TT_HAMMER = +"\cfFire:\c- Side swings.\n" +"\cfAltfire:\c- Overhead swing.\n" +"\cfZoom:\c- Spin attack."; +TT_PLASMABLAST = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Charged shot.\n" +"\cfReload:\c- Reload weapon."; +TT_PLASMABLAST2 = +"\cfFire:\c- Shoot right weapon.\n" +"\cfAltfire:\c- Shoot left weapon.\n" +"\cfReload:\c- Reload weapon(s)."; +TT_PUNTZERBETA = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Quickshot mode.\n" +"\cfReload:\c- Reload weapon."; +TT_PUNTZERGAMMA = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Cycle fire modes.\n" +"\cfReload:\c- Reload weapon."; +TT_SHEENHMG = +"\cfFire:\c- Slow fire.\n" +"\cfAltfire:\c- Moderate fire.\n" +"\cfZoom:\c- Fast fire."; +TT_QUADRAVOL = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Pump weapon.\n" +"\cfZoom:\c- Toggle spread mode.\n" +"\cfReload:\c- Load cells.\n" +"\cfFire+Altfire:\c- Hold to slamfire."; +TT_BLACKFIRE = +"\cfFire:\c- Freeze thrower.\n" +"\cfAltfire:\c- Icicle shot.\n" +"\cfReload:\c- Reload canister(s)."; +TT_EMPCARBINE = +"\cfFire:\c- Hold to ionize, release to shoot.\n" +"\cfAltfire:\c- Multi-target ionization.\n" +"\cfZoom:\c- Use scope.\n" +"\cfReload:\c- Load rods."; +TT_RAYKHOM = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Lightning attack.\n" +"\cfReload:\c- Reload weapon.\n" +"\cfZoom:\c- Reload battery."; +TT_GRANDLANCE = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Charged shot.\n" +"\cfReload:\c- Reload weapon.\n" +"\cfZoom:\c- Reload battery."; +TT_FISTGUN = +"\cfFire:\c- Throw punch.\n" +"\cfAltfire:\c- Wide slap."; +TT_NEWSPARKSTER = +"\cfFire:\c- Kinylum shot.\n" +"\cfAltfire:\c- Nokron shot.\n" +"\cfFire+Altfire:\c- Combined shot.\n" +"\cfReload:\c- Load Kinylum.\n" +"\cfZoom:\c- Load Nokron."; +TT_MORTALRIFLE = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Shoot grenade.\n" +"\cfZoom:\c- Cycle fire modes.\n" +"\cfReload:\c- Reload weapon."; +TT_RAFANKOS = +"\cfFire:\c- Single beam.\n" +"\cfAltfire:\c- Multi beam.\n" +"\cfReload:\c- Reload weapon."; // "Direct messages" SWWM_INCOMINGMSG = "Incoming direct message from %s..."; // E1M8 diff --git a/language.def_menu b/language.def_menu index 1a8f9de7c..f5be0162e 100644 --- a/language.def_menu +++ b/language.def_menu @@ -200,6 +200,7 @@ SWWM_NOMAGDROP = "Drop Spent Mags"; SWWM_BARRIERUSE = "Automatically Use Coating"; SWWM_SVBARRIERUSE = "Enforce Coating Auto-Use"; SWWM_NOMAPMSG = "Map Special Messages"; +SWWM_WEAPONTOOLTIPS = "Weapon Tooltips"; SWWM_MMTITLE = "Minimap Settings"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_ROTATE = "Rotate Minimap"; @@ -346,6 +347,7 @@ TOOLTIP_SWWM_NOMAGDROP = "By default, the Demolitionist will be somewhat environ TOOLTIP_SWWM_AUTOUSEBARRIER = "When enabled, elemental coating will be automatically used as needed if standing on damaging floors."; TOOLTIP_SWWM_ENFORCEAUTOUSEBARRIER = "Enforce a specific coating auto-use setting for all players, or respects per-player settings."; TOOLTIP_SWWM_NOMAPMSG = "Toggles special animated character messages on certain maps (usually vanilla)."; +TOOLTIP_SWWM_WEAPONTOOLTIPS = "Shows a summary of controls when a weapon is selected for the first time."; TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter."; TOOLTIP_SWWM_MM_ROTATE = "Rotates the minimap view."; TOOLTIP_SWWM_MM_GRID = "Shows a 128x128 grid on the minimap."; diff --git a/language.es_base b/language.es_base index 2fbdb5fd3..f69cd0c87 100644 --- a/language.es_base +++ b/language.es_base @@ -604,6 +604,129 @@ SWWM_PLACE3 = "3º"; SWWM_PLACE1_GENDER1 = "1ª"; SWWM_PLACE2_GENDER1 = "2ª"; SWWM_PLACE3_GENDER1 = "3ª"; +// weapon tooltips +TT_PUSHER = +"\cfPrimario:\c- Taladrar.\n" +"\cfSecundario:\c- Ataque cargado."; +TT_DEEPIMPACT = +"\cfPrimario:\c- Impulso de aire.\n" +"\cfSecundario:\c- Disparo cargado.\n" +"\cfRecarga:\c- Bombear aire."; +TT_EXPLODIUM = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Lanzar cargador.\n" +"\cfRecarga:\c- Recargar arma."; +TT_EXPLODIUM2 = +"\cfPrimario:\c- Disparar arma derecha.\n" +"\cfSecundario:\c- Disparar arma izquierda.\n" +"\cfRecarga:\c- Recargar arma(s)."; +TT_SPREADGUN = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Seleccionar munición.\n" +"\cfRecarga:\c- Recargar / cambiar munición.\n" +"\cfSecundario+Primario:\c- Descargar munición."; +TT_WALLBUSTER = +"\cfPrimario:\c- Disparar un cañón.\n" +"\cfSecundario:\c- Disparar un cilindro.\n" +"\cfZoom:\c- Disparar todo.\n" +"\cfRecarga:\c- Recargar arma."; +TT_EVISCERATOR = +"\cfPrimario:\c- Disparo de metralla.\n" +"\cfSecundario:\c- Disparo de granada.\n" +"\cfZoom:\c- Alternar dispersión."; +TT_HELLBLAZER = +"\cfPrimario:\c- Cargar cohetes, soltar para disparar.\n" +"\cfSecundario:\c- Cargar granadas, soltar para disparar.\n" +"\cfZoom:\c- Seleccionar munición.\n" +"\cfRecarga:\c- Recargar / cambiar munición.\n" +"\cx(Más controles en la biblioteca)\c-"; +TT_SPARKSTER = +"\cfPrimario:\c- Disparo de orbe.\n" +"\cfSecundario:\c- Disparo de haz.\n" +"\cfZoom:\c- Disparo buscador.\n" +"\cfRecarga:\c- Recarga / doble carga."; +TT_SILVERBULLET = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Seleccionar munición.\n" +"\cfZoom:\c- Usar mira.\n" +"\cfRecarga:\c- Recargar / cambiar munición.\n" +"\cfSecundario+Primario:\c- Accionar perno manualmente."; +TT_CANDYGUN = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Lanzar cargador.\n" +"\cfRecarga:\c- Recargar arma.\n" +"\cfSecundario+Primario:\c- Lanzar pistola."; +TT_YNYKRON = +"\cfPrimario:\c- Cargar / disparar arma.\n" +"\cfSecundario:\c- Rotar cargador.\n" +"\cfRecarga:\c- Recargar arma / cancelar carga."; +TT_HAMMER = +"\cfPrimario:\c- Ataque lado a lado.\n" +"\cfSecundario:\c- Ataque vertical.\n" +"\cfZoom:\c- Ataque giratorio."; +TT_PLASMABLAST = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Disparo cargado.\n" +"\cfRecarga:\c- Recargar arma."; +TT_PLASMABLAST2 = +"\cfPrimario:\c- Disparar arma derecha.\n" +"\cfSecundario:\c- Disparar arma izquierda.\n" +"\cfRecarga:\c- Recargar arna(s)."; +TT_PUNTZERBETA = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Modo de disparo rápido.\n" +"\cfRecarga:\c- Recargar arma."; +TT_PUNTZERGAMMA = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Cambiar modo de disparo.\n" +"\cfRecarga:\c- Recargar arma."; +TT_SHEENHMG = +"\cfPrimario:\c- Fuego lento.\n" +"\cfSecundario:\c- Fuego moderado.\n" +"\cfZoom:\c- Fuego rápido."; +TT_QUADRAVOL = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Bombear arma.\n" +"\cfZoom:\c- Alternar modo disperso.\n" +"\cfRecarga:\c- Cargar células.\n" +"\cfPrimario+Secundario:\c- Mantener para disparo rápido."; +TT_BLACKFIRE = +"\cfPrimario:\c- Lanzafrío.\n" +"\cfSecundario:\c- Disparo de carámbano.\n" +"\cfRecarga:\c- Recargar frasco(s)."; +TT_EMPCARBINE = +"\cfPrimario:\c- Mantener para ionizar, soltar para disparar.\n" +"\cfSecundario:\c- Ionización multi-objetivo.\n" +"\cfZoom:\c- Usar mira.\n" +"\cfRecarga:\c- Cargar barras."; +TT_RAYKHOM = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Ataque de rayo.\n" +"\cfRecarga:\c- Recargar arma.\n" +"\cfZoom:\c- Recargar batería."; +TT_GRANDLANCE = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Disparo cargado.\n" +"\cfRecarga:\c- Recargar arma.\n" +"\cfZoom:\c- Recargar batería."; +TT_FISTGUN = +"\cfPrimario:\c- Lanzar puño.\n" +"\cfSecundario:\c- Bofetada en arco."; +TT_NEWSPARKSTER = +"\cfPrimario:\c- Disparo de Kinylum.\n" +"\cfSecundario:\c- Disparo de Nokron.\n" +"\cfPrimario+Secundario:\c- Disparo combinado.\n" +"\cfRecarga:\c- Cargar Kinylum.\n" +"\cfZoom:\c- Cargar Nokron."; +TT_MORTALRIFLE = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Disparar granada.\n" +"\cfZoom:\c- Cambiar modo de disparo.\n" +"\cfRecarga:\c- Recargar arma."; +TT_RAFANKOS = +"\cfPrimario:\c- Haz singular.\n" +"\cfSecundario:\c- Haz múltiple.\n" +"\cfRecarga:\c- Recargar arma."; // "Direct messages" SWWM_INCOMINGMSG = "Mensaje directo entrante de %s..."; // E1M8 diff --git a/language.es_menu b/language.es_menu index b6d989118..702d6801c 100644 --- a/language.es_menu +++ b/language.es_menu @@ -199,6 +199,7 @@ SWWM_NOMAGDROP = "Tirar Cargadores Usados"; SWWM_BARRIERUSE = "Usar Revestimiento Automáticamente"; SWWM_SVBARRIERUSE = "Forzar Auto-Uso de Revestimiento"; SWWM_NOMAPMSG = "Mensajes Especiales de Mapa"; +SWWM_WEAPONTOOLTIPS = "Información de Armas"; SWWM_MMTITLE = "Opciones de Minimapa"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_ROTATE = "Rotar Minimapa"; @@ -345,6 +346,7 @@ TOOLTIP_SWWM_NOMAGDROP = "Por defecto, la Demolicionista será un poco conscient TOOLTIP_SWWM_AUTOUSEBARRIER = "Cuando esto está activado, el revestimiento elemental será usado automáticamente si es necesario al estar en suelos dañinos."; TOOLTIP_SWWM_ENFORCEAUTOUSEBARRIER = "Fuerza una opción específica de auto-uso de revestimiento para todos los jugadores, o respeta la opción de cada uno."; TOOLTIP_SWWM_NOMAPMSG = "Activa mensajes especiales animados de personajes en ciertos mapas (usualmente vanilla)."; +TOOLTIP_SWWM_WEAPONTOOLTIPS = "Muestra un resumen de controles cuando se selecciona un arma por primera vez."; TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación."; TOOLTIP_SWWM_MM_ROTATE = "Gira la vista del minimapa."; TOOLTIP_SWWM_MM_GRID = "Muestra una cuadrícula de 128x128 en el minimapa."; diff --git a/language.version b/language.version index 8bdbf1f10..635cc0fca 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1pre r20 \cu(Wed 15 Sep 00:17:08 CEST 2021)\c-"; -SWWM_SHORTVER="\cw1.1pre r20 \cu(2021-09-15 00:17:08)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1pre r21 \cu(Thu 16 Sep 16:31:44 CEST 2021)\c-"; +SWWM_SHORTVER="\cw1.1pre r21 \cu(2021-09-16 16:31:44)\c-"; diff --git a/menudef.txt b/menudef.txt index 0722afb0f..c64ae6ce1 100644 --- a/menudef.txt +++ b/menudef.txt @@ -190,6 +190,7 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_BUSTERPAUSE", "swwm_cbtpause", "YesNo" Option "$SWWM_COLLECTANIM", "swwm_collectanim", "YesNo" Option "$SWWM_COLLECTANIMKEY", "swwm_collectanimkey", "YesNo" + Option "$SWWM_WEAPONTOOLTIPS", "swwm_weapontooltips", "YesNo" StaticText " " StaticText "$SWWM_CTITLE", "Blue" Option "$SWWM_SKEYS", "swwm_sharekeys", "YesNo" diff --git a/zscript/dlc1/swwm_blackfire.zsc b/zscript/dlc1/swwm_blackfire.zsc index 1b1b24ff7..fc34ed6b3 100644 --- a/zscript/dlc1/swwm_blackfire.zsc +++ b/zscript/dlc1/swwm_blackfire.zsc @@ -18,6 +18,7 @@ Class BlackfireIgniter : SWWMWeapon Tag "$T_BLACKFIRE"; Inventory.PickupMessage "$T_BLACKFIRE"; Obituary "$O_BLACKFIRE"; + SWWMWeapon.Tooltip "$TT_BLACKFIRE"; Inventory.Icon "graphics/HUD/Icons/W_Blackfire.png"; Weapon.SlotNumber 7; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_blastin.zsc b/zscript/dlc1/swwm_blastin.zsc index bd725ca64..5536201be 100644 --- a/zscript/dlc1/swwm_blastin.zsc +++ b/zscript/dlc1/swwm_blastin.zsc @@ -16,6 +16,7 @@ Class PlasmaBlast : SWWMWeapon Tag "$T_PLASMABLAST"; Inventory.PickupMessage "$T_PLASMABLAST"; Obituary "$O_PLASMABLAST"; + SWWMWeapon.Tooltip "$TT_PLASMABLAST"; Inventory.Icon "graphics/HUD/Icons/W_PlasmaBlast.png"; Weapon.SlotNumber 2; Weapon.SlotPriority 3.; @@ -44,6 +45,7 @@ Class DualPlasmaBlast : SWWMWeapon { Tag "$T_PLASMABLAST2"; Obituary "$O_PLASMABLAST"; + SWWMWeapon.Tooltip "$TT_PLASMABLAST2"; Inventory.Icon "graphics/HUD/Icons/W_PlasmaBlast2.png"; Weapon.SlotNumber 2; Weapon.SlotPriority 4.; diff --git a/zscript/dlc1/swwm_hammertime.zsc b/zscript/dlc1/swwm_hammertime.zsc index 02e53d947..9e9a82086 100644 --- a/zscript/dlc1/swwm_hammertime.zsc +++ b/zscript/dlc1/swwm_hammertime.zsc @@ -12,6 +12,7 @@ Class ItamexHammer : SWWMWeapon Tag "$T_HAMMER"; Inventory.PickupMessage "$I_HAMMER"; Obituary "$O_HAMMER"; + SWWMWeapon.Tooltip "$TT_HAMMER"; Inventory.Icon "graphics/HUD/Icons/W_ItamexHammer.png"; Weapon.SlotNumber 1; Weapon.SlotPriority 3.; diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc index 84081de0e..cf76c2ce7 100644 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun.zsc @@ -12,6 +12,7 @@ Class HeavyMahSheenGun : SWWMWeapon Tag "$T_SHEENHMG"; Inventory.PickupMessage "$I_SHEENHMG"; Obituary "$O_SHEENHMG"; + SWWMWeapon.Tooltip "$TT_SHEENHMG"; Inventory.Icon "graphics/HUD/Icons/W_SheenHMG.png"; Weapon.SlotNumber 5; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_hugeassrailgun.zsc b/zscript/dlc1/swwm_hugeassrailgun.zsc index bb142fec6..dea7e9a4b 100644 --- a/zscript/dlc1/swwm_hugeassrailgun.zsc +++ b/zscript/dlc1/swwm_hugeassrailgun.zsc @@ -18,6 +18,7 @@ Class GrandLance : SWWMWeapon Tag "$T_GRANDLANCE"; Inventory.PickupMessage "$T_GRANDLANCE"; Obituary "$O_GRANDLANCE"; + SWWMWeapon.Tooltip "$TT_GRANDLANCE"; Inventory.Icon "graphics/HUD/Icons/W_GrandLance.png"; Weapon.SlotNumber 0; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_notashotgun.zsc b/zscript/dlc1/swwm_notashotgun.zsc index e94173287..61eea17a2 100644 --- a/zscript/dlc1/swwm_notashotgun.zsc +++ b/zscript/dlc1/swwm_notashotgun.zsc @@ -17,6 +17,7 @@ Class Quadravol : SWWMWeapon Tag "$T_QUADRAVOL"; Inventory.PickupMessage "$I_QUADRAVOL"; Obituary "$O_QUADRAVOL"; + SWWMWeapon.Tooltip "$TT_QUADRAVOL"; Inventory.Icon "graphics/HUD/Icons/W_Quadravol.png"; Weapon.SlotNumber 6; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_rebolber.zsc b/zscript/dlc1/swwm_rebolber.zsc index f3c8db6b6..645c27ba0 100644 --- a/zscript/dlc1/swwm_rebolber.zsc +++ b/zscript/dlc1/swwm_rebolber.zsc @@ -16,6 +16,7 @@ Class PuntzerBeta : SWWMWeapon Tag "$T_PUNTZERBETA"; Inventory.PickupMessage "$I_PUNTZERBETA"; Obituary "$O_PUNTZERBETA"; + SWWMWeapon.Tooltip "$TT_PUNTZERBETA"; Inventory.Icon "graphics/HUD/Icons/W_PuntzerBeta.png"; Weapon.SlotNumber 3; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_supermarioworld.zsc b/zscript/dlc1/swwm_supermarioworld.zsc index 4b6b63814..9ae290a69 100644 --- a/zscript/dlc1/swwm_supermarioworld.zsc +++ b/zscript/dlc1/swwm_supermarioworld.zsc @@ -17,6 +17,7 @@ Class PuntzerGamma : SWWMWeapon Tag "$T_PUNTZERGAMMA"; Inventory.PickupMessage "$I_PUNTZERGAMMA"; Obituary "$O_PUNTZERGAMMA"; + SWWMWeapon.Tooltip "$TT_PUNTZERGAMMA"; Inventory.Icon "graphics/HUD/Icons/W_PuntzerGamma.png"; Weapon.SlotNumber 4; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_thiccbolts.zsc b/zscript/dlc1/swwm_thiccbolts.zsc index d97a0b6e7..902a31418 100644 --- a/zscript/dlc1/swwm_thiccbolts.zsc +++ b/zscript/dlc1/swwm_thiccbolts.zsc @@ -18,6 +18,7 @@ Class RayKhom : SWWMWeapon Tag "$T_RAYKHOM"; Inventory.PickupMessage "$T_RAYKHOM"; Obituary "$O_RAYKHOM"; + SWWMWeapon.Tooltip "$TT_RAYKHOM"; Inventory.Icon "graphics/HUD/Icons/W_RayKhom.png"; Weapon.SlotNumber 9; Weapon.SlotPriority 2.; diff --git a/zscript/dlc1/swwm_veryveryfrightening.zsc b/zscript/dlc1/swwm_veryveryfrightening.zsc index 13f601b46..7dc241f59 100644 --- a/zscript/dlc1/swwm_veryveryfrightening.zsc +++ b/zscript/dlc1/swwm_veryveryfrightening.zsc @@ -18,6 +18,7 @@ Class EMPCarbine : SWWMWeapon Tag "$T_EMPCARBINE"; Inventory.PickupMessage "$I_EMPCARBINE"; Obituary "$O_EMPCARBINE"; + SWWMWeapon.Tooltip "$TT_EMPCARBINE"; Inventory.Icon "graphics/HUD/Icons/W_EMPCarbine.png"; Weapon.SlotNumber 8; Weapon.SlotPriority 2.; diff --git a/zscript/dlc2/swwm_blueballs.zsc b/zscript/dlc2/swwm_blueballs.zsc index 885190f8d..0e5f379c2 100644 --- a/zscript/dlc2/swwm_blueballs.zsc +++ b/zscript/dlc2/swwm_blueballs.zsc @@ -17,6 +17,7 @@ Class ModernSparkster : SWWMWeapon Tag "$T_NEWSPARKSTER"; Inventory.PickupMessage "$I_NEWSPARKSTER"; Obituary "$O_NEWSPARKSTER"; + SWWMWeapon.Tooltip "$TT_NEWSPARKSTER"; Inventory.Icon "graphics/HUD/Icons/W_NewSparkster.png"; Weapon.SlotNumber 6; Weapon.SlotPriority 3.; diff --git a/zscript/dlc2/swwm_fisto.zsc b/zscript/dlc2/swwm_fisto.zsc index fab8d1bec..77492f843 100644 --- a/zscript/dlc2/swwm_fisto.zsc +++ b/zscript/dlc2/swwm_fisto.zsc @@ -12,6 +12,7 @@ Class FistGun : SWWMWeapon Tag "$T_FISTGUN"; Inventory.PickupMessage "$T_FISTGUN"; Obituary "$O_FISTGUN"; + SWWMWeapon.Tooltip "$TT_FISTGUN"; Inventory.Icon "graphics/HUD/Icons/W_FistGun.png"; Weapon.SlotNumber 1; Weapon.SlotPriority 4.; diff --git a/zscript/dlc2/swwm_mister.zsc b/zscript/dlc2/swwm_mister.zsc index b9ffd8177..22ae1d581 100644 --- a/zscript/dlc2/swwm_mister.zsc +++ b/zscript/dlc2/swwm_mister.zsc @@ -17,6 +17,7 @@ Class MisterRifle : SWWMWeapon Tag "$T_MORTALRIFLE"; Inventory.PickupMessage "$T_MORTALRIFLE"; Obituary "$O_MORTALRIFLE"; + SWWMWeapon.Tooltip "$TT_MORTALRIFLE"; Inventory.Icon "graphics/HUD/Icons/W_MortalRifle.png"; Weapon.SlotNumber 9; Weapon.SlotPriority 3.; diff --git a/zscript/dlc2/swwm_ultimate.zsc b/zscript/dlc2/swwm_ultimate.zsc index 04e6407f4..55424efbb 100644 --- a/zscript/dlc2/swwm_ultimate.zsc +++ b/zscript/dlc2/swwm_ultimate.zsc @@ -17,6 +17,7 @@ Class RafanKos : SWWMWeapon Tag "$T_RAFANKOS"; Inventory.PickupMessage "$T_RAFANKOS"; Obituary "$O_RAFANKOS"; + SWWMWeapon.Tooltip "$TT_RAFANKOS"; Inventory.Icon "graphics/HUD/Icons/W_RafanKos.png"; Weapon.SlotNumber 0; Weapon.SlotPriority 3.; diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index e62123119..a1452e9d7 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -119,6 +119,18 @@ Class SWWMStatusBar : BaseStatusBar override bool ProcessMidPrint( Font fnt, String msg, bool bold ) { + // hack lol + if ( msg.Left(15) ~== "swwmwpntooltip." ) + { + String wname = msg.Mid(15); + Class w = wname; + if ( w ) + { + let tt = new("SWWMWeaponTooltip").Init(w); + AttachMessage(tt,-2910); + } + return true; + } SWWMDirectMessage m, m2; // check for Korax lines, add them to chat (and reply to some of them) bool koraxline = false; diff --git a/zscript/hud/swwm_hudextra.zsc b/zscript/hud/swwm_hudextra.zsc index 0fa0b7ad7..3655f76a9 100644 --- a/zscript/hud/swwm_hudextra.zsc +++ b/zscript/hud/swwm_hudextra.zsc @@ -245,6 +245,81 @@ Class SWWMSewerCount : HUDMessageBase } } +// weapon tooltips +Class SWWMWeaponTooltip : HUDMessageBase +{ + TextureID icon; + String wpn, txt; + double tics, holdtics, fadeintics, fadeouttics; + transient Font tewifont, mplusfont, miniwifont, k6x8font; + transient BrokenLines l; + + SWWMWeaponTooltip Init( Class weapon ) + { + let def = GetDefaultByType(weapon); + icon = def.Icon; + wpn = def.GetTag(); + txt = def.tooltip; + holdtics = 90; + fadeintics = 20; + fadeouttics = 30; + tics = -10; + return self; + } + + override bool Tick() + { + return (++tics > holdtics+fadeintics+fadeouttics); + } + + override void Draw( int bottom, int visibility ) + { + if ( tics <= 0 ) return; + if ( !tewifont ) tewifont = Font.GetFont('TewiShaded'); + if ( !mplusfont ) mplusfont = Font.GetFont('MPlusShaded'); + if ( !miniwifont ) miniwifont = Font.GetFont('MiniwiShaded'); + if ( !k6x8font ) k6x8font = Font.GetFont('k6x8Shaded'); + let fnt = tewifont; + let fnt2 = miniwifont; + if ( language ~== "jp" ) + { + fnt = mplusfont; + fnt2 = k6x8font; + } + Vector2 hs; + if ( swwm_hudscale <= 0 ) hs = StatusBar.GetHUDScale(); + else hs.x = swwm_hudscale; + hs.y = hs.x; + Vector2 ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y); + double alpha = (tics w ) w = lw; + } + // underline + int cw = int(ceil((max(w1,w)+8)/6.))*6; + for ( int i=0; i mstats; Array lstats; Array > alreadygot; + Array > sawtooltip; int favweapon; // these two are used for mission updates Array clustervisit; @@ -60,6 +61,19 @@ Class SWWMStats : Thinker return false; } + void SendTooltip( Class which ) + { + if ( !swwm_weapontooltips ) return; + for ( int i=0; i WeaponFromInflictor( Actor inflictor, Name damagetype ) { Class which = myplayer.ReadyWeapon?myplayer.ReadyWeapon.GetClass():null; diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index d3419a3a2..24aab14ee 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -9,9 +9,10 @@ Class SWWMWeapon : Weapon abstract transient bool hastravelled; transient int autoupsnd; private int SWeaponFlags; - + String tooltip; Class dropammotype; + Property Tooltip : tooltip; Property DropAmmoType : dropammotype; FlagDef NoFirstGive : SWeaponFlags, 0; // don't give ammo on first pickup (for weapons with a clip count) @@ -346,11 +347,17 @@ Class SWWMWeapon : Weapon abstract override void Tick() { Super.Tick(); - if ( Owner && autoupsnd && (level.maptime >= autoupsnd) ) + if ( !Owner ) return; + if ( autoupsnd && (level.maptime >= autoupsnd) ) { autoupsnd = 0; PlayUpSound(Owner); } + if ( !Owner.player || (Owner.player.ReadyWeapon != self) || !(Owner.player.WeaponState&WF_WEAPONSWITCHOK) || (Owner.player.WeaponState&WF_DISABLESWITCH) ) + return; + let demo = Demolitionist(Owner); + if ( demo && demo.mystats && tooltip ) + demo.mystats.SendTooltip(GetClass()); } action void A_SWWMFlash( StateLabel flashlabel = null ) { diff --git a/zscript/weapons/swwm_blazeit.zsc b/zscript/weapons/swwm_blazeit.zsc index 8974e4914..102d34dd2 100644 --- a/zscript/weapons/swwm_blazeit.zsc +++ b/zscript/weapons/swwm_blazeit.zsc @@ -652,6 +652,7 @@ Class Hellblazer : SWWMWeapon Tag "$T_HELLBLAZER"; Inventory.PickupMessage "$I_HELLBLAZER"; Obituary "$O_HELLBLAZER"; + SWWMWeapon.Tooltip "$TT_HELLBLAZER"; Inventory.Icon "graphics/HUD/Icons/W_Hellblazer.png"; Weapon.SlotNumber 6; Weapon.SelectionOrder 700; diff --git a/zscript/weapons/swwm_cbt.zsc b/zscript/weapons/swwm_cbt.zsc index 7525e3bad..829338540 100644 --- a/zscript/weapons/swwm_cbt.zsc +++ b/zscript/weapons/swwm_cbt.zsc @@ -852,6 +852,7 @@ Class Wallbuster : SWWMWeapon Tag "$T_WALLBUSTER"; Inventory.PickupMessage "$I_WALLBUSTER"; Obituary "$O_WALLBUSTER_RED"; + SWWMWeapon.Tooltip "$TT_WALLBUSTER"; Inventory.Icon "graphics/HUD/Icons/W_Wallbuster.png"; Weapon.SlotNumber 4; Weapon.SelectionOrder 400; diff --git a/zscript/weapons/swwm_danmaku.zsc b/zscript/weapons/swwm_danmaku.zsc index 4ce5d55b0..d32151618 100644 --- a/zscript/weapons/swwm_danmaku.zsc +++ b/zscript/weapons/swwm_danmaku.zsc @@ -285,6 +285,7 @@ Class Eviscerator : SWWMWeapon Tag "$T_EVISCERATOR"; Inventory.PickupMessage "$I_EVISCERATOR"; Obituary "$O_EVISCERATOR"; + SWWMWeapon.Tooltip "$TT_EVISCERATOR"; Inventory.Icon "graphics/HUD/Icons/W_Eviscerator.png"; Weapon.SlotNumber 5; Weapon.UpSound "eviscerator/select"; diff --git a/zscript/weapons/swwm_deathlydeathcannon.zsc b/zscript/weapons/swwm_deathlydeathcannon.zsc index df3d3784f..87ae87f2d 100644 --- a/zscript/weapons/swwm_deathlydeathcannon.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon.zsc @@ -237,6 +237,7 @@ Class Ynykron : SWWMWeapon Tag "$T_YNYKRON"; Inventory.PickupMessage "$T_YNYKRON"; Obituary "$O_YNYKRON"; + SWWMWeapon.Tooltip "$TT_YNYKRON"; Inventory.Icon "graphics/HUD/Icons/W_Ynykron.png"; Weapon.SlotNumber 0; Weapon.SelectionOrder 9000; diff --git a/zscript/weapons/swwm_deepdarkimpact.zsc b/zscript/weapons/swwm_deepdarkimpact.zsc index 2ad188988..5ead361e0 100644 --- a/zscript/weapons/swwm_deepdarkimpact.zsc +++ b/zscript/weapons/swwm_deepdarkimpact.zsc @@ -326,6 +326,7 @@ Class DeepImpact : SWWMWeapon Tag "$T_DEEPIMPACT"; Inventory.PickupMessage "$I_DEEPIMPACT"; Obituary "$O_DEEPIMPACT_WEAK"; + SWWMWeapon.Tooltip "$TT_DEEPIMPACT"; Inventory.Icon "graphics/HUD/Icons/W_DeepImpact.png"; Weapon.UpSound "deepimpact/select"; Weapon.SlotNumber 1; diff --git a/zscript/weapons/swwm_jackhammer.zsc b/zscript/weapons/swwm_jackhammer.zsc index 209686b3f..6754070a6 100644 --- a/zscript/weapons/swwm_jackhammer.zsc +++ b/zscript/weapons/swwm_jackhammer.zsc @@ -256,6 +256,7 @@ Class PusherWeapon : SWWMWeapon Tag "$T_PUSHER"; Inventory.PickupMessage "$I_PUSHER"; Obituary "$O_PUSHER"; + SWWMWeapon.Tooltip "$TT_PUSHER"; Inventory.Icon "graphics/HUD/Icons/W_Pusher.png"; Weapon.UpSound "pusher/select"; Weapon.SlotNumber 1; diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index 12a3f5673..5ba0eefb4 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -886,6 +886,7 @@ Class Spreadgun : SWWMWeapon Tag "$T_SPREADGUN"; Inventory.PickupMessage "$I_SPREADGUN"; Obituary "$O_SPREADGUN"; + SWWMWeapon.Tooltip "$TT_SPREADGUN"; Inventory.Icon "graphics/HUD/Icons/W_Spreadgun.png"; Weapon.UpSound "spreadgun/select"; Weapon.SlotNumber 3; diff --git a/zscript/weapons/swwm_sparkyboi.zsc b/zscript/weapons/swwm_sparkyboi.zsc index 5b249c007..8edbd7ff7 100644 --- a/zscript/weapons/swwm_sparkyboi.zsc +++ b/zscript/weapons/swwm_sparkyboi.zsc @@ -254,6 +254,7 @@ Class Sparkster : SWWMWeapon Tag "$T_SPARKSTER"; Inventory.PickupMessage "$I_SPARKSTER"; Obituary "$O_SPARKSTER"; + SWWMWeapon.Tooltip "$TT_SPARKSTER"; Inventory.Icon "graphics/HUD/Icons/W_Sparkster.png"; Weapon.SlotNumber 7; Weapon.UpSound "biospark/select"; diff --git a/zscript/weapons/swwm_splode.zsc b/zscript/weapons/swwm_splode.zsc index 05f67179e..b899247c8 100644 --- a/zscript/weapons/swwm_splode.zsc +++ b/zscript/weapons/swwm_splode.zsc @@ -328,6 +328,7 @@ Class ExplodiumGun : SWWMWeapon Tag "$T_EXPLODIUM"; Inventory.PickupMessage "$T_EXPLODIUM"; Obituary "$O_EXPLODIUM"; + SWWMWeapon.Tooltip "$TT_EXPLODIUM"; Inventory.Icon "graphics/HUD/Icons/W_ExplodiumGun.png"; Weapon.UpSound "explodium/select"; Weapon.SlotNumber 2; @@ -791,6 +792,7 @@ Class DualExplodiumGun : SWWMWeapon { Tag "$T_EXPLODIUM2"; Obituary "$O_EXPLODIUM"; + SWWMWeapon.Tooltip "$TT_EXPLODIUM2"; Inventory.Icon "graphics/HUD/Icons/W_ExplodiumGun2.png"; Weapon.UpSound "explodium/select"; Weapon.SisterWeapon "ExplodiumGun"; diff --git a/zscript/weapons/swwm_tastytreat.zsc b/zscript/weapons/swwm_tastytreat.zsc index 516c35e4b..7508ee73f 100644 --- a/zscript/weapons/swwm_tastytreat.zsc +++ b/zscript/weapons/swwm_tastytreat.zsc @@ -339,6 +339,7 @@ Class CandyGun : SWWMWeapon Tag "$T_CANDYGUN"; Inventory.PickupMessage "$I_CANDYGUN"; Obituary "$O_CANDYGUN"; + SWWMWeapon.Tooltip "$TT_CANDYGUN"; Inventory.Icon "graphics/HUD/Icons/W_CandyGun.png"; Weapon.UpSound "explodium/select"; Weapon.SlotNumber 9; diff --git a/zscript/weapons/swwm_thiccboolet.zsc b/zscript/weapons/swwm_thiccboolet.zsc index bfdedde1c..0f2cd04dd 100644 --- a/zscript/weapons/swwm_thiccboolet.zsc +++ b/zscript/weapons/swwm_thiccboolet.zsc @@ -937,6 +937,7 @@ Class SilverBullet : SWWMWeapon Tag "$T_SILVERBULLET"; Inventory.PickupMessage "$T_SILVERBULLET"; Obituary "$O_SILVERBULLET"; + SWWMWeapon.Tooltip "$TT_SILVERBULLET"; Inventory.Icon "graphics/HUD/Icons/W_SilverBullet.png"; Weapon.SlotNumber 8; Weapon.SelectionOrder 800;