diff --git a/cvarinfo.base b/cvarinfo.base index d7baee30f..3f8ab072b 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -117,6 +117,7 @@ nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation nosave string swwm_tooltipshown = ""; // which weapons have already had their tooltips displayed nosave noarchive bool swwm_tooltipnote = false; // set if the note on how to disable tooltips was already displayed nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them +server bool swwm_demoslayer = false; // if you're below 100hp, enemies drop healing orbs when you kill them // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter diff --git a/gldefs.misc b/gldefs.misc index 3df446f30..22f19aa3e 100644 --- a/gldefs.misc +++ b/gldefs.misc @@ -98,3 +98,7 @@ HardwareShader Texture "graphics/Fanart/Shivers.png" { Shader "shaders/glsl/Bilinear.fp" } +HardwareShader Texture "graphics/Fanart/Shivers2.png" +{ + Shader "shaders/glsl/Bilinear.fp" +} diff --git a/graphics/Fanart/Shivers2.png b/graphics/Fanart/Shivers2.png new file mode 100644 index 000000000..21becf4e2 Binary files /dev/null and b/graphics/Fanart/Shivers2.png differ diff --git a/language.def_base b/language.def_base index 7431f0e58..baea6effa 100644 --- a/language.def_base +++ b/language.def_base @@ -1327,20 +1327,21 @@ SWWM_INTERTIP149 = "Always take breaks during long play sessions. You'll play be SWWM_INTERTIP150 = "This is the 150th tip. I can't believe I've written so many of them."; // intermission fanart SWWM_FANART = "Art: "; -SWWM_NFANART = "13"; +SWWM_NFANART = "14"; SWWM_FANART1 = "S20TBL.jpg;Substance20 (@S20_TBL)"; SWWM_FANART2 = "CaptainJ.png;Captain J (@Jho7835)"; SWWM_FANART3 = "RedeadITA.png;Redead-ITA"; SWWM_FANART4 = "Shivers.png;Sgt. Shivers (@Sgt_Shivers_)"; -SWWM_FANART5 = "Endie.jpg;Moa Dixøn / Endie (@MoaDixon)"; -SWWM_FANART6 = "CaptainJ2.png;Captain J (@Jho7835)"; -SWWM_FANART7 = "Marisa.jpg"; -SWWM_FANART8 = "Marisa2.jpg"; -SWWM_FANART9 = "Marisa3.jpg"; -SWWM_FANART10 = "Marisa4.jpg"; -SWWM_FANART11 = "Marisa5.jpg"; -SWWM_FANART12 = "Marisa6.jpg"; -SWWM_FANART13 = "Marisa7.jpg"; +SWWM_FANART5 = "Shivers2.png;Sgt. Shivers (@Sgt_Shivers_)"; +SWWM_FANART6 = "Endie.jpg;Moa Dixøn / Endie (@MoaDixon)"; +SWWM_FANART7 = "CaptainJ2.png;Captain J (@Jho7835)"; +SWWM_FANART8 = "Marisa.jpg"; +SWWM_FANART9 = "Marisa2.jpg"; +SWWM_FANART10 = "Marisa3.jpg"; +SWWM_FANART11 = "Marisa4.jpg"; +SWWM_FANART12 = "Marisa5.jpg"; +SWWM_FANART13 = "Marisa6.jpg"; +SWWM_FANART14 = "Marisa7.jpg"; // achievements SWWM_ACHIEVEMENT_ACID_TAG = "Fizzy Goodness"; SWWM_ACHIEVEMENT_ACID_TXT = "Melt %d enemies with Telebrium Flechettes"; diff --git a/language.def_menu b/language.def_menu index f515416c7..1109af80a 100644 --- a/language.def_menu +++ b/language.def_menu @@ -205,6 +205,7 @@ SWWM_RESETTOOLTIPS = "Reset Weapon Tooltips"; SWWM_CRESET = "Reset to Defaults"; SWWM_ARESET = "Wipe Achievements"; SWWM_NOINTERTIPS = "Hide Intermission Tips"; +SWWM_DEMOSLAYER = "Demoslayer Mode"; SWWM_MMTITLE = "Minimap Settings"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_ROTATE = "Rotate Minimap"; @@ -361,6 +362,7 @@ TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resets weapon tooltips so you can see them al TOOLTIP_EVENT_SWWMRESETCVARS = "Resets all the mod's settings to their original values."; TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Erases all your archievement progress."; TOOLTIP_SWWM_NOINTERTIPS = "Hides intermission tips, in case you don't want to see them."; +TOOLTIP_SWWM_DEMOSLAYER = "If you're below 100 health, killed enemies will drop health orbs."; TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap."; TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements."; TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter."; diff --git a/language.es_menu b/language.es_menu index b2e639351..e2a2c98e8 100644 --- a/language.es_menu +++ b/language.es_menu @@ -204,6 +204,7 @@ SWWM_RESETTOOLTIPS = "Resetear Ayuda de Armas"; SWWM_CRESET = "Restaurar Predeterminado"; SWWM_ARESET = "Borrar Logros"; SWWM_NOINTERTIPS = "Ocultar Consejos de Intermisión"; +SWWM_DEMOSLAYER = "Modo Demoslayer"; SWWM_MMTITLE = "Opciones de Minimapa"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_ROTATE = "Rotar Minimapa"; @@ -360,6 +361,7 @@ TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resetea la ayuda de armas para que puedas vol TOOLTIP_EVENT_SWWMRESETCVARS = "Resetea todas las opciones del mod a sus valores originales."; TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Borra todo tu progreso de logros."; TOOLTIP_SWWM_NOINTERTIPS = "Oculta los consejos de intermisión, por si no quieres verlos."; +TOOLTIP_SWWM_DEMOSLAYER = "Si tienes menos de 100 puntos de vida, los enemigos que mates soltarán orbes de salud."; TOOLTIP_SWWMMINIMAPMENU = "Configura el minimapa."; TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros."; TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación."; diff --git a/language.version b/language.version index 5293491e6..1f03a54f6 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r38 \cu(Thu 21 Oct 23:27:37 CEST 2021)\c-"; -SWWM_SHORTVER="\cw1.2pre r38 \cu(2021-10-21 23:27:37)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r39 \cu(Fri 22 Oct 17:30:41 CEST 2021)\c-"; +SWWM_SHORTVER="\cw1.2pre r39 \cu(2021-10-22 17:30:41)\c-"; diff --git a/menudef.txt b/menudef.txt index b42ee3faf..08048d5fe 100644 --- a/menudef.txt +++ b/menudef.txt @@ -159,6 +159,7 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_OMNIBUST", "swwm_omnibust", "YesNo" Option "$SWWM_SUPERFUEL", "swwm_superfuel", "YesNo" Option "$SWWM_PARTYTIME", "swwm_partytime", "YesNo" + Option "$SWWM_DEMOSLAYER", "swwm_demoslayer", "YesNo" Option "$SWWM_FUNTRAILS", "swwm_funtrails", "SWWMFunTrails" TrapOption "$SWWM_ENGINE", "swwm_engine" StaticText " " diff --git a/zscript/handler/swwm_handler_damage.zsc b/zscript/handler/swwm_handler_damage.zsc index c63c79c07..ea117814a 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -186,7 +186,7 @@ extend Class SWWMHandler } int pnum = src.PlayerNumber(); // achievement stuff - if ( e.Thing.IsHostile(src) ) + if ( e.Thing.IsHostile(src) && (e.Thing.bISMONSTER || e.Thing.player) ) { if ( (e.Thing.bBOSS||e.Thing.FindInventory("BossMarker")) && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) ) SWWMUtility.AchievementProgressInc("bossdash",1,src.player); @@ -218,6 +218,18 @@ extend Class SWWMHandler onehpspree[pnum]++; SWWMUtility.AchievementProgress("onehp",onehpspree[pnum],src.player); } + // tasty treats + if ( swwm_demoslayer && (src.Health < 100) ) + { + int amt = clamp(min(-e.Thing.Health,-e.Thing.GetGibHealth())/5,0,20); + for ( int i=0; i mdist ) continue; + mdist = dist; + np = i; + } + if ( np == -1 ) return; + let mo = players[np].mo; + if ( SWWMUtility.BoxIntersect(self,mo,pad:8) ) + { + int flg = CHANF_OVERLAP|CHANF_MAYBE_LOCAL; + if ( mo.CheckLocalView() ) flg |= CHANF_NOPAUSE; + mo.A_StartSound("misc/health_pkup",CHAN_ITEM,flg); + int hp = int(ceil(abs(scale.x*10))); + mo.GiveBody(hp,100); + SWWMHandler.HealthFlash(np); + SWWMScoreObj.Spawn(hp,mo.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+mo.Height/2),ST_Health); + Destroy(); + return; + } + if ( isFrozen() ) return; + Vector3 dirto = level.Vec3Diff(pos,mo.Vec3Offset(0,0,mo.Height/2)); + double distto = dirto.length(); + dirto /= distto; + vel += dirto*((600.-distto)/400.)**2.; + vel.z += .2; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + SpriteOffset = (0,-4); + Scale.x *= RandomPick[Junk](-1,-1); + Scale.y *= RandomPick[Junk](-1,-1); + } + States + { + Spawn: + BLPF E -1 Bright; + Stop; + } +} +Class HealthOrbTrail : Actor +{ + Default + { + RenderStyle "Add"; + Radius .1; + Height 0.; + Scale .25; + Alpha .5; + +FORCEXYBILLBOARD; + +NOGRAVITY; + +NOBLOCKMAP; + +DONTSPLASH; + +NOTELEPORT; + +NOINTERACTION; + } + override void Tick() + { + if ( isFrozen() ) return; + alpha *= .9; + scale *= 1.05; + if ( alpha < .05 ) Destroy(); + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + SpriteOffset = (0,-4); + } + States + { + Spawn: + BLPS E -1 Bright; + Stop; + } +} + Class DashTrail : Actor { Default