diff --git a/LOADACS.txt b/LOADACS.txt new file mode 100644 index 000000000..11910f832 --- /dev/null +++ b/LOADACS.txt @@ -0,0 +1 @@ +SWWMCOMP diff --git a/acs/swwmcomp.o b/acs/swwmcomp.o new file mode 100644 index 000000000..0045cd073 Binary files /dev/null and b/acs/swwmcomp.o differ diff --git a/language.def_base b/language.def_base index ce993a6fc..59c04d32d 100644 --- a/language.def_base +++ b/language.def_base @@ -908,7 +908,7 @@ SWWM_LASTMONSTER = "\cf%s\cf killed the last monster. +%d\c-"; SWWM_NEWLORE = "New entries have been added to the Library."; SWWM_SELLEXTRA = "\cf%s\cf sold an extra %s\cf. +%d\c-"; // intermission tips -SWWM_NINTERTIP = "69"; +SWWM_NINTERTIP = "75"; SWWM_INTERTIP = "Tip #%d:"; SWWM_INTERTIP1 = "The Demolitionist is immune to drowning, poison and even fall damage (excluding instant kill pits)."; SWWM_INTERTIP2 = "The Explodium Gun's altfire has an explosive yield proportional to the bullets left in the mag."; @@ -979,6 +979,12 @@ SWWM_INTERTIP66 = "The Blackfire Igniter can produce blocks of ice that float ab SWWM_INTERTIP67 = "You can mark multiple targets with the Rail Carbine's ionizer and then hit them all in a single discharge. Do be quick, however, because the charge fades over time."; SWWM_INTERTIP68 = "Being primarily a coilgun, the Ray-Khom is almost entirely silent and perfect for stealthy kills. Do note though that the impact of the projectile itself will be very loud."; SWWM_INTERTIP69 = "Nice."; +SWWM_INTERTIP70 = "Did you know that even with seat belts people die all the time in car crashes? I thought that was interesting."; +SWWM_INTERTIP71 = "\"On the internet nobody can hear you being subtle.\" — Linus Torvalds"; +SWWM_INTERTIP72 = "There are approximately 9.3 billion demons bred solely for warfare in Hell. That is eight hundred and seventy six thousand times the monster count of nuts.wad, and that's terrible."; +SWWM_INTERTIP73 = "People die if they are killed. But legends never die, they get back up and pwn you."; +SWWM_INTERTIP74 = "\"TREEEEEEEEEES!\" — Marty"; +SWWM_INTERTIP75 = "Kobolds are small little creechers that go yip."; // intermission fanart SWWM_FANART = "Art: "; SWWM_NFANART = "5"; diff --git a/language.es_base b/language.es_base index 1c957e39b..ed955b2bd 100644 --- a/language.es_base +++ b/language.es_base @@ -914,5 +914,10 @@ SWWM_INTERTIP65 = "El Encendedor de Fuego Negro deja un rastro prolongado de fr SWWM_INTERTIP66 = "El Encendedor de Fuego Negro puede producir bloques de hielo que flotan sobre líquidos, convirtiéndose en plataformas temporales. Ten en cuenta que esto obviamente no funcionará en lava."; SWWM_INTERTIP67 = "Puedes marcar múltiples objetivos con el ionizador de la Carabina de Raíl y luego alcanzarlos a todos en una sola descarga. Pero debes hacerlo rápido, ya que la carga se disipa con el tiempo."; SWWM_INTERTIP68 = "Siendo principalmente una pistola de bobina, la Ray-Khom es casi completamente silenciosa y perfecta para matar sigilosamente. Ten en cuenta sin embargo que el impacto del proyectil en sí será muy ruidoso."; +SWWM_INTERTIP70 = "¿Sabíais que incluso con cinturones de seguridad la gente muere todo el tiempo en accidentes de coche? Pensé que era interesante."; +SWWM_INTERTIP71 = "\"En internet nadie puede escucharte ser sutil.\" — Linus Torvalds"; +SWWM_INTERTIP72 = "Hay aproximadamente 9.3 mil millones de demonios criados solo para la guerra en el Infierno. Eso es ochocientas setenta y seis mil veces el conteo de monstruos de nuts.wad, y eso es terrible."; +SWWM_INTERTIP73 = "La gente muere si la matan. Pero las leyendas nunca mueren, se levantan de nuevo y te parten la badana."; +SWWM_INTERTIP75 = "Los kobolds son pequeñas criaturitas que hacen yip."; // intermission fanart SWWM_FANART = "Arte: "; diff --git a/language.spookcompat b/language.spookcompat new file mode 100644 index 000000000..b2f8b7907 --- /dev/null +++ b/language.spookcompat @@ -0,0 +1,7 @@ +[enu default] +DEFPNAME = "the one they call \cfDemolitionist\c-"; +BOSSDLG2 = "DO YOU KNOW, MACHINE, WHAT YOU HAVE DONE? THE BARRIERS YOU HAVE DESTROYED WERE NOT OF MY CREATION."; +BEATDLG2 = "Well... if it isn't the little robot that's been \"exploding knees\" among Hell's forces."; +BEATDLG14 = "Here! I'm feeling generous tonight. I know it's not very modern like what you tend to carry around, but it'll do."; +BEATDLG22 = "Not ever in my thousand years as a witch have I seen someone like you! What sort of killer machine are you!?"; +BEATDLG27 = "\cgNO SMALL BOMBS WERE USED IN THE ROKKENJIMA MURDERS\c-"; diff --git a/language.version b/language.version index 476de0208..fd69b6c24 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r617 \cu(Sat 14 Nov 12:23:48 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r618 \cu(Sun 15 Nov 18:09:26 CET 2020)"; diff --git a/swwmcomp.acs b/swwmcomp.acs new file mode 100644 index 000000000..0f0e45544 --- /dev/null +++ b/swwmcomp.acs @@ -0,0 +1,28 @@ +#library "SWWMCOMP" +#include "zcommon.acs" + +// these scripts are redirected to by the compatibility postprocessor + +SCRIPT "ZPACK_E1M2_SCRIPT6" ( void ) +{ + TagWait(22); + Door_Open(22,16); + Floor_LowerByValue(22,2,8); + Delay(245); + Door_Close(22,16); + Floor_RaiseByValue(22,2,8); + Delay(24); +} + +SCRIPT "ZPACK_E3M2_SCRIPT9" ( void ) +{ + ACS_Execute(4,0,7); + ClearLineSpecial(); +} + +SCRIPT "ZPACK_E3M8_SCRIPT15" ( void ) +{ + Floor_LowerByValue(49,10,64); + TagWait(49); + Floor_LowerByValue(37,10,120); +} diff --git a/zscript.txt b/zscript.txt index b5c8f6696..9f14bffda 100644 --- a/zscript.txt +++ b/zscript.txt @@ -20,6 +20,7 @@ version "4.5" #include "zscript/swwm_handler.zsc" #include "zscript/swwm_shame.zsc" #include "zscript/swwm_hdoom.zsc" +#include "zscript/swwm_compat.zsc" #include "zscript/swwm_thinkers.zsc" #include "zscript/swwm_player.zsc" #include "zscript/swwm_inventory.zsc" diff --git a/zscript/swwm_compat.zsc b/zscript/swwm_compat.zsc new file mode 100644 index 000000000..0ed0da953 --- /dev/null +++ b/zscript/swwm_compat.zsc @@ -0,0 +1,32 @@ +// level compatibility scripts +// sometimes shit breaks because of old and wrong scripting +// usually stuff that uses CheckInventory to look for keys, instead of, y'know, +// using ACS_LockedExecute + +Class SWWMLevelCompatibility : LevelPostProcessor +{ + protected void Apply( Name checksum, String mapname ) + { + switch ( checksum ) + { + case 'none': + return; + // ZPack E1M2 + case 'BA13454A41D931685B6A4B28E6946B6B': + // script uses checkinventory for red key + SetLineSpecial(225,ACS_LockedExecuteDoor,-Int('ZPACK_E1M2_SCRIPT6'),0,0,0,1); + SetLineSpecial(228,ACS_LockedExecuteDoor,-Int('ZPACK_E1M2_SCRIPT6'),0,0,0,1); + break; + // ZPack E3M2 + case '17BD38E0B2FB8E760885FE46325DFF3A': + // script uses checkinventory for red skull + SetLineSpecial(5913,ACS_LockedExecute,-Int('ZPACK_E3M2_SCRIPT9'),0,0,0,4); + break; + // ZPack E3M8 + case '13C5952A04014122271F50134DB4521F': + // script uses checkinventory for yellow skull + SetLineSpecial(22610,ACS_LockedExecute,-Int('ZPACK_E3M8_SCRIPT15'),0,0,0,6); + break; + } + } +} diff --git a/zscript/swwm_utility.zsc b/zscript/swwm_utility.zsc index 3d12e6656..6bb074f0f 100644 --- a/zscript/swwm_utility.zsc +++ b/zscript/swwm_utility.zsc @@ -863,6 +863,9 @@ Class SWWMUtility static clearscope bool IdentifyingDog( Actor a ) { if ( a is 'MBFHelperDog' ) return true; + // reminder that mark is a terrible person + if ( a.GetClassName() == 'GermanDog' ) return true; + if ( a.GetClassName() == '64HellHound' ) return true; // more dogs will be added as found // because all dogs must be pet return false;