diff --git a/cvarinfo.txt b/cvarinfo.txt index 6644bcd31..ab9feb871 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -70,7 +70,7 @@ server bool swwm_resetscore = true; // reset score back to 0 on pistol starts server bool swwm_notrack = false; // disables all combat tracking (useful to speed up slaughterwads) server bool swwm_ynykronalert = false; // caps ynykron alert (so it doesn't wake everyone up) user bool swwm_menupause = true; // pause the game when demolitionist menu is open -server noarchive bool swwm_explosiondebug = false; // debug visual aid for DoExplosion +server noarchive bool swwm_debugblast = false; // debug visual aid for DoExplosion user bool swwm_funtags = false; // replace vanilla monster names with silly ones server bool swwm_omnibust = false; // TODO add wallbusting effect to all weapons server bool swwm_superfuel = false; // TODO enable unlimited fuel @@ -83,3 +83,4 @@ server bool swwm_shotgib = true; // buckshot can gib (some people don't like th user bool swwm_collectanim = true; // player special gestures for collectables (first person only) server int swwm_shadows = 1; // enables blob shadows under certain things (0 - no shadows, 1 - mod objects, 2 - everything) user bool swwm_precisecrosshair = true; // use mod's own, more precise crosshair +user bool swwm_ldspoil = false; // [LD] always shows "Legendary" prefix on Legendary monsters, otherwise only when they've transformed diff --git a/decaldef.txt b/decaldef.txt index 7b34dbe04..939033f25 100644 --- a/decaldef.txt +++ b/decaldef.txt @@ -549,3 +549,8 @@ decalgroup BigPock BigPock4 1 BigPock5 1 } +decal DemoSpray +{ + pic DemoIcon + solid +} diff --git a/graphics/DemoIcon.png b/graphics/DemoIcon.png index 0f394ad84..8b5a6b49d 100644 Binary files a/graphics/DemoIcon.png and b/graphics/DemoIcon.png differ diff --git a/language.def_base b/language.def_base index d1b7a8593..e5fcb3f41 100644 --- a/language.def_base +++ b/language.def_base @@ -895,6 +895,7 @@ SWWM_NEXIT = "Exit"; SWWM_SEXIT = "Secret Exit"; SWWM_LEG = "Legendary "; SWWM_LEGPREFIX = "L"; +SWWM_LTFORM = "\cfLegendary %s\cf has transformed!"; SWWM_SHAMEFUL = "Humiliation"; SWWM_BUTTSLAM = "Buttslam"; SWWM_LOVED = "L\cg♥\c-VE"; diff --git a/language.def_menu b/language.def_menu index a5c4b4c65..be603c9ee 100644 --- a/language.def_menu +++ b/language.def_menu @@ -144,6 +144,8 @@ SWWM_SHADOWS_OFF = "None"; SWWM_SHADOWS_ON = "Mod Objects"; SWWM_SHADOWS_ALL = "Everything"; SWWM_PRECISECROSSHAIR = "Precise Crosshair"; +SWWM_MCTITLE = "Mod Compatibility Options"; +SWWM_LDSPOIL = "Always Show Legendaries"; 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."; @@ -215,6 +217,7 @@ TOOLTIP_SWWM_SHOTGIB = "Some people don't like this for some reason, so here it TOOLTIP_SWWM_COLLECTANIM = "Play special first person animations when picking up collectibles."; TOOLTIP_SWWM_SHADOWS = "Enables round shadows for various entities. Requires a map restart to take full effect."; TOOLTIP_SWWM_PRECISECROSSHAIR = "Projects crosshair onto the spot the weapon will actually hit, rather than staying in the center of the screen."; +TOOLTIP_SWWM_LDSPOIL = "[LegenDoom] Always show the \"Legendary\" prefix on healthbar tags, rather than after the monster has transformed. Disable if you'd rather not spoil the surprise."; // knowledge base SWWM_COMINGSOON = "(coming soon)"; SWWM_MISSTAB = "Mission"; diff --git a/language.es_base b/language.es_base index 04321dc1a..33ced0fc9 100644 --- a/language.es_base +++ b/language.es_base @@ -834,6 +834,7 @@ SWWM_NEXIT = "Salida"; SWWM_SEXIT = "Salida Secreta"; SWWM_LEG = " Legendario"; SWWM_LEGPREFIX = "R"; +SWWM_LTFORM = "\cf¡%s\cf Legendario se ha transformado!"; SWWM_SHAMEFUL = "Humillación"; SWWM_BUTTSLAM = "Culazo"; // score messages diff --git a/language.es_menu b/language.es_menu index 91b617c17..bd1e70ad2 100644 --- a/language.es_menu +++ b/language.es_menu @@ -144,6 +144,8 @@ SWWM_SHADOWS_OFF = "Nada"; SWWM_SHADOWS_ON = "Objetos de Mod"; SWWM_SHADOWS_ALL = "Todo"; SWWM_PRECISECROSSHAIR = "Mira Precisa"; +SWWM_MCTITLE = "Opciones de Compatibilidad con Mods"; +SWWM_LDSPOIL = "Mostrar Siempre Legendarios"; 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."; @@ -215,6 +217,7 @@ TOOLTIP_SWWM_SHOTGIB = "Hay gente a la que no le gusta esto por alguna razón, a TOOLTIP_SWWM_COLLECTANIM = "Muestra animaciones especiales en primera persona al recoger coleccionables."; TOOLTIP_SWWM_SHADOWS = "Activa sombras redondas para varias entidades. Requiere un reinicio de mapa para tomar efecto completamente."; TOOLTIP_SWWM_PRECISECROSSHAIR = "Proyecta la mira en el punto que el arma alcanzará, en vez de quedarse en el centro de la pantalla."; +TOOLTIP_SWWM_LDSPOIL = "[LegenDoom] Muestra siempre el sufijo de \"Legendario\" en las etiquetas de barra de vida, en lugar de despues de que el enemigo se haya transformado. Desactiva si prefieres no estropear la sorpresa."; // knowledge base SWWM_COMINGSOON = "(próximamente)"; SWWM_MISSTAB = "Misión"; diff --git a/language.version b/language.version index a2a34146a..1bd15a588 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r579 \cu(Sun 25 Oct 11:27:13 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r580 \cu(Sun 25 Oct 17:17:51 CET 2020)"; diff --git a/menudef.txt b/menudef.txt index 84ca7d60a..31564b33d 100644 --- a/menudef.txt +++ b/menudef.txt @@ -111,6 +111,10 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_SVHEALTHUSE", "swwm_enforceautousehealth", "SWWMEnforce" Option "$SWWM_SVAMMOUSE", "swwm_enforceautouseammo", "SWWMEnforce" Option "$SWWM_OTHERVOICE", "swwm_othervoice", "YesNo" + StaticText " " + StaticText "$SWWM_MCTITLE", "Blue" + Option "$SWWM_LDSPOIL", "swwm_ldspoil", "YesNo" + } OptionMenu "SWWMCreditsMenu" { diff --git a/sndinfo.txt b/sndinfo.txt index 99182a598..1d287eae3 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -5,6 +5,7 @@ crash/glass sounds/GLASSCRK.ogg crash/curb sounds/CURB.ogg brutal/ezmodo sounds/EASYMODO.ogg bestsound sounds/CORK.ogg +haha/dab sounds/DAB.ogg saya/giggle1 sounds/saya/saya_giggle1.ogg saya/giggle2 sounds/saya/saya_giggle2.ogg diff --git a/sounds/DAB.ogg b/sounds/DAB.ogg new file mode 100644 index 000000000..d5f69604b Binary files /dev/null and b/sounds/DAB.ogg differ diff --git a/zmapinfo.txt b/zmapinfo.txt index ef302c497..d0bacd6bb 100644 --- a/zmapinfo.txt +++ b/zmapinfo.txt @@ -32,6 +32,7 @@ GameInfo BorderFlat = "graphics/bord_flat.png" Border = 2, 0, "graphics/bord_tr.png", "graphics/bord_t.png", "graphics/bord_tl.png", "graphics/bord_r.png", "graphics/bord_l.png", "graphics/bord_br.png", "graphics/bord_b.png", "graphics/bord_bl.png" ForceTextInMenus = true + TelefogHeight = 28 // precaching of frame-heavy objects PrecacheClasses = "Demolitionist", "DeepImpact", diff --git a/zscript/swwm_common.zsc b/zscript/swwm_common.zsc index 8d8c336ba..aa6ee7b45 100644 --- a/zscript/swwm_common.zsc +++ b/zscript/swwm_common.zsc @@ -1049,7 +1049,6 @@ Class SWWMTeleportFog : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - SetOrigin(Vec3Offset(0,0,28),false); A_StartSound("misc/teleport",CHAN_VOICE); Spawn("TeleLight",pos); if ( swwm_simplefog ) SetStateLabel("Simple"); @@ -1163,7 +1162,7 @@ Class SmolInvisibleSplasher : InvisibleSplasher { Default { - Mass 10; + Mass 5; } } @@ -1241,6 +1240,8 @@ Class SWWMShadow : Actor static void Track( Actor other ) { + // prevent infinite recursion + if ( other is 'SWWMShadow' ) return; let s = SWWMShadow(Spawn("SWWMShadow",other.pos)); s.target = other; s.Update(true); @@ -1254,7 +1255,9 @@ Class SWWMShadow : Actor { alpha = 1.-min(1.,.006*abs(target.pos.z-pos.z)); alpha *= target.alpha; - double bscale = (target.radius/16.)*(1.-min(1.,.003*abs(target.pos.z-pos.z))); + double relz = target.pos.z-pos.z; + if ( target.bFLOATBOB ) relz += BobSin(target.FloatBobPhase)*target.FloatBobStrength; + double bscale = (target.radius/16.)*(1.-min(1.,.003*relz)); A_SetScale(bscale); } // update position diff --git a/zscript/swwm_hud.zsc b/zscript/swwm_hud.zsc index 6037d4fcb..b94b6b1f0 100644 --- a/zscript/swwm_hud.zsc +++ b/zscript/swwm_hud.zsc @@ -28,7 +28,7 @@ Class SWWMStatusBar : BaseStatusBar SWWMVanillaBossHandler bosshnd; // client cvars - transient CVar safezone, maxchat[2], maxpick, chatduration, msgduration, pickduration, chatcol, teamcol, obitcol, critcol, pickcol, targetter, healthnums, scorenums, scorebonus, pois, targettag, lang, maxtarg, maxscore, maxdamns, hscale, bscale, nscale, sscale, iscale, dscale, midcol, midbcol, midduration, bigtags, showitems, showmaplabel, showmonsters, showsecrets, showtime, showtotaltime; + transient CVar safezone, maxchat[2], maxpick, chatduration, msgduration, pickduration, chatcol, teamcol, obitcol, critcol, pickcol, targetter, healthnums, scorenums, scorebonus, pois, targettag, lang, maxtarg, maxscore, maxdamns, hscale, bscale, nscale, sscale, iscale, dscale, midcol, midbcol, midduration, bigtags, showitems, showmaplabel, showmonsters, showsecrets, showtime, showtotaltime, legspoil; // shared stuff Vector2 ss, hs; @@ -728,7 +728,8 @@ Class SWWMStatusBar : BaseStatusBar if ( !proj.IsInFront() ) continue; Vector2 vpos = viewport.SceneToWindow(npos); tag = targ.mytag; - if ( targ.legged ) + if ( !legspoil ) legspoil = CVar.GetCVar('swwm_ldspoil',players[consoleplayer]); + if ( targ.legged && (targ.mutated || legspoil.GetBool()) ) { if ( StringTable.Localize("$SWWM_LEGPREFIX") == "R" ) tag = tag..StringTable.Localize("$SWWM_LEG"); else tag = StringTable.Localize("$SWWM_LEG")..tag; diff --git a/zscript/swwm_thinkers.zsc b/zscript/swwm_thinkers.zsc index df713b968..ddf0bca50 100644 --- a/zscript/swwm_thinkers.zsc +++ b/zscript/swwm_thinkers.zsc @@ -780,7 +780,7 @@ Class SWWMCombatTracker : Thinker Vector3 pos, prevpos, oldpos, oldprev; PlayerInfo myplayer; SWWMCombatTracker prev, next; - bool legged; + bool legged, mutated; int tcnt; double height; transient CVar funtags, maxdist; @@ -905,6 +905,16 @@ Class SWWMCombatTracker : Thinker if ( lasthealth > maxhealth ) maxhealth = lasthealth; } } + if ( legged && !mutated ) + { + // check inventory regularly to mark as mutated + for ( Inventory i=mytarget.inv; i; i=i.inv ) + { + if ( i.GetClassName() != "LDLegendaryMonsterTransformed" ) continue; + mutated = true; + Console.Printf(StringTable.Localize("$SWWM_LTFORM"),mytag); + } + } lasthealth = mytarget.Health; intp.Update(lasthealth); if ( !maxdist ) maxdist = CVar.GetCVar('swwm_maxtargetdist',players[consoleplayer]); diff --git a/zscript/swwm_utility.zsc b/zscript/swwm_utility.zsc index 8ffae810e..dc4d57fac 100644 --- a/zscript/swwm_utility.zsc +++ b/zscript/swwm_utility.zsc @@ -753,7 +753,7 @@ Class SWWMUtility static play void DoExplosion( Actor Source, double Damage, double MomentumTransfer, double ExplosionRadius, double FullDamageRadius = 0., int flags = 0, Name DamageType = '', Actor ignoreme = null ) { // debug, display radius sphere - if ( swwm_explosiondebug ) + if ( swwm_debugblast ) { let s = Actor.Spawn("RadiusDebugSphere",Source.pos); s.Scale *= ExplosionRadius;