diff --git a/.github/workflows/make.yml b/.github/workflows/make.yml index 7f2987b6..da57c7df 100644 --- a/.github/workflows/make.yml +++ b/.github/workflows/make.yml @@ -18,18 +18,9 @@ jobs: - name: Install Prerequisites run: | sudo apt update - sudo apt install python3-pil asciidoc unzip zip ruby dos2unix + sudo apt install python3-pil asciidoc unzip zip ruby dos2unix \ + inkscape deutex sudo gem install asciidoctor-pdf --pre - - name: Install Deutex - run: | - git clone https://github.com/Doom-Utils/deutex.git - cd deutex - git checkout v5.2.1 - sudo apt install libpng-dev - ./bootstrap - ./configure - make - sudo make install - name: Build id: buildstep run: | @@ -43,6 +34,10 @@ jobs: export VERSION=${VERSION:1} fi echo "VERSION=$VERSION" >> $GITHUB_OUTPUT + - name: Make print manual PDFs + run: | + cd manual + make print - name: Upload Freedoom uses: actions/upload-artifact@v4 with: diff --git a/.gitignore b/.gitignore index c459988b..2dd37e96 100644 --- a/.gitignore +++ b/.gitignore @@ -76,4 +76,6 @@ doom.gpl /lumps/textures/phase2/ +/manual/cover/cover-*.svg + /wads/ diff --git a/CREDITS b/CREDITS index 27f102af..0e22dd5a 100644 --- a/CREDITS +++ b/CREDITS @@ -1053,6 +1053,13 @@ D: lumps S: Devalaous D: umapinfo template +N: José Miguel Muñoz +S: megustanlosfrijoles +D: Spanish translation + S: WishedTomato200 S: quarry24 D: patches + +S: illostrious665 +D: textures diff --git a/CREDITS-MUSIC b/CREDITS-MUSIC index 1e0f8276..1de8ca3b 100644 --- a/CREDITS-MUSIC +++ b/CREDITS-MUSIC @@ -6,14 +6,14 @@ Victory: "Distance" by Korp Bunny: "Impactean Welcome Party" by Goji Episode 1 - Outpost Outbreak - E1M1: "Stanky Leg Specialist" by Lola "BlueWorrior" Harvey + E1M1: "Steel and Brass" by J.Astartes and Mr795 E1M2: "Look At Me I'm Underhalls Too" by Mark "TheMisterCat" McGill-Smith E1M3: "Alone with Colors" by Kevin "Velvetic" Martins & Jonathan "julnen" Martins E1M9: "Hidden Between Spades" by Korp, remix of dave3d42.mid by jute E1M4: "Flood the City" by Kevin "Velvetic" Martins & Jonathan "julnen" Martins E1M5: e1m1.mid by Ralph "Ralphis" Vickers E1M6: "Oxidine" by Korp, remix of dave3d35.mid by jute - E1M7: "Totally Surrounded" by Josephus "DH4050" Astartes + E1M7: "Totally Surrounded" by J.Astartes E1M8: "On the Next Day" by Kevin "Velvetic" Martins Episode 2 - Ruin Upon Ruin @@ -80,7 +80,7 @@ Cluster 2 MAP17: "Mow Them Down!" by Lola "BlueWorrior" Harvey MAP18: "Realistic Approach" by Kevin "Velvetic" Martins MAP19: "Deceit" by Julian "Julian Hope" Aubourg, modified by m - MAP20: "Wrath of Horizon" by Josephus "J.Astartes" Astartes + MAP20: "Wrath of Horizon" by J.Astartes Cluster 3 MAP21: "Rough Landing" by Korp, remix of dave3d08.mid by jute @@ -129,7 +129,7 @@ Story: "Geoff's Vinyl Collection" by MoonDeLaAxel, remix of "Why?" by Joshua "wa DM24: "Constructive Criticism" by Matias "jupiter_ex" Roldan DM25: "Shoot 'em All" by rostuhan - DM26: "World of Pain" by Josephus "DH4050" Astartes + DM26: "World of Pain" by J.Astartes DM27: "White Lights" by Kevin "Velvetic" Martins and Jonathan "julnen" Martins DM28: "Bobby Sent Me" by Ralph "Ralphis" Vickers DM29: "SevenFour" by Ralph "Ralphis" Vickers @@ -140,6 +140,8 @@ Story: "Geoff's Vinyl Collection" by MoonDeLaAxel, remix of "Why?" by Joshua "wa --Previously Featured in 0.13.0-- +E1M1: "Stanky Leg Specialist" by Lola "Blueworrior" Harvey + E1M5: "The Raging Sun" by Kevin "Velvetic" Martins & Jonathan "julnen" Martins, modified by Goji MAP07: "Fun is Infinite at AGM" by continuum.mid diff --git a/Makefile b/Makefile index 4fdcea7d..31184f91 100644 --- a/Makefile +++ b/Makefile @@ -252,6 +252,7 @@ news-to-feed: NEWS.adoc prefix?=/usr/local bindir?=/bin docdir?=/share/doc +icodir?=/share/icons/hicolor/64x64/apps mandir?=/share/man waddir?=/share/games/doom target=$(DESTDIR)$(prefix) @@ -266,7 +267,7 @@ install-freedm: $(FREEDM) $(HTMLDOCS) $(MANUAL_PDF_FILES) \ install -Dm 644 dist/freedm.6 -t "$(target)$(mandir)/man6" install -Dm 644 $(FREEDM) -t "$(target)$(waddir)" install -Dm 644 dist/io.github.freedoom.FreeDM.png \ - -t "$(target)/share/icons" + -t "$(target)$(icodir)" install -Dm 644 CREDITS CREDITS-LEVELS CREDITS-MUSIC NEWS.html README.html -t "$(target)$(docdir)/freedm" install -Dm 644 COPYING.adoc "$(target)$(docdir)/freedm/COPYING" -install -Dm 644 $(MANUAL_PDF_FILES) -t "$(target)$(docdir)/freedm" @@ -289,9 +290,9 @@ install-freedoom: $(FREEDOOM1) $(FREEDOOM2) $(HTMLDOCS) \ install -Dm 644 dist/freedoom2.6 -t "$(target)$(mandir)/man6" install -Dm 644 $(FREEDOOM1) $(FREEDOOM2) -t "$(target)$(waddir)" install -Dm 644 dist/io.github.freedoom.Phase1.png \ - -t "$(target)/share/icons" + -t "$(target)$(icodir)" install -Dm 644 dist/io.github.freedoom.Phase2.png \ - -t "$(target)/share/icons" + -t "$(target)$(icodir)" install -Dm 644 CREDITS CREDITS-LEVELS CREDITS-MUSIC NEWS.html README.html \ -t "$(target)$(docdir)/freedoom" install -Dm 644 COPYING.adoc "$(target)$(docdir)/freedoom/COPYING" @@ -304,7 +305,7 @@ uninstall-freedm: $(RM) \ "$(target)/share/applications/io.github.freedoom.FreeDM.desktop" \ "$(target)/share/metainfo/io.github.freedoom.FreeDM.metainfo.xml" \ - "$(target)/share/icons/io.github.freedoom.FreeDM.png" \ + "$(target)$(icodir)/io.github.freedoom.FreeDM.png" \ "$(target)$(bindir)/freedm" \ "$(target)$(mandir)/man6/freedm.6" \ "$(target)$(waddir)/freedm.wad" \ @@ -316,7 +317,7 @@ uninstall-freedm: "$(target)$(docdir)/freedm/README.html" \ $(target)$(docdir)/freedm/freedoom-manual-??.pdf -rmdir -p "$(target)/share/applications" \ - "$(target)/share/metainfo" "$(target)/share/icons" \ + "$(target)/share/metainfo" "$(target)$(icodir)" \ "$(target)$(bindir)" "$(target)$(mandir)/man6" \ "$(target)$(waddir)" "$(target)$(docdir)/freedm" @@ -326,8 +327,8 @@ uninstall-freedoom: "$(target)/share/applications/io.github.freedoom.Phase2.desktop" \ "$(target)/share/metainfo/io.github.freedoom.Phase1.metainfo.xml" \ "$(target)/share/metainfo/io.github.freedoom.Phase2.metainfo.xml" \ - "$(target)/share/icons/io.github.freedoom.Phase1.png" \ - "$(target)/share/icons/io.github.freedoom.Phase2.png" \ + "$(target)$(icodir)/io.github.freedoom.Phase1.png" \ + "$(target)$(icodir)/io.github.freedoom.Phase2.png" \ "$(target)$(bindir)/freedoom1" \ "$(target)$(bindir)/freedoom2" \ "$(target)$(mandir)/man6/freedoom1.6" \ @@ -342,7 +343,7 @@ uninstall-freedoom: "$(target)$(docdir)/freedoom/README.html" \ $(target)$(docdir)/freedoom/freedoom-manual-??.pdf -rmdir -p "$(target)/share/applications" \ - "$(target)/share/metainfo" "$(target)/share/icons" \ + "$(target)/share/metainfo" "$(target)$(icodir)" \ "$(target)$(bindir)" "$(target)$(mandir)/man6" \ "$(target)$(waddir)" "$(target)$(docdir)/freedoom" diff --git a/README.adoc b/README.adoc index b5d1e1da..262817d9 100644 --- a/README.adoc +++ b/README.adoc @@ -1,15 +1,12 @@ = Freedoom -The Freedoom project aims to create a complete, free content first -person shooter game, but _Freedoom_ by itself is just the raw material -for a game. It must be paired with a compatible _Doom_ engine to be -played. +_Freedoom_ is a complete, free content first person shooter game, +based on the _Doom_ engine. -There is a massive https://doomwiki.org/wiki/Idgames_archive[back -catalog], spanning over two decades, containing thousands of _Doom_ -levels and other modifications (“mods”) made by fans of the game. -_Freedoom_ aims to be compatible with these and allows most to be -played without the need to use non-free software. +_Freedoom_ is not a program - rather, it consists of the levels, +artwork, sound effects and music that make up the game. To play +_Freedoom_, <> that +can play it. _Freedoom_ is actually three games in one, consisting of two single-player oriented campaigns and one set of levels designed @@ -24,15 +21,6 @@ monsters and a double-barrelled shotgun. This project aims for compatibility with _Doom II_ mods. *FreeDM*:: A 32-level game designed for competitive deathmatch play. -The engine uses a single file, such as +freedoom2.wad+, that contains -all the game data such as graphics, sound effects, music, and so on. -This file is often called an “IWAD” by those in the _Doom_ and -_Freedoom_ communities. While the _Doom_ engine source code is free, -you would normally still need one of the proprietary data files from -https://www.idsoftware.com/[id Software] to play _Doom_. _Freedoom_ -aims to create a free alternative: combined with the GPL-licensed -_Doom_ source code, this results in a completely free game. - For more information, see https://freedoom.github.io/. == How to play @@ -55,34 +43,31 @@ or your home directory. If _Freedoom_ comes packaged as part of your operating system distribution, it should already be installed into the proper location. -Hopefully, your engine of choice should already be capable of running -_Freedoom_ without extra configuration. This may not be the case, -however, if the engine does not recognize any of the filenames for -_Freedoom_, and might require manual intervention to make it so. One -of the following options should solve it: +For Unix-like operating systems, such as GNU/Linux or a BSD variant, +_Freedoom_ may be packaged and installed with programs named ++freedoom1+, +freedoom2+, and +freedm+ that automatically run an engine +for proper play. Desktop files may also be installed so that you can +start the game using a graphical interface and avoid the command line +a ltogether. - * Use the +-iwad+ command line parameter. For example, to play - Phase 2, you can enter +-iwad freedoom2.wad+ either at a command - line, or adding it to an application shortcut. - * Use the +DOOMWADPATH+ environment variable. Many engines support - this variable to add directories and/or files to their search - path. The exact syntax matches your operating system’s normal - +PATH+ environment variable. - * Rename the game files. This may be a bit crude, but you can - rename the files to match those of _Doom_’s. This is often the - easiest quick-fix, although it is normally desirable to use one of - the above methods if possible. +== Manual - ** +freedoom1.wad+ can be renamed to +doom.wad+ - ** +freedoom2.wad+ can be renamed to +doom2.wad+ - ** +freedm.wad+ can be renamed to +doom2.wad+ +Freedoom has a complete PDF format manual that describes how to play the +game, including an introductory tutorial and some tactical tips. It also +has information on the monsters and power-ups you'll encounter during +play. The manual is available in multiple languages and can be +downloaded https://freedoom.github.io/manual.html[on the website]. +Printed, physical manuals are also available for purchase. -Additionally, for Unix-like operating systems, such as GNU/Linux or a -BSD variant, _Freedoom_ may be packaged and installed with programs -named +freedoom1+, +freedoom2+, and +freedm+ that automatically run an -engine for proper play. Desktop files may also be installed so that -you can start the game using a graphical interface and avoid the -command line altogether. +== Compatibility + +A secondary goal of Freedoom is _compatibility_ with modifications +("mods") for the original Doom. There is a massive +https://doomwiki.org/wiki/Idgames_archive[back catalog], spanning over +three decades, containing thousands of _Doom_ levels and other +mods made by fans of the game. _Freedoom_ aims to be compatible with +these and allows most to be played without the need to use non-free +software. == What “free” means @@ -123,10 +108,11 @@ The general rules go as follows: permission to include it in the _Freedoom_ project. They may not place additional restrictions compared to the normal _Freedoom_ license. - * Do not try to emulate _Doom_ resources exactly. Where possible, - put effort to make new versions look visibly different from - _Doom_. This is a tough call, because our compatibility with - _Doom_ mods limits how far we can deviate, but it is feasible. + * Freedoom's name often leads some people to think that the project's + goal is to make a "free clone of Doom". This is not the case! While + compatibility with Doom is a goal, we are our building our own game. + Please make an effort to ensure your work is original and distinct, + and not just a copy of anything from Doom. * Be especially careful of “free textures” (or “free sounds” or “free graphics”) sites. Although these would appear at first to be okay to use, many are free for “non-commercial use only.” diff --git a/buildcfg.txt b/buildcfg.txt index bac38a16..0c84efa9 100644 --- a/buildcfg.txt +++ b/buildcfg.txt @@ -146,6 +146,10 @@ FREEDOOM ; Big font used by ZDoom-based ports for menu text. DBIGFONT +; Language used by ZDoom-based ports for string replacement +; and internationalization. +LANGUAGE + #ifdef FREEDM DEHACKED = fdm_deh UMAPINFO = fdmuminf @@ -871,6 +875,8 @@ M_VIDEO 0 1 M_WAD 0 1 M_WADOPT 0 1 M_CRISPY 0 1 +M_LVLTBL 0 1 +M_CSTSKL 0 1 BRDR_TL -5 -5 BRDR_T 0 -5 @@ -1391,19 +1397,19 @@ FIREE0 24 86 FIREF0 25 90 FIREG0 25 92 FIREH0 26 95 -KEENA0 10 68 ; commander keen -KEENB0 10 68 -KEENC0 10 68 -KEEND0 14 68 -KEENE0 13 68 -KEENF0 14 68 +KEENA0 15 68 ; commander keen +KEENB0 15 68 +KEENC0 15 68 +KEEND0 15 68 +KEENE0 19 68 +KEENF0 19 68 KEENG0 19 68 KEENH0 19 68 -KEENI0 19 68 -KEENJ0 19 67 -KEENK0 19 65 -KEENL0 19 22 -KEENM0 10 68 +KEENI0 19 69 +KEENJ0 19 68 +KEENK0 19 25 +KEENL0 19 27 +KEENM0 15 68 PAINA1 37 62 ; pain elemental PAINA2A8 43 60 @@ -2465,9 +2471,9 @@ COL4A0 18 40 COL5A0 18 53 COL5B0 18 53 COL6A0 18 49 -FCANA0 12 62 -FCANB0 12 62 -FCANC0 12 62 +FCANA0 12 57 +FCANB0 12 57 +FCANC0 12 57 FSKUA0 17 47 FSKUB0 17 47 FSKUC0 17 47 @@ -2488,10 +2494,10 @@ PLSEB0 15 19 PLSEC0 17 24 PLSED0 18 27 PLSEE0 19 30 -PLSFA0 -115 -86 -PLSFB0 -115 -85 -PLSGA0 -115 -104 -PLSGB0 -50 -100 +PLSFA0 -118 -95 +PLSFB0 -118 -86 +PLSGA0 -118 -104 +PLSGB0 -73 -98 PLSSA0 9 12 PLSSB0 9 12 POL1A0 22 62 @@ -2792,4 +2798,4 @@ SFLR4_4 SFLR5_1 SFLR5_4 SLIME13A - +MFLR8_5 diff --git a/dist/freedoom b/dist/freedoom index eeba67f4..343bb059 100755 --- a/dist/freedoom +++ b/dist/freedoom @@ -6,7 +6,7 @@ # "doom" is Debian’s generic name for their alternatives system. -PORTS="doom odamex gzdoom crispy-doom chocolate-doom prboom-plus" +PORTS="doom odamex gzdoom dsda-doom woof crispy-doom chocolate-doom prboom-plus" # Just a single argument starting the command is allowed, -p, in order # to explicitly set a port on the command line. -- is also supported diff --git a/flats/flat5_6.png b/flats/flat5_6.png index a9b15d68..f9d0cf31 100644 Binary files a/flats/flat5_6.png and b/flats/flat5_6.png differ diff --git a/flats/mflr8_4.png b/flats/mflr8_4.png index d085e0be..13b4335c 100644 Binary files a/flats/mflr8_4.png and b/flats/mflr8_4.png differ diff --git a/flats/mflr8_5.png b/flats/mflr8_5.png new file mode 100644 index 00000000..08497433 Binary files /dev/null and b/flats/mflr8_5.png differ diff --git a/graphics/stfevl0.png b/graphics/stfevl0.png index 6a0ab81f..325d8dd1 100644 Binary files a/graphics/stfevl0.png and b/graphics/stfevl0.png differ diff --git a/graphics/stfevl1.png b/graphics/stfevl1.png index ac56a7d1..bc9fc0e9 100644 Binary files a/graphics/stfevl1.png and b/graphics/stfevl1.png differ diff --git a/graphics/stfevl2.png b/graphics/stfevl2.png index 3c702a2f..063ae352 100644 Binary files a/graphics/stfevl2.png and b/graphics/stfevl2.png differ diff --git a/graphics/stfgod0.png b/graphics/stfgod0.png index dc84ddfa..24281770 100644 Binary files a/graphics/stfgod0.png and b/graphics/stfgod0.png differ diff --git a/graphics/stfkill0.png b/graphics/stfkill0.png index 12397531..e53bb197 100644 Binary files a/graphics/stfkill0.png and b/graphics/stfkill0.png differ diff --git a/graphics/stfkill1.png b/graphics/stfkill1.png index 68faf3c5..aa6e5a25 100644 Binary files a/graphics/stfkill1.png and b/graphics/stfkill1.png differ diff --git a/graphics/stfkill2.png b/graphics/stfkill2.png index a2bc5a93..61cef30c 100644 Binary files a/graphics/stfkill2.png and b/graphics/stfkill2.png differ diff --git a/graphics/stfst00.png b/graphics/stfst00.png index fb82563b..1983a5b7 100644 Binary files a/graphics/stfst00.png and b/graphics/stfst00.png differ diff --git a/graphics/stfst01.png b/graphics/stfst01.png index b5374c1e..944ae6f9 100644 Binary files a/graphics/stfst01.png and b/graphics/stfst01.png differ diff --git a/graphics/stfst02.png b/graphics/stfst02.png index 5e4b9b8d..37e20c8f 100644 Binary files a/graphics/stfst02.png and b/graphics/stfst02.png differ diff --git a/graphics/stfst10.png b/graphics/stfst10.png index abd552a4..82c01328 100644 Binary files a/graphics/stfst10.png and b/graphics/stfst10.png differ diff --git a/graphics/stfst11.png b/graphics/stfst11.png index 74ac5e51..4bdb5845 100644 Binary files a/graphics/stfst11.png and b/graphics/stfst11.png differ diff --git a/graphics/stfst12.png b/graphics/stfst12.png index df5a2bed..5f0f63e9 100644 Binary files a/graphics/stfst12.png and b/graphics/stfst12.png differ diff --git a/graphics/stfst20.png b/graphics/stfst20.png index e75f3829..03935abf 100644 Binary files a/graphics/stfst20.png and b/graphics/stfst20.png differ diff --git a/graphics/stfst21.png b/graphics/stfst21.png index 167a4e24..9ff243f9 100644 Binary files a/graphics/stfst21.png and b/graphics/stfst21.png differ diff --git a/graphics/stfst22.png b/graphics/stfst22.png index 70898308..2a309ca7 100644 Binary files a/graphics/stfst22.png and b/graphics/stfst22.png differ diff --git a/graphics/stftl00.png b/graphics/stftl00.png index 97d06009..8742364b 100644 Binary files a/graphics/stftl00.png and b/graphics/stftl00.png differ diff --git a/graphics/stftl10.png b/graphics/stftl10.png index e990b485..802af4de 100644 Binary files a/graphics/stftl10.png and b/graphics/stftl10.png differ diff --git a/graphics/stftl20.png b/graphics/stftl20.png index 3755152c..cbeeef33 100644 Binary files a/graphics/stftl20.png and b/graphics/stftl20.png differ diff --git a/graphics/stftr00.png b/graphics/stftr00.png index 37fd5f88..2fdaba05 100644 Binary files a/graphics/stftr00.png and b/graphics/stftr00.png differ diff --git a/graphics/stftr10.png b/graphics/stftr10.png index 820565b6..eeff6250 100644 Binary files a/graphics/stftr10.png and b/graphics/stftr10.png differ diff --git a/graphics/stftr20.png b/graphics/stftr20.png index 3c8d4145..f238b4ac 100644 Binary files a/graphics/stftr20.png and b/graphics/stftr20.png differ diff --git a/graphics/text/Makefile b/graphics/text/Makefile index d0da8ef9..cdc23de3 100644 --- a/graphics/text/Makefile +++ b/graphics/text/Makefile @@ -7,7 +7,7 @@ TEXTGEN_GRAPHIC_LUMPS = \ m_gdlow.png m_hurt.png m_jkill.png m_lgttl.png m_loadg.png \ m_messg.png m_msens.png m_msgoff.png m_msgon.png m_musvol.png \ m_newg.png m_ngame.png m_nmare.png m_option.png m_optttl.png \ - m_quitg.png m_rdthis.png m_rough.png m_saveg.png \ + m_quitg.png m_rdthis.png m_rough.png m_saveg.png \ m_scrnsz.png m_sfxvol.png m_sgttl.png m_skill.png m_svol.png \ m_about.png m_accel.png m_auto.png m_chat.png m_chatm.png \ m_compat.png m_demos.png m_dmflag.png m_enem.png m_etcopt.png \ @@ -16,7 +16,7 @@ TEXTGEN_GRAPHIC_LUMPS = \ m_mess.png m_mouse.png m_multi.png m_player.png m_serial.png \ m_setup.png m_sound.png m_stat.png m_status.png m_tcpip.png \ m_versen.png m_video.png m_wad.png m_wadopt.png m_weap.png \ - m_crispy.png \ + m_crispy.png m_lvltbl.png m_cstskl.png \ prboom.png t_phase1.png t_phase2.png \ m_ultra.png wibp1.png wibp2.png wibp3.png wibp4.png \ wicolon.png wienter.png wif.png wifrgs.png wipcnt.png \ @@ -70,59 +70,23 @@ help.png: text_strings helpbg.png ./smtextgen help.png 320x200 \ -background "helpbg.png" \ 150,2 "file:helpttl.png" \ - 10,20 "Weapons" \ - 20,33 "file:../../sprites/csawa0.png" \ - 90,25 "file:../../sprites/shota0.png" \ - 90,40 "file:../../sprites/sgn2a0.png" \ - 154,15 "file:../../sprites/mguna0.png" \ - 161,35 "file:../../sprites/launa0.png" \ - 235,18 "file:../../sprites/plasa0.png" \ - 235,33 "file:../../sprites/bfuga0.png" \ - 10,62 "Bullets" \ - 80,57 "file:../../sprites/ammoa0.png" \ - 68,62 "file:../../sprites/clipa0.png" \ - 113,62 "Shells" \ - 180,57 "file:../../sprites/sboxa0.png" \ - 163,62 "file:../../sprites/shela0.png" \ - 252,60 "Backpack" \ - 272,69 "file:../../sprites/bpaka0.png" \ - 10,85 "Missiles" \ - 90,75 "file:../../sprites/broka0.png" \ - 76,75 "file:../../sprites/rocka0.png" \ - 158,85 "Energy" \ - 225,76 "file:../../sprites/celpa0.png" \ - 206,84 "file:../../sprites/cella0.png" \ - 10,110 "Health" \ - 63,106 "file:../../sprites/bon1a0.png" \ - 100,101 "file:../../sprites/media0.png" \ - 79,113 "file:../../sprites/stima0.png" \ - 132,102 "file:../../sprites/pstra0.png" \ - 180,110 "Armor" \ - 276,105 "file:../../sprites/arm2b0.png" \ - 240,102 "file:../../sprites/arm1b0.png" \ - 225,109 "file:../../sprites/bon2b0.png" \ - 145,134 "Map" \ - 175,122 "file:../../sprites/pmapa0.png" \ - 10,134 "Big Boost" \ - 84,127 "file:../../sprites/soula0.png" \ - 110,127 "file:../../sprites/megaa0.png" \ - 10,155 "Light" \ - 48,152 "file:../../sprites/pvisa0.png" \ - 34,177 "Cloak" \ - 80,161 "file:../../sprites/pinsa0.png" \ - 119,177 "Invuln." \ - 174,166 "file:../../sprites/pinva0.png" \ - 265,137 "Keys" \ - 254,149 "file:../../sprites/rkeya0.png" \ - 271,149 "file:../../sprites/ykeya0.png" \ - 288,149 "file:../../sprites/bkeya0.png" \ - 255,173 "file:../../sprites/rskua0.png" \ - 273,173 "file:../../sprites/yskua0.png" \ - 291,173 "file:../../sprites/bskua0.png" \ - 130,155 "Rescue suit" \ - 215,137 "file:../../sprites/suita0.png" \ - 2,192 "https://freedoom.github.io/" \ - 214,192 " to return" + 175,23 "file:../../sprites/launa0.png" \ + 185,43 "file:../../sprites/shota0.png" \ + 240,35 "file:../../sprites/broka0.png" \ + 248,30 "file:../../sprites/shela0.png" \ + 267,23 "file:../../sprites/ammoa0.png" \ + 20,64 "file:../../sprites/media0.png" \ + 55,74 "file:../../sprites/stima0.png" \ + 170,92 "file:../../sprites/pinva0.png" \ + 200,100 "file:../../sprites/pvisa0.png" \ + 232,95 "file:../../sprites/pstra0.png" \ + 20,123 "file:../../sprites/rkeya0.png" \ + 35,123 "file:../../sprites/ykeya0.png" \ + 28,133 "file:../../sprites/bkeya0.png" \ + 62,123 "file:../../sprites/rskua0.png" \ + 54,136 "file:../../sprites/yskua0.png" \ + 69,136 "file:../../sprites/bskua0.png" \ + 10,30 "include:help.txt" cp $@ ../ diff --git a/graphics/text/config.py b/graphics/text/config.py index 4c5a164e..34cf7a3e 100644 --- a/graphics/text/config.py +++ b/graphics/text/config.py @@ -236,6 +236,10 @@ red_graphics = { "m_multi": "Multiplayer", # Crispy Doom's Crispness menu: "m_crispy": "Crispness", + # DSDA's Level Table + "m_lvltbl": "Level Table", + # Nugget's Custom Skill + "m_cstskl": "Custom Skill...", } diff --git a/graphics/text/help.txt b/graphics/text/help.txt new file mode 100644 index 00000000..6a9041ce --- /dev/null +++ b/graphics/text/help.txt @@ -0,0 +1,20 @@ +Build up your arsenal! +Always look out for +new weapons and ammo. + + You die if your health reaches + zero. Health packs replenish + your strength. + +Some rare items will +give special powers +and abilities. + + Some doors are locked! To open + them, you will have to find + the right colored key. + + +For more info, see the Freedoom manual: + + https://freedoom.github.io/manual.html diff --git a/levels/dm30.wad b/levels/dm30.wad index 5b750f4f..7d0ca0ee 100644 Binary files a/levels/dm30.wad and b/levels/dm30.wad differ diff --git a/levels/e1m1.wad b/levels/e1m1.wad index 98d3dac0..1da382fa 100644 Binary files a/levels/e1m1.wad and b/levels/e1m1.wad differ diff --git a/levels/map01.wad b/levels/map01.wad index c5970332..12206dd5 100644 Binary files a/levels/map01.wad and b/levels/map01.wad differ diff --git a/levels/map03.wad b/levels/map03.wad index 94b64a53..e9a72125 100644 Binary files a/levels/map03.wad and b/levels/map03.wad differ diff --git a/levels/map06.wad b/levels/map06.wad index 4ea4f2ea..86de5afe 100644 Binary files a/levels/map06.wad and b/levels/map06.wad differ diff --git a/levels/map25.wad b/levels/map25.wad index 9c432ca7..accca00a 100644 Binary files a/levels/map25.wad and b/levels/map25.wad differ diff --git a/lumps/dehacked/dehacked.txt b/lumps/dehacked/dehacked.txt index c73b6c88..a9ef25b7 100644 --- a/lumps/dehacked/dehacked.txt +++ b/lumps/dehacked/dehacked.txt @@ -238,7 +238,7 @@ PD_YELLOWS = Yellow skeleton key needed for this door. PD_ANY = Any key will open this door. PD_ALL3 = This door requires all three keys. PD_ALL6 = This door requires all six keys! -HUSTR_E1M1 = E1M1: Outer Prison +HUSTR_E1M1 = E1M1: Filtration System HUSTR_E1M2 = E1M2: Communications Center HUSTR_E1M3 = E1M3: Waste Disposal HUSTR_E1M4 = E1M4: Supply Depot @@ -321,7 +321,7 @@ HUSTR_26 = DM26: Crater Excavation HUSTR_27 = DM27: The Exile HUSTR_28 = DM28: Weapons Factory HUSTR_29 = DM29: Unusual Territory -HUSTR_30 = DM30: Last Man Standing +HUSTR_30 = DM30: Violent Vicinity HUSTR_31 = DM31: Desolated Fort HUSTR_32 = DM32: Fourplay #else diff --git a/lumps/fdmuminf.lmp b/lumps/fdmuminf.lmp index a6c4106b..8901eb7a 100644 --- a/lumps/fdmuminf.lmp +++ b/lumps/fdmuminf.lmp @@ -356,14 +356,14 @@ map MAP29 map MAP30 { - LevelName = "Last Man Standing" + LevelName = "Violent Vicinity" Label = "DM30" LevelPic = "CWILV29" Next = "MAP01" Music = "D_OPENIN" SkyTexture = "SKY3" InterText = clear - Author = "deathz0r" + Author = "deathz0r & Xindage" } map MAP31 diff --git a/lumps/language.lmp b/lumps/language.lmp new file mode 100644 index 00000000..db45575c --- /dev/null +++ b/lumps/language.lmp @@ -0,0 +1,1083 @@ +/* U.S. English. (Sorry, it's not English English.) */ + +// SPDX-License-Identifier: BSD-3-Clause + +[enu default] + +SECRETMESSAGE = "Found a secret!"; + +QUITMSG = "AGM's investors are planning\nan even worse nightmare.\nPress Y if you don't care."; + +// Quit Phase 1 messages +QUITMSG1 = "Why would you..."; +QUITMSG2 = "Hey buddy, there's still\nwork to be done.\nAre you sure you want to quit?"; +QUITMSG3 = "Press N to keep\nannihilating aliens.\nPress Y to surrender."; +QUITMSG4 = "I wouldn't press Y if I were you.\nSocial media is much worse."; +QUITMSG5 = "If you leave now, it's over."; +QUITMSG6 = "If you give up, this\nfight will never end.\nWe still need you\nto restore our freedom."; +QUITMSG7 = "They'll never rest.\nWill you rest?"; + +// Quit Phase 2 messages +QUITMSG8 = "What do you do with your life?"; +QUITMSG9 = "Don't press Y!\nThere's an army of\nzombies on your desktop!"; +QUITMSG10 = "Your revenge is unsatisfied.\nAre you sure you want to quit?"; +QUITMSG11 = "Press Y to let AGM decimate\nEarth with their monstrosities."; +QUITMSG12 = "Don't quit!\nMonsters will kill\nyou while you sleep."; +QUITMSG13 = "Do you think you can\nwalk away just like that?"; +QUITMSG14 = "Not even going to\nstay for Deathmatch?"; + +NIGHTMARE = "The game is not designed to be\n" + "beatable at this skill level.\n" + "\n" + "Not recommended unless you're\n" + "really that good - or bored.\n" + "\n" + "(Press Y to confirm)"; +DOSY = "(Press Y to exit the program.)"; +GOTARMOR = "Put on a force field vest."; +GOTMEGA = "Put on the attuned force field armor!"; +GOTHTHBONUS = "Health boosted!"; +GOTARMBONUS = "Armor boosted!"; +GOTSTIM = "Took a health refill."; +GOTMEDINEED = "Took a large health refill. Never give up!"; +GOTMEDIKIT = "Took a large health refill."; +GOTSUPER = "Ectoplasmic surge!"; +GOTBLUECARD = "Blue passcard secured!"; +GOTYELWCARD = "Yellow passcard secured!"; +GOTREDCARD = "Red passcard secured!"; +GOTBLUESKUL = "Blue skeleton key secured!"; +GOTYELWSKUL = "Yellow skeleton key secured!"; +GOTREDSKUL = "Red skeleton key secured!"; +GOTINVUL = "Vanguard of the gods!"; +GOTBERSERK = "Smash them to pieces!"; +GOTINVIS = "Invisibility!"; +GOTSUIT = "Rescue operations suit."; +GOTMAP = "Area survey map."; +GOTVISOR = "Low-light goggles."; +GOTMSPHERE = "Negentropic surge!"; +GOTCLIP = "Picked up some bullets."; +GOTCLIPBOX = "Picked up a case of bullets."; +GOTROCKET = "Picked up a missile."; +GOTROCKBOX = "Picked up a crate of missiles."; +GOTCELL = "Picked up an energy recharge."; +GOTCELLBOX = "Picked up a large energy recharge."; +GOTSHELLS = "Picked up some shotgun shells."; +GOTSHELLBOX = "Picked up a box of shotgun shells."; +GOTBACKPACK = "A backpack for all your ammo storage needs!"; +GOTBFG9000 = "Got the SKAG 1337... time to kick some ass!"; +GOTCHAINGUN = "Got the minigun!"; +GOTCHAINSAW = "Got the ripsaw!"; +GOTLAUNCHER = "Got the missile launcher!"; +GOTPLASMA = "Got the polaric energy weapon!"; +GOTSHOTGUN = "Got the pump-action shotgun!"; +GOTSHOTGUN2 = "Got the double-barrelled shotgun!"; +PD_BLUEO = "Blue key needed."; +PD_REDO = "Red key needed."; +PD_YELLOWO = "Yellow key needed."; +PD_BLUEK = "Blue key needed for this door."; +PD_REDK = "Red key needed for this door."; +PD_YELLOWK = "Yellow key needed for this door."; + +PD_BLUECO = "Blue passcard needed for this object."; +PD_REDCO = "Red passcard needed for this object."; +PD_YELLOWCO = "Yellow passcard needed for this object."; +PD_BLUESO = "Blue skeleton key needed for this object."; +PD_REDSO = "Red skeleton key needed for this object."; +PD_YELLOWSO = "Yellow skeleton key needed for this object."; +PICKUP_PISTOL_DROPPED = "Got the handgun!"; + +// Level names +HUSTR_E1M1 = "E1M1: Outer Prison"; +HUSTR_E1M2 = "E1M2: Communications Center"; +HUSTR_E1M3 = "E1M3: Waste Disposal"; +HUSTR_E1M4 = "E1M4: Supply Depot"; +HUSTR_E1M5 = "E1M5: Armory"; +HUSTR_E1M6 = "E1M6: Training Facility"; +HUSTR_E1M7 = "E1M7: Xenobiotic Materials Lab"; +HUSTR_E1M8 = "E1M8: Outpost Quarry"; +HUSTR_E1M9 = "E1M9: Nutrient Recycling"; +HUSTR_E2M1 = "E2M1: Elemental Gate"; +HUSTR_E2M2 = "E2M2: Shifter"; +HUSTR_E2M3 = "E2M3: Reclaimed Facilities"; +HUSTR_E2M4 = "E2M4: Flooded Installation"; +HUSTR_E2M5 = "E2M5: Underground Hub"; +HUSTR_E2M6 = "E2M6: Hidden Sector"; +HUSTR_E2M7 = "E2M7: Control Complex"; +HUSTR_E2M8 = "E2M8: Containment Cell"; +HUSTR_E2M9 = "E2M9: Fortress 31"; +HUSTR_E3M1 = "E3M1: Land of the Lost"; +HUSTR_E3M2 = "E3M2: Geothermal Tunnels"; +HUSTR_E3M3 = "E3M3: Sacrificial Bastion"; +HUSTR_E3M4 = "E3M4: Oblation Temple"; +HUSTR_E3M5 = "E3M5: Infernal Hallows"; +HUSTR_E3M6 = "E3M6: Igneous Intrusion"; +HUSTR_E3M7 = "E3M7: No Regrets"; +HUSTR_E3M8 = "E3M8: Ancient Lair"; +HUSTR_E3M9 = "E3M9: Acquainted With Grief"; +HUSTR_E4M1 = "E4M1: Maintenance Area"; +HUSTR_E4M2 = "E4M2: Research Complex"; +HUSTR_E4M3 = "E4M3: Central Computing"; +HUSTR_E4M4 = "E4M4: Hydroponic Facility"; +HUSTR_E4M5 = "E4M5: Engineering Station"; +HUSTR_E4M6 = "E4M6: Command Center"; +HUSTR_E4M7 = "E4M7: Waste Treatment"; +HUSTR_E4M8 = "E4M8: Launch Bay"; +HUSTR_E4M9 = "E4M9: Operations"; + +HUSTR_1 = "MAP01: Hydroelectric Plant"; +HUSTR_2 = "MAP02: Filtration Tunnels"; +HUSTR_3 = "MAP03: Crude Processing Center"; +HUSTR_4 = "MAP04: Containment Bay"; +HUSTR_5 = "MAP05: Sludge Burrow"; +HUSTR_6 = "MAP06: Janus Terminal"; +HUSTR_7 = "MAP07: Logic Gate"; +HUSTR_8 = "MAP08: Astronomy Complex"; +HUSTR_9 = "MAP09: Datacenter"; +HUSTR_10 = "MAP10: Deadly Outlands"; +HUSTR_11 = "MAP11: Dimensional Rift Observatory"; +HUSTR_12 = "MAP12: Railroads"; +HUSTR_13 = "MAP13: Station Earth"; +HUSTR_14 = "MAP14: Nuclear Zone"; +HUSTR_15 = "MAP15: Hostile Takeover"; +HUSTR_16 = "MAP16: Urban Jungle"; +HUSTR_17 = "MAP17: City Capitol"; +HUSTR_18 = "MAP18: Aquatics Lab"; +HUSTR_19 = "MAP19: Sewage Control"; +HUSTR_20 = "MAP20: Blood Ember Fortress"; +HUSTR_21 = "MAP21: Under Realm"; +HUSTR_22 = "MAP22: Remanasu"; +HUSTR_23 = "MAP23: Underground Facility"; +HUSTR_24 = "MAP24: Abandoned Teleporter Lab"; +HUSTR_25 = "MAP25: Persistence of Memory"; +HUSTR_26 = "MAP26: Dark Depths"; +HUSTR_27 = "MAP27: Palace of Red"; +HUSTR_28 = "MAP28: Grim Redoubt"; +HUSTR_29 = "MAP29: Melting Point"; +HUSTR_30 = "MAP30: Jaws of Defeat"; +HUSTR_31 = "MAP31: Be Quiet"; +HUSTR_32 = "MAP32: Not Sure"; + +// FreeDM level names +$ifgame(freedm) HUSTR_1 = "DM01: Tech Test"; +$ifgame(freedm) HUSTR_2 = "DM02: Natural Station"; +$ifgame(freedm) HUSTR_3 = "DM03: Issues of Claveria"; +$ifgame(freedm) HUSTR_4 = "DM04: Steel"; +$ifgame(freedm) HUSTR_5 = "DM05: Dense Fields"; +$ifgame(freedm) HUSTR_6 = "DM06: Temple of Ammon"; +$ifgame(freedm) HUSTR_7 = "DM07: Main Stronghold"; +$ifgame(freedm) HUSTR_8 = "DM08: Artifact Base"; +$ifgame(freedm) HUSTR_9 = "DM09: Industrial Outland"; +$ifgame(freedm) HUSTR_10 = "DM10: Detached Grounds"; +$ifgame(freedm) HUSTR_11 = "DM11: Isolated Facility"; +$ifgame(freedm) HUSTR_12 = "DM12: Up 'n' Down Canyon"; +$ifgame(freedm) HUSTR_13 = "DM13: Unholy Blood"; +$ifgame(freedm) HUSTR_14 = "DM14: Technical Assault"; +$ifgame(freedm) HUSTR_15 = "DM15: Shallow Complex"; +$ifgame(freedm) HUSTR_16 = "DM16: Barren Alleys"; +$ifgame(freedm) HUSTR_17 = "DM17: Underwoods"; +$ifgame(freedm) HUSTR_18 = "DM18: Deserted Courtyard"; +$ifgame(freedm) HUSTR_19 = "DM19: Tech Isle"; +$ifgame(freedm) HUSTR_20 = "DM20: Warehouse"; +$ifgame(freedm) HUSTR_21 = "DM21: Refinery"; +$ifgame(freedm) HUSTR_22 = "DM22: Military Depot"; +$ifgame(freedm) HUSTR_23 = "DM23: Confrontation"; +$ifgame(freedm) HUSTR_24 = "DM24: Flooded Base"; +$ifgame(freedm) HUSTR_25 = "DM25: Mansion Yard"; +$ifgame(freedm) HUSTR_26 = "DM26: Acidic Crypt"; +$ifgame(freedm) HUSTR_27 = "DM27: The Exile"; +$ifgame(freedm) HUSTR_28 = "DM28: Weapons Factory"; +$ifgame(freedm) HUSTR_29 = "DM29: Unusual Territory"; +$ifgame(freedm) HUSTR_30 = "DM30: Last Man Standing"; +$ifgame(freedm) HUSTR_31 = "DM31: Desolated Fort"; +$ifgame(freedm) HUSTR_32 = "DM32: Fourplay"; + +AMSTR_FOLLOWON = "Map following player."; +AMSTR_FOLLOWOFF = "Map no longer following player."; +AMSTR_GRIDON = "Map grid on."; +AMSTR_GRIDOFF = "Map grid off."; +AMSTR_MARKEDSPOT = "Added map bookmark."; +AMSTR_MARKSCLEARED = "All map bookmarks cleared."; +STSTR_MUS = "Music changed."; +STSTR_NOMUS = "Unknown music track?"; +STSTR_DQDON = "God mode on."; +STSTR_DQDOFF = "God mode off."; +STSTR_DQD2ON = "Ultimate God mode on."; +STSTR_DQD2OFF = "Ultimate God mode off."; +STSTR_KFAADDED = "Keys, weapons and ammo added."; +STSTR_FAADDED = "Weapons and ammo added."; +STSTR_NCON = "Noclip on."; +STSTR_NCOFF = "Noclip off."; +STSTR_NC2ON = "Noclip 2 on."; +STSTR_BEHOLD = "vanguard, smash, invis, rescue, area or light?"; +STSTR_CHOPPERS = "Vroom!"; + +// End-of-episode texts, now with a consistent story. Feel free to edit them. +E1TEXT = + "Free at last from that dreadful outpost!\n" + "But you're still stuck on this rock, with\n" + "AGM and all their monstrous 'experiments.'\n" + "Best not to dwell on what evil horrors\n" + "they were going to create from you...\n" + "\n" + "Damn alien teleporter ate your gear.\n" + "The air is hot and muggy, and smells of\n" + "strange, intoxicating vegetation. You see\n" + "what looks like AGM corpo tech patched\n" + "over old, overgrown alien structures.\n" + "Nothing close to the tech needed for this\n" + "existed at the outpost, meaning there must\n" + "be a starport nearby. To Earth. To freedom.\n" + "\n" + "Just gotta hope that ship will launch\n" + "from these routed, infested ruins..."; +E2TEXT = + "The massive brutes collapse onto the\n" + "ground, falling apart bit by bit.\n" + "The starport is yours.\n" + "\n" + "But no ship: the launch bay sits empty,\n" + "leaving only a massive teleporter pad.\n" + "Limited inorganics. Fixed destination.\n" + "\n" + "The name suggests it's probably the new\n" + "AGM ship hub in this remote star cluster.\n" + "Bastards owe you for what they've done,\n" + "so what even is interstellar piracy\n" + "but a bit of D.I.Y. law enforcement?\n" + "\n" + "You board the platform and fade away.\n" + "Next stop: Horizon."; +E3TEXT = + "The abomination explodes into oblivion.\n" + "What the hell even was that?\n" + "\n" + "As the shadow sets over this red rock,\n" + "you realize that you're now trapped here.\n" + "At least you've got more space in this\n" + "wasteland than your old cell.\n" + "\n" + "You kick the corpse in anger, and it feels\n" + "good. You kick it again, and a remote falls\n" + "out. You press the button, and the ground\n" + "gives way to reveal a teleporter. You look\n" + "at the gizmo - it says 'To Double Impact.'\n" + "\n" + "Wherever or whatever that is, you pray\n" + "to any listening deity that there's\n" + "a working ship on the other side."; +E4TEXT = + "Suppressing fire echoes above as the last\n" + "survivors flee the ship. The launch process\n" + "is irreversible: killing you now would only\n" + "bring a slow death drifting through space.\n" + "\n" + "Fifty-nine. Fifty-eight. Fifty-seven. . .\n" + "You melt into the pilot's seat, lost in the\n" + "voice of an automated assembly of angels\n" + "delivering you from this wretched rock.\n" + "\n" + "The ship rumbles as she wakes up;\n" + "you think of Earth as she lifts off.\n" + "Hopefully AGM won't find you there:\n" + "they've got the outbreak to deal with,\n" + "so that'll give you some time.\n" + "\n" + "Destination: Earth!"; +// After MAP06, before MAP07: +C1TEXT = + "Not even Earth is safe. The monsters show\n" + "up ahead of you everywhere you run.\n" + "Where are they even coming from?\n" + "Despite all the other destruction they've\n" + "wrought, the teleportation infrastructure\n" + "remains intact - you might be able to\n" + "get back to civilization this way.\n" + "\n" + "You find an old pad and boot it up.\n" + "Connection live. Handshake established.\n" + "\n" + "Growling and chittering on the intercom.\n" + "\n" + "Planted your feet.\n" + "Checked your weapons.\n" + "Time to punch through."; +// After MAP11, before MAP12: +C2TEXT = + "You didn't find anyone alive. Again.\n" + "\n" + "The fighting is taking its toll on you.\n" + "The pain. The brutality. The loneliness.\n" + "There's got to be a way to somewhere,\n" + "something that isn't... this.\n" + "\n" + "A train rumbles in the distance.\n" + "\n" + "You follow the sound down the empty road\n" + "and reach the edge of a railyard.\n" + "\n" + "Trains mean cities.\n" + "Cities mean people.\n" + "\n" + "Right?"; +// After MAP20, before MAP21: +C3TEXT = + "Here is no AGM but only monsters.\n" + "Monsters, no humans and dusty days\n" + "sleeping in old ruins and eating scraps.\n" + "No one has escaped this wasteland alive.\n" + "\n" + "You've been tracking their movements.\n" + "AGM records and alien scrawlings point\n" + "to something big worming its way through\n" + "the entire teleportation network.\n" + "Sending its nightmare armies of brain-\n" + "scrambled sapients - including humans -\n" + "to conquer all known space.\n" + "\n" + "And now you're fighting at its doorstep.\n" + "\n" + "This could be the beginning\n" + "of your freedom - or your doom."; +// After MAP30 (endgame text): +C4TEXT = + "The evil thing becomes unstable.\n" + "Its final roars echo throughout the room\n" + "until it crumples into scrap metal.\n" + "\n" + "A targeting portal opens, blissfully\n" + "unaware of its master's demise.\n" + "\n" + "On the other side you see a small town.\n" + "You ditch your weapons and slip through,\n" + "leaving AGM and all its horrors behind.\n" + "\n" + "No one will know who saved them.\n" + "\n" + "No one will know what happened here.\n" + "\n" + "No one will ever find you again."; +// Before MAP31 (secret level #1): +C5TEXT = + "You step into the teleporter. You feel a\n" + "familiar flash and... you're in a cage?\n" + "Jailed?\n" + "\n" + "There are other cages in here. Occupied.\n" + "So is this how they capture humans?\n" + "Or did they set this up specially for you,\n" + "as a reward for being such a monkey wrench\n" + "in their plans?\n" + "\n" + "The guards haven't noticed you - yet.\n" + "Any noise could mean death. Or worse.\n" + "\n" + "When they zombify you, are you awake the\n" + "entire time, locked inside of your brain?\n" + "\n" + "You'd rather not find out."; +// Before MAP32 (secret level #2): +C6TEXT = + "Forcibly uncaged again. Good job.\n" + "\n" + "But where are you? The air and gravity\n" + "still feel like whatever planet that\n" + "strange prison had been on.\n" + "\n" + "You look around and the layout triggers\n" + "some old memories from history class.\n" + "\n" + "This is an arena.\n" + "Where they send prisoners to die.\n" + "That wasn't an exit - but an entrance.\n" + "\n" + "You will find your way back to the city,\n" + "but it will have to be on the other side\n" + "of a few homicidal mutants..."; + +// Cast list (must appear in this order) +CC_ZOMBIE = "zombie"; +CC_SHOTGUN = "shotgun zombie"; +CC_HEAVY = "minigun zombie"; +CC_IMP = "serpentipede"; +CC_DEMON = "flesh worm"; +CC_LOST = "hatchling"; +CC_CACO = "trilobite"; +CC_HELL = "pain bringer"; +CC_BARON = "pain lord"; +CC_ARACH = "technospider"; +CC_PAIN = "matribite"; +CC_REVEN = "octaminator"; +CC_MANCU = "combat slug"; +CC_ARCH = "necromancer"; +CC_SPIDER = "large technospider"; +CC_CYBER = "assault tripod"; +CC_HERO = "savior of humanity"; + +// Friendly names +FN_ZOMBIE = "Zombie"; +FN_SHOTGUN = "Shotgun Zombie"; +FN_HEAVY = "Minigun Zombie"; +FN_IMP = "Serpentipede"; +FN_DEMON = "Flesh Worm"; +FN_SPECTRE = "Stealth Worm"; +FN_LOST = "Hatchling"; +FN_CACO = "Trilobite"; +FN_HELL = "Pain Bringer"; +FN_BARON = "Pain Lord"; +FN_ARACH = "Technospider"; +FN_PAIN = "Matribute"; +FN_REVEN = "Octaminator"; +FN_MANCU = "Combat Slug"; +FN_ARCH = "Necromancer"; +FN_SPIDER = "Large Technospider"; +FN_CYBER = "Assault Tripod"; +FN_WOLFSS = "Spanish Sailor"; + +// New strings from BOOM +PD_BLUEC = "Blue passcard needed for this door."; +PD_REDC = "Red passcard needed for this door."; +PD_YELLOWC = "Yellow passcard needed for this door."; +PD_BLUES = "Blue skeleton key needed for this door."; +PD_REDS = "Red skeleton key needed for this door."; +PD_YELLOWS = "Yellow skeleton key needed for this door."; +PD_ANY = "Any key will open this door."; +PD_ANYOBJ = "Any key will activate this object."; +PD_ALL3 = "This door requires all three keys."; +PD_ALL3O = "This object requires all three keys."; +PD_ALL6 = "This door requires all six keys!"; +PD_ALL6O = "This object requires all six keys!"; +PD_ALLKEYS = "You need all the keys!"; + +// Obituary strings +OB_STEALTHBABY = "%o thought %g saw a technospider."; +OB_STEALTHVILE = "%o thought %g saw a necromancer."; +OB_STEALTHBARON = "%o thought %g saw a pain lord."; +OB_STEALTHCACO = "%o thought %g saw a trilobite."; +OB_STEALTHCHAINGUY = "%o thought %g saw a minigun zombie."; +OB_STEALTHDEMON = "%o thought %g saw a flesh worm."; +OB_STEALTHKNIGHT = "%o thought %g saw a pain bringer."; +OB_STEALTHIMP = "%o thought %g saw a serpentipede."; +OB_STEALTHFATSO = "%o thought %g saw a combat slug."; +OB_STEALTHUNDEAD = "%o thought %g saw an octaminator."; +OB_STEALTHSHOTGUY = "%o thought %g saw a shotgun zombie."; +OB_STEALTHZOMBIE = "%o thought %g saw a zombie."; +OB_UNDEADHIT = "%o was beaten up by an octaminator."; +OB_IMPHIT = "%o was lacerated by a serpentipede."; +OB_CACOHIT = "%o got trilo-bitten."; +OB_DEMONHIT = "%o was eaten by a flesh worm."; +OB_SPECTREHIT = "%o was eaten by a stealth worm."; +OB_BARONHIT = "%o was torn open by a pain lord."; +OB_KNIGHTHIT = "%o was gutted by a pain bringer."; +OB_ZOMBIE = "%o was killed by a zombie."; +OB_SHOTGUY = "%o was perforated by a shotgun zombie."; +OB_VILE = "%o was raised by a necromancer."; +OB_UNDEAD = "%o couldn't evade an octaminator's fireball."; +OB_FATSO = "%o was blasted by a combat slug."; +OB_CHAINGUY = "%o was ventilated by a minigun zombie."; +OB_SKULL = "%o was slammed by a hatchling."; +OB_IMP = "%o was scorched by a serpentipede."; +OB_CACO = "%o was zapped by a trilobite."; +OB_BARON = "%o was nuked by a pain lord."; +OB_KNIGHT = "%o was fried by a pain bringer."; +OB_SPIDER = "%o stood in awe of the large technospider."; +OB_BABY = "%o was immolated by a technospider."; +OB_CYBORG = "%o was mutilated by an assault tripod."; +OB_WOLFSS = "%o met a sailor."; + +OB_MPFIST = "%o was beaten up by %k."; +OB_MPCHAINSAW = "%o was shredded by %k's ripsaw."; +OB_MPPISTOL = "%o was killed by %k's handgun."; +OB_MPSHOTGUN = "%o was perforated by %k's pump-action shotgun."; +OB_MPSSHOTGUN = "%o was permeated by %k's double-barreled shotgun."; +OB_MPCHAINGUN = "%o was ventilated by %k's minigun."; +OB_MPROCKET = "%o was mutilated by %k's missile."; +OB_MPR_SPLASH = "%o couldn't dodge %k's missile."; +OB_MPPLASMARIFLE = "%o was immolated by %k's polaric energy weapon."; +OB_MPBFG_BOOM = "%o had %p ass kicked by %k's SKAG!"; +OB_MPBFG_SPLASH = "%o couldn't hide from %k's SKAG."; +OB_MPTELEFRAG = "%o stood where %k was teleporting."; +OB_RAILGUN = "%o was sniped by %k's railgun."; +OB_MPBFG_MBF = "%o had %p ass kicked by %k's SKAG!"; + +/* +Text shown on startup in Boom-compatible ports. This is all in +STARTUP5, so if a mod replaces STARTUP1-4, it will still be shown. +*/ +STARTUP5 = "============================================================================\nThis is Freedoom, the free content first person shooter.\n\nFreedoom is freely redistributable under the terms of the modified BSD\nlicense. Check out the Freedoom website for more information:\n\n https://freedoom.github.io/\n============================================================================"; +$ifgame(freedm) STARTUP5 = "============================================================================\nThis is FreeDM, the free content deathmatch FPS.\n\nFreeDM is freely redistributable under the terms of the modified BSD\nlicense. Check out the Freedoom website for more information:\n\n https://freedoom.github.io/\n============================================================================"; + +// Item tags: Freedoom weapons +TAG_FIST = "fist"; +TAG_CHAINSAW = "ripsaw"; +TAG_PISTOL = "handgun"; +TAG_SHOTGUN = "pump-action shotgun"; +TAG_SUPERSHOTGUN = "double-barrelled shotgun"; +TAG_CHAINGUN = "minigun"; +TAG_ROCKETLAUNCHER = "missile launcher"; +TAG_PLASMARIFLE = "polaric energy weapon"; +TAG_BFG9000 = "SKAG 1337"; + +AMMO_CLIP = "Bullets"; +AMMO_SHELLS = "Shotgun Shells"; +AMMO_ROCKETS = "Missiles"; +AMMO_CELLS = "Energy Recharges"; + +// Menu Strings + +// Skills +SKILL_BABY = "Please don't kill me!"; +SKILL_EASY = "Will this hurt?"; +SKILL_NORMAL = "Bring on the pain."; +SKILL_HARD = "Extreme Carnage."; +SKILL_NIGHTMARE = "MAYHEM!"; + +// Episodes +TXT_D1E1 = "Outpost Outbreak"; +TXT_D1E2 = "Ruin Upon Ruin"; +TXT_D1E3 = "Event Horizon"; +TXT_D1E4 = "Double Impact"; + +TXT_D2E1 = "Phase 2"; +$ifgame(freedm) TXT_D2E1 = "FreeDM"; + +/* +Spanish translation +by José Miguel Muñoz (megustanlosfrijoles) +*/ + +[es] + +SECRETMESSAGE = "¡Encontraste un secreto!"; + +QUITMSG = "Los inversores de AGM están planeando\n una pesadilla incluso peor. \n Presiona Y si no te importa."; + +// Quit Phase 1 messages +QUITMSG1 = "¿Por qué ...?;"; +QUITMSG2 = "Oye colega, aún hay\ntrabajo por hacer.\n¿Estás seguro de querer salir?"; +QUITMSG3 = "Presiona N para seguir\naniquilando aliens.\nPresiona Y para rendirte."; +QUITMSG4 = "No presionaría Y si fuera tú.\nLas redes sociales son mucho peores."; +QUITMSG5 = "Si te vas ahora, se acabó."; +QUITMSG6 = "Si te rindes, esta\npelea nunca tendrá fin.\nAún te necesitamos\npara restaurar nuestra libertad."; +QUITMSG7 = "Ellos nunca descansan.\n¿Lo harás tú?"; + +// Quit Phase 2 messages +QUITMSG8 = "¿Qué haces con tu vida?"; +QUITMSG9 = "¡No presiones Y!\nHay un ejército de\nzombies en tu escritorio!"; +QUITMSG10 = "Tu venganza está insatisfecha.\n¿Estás seguro de querer salir?"; +QUITMSG11 = "Presiona Y para permitir a AGM diezmar\nla Tierra con sus mounstrosidades."; +QUITMSG12 = "¡No te vayas!\nLos mounstros te matarán\nmientras duermes."; +QUITMSG13 = "¿Crees que puedes\nirte como si nada?"; +QUITMSG14 = "¿Ni siquiera te vas a quedar\na a una partida a muerte?"; + +NIGHTMARE = "El juego no está diseñado para ser\n" + "completado en esta dificultad.\n" + "\n" + "No recomendado a menos que seas\n" + "realmente bueno - o estés aburrido.\n" + "\n" + "(Presiona Y para confirmar)"; +DOSY = "(Presiona Y para salir del programa.)"; +GOTARMOR = "Te pusiste un chaleco de campo de fuerza."; +GOTMEGA = "¡Te pusiste el chaleco de campo de fuerza sintonizado!"; +GOTHTHBONUS = "¡Salud aumentada!"; +GOTARMBONUS = "¡Armadura aumentada!"; +GOTSTIM = "Tomaste una recarga de salud."; +GOTMEDINEED = "Tomaste una recarga de salud grande. ¡Nunca te rindas!"; +GOTMEDIKIT = "Tomaste una recarga de salud grande."; +GOTSUPER = "¡Sobrecarga ectoplásmica!"; +GOTBLUECARD = "¡Tarjeta de acceso azul asegurada!"; +GOTYELWCARD = "¡Tarjeta de acceso amarilla asegurada!"; +GOTREDCARD = "¡Tarjeta de acceso roja asegurada!"; +GOTBLUESKUL = "¡Llave esquelética azul asegurada!"; +GOTYELWSKUL = "¡Llave esquelética amarilla asegurada!"; +GOTREDSKUL = "'¡Llave esquelética roja asegurada!"; +GOTINVUL = "¡Vanguardia de los dioses!"; +GOTBERSERK = "¡Hazlos trizas!"; +GOTINVIS = "¡Invisibilidad!"; +GOTSUIT = "Traje de operaciones de rescate."; +GOTMAP = "Mapa del Área."; +GOTVISOR = "Gafas de visión nocturna."; +GOTMSPHERE = "¡Sobrecarga negentrópica!"; +GOTCLIP = "Recogiste algunas balas."; +GOTCLIPBOX = "Recogiste una caja de balas."; +GOTROCKET = "Recogiste un misil."; +GOTROCKBOX = "Recogiste una caja de misiles."; +GOTCELL = "Recogiste una recarga de energía."; +GOTCELLBOX = "Recogiste una recarga de energía grande."; +GOTSHELLS = "Recogiste algunos cartuchos de escopeta."; +GOTSHELLBOX = "Recogiste una caja de cartuchos de escopeta."; +GOTBACKPACK = "¡Una mochila para todas tus necesidades de munición!"; +GOTBFG9000 = "Obtuviste la SKAG 1337... ¡hora de patear algunos traseros!"; +GOTCHAINGUN = "¡Obtuviste la minigun!"; +GOTCHAINSAW = "¡Obtuviste la motosierra!"; +GOTLAUNCHER = "¡Obtuviste el lanza misiles!"; +GOTPLASMA = "¡Obtuviste el arma de energía polárica!"; +GOTSHOTGUN = "¡Obtuviste la escopeta de bombeo!"; +GOTSHOTGUN2 = "¡Obtuviste la escopeta de doble cañon!"; +PD_BLUEO = "Necesitas la llave azul."; +PD_REDO = "Necesitas la llave roja."; +PD_YELLOWO = "Necesitas la llave amarilla."; +PD_BLUEK = "Necesitas la llave azul para abrir esta puerta."; +PD_REDK = "Necesitas la llave roja para abrir esta puerta."; +PD_YELLOWK = "Necesitas la llave amarilla para abrir esta puerta."; + +PD_BLUECO = "Necesitas la llave azul para este objeto."; +PD_REDCO = "Necesitas la llave roja para este objeto."; +PD_YELLOWCO = "Necesitas la llave amarilla para este objeto."; +PD_BLUESO = "Necesitas la llave esquelética azul para este objeto."; +PD_REDSO = "Necesitas la llave esquelética roja para este objeto."; +PD_YELLOWSO = "Necesitas la llave esquelética amarilla para este objeto."; +PICKUP_PISTOL_DROPPED = "¡Obtuviste la pistola!"; + +// Level names +HUSTR_E1M1 = "E1M1: Prisión Exterior"; +HUSTR_E1M2 = "E1M2: Centro de Comunicaciones"; +HUSTR_E1M3 = "E1M3: Manejo de Desechos"; +HUSTR_E1M4 = "E1M4: Almacén de Suministros"; +HUSTR_E1M5 = "E1M5: Armería"; +HUSTR_E1M6 = "E1M6: Centro de Entrenamiento"; +HUSTR_E1M7 = "E1M7: Laboratorio de Materiales"; +HUSTR_E1M8 = "E1M8: Puesto de Cantera"; +HUSTR_E1M9 = "E1M9: Reciclaje de Nutrientes"; +HUSTR_E2M1 = "E2M1: Portal Elemental"; +HUSTR_E2M2 = "E2M2: Cambiador"; +HUSTR_E2M3 = "E2M3: Instalaciones Reclamadas"; +HUSTR_E2M4 = "E2M4: Instalación Inundada"; +HUSTR_E2M5 = "E2M5: Centro Subterráneo"; +HUSTR_E2M6 = "E2M6: Sector Oculto"; +HUSTR_E2M7 = "E2M7: Complejo de Control"; +HUSTR_E2M8 = "E2M8: Celda de Contención"; +HUSTR_E2M9 = "E2M9: Fortaleza 31"; +HUSTR_E3M1 = "E3M1: Tierra de los Perdidos"; +HUSTR_E3M2 = "E3M2: Túneles Geotérmicos"; +HUSTR_E3M3 = "E3M3: Bastión de Sacrificio"; +HUSTR_E3M4 = "E3M4: Templo de Oblación"; +HUSTR_E3M5 = "E3M5: Reliquias Infernales"; +HUSTR_E3M6 = "E3M6: Intrusión Ígnea"; +HUSTR_E3M7 = "E3M7: Sin Remordimientos"; +HUSTR_E3M8 = "E3M8: Guarida Antigua"; +HUSTR_E3M9 = "E3M9: Acostumbrado al Dolor"; +HUSTR_E4M1 = "E4M1: Área de Mantenimiento"; +HUSTR_E4M2 = "E4M2: Complejo de Investigación"; +HUSTR_E4M3 = "E4M3: Central de Cómputo"; +HUSTR_E4M4 = "E4M4: Instalación Hidropónica"; +HUSTR_E4M5 = "E4M5: Estación de Ingeniería"; +HUSTR_E4M6 = "E4M6: Centro de Mando"; +HUSTR_E4M7 = "E4M7: Tratamiento de Residuos"; +HUSTR_E4M8 = "E4M8: Bahía de Lanzamiento"; +HUSTR_E4M9 = "E4M9: Operaciones"; + +HUSTR_1 = "MAP01: Planta Hidroeléctrica"; +HUSTR_2 = "MAP02: Túneles de Filtración"; +HUSTR_3 = "MAP03: Centro de Procesamiento en Crudo"; +HUSTR_4 = "MAP04: Bahía de Contención"; +HUSTR_5 = "MAP05: Madriguera Fangosa"; +HUSTR_6 = "MAP06: Terminal de Janus"; +HUSTR_7 = "MAP07: Compuerta Lógica"; +HUSTR_8 = "MAP08: Complejo de Astronomía"; +HUSTR_9 = "MAP09: Centro de Datos"; +HUSTR_10 = "MAP10: Tierras Mortales"; +HUSTR_11 = "MAP11: Observatorio de la Grieta Dimensional"; +HUSTR_12 = "MAP12: Ferrocarriles"; +HUSTR_13 = "MAP13: Estación Tierra"; +HUSTR_14 = "MAP14: Zona Nuclear"; +HUSTR_15 = "MAP15: Toma Hostil"; +HUSTR_16 = "MAP16: Capital Urbana"; +HUSTR_17 = "MAP17: Capitolio de la Ciudad"; +HUSTR_18 = "MAP18: Laboratorio Aquático"; +HUSTR_19 = "MAP19: Control de Aguas Negras"; +HUSTR_20 = "MAP20: Fortaleza Brasa de Sangre"; +HUSTR_21 = "MAP21: Reino Inferior"; +HUSTR_22 = "MAP22: Remanasu"; +HUSTR_23 = "MAP23: Instalación Subterránea"; +HUSTR_24 = "MAP24: Laboratorio de Teletransporte Abandonado"; +HUSTR_25 = "MAP25: Persistencia de la Memoria"; +HUSTR_26 = "MAP26: Oscuras Profundidades"; +HUSTR_27 = "MAP27: Palacio Rojo"; +HUSTR_28 = "MAP28: Reducto Sombrío"; +HUSTR_29 = "MAP29: Punto de Fusión"; +HUSTR_30 = "MAP30: Mandibula de la Derrota"; +HUSTR_31 = "MAP31: Guarda Silencio"; +HUSTR_32 = "MAP32: En Duda"; + +// FreeDM level names +$ifgame(freedm) HUSTR_1 = "DM01: Prueba Técnica"; +$ifgame(freedm) HUSTR_2 = "DM02: Estación Natural"; +$ifgame(freedm) HUSTR_3 = "DM03: Problemas de Claveria"; +$ifgame(freedm) HUSTR_4 = "DM04: Acero"; +$ifgame(freedm) HUSTR_5 = "DM05: Campos Densos"; +$ifgame(freedm) HUSTR_6 = "DM06: Templo de Amón"; +$ifgame(freedm) HUSTR_7 = "DM07: Fortaleza Principal"; +$ifgame(freedm) HUSTR_8 = "DM08: Base de Artefactos"; +$ifgame(freedm) HUSTR_9 = "DM09: Tierras Industriales"; +$ifgame(freedm) HUSTR_10 = "DM10: Terrenos Separados"; +$ifgame(freedm) HUSTR_11 = "DM11: Instalación Aislada"; +$ifgame(freedm) HUSTR_12 = "DM12: Cañon Sube y Baja"; +$ifgame(freedm) HUSTR_13 = "DM13: Sangre Profana"; +$ifgame(freedm) HUSTR_14 = "DM14: Asalto Técnico"; +$ifgame(freedm) HUSTR_15 = "DM15: Complejo Poco Profundo"; +$ifgame(freedm) HUSTR_16 = "DM16: Callejones Estériles"; +$ifgame(freedm) HUSTR_17 = "DM17: Sotobosques"; +$ifgame(freedm) HUSTR_18 = "DM18: Patio Desierto"; +$ifgame(freedm) HUSTR_19 = "DM19: Isla Tecnológica"; +$ifgame(freedm) HUSTR_20 = "DM20: Almacén"; +$ifgame(freedm) HUSTR_21 = "DM21: Refinería"; +$ifgame(freedm) HUSTR_22 = "DM22: Almacén Militar"; +$ifgame(freedm) HUSTR_23 = "DM23: Confrontación"; +$ifgame(freedm) HUSTR_24 = "DM24: Base Inundada"; +$ifgame(freedm) HUSTR_25 = "DM25: Patio de la Mansión"; +$ifgame(freedm) HUSTR_26 = "DM26: Cripta Ácida"; +$ifgame(freedm) HUSTR_27 = "DM27: El Exilio"; +$ifgame(freedm) HUSTR_28 = "DM28: Fabrica de Armas"; +$ifgame(freedm) HUSTR_29 = "DM29: Territorio Inusual"; +$ifgame(freedm) HUSTR_30 = "DM30: Último en Pie"; +$ifgame(freedm) HUSTR_31 = "DM31: Fuerte Desolado"; +$ifgame(freedm) HUSTR_32 = "DM32: Fourplay"; + +AMSTR_FOLLOWON = "El mapa sigue al jugador."; +AMSTR_FOLLOWOFF = "El mapa ya no sigue al jugador."; +AMSTR_GRIDON = "Cuadrícula del mapa activada."; +AMSTR_GRIDOFF = "Cuadrícula del mapa desactivada."; +AMSTR_MARKEDSPOT = "Marcador añadido al mapa."; +AMSTR_MARKSCLEARED = "Marcadores del mapa eliminados."; +STSTR_MUS = "Música cambiada."; +STSTR_NOMUS = "¿Pista de música desconocida?"; +STSTR_DQDON = "Modo Dios activado."; +STSTR_DQDOFF = "Modo Dios desactivado."; +STSTR_DQD2ON = "Modo Dios Supremo activado."; +STSTR_DQD2OFF = "Modo Dios Supremo desactivado."; +STSTR_KFAADDED = "Llaves, armas y munición añadidas."; +STSTR_FAADDED = "Armas y munición añadidas."; +STSTR_NCON = "Noclip activado."; +STSTR_NCOFF = "Noclip desactivado."; +STSTR_NC2ON = "Noclip 2 activado."; +STSTR_BEHOLD = "¿vanguardia, aplastar, invisi, rescate, mapa o gafas?"; +STSTR_CHOPPERS = "¡Vroom!"; + +// End-of-episode texts, now with a consistent story. Feel free to edit them. +E1TEXT = + "¡Libre al fin de ese horrible puesto de avanzada!\n" + "Pero sigues atrapado en esta roca, con\n" + "AGM y todos sus mounstrosos 'experimentos'.\n" + "Será mejor no pensar demasiado en qué malvados horrores\n" + "iban a crear a partir de ti...\n" + "\n" + "El maldito teletransportador alien se comió tu equipamiento.\n" + "El aire es caliente y bochornoso, y apesta a\n" + "una extraña, intoxicante vegetación. Vislumbras\n" + "lo que parece ser tecnología corporativa de AGM, cubierta\n" + "por viejas estructuras alienígenas llenas de maleza.\n" + "No había nada cercano a la tecnología necesaria para esto\n" + "en el puesto de avanzada, lo que significa que debería\n" + "haber un puerto estelar cerca. A la Tierra. A la libertad.\n" + "\n" + "Solo hay que confiar en que la nave despegue\n" + "de estas derrotadas, infestadas ruinas..."; +E2TEXT = + "Los masivos brutos colapsan sobre el\n" + "suelo, desmoronándose pedazo a pedazo.\n" + "El puerto estelar es tuyo.\n" + "\n" + "Pero no hay nave: la bahía de lanzamiento está vacía,\n" + "dejando tan solo una plataforma de teletransporte masiva.\n" + "Inorgánicos limitados. Destino fijo.\n" + "\n" + "El nombre sugiere que problablemente sea el nuevo\n" + "centro naval de AGM en este remoto conjunto estelar.\n" + "Los bastardos te la deben por lo que han hecho,\n" + "así que ¿qué es un poco de piratería intelestelar\n" + "sino algo de justicia por tus propias manos?\n" + "\n" + "Abordas la plataforma y te desvaneces.\n" + "Siguiente parada: Horizon."; +E3TEXT = + "La abominación explota hasta el olvido.\n" + "¿Qué demonios fue eso?\n" + "\n" + "Mientras las sombras se ciernen sobre esta roja roca,\n" + "te das cuenta de que ahora estás atrapado aquí.\n" + "Por lo menos tienes más espacio en este\n" + "yermo que en tu vieja celda.\n" + "\n" + "Pateas el cadáver con ira, y se siente\n" + "bien. Lo pateas de nuevo, y un control remoto\n" + "cae. Presionas el botón, y el piso\n" + "cede para revelar un teletransportador. Miras\n" + "el aparato - dice 'Hacia Doble Impacto.'\n" + "\n" + "Dónde sea o lo que sea, rezas\n" + "a cualquier deidad que esté escuchando porque haya\n" + "una nave funcional del otro lado."; +E4TEXT = + "El fuego de supresión hace eco por encima mientras los últimos\n" + "supervivientes huyen de la nave. El proceso de lanzamiento\n" + "es irreversible: matarte ahora solo\n" + "traería una lenta muerte a la deriva por el espacio.\n" + "\n" + "Cincuenta y nueve. Cincuenta y ocho. Ciencuenta y siete. . .\n" + "Te derrites sobre el asiento del piloto, perdido en la\n" + "voz de una asamblea automatizada de ángeles\n" + "entregándote de esta desdichada roca.\n" + "\n" + "La nave retumba al despertar;\n" + "piensas en la Tierra mientras despegas.\n" + "Esperemos que AGM no te encuentre ahí:\n" + "tienen que lidiar con el brote,\n" + "así que eso te dará algo de tiempo.\n" + "\n" + "¡Destino: La Tierra!"; +// After MAP06, before MAP07: +C1TEXT = + "Ni siquera la Tierra es segura. Los mounstros aparecen\n" + "delante tuyo a dondequiera que vayas.\n" + "¿Y de dónde están saliendo?\n" + "A pesar de toda la destrucción que han\n" + "causado, la infrestuctura de teletransporte\n" + "permanece intacta - puede que puedas\n" + "regresar a la civilización de esta manera.\n" + "\n" + "Encuentras una vieja plataforma y la arrancas.\n" + "Conexión activa. Comunicación establecida.\n" + "\n" + "Gruñidos y chirridos en el intercomunicador.\n" + "\n" + "Con tus pies bien plantados.\n" + "Armas revisadas.\n" + "Es hora de abrirse paso."; +// After MAP11, before MAP12: +C2TEXT = + "No encontraste a nadie con vida. Otra vez.\n" + "\n" + "La pelea te está pasando factura.\n" + "El dolor. La brutalidad. La soledad.\n" + "Debe haber un camino a algún lado,\n" + "algo que no sea... esto.\n" + "\n" + "Un tren resuena a la distancia.\n" + "\n" + "Sigues el sonido sobre la carrera vacía\n" + "y llegas al borde del patio ferroviario.\n" + "\n" + "Los trenes significan ciudades.\n" + "Y las ciudades significan personas.\n" + "\n" + "¿Cierto?"; +// After MAP20, before MAP21: +C3TEXT = + "Aquí no esta AGM, no hay sino mounstros.\n" + "Mounstros, no humanos y dias polvorientos\n" + "durmiendo en viejas ruinas y comiendo chatarra.\n" + "Nadie ha escapado de este yermo con vida.\n" + "\n" + "Has estado siguiendo sus movimientos.\n" + "Los registros de AGM y los garabatos alienígenas apuntan\n" + "a que algo grande se está abriendo paso a través\n" + "de toda la red de teletransporte.\n" + "Enviando su pesadilla de ejércitos de sapientes\n" + "con el cerebro lavado - incluyendo humanos -\n" + "para conquistar todo el espacio conocido.\n" + "\n" + "Y ahora estás peleando en su puerta.\n" + "\n" + "Este podría ser el principio\n" + "de tu libertad - o de tu condena."; +// After MAP30 (endgame text): +C4TEXT = + "El ser malvado se vuelve inestable.\n" + "Sus rugidos finales hacen eco a través del cuarto\n" + "hasta que colapsa y se vuelve chatarra.\n" + "\n" + "Un portal se abre, felizmente\n" + "inconsciente de la muerte de su amo.\n" + "\n" + "Del otro lado vez un pequeño pueblo.\n" + "Abandonas tus armas y lo atraviesas,\n" + "dejando atrás a AGM y todos sus horrores.\n" + "\n" + "Nadie sabrá quién los salvó.\n" + "\n" + "Nadie sabrá lo que pasó aquí.\n" + "\n" + "Nadie volverá a encontrarte jamás."; +// Before MAP31 (secret level #1): +C5TEXT = + "Entras al teletransportador. Sientes un\n" + "destello familiar y... ¿estás en una jaula?\n" + "¿Encerrado?\n" + "\n" + "Hay otras jaulas aquí. Ocupadas.\n" + "¿Así es que así es como capturan humanos?\n" + "¿O lo prepararon específicamente para tí,\n" + "como recompensa por haber frustrado sus planes?\n" + "\n" + "Los guardias no te han notado - aún.\n" + "Cualquier ruido podría significar la muerte. O peor.\n" + "\n" + "¿Cuando te zombifican, estás consciente\n" + "todo el tiempo, atrapado dentro de tu cerebro?\n" + "\n" + "Preferirías no descubrirlo."; +// Before MAP32 (secret level #2): +C6TEXT = + "Encerrado a la fuerza de nuevo. Buen trabajo.\n" + "\n" + "¿Pero dónde estás? El aire y la gravedad\n" + "aún se sienten como en aquel planeta en el que\n" + "estaba esa extraña prisión.\n" + "\n" + "Echas un vistazo y la distribución desencadena\n" + "algunos antiguos recuerdos de la clase de historia.\n" + "\n" + "Ésta es una arena\n" + "Donde mandan a los prisioneros a morir.\n" + "Eso no era una salida - sino una entrada.\n" + "\n" + "Encontrarás el camino de regreso a la ciudad,\n" + "pero tendrá que ser del otro lado de\n" + "algunos mutantes homicidas..."; + +// Cast list (must appear in this order) +CC_ZOMBIE = "zombi"; +CC_SHOTGUN = "zombi con escopeta"; +CC_HEAVY = "zombi con minigun"; +CC_IMP = "serpentípedo"; +CC_DEMON = "gusano de carne"; +CC_LOST = "cría"; +CC_CACO = "trilobite"; +CC_HELL = "portador del dolor"; +CC_BARON = "señor del dolor"; +CC_ARACH = "tecnoaraña"; +CC_PAIN = "matribite"; +CC_REVEN = "octaminator"; +CC_MANCU = "babosa de combate"; +CC_ARCH = "nigromante"; +CC_SPIDER = "gran tecnoaraña"; +CC_CYBER = "trípode de asalto"; +CC_HERO = "salvador de la humanidad"; + +// Friendly names +FN_ZOMBIE = "Zombi"; +FN_SHOTGUN = "Zombi con Escopeta"; +FN_HEAVY = "Zombi con Minigun"; +FN_IMP = "Serpentípedo"; +FN_DEMON = "Gusano de Carne"; +FN_SPECTRE = "Gusano de Sigilo"; +FN_LOST = "Cría"; +FN_CACO = "Trilobite"; +FN_HELL = "Portador del Dolor"; +FN_BARON = "Señor del Dolor"; +FN_ARACH = "Tecnoaraña"; +FN_PAIN = "Matribute"; +FN_REVEN = "Octaminador"; +FN_MANCU = "Babosa de Combate"; +FN_ARCH = "Nigromante"; +FN_SPIDER = "Gran Tecnoaraña"; +FN_CYBER = "Trípode de Asalto"; +FN_WOLFSS = "Navegante Español"; + +// New strings from BOOM +PD_BLUEC = "Necesitas la llave de acceso azul para abrir esta puerta."; +PD_REDC = "Necesitas la llave de acceso roja para abrir esta puerta."; +PD_YELLOWC = "Necesitas la llave de acceso amarilla para abrir esta puerta."; +PD_BLUES = "Necesitas la llave esquelética azul para abrir esta puerta."; +PD_REDS = "Necesitas la llave esquelética roja para abrir esta puerta."; +PD_YELLOWS = "Necesitas la llave esquelética amarilla para abrir esta puerta."; +PD_ANY = "Cualquier llave abrirá esta puerta."; +PD_ANYOBJ = "Cualquier llave activará este objeto."; +PD_ALL3 = "Esta puerta requiere las tres llaves."; +PD_ALL3O = "Este objeto requiere las tres llaves."; +PD_ALL6 = "¡Este objeto requiere las seis llaves!"; +PD_ALL6O = "¡Este objeto requiere las seis llaves!"; +PD_ALLKEYS = "¡Necesitas todas las llaves!"; + +// Obituary strings +OB_STEALTHBABY = "%o creyó haber visto una tecnoaraña."; +OB_STEALTHVILE = "%o creyó haber visto un nigromante."; +OB_STEALTHBARON = "%o creyó haber visto un señor del dolor."; +OB_STEALTHCACO = "%o creyó haber visto un trilobite."; +OB_STEALTHCHAINGUY = "%o creyó haber visto un zombi con escopeta."; +OB_STEALTHDEMON = "%o creyó haber visto un gusano de carne."; +OB_STEALTHKNIGHT = "%o creyó haber visto un portador del dolor."; +OB_STEALTHIMP = "%o creyó haber visto un serpentípedo."; +OB_STEALTHFATSO = "%o creyó haber visto una babosa de combate."; +OB_STEALTHUNDEAD = "%o creyó haber visto un octaminador."; +OB_STEALTHSHOTGUY = "%o creyó haber visto un zombi con escopeta."; +OB_STEALTHZOMBIE = "%o creyó haber visto un zombi."; +OB_UNDEADHIT = "%o recibió una paliza de un octaminador."; +OB_IMPHIT = "A %o le laceró un serpentípedo."; +OB_CACOHIT = "A %o le mordió un trilobite."; +OB_DEMONHIT = "A %o le comió un gusano de carne."; +OB_SPECTREHIT = "A %o le comió un gusano de sigilo."; +OB_BARONHIT = "A %o le desgarró un señor del dolor."; +OB_KNIGHTHIT = "A %o le destripó un portador del dolor."; +OB_ZOMBIE = "A %o le mató un zombie."; +OB_SHOTGUY = "A %o le perforó un zombi."; +OB_VILE = "A %o le invocó un nigromante."; +OB_UNDEAD = "%o no pudo esquivar la bola de fuego de un octaminador."; +OB_FATSO = "A %o le voló en pedazos una babosa de combate."; +OB_CHAINGUY = "A %o le agujereó un zombi con minigun."; +OB_SKULL = "A %o le golpeó una cría."; +OB_IMP = "A %o le calcinó un serpentípedo."; +OB_CACO = "A %o le liquidó un trilobite."; +OB_BARON = "A %o le bombardeó un señor del dolor."; +OB_KNIGHT = "A %o le frió un portador de dolor."; +OB_SPIDER = "A %o le sorprendió la gran tecnoaraña."; +OB_BABY = "A %o le inmoló una tecnoaraña."; +OB_CYBORG = "A %o le mutiló un trípode de asalto."; +OB_WOLFSS = "%o conoció a un un navegante."; + +OB_MPFIST = "%k le dió una paliza a %o."; +OB_MPCHAINSAW = "%o fue despedazado por la motosierra de %k."; +OB_MPPISTOL = "%k mató a %o con su pistola."; +OB_MPSHOTGUN = "A %o le perforó la escopeta de bombeo de %k."; +OB_MPSSHOTGUN = "A %o le penetró la escopeta de doble cañón de %k."; +OB_MPCHAINGUN = "A %o le agujereó la minigun de %k."; +OB_MPROCKET = "A %o le mutiló el misil de %k."; +OB_MPR_SPLASH = "%o no pudo esquivar el misil de %k."; +OB_MPPLASMARIFLE = "A %o le inmoló el arma polárica de %k."; +OB_MPBFG_BOOM = "¡A %o le pateó el trasero la SKAG de %k!"; +OB_MPBFG_SPLASH = "%o no pudo esconderse de la SKAG de %k."; +OB_MPTELEFRAG = "%o se paró a donde %k se teletransportaba."; +OB_RAILGUN = "A %o le acribilló el cañon de riel de %k."; +OB_MPBFG_MBF = "¡A %o le pateó el trasero la SKAG de %k!"; + +/* +Text shown on startup in Boom-compatible ports. This is all in +STARTUP5, so if a mod replaces STARTUP1-4, it will still be shown. +*/ +STARTUP5 = "============================================================================\nEsto es Freedoom, el videojuego de disparos en primera persona de contenido libre.\n\nFreedoom es distribuible libremente bajo los términos de la licencia modificada\n BSD. Visita el sitio web de Freedoom para más información:\n\n https://freedoom.github.io/\n============================================================================"; +$ifgame(freedm) STARTUP5 = "============================================================================\nEsto es FreeDM, el juego de disparos en primera persona de partidas a muerte, de contenido libre. \n\nFreedoom es distribuible libremente bajo los términos de la licencia modificada\n BSD. Visita el sitio web de Freedoom para más información:\n\n https://freedoom.github.io/\n============================================================================"; + +// Item tags: Freedoom weapons +TAG_FIST = "puño"; +TAG_CHAINSAW = "motosierra"; +TAG_PISTOL = "pistola"; +TAG_SHOTGUN = "escopeta de bombeo"; +TAG_SUPERSHOTGUN = "escopeta de doble cañon"; +TAG_CHAINGUN = "minigun"; +TAG_ROCKETLAUNCHER = "lanza misiles"; +TAG_PLASMARIFLE = "arma de energía polárica"; +TAG_BFG9000 = "SKAG 1337"; + +AMMO_CLIP = "Balas"; +AMMO_SHELLS = "Cartuchos de Escopeta"; +AMMO_ROCKETS = "Misiles"; +AMMO_CELLS = "Recargas de energía"; + +// Menu Strings + +// Skills +SKILL_BABY = "¡Por favor, no me maten!"; +SKILL_EASY = "¿Me va a doler?"; +SKILL_NORMAL = "Que empiece el dolor."; +SKILL_HARD = "Carnicería Extrema."; +SKILL_NIGHTMARE = "¡CAOS!"; + +// Episodes +TXT_D1E1 = "Brote en el Puesto de Avanzada"; +TXT_D1E2 = "Ruina Sobre Ruina"; +TXT_D1E3 = "Horizonte de Eventos"; +TXT_D1E4 = "Doble Impacto"; + +TXT_D2E1 = "Phase 2"; +$ifgame(freedm) TXT_D2E1 = "FreeDM"; diff --git a/lumps/p1_uminf.lmp b/lumps/p1_uminf.lmp index 8c07e2b6..e29f31f6 100644 --- a/lumps/p1_uminf.lmp +++ b/lumps/p1_uminf.lmp @@ -4,16 +4,16 @@ map E1M1 { - LevelName = "Outer Prison" + LevelName = "Filtration System" LevelPic = "WILV00" Label = "E1M1" Next = "E1M2" Music = "D_E1M1" SkyTexture = "SKY1" - ParTime = 30 + ParTime = 90 Episode = clear Episode = "M_EPI1", "Outpost Outbreak", "1" - Author = "YukiHerz" + Author = "Charli Reef" } map E1M2 diff --git a/lumps/textures/textures.cfg b/lumps/textures/textures.cfg index 780ac6e2..5a61e07b 100644 --- a/lumps/textures/textures.cfg +++ b/lumps/textures/textures.cfg @@ -3217,8 +3217,12 @@ AQMETL03 128 128 * AQMETL03 0 0 AQMETL04 128 128 * AQMETL04 0 0 +* AQTRIM05 0 112 +* AQTRIM05 0 120 AQMETL05 128 128 -* AQMETL05 0 0 +* AQMETL06 0 0 +* AQTRIM05 0 112 +* AQTRIM05 0 120 AQMETL06 128 128 * AQMETL06 0 0 AQMETL07 64 128 @@ -3269,13 +3273,15 @@ AQMETL26 64 128 AQMETL27 64 128 * AQMETL27 0 0 AQMETL28 64 128 -* AQMETL28 0 0 -* AQMETL28 0 64 +* PDUMMY 0 0 +* AQMETL29 0 0 +* AQMETL29 0 64 AQMETL29 64 64 * AQMETL29 0 0 AQMETL30 64 128 -* AQMETL30 0 0 -* AQMETL30 0 64 +* PDUMMY 0 0 +* AQMETL31 0 0 +* AQMETL31 0 64 AQMETL31 64 64 * AQMETL31 0 0 AQMETL32 64 128 @@ -3289,9 +3295,12 @@ AQPANL01 128 128 AQPANL02 128 128 * AQPANL02 0 0 AQPANL03 128 128 -* AQPANL03 0 0 +* AQPANL02 0 0 +* AQPANL03 0 0 +* AQPANL06 0 64 AQPANL04 128 128 -* AQPANL04 0 0 +* AQPANL02 0 0 +* AQPANL07 0 64 AQPANL05 128 128 * AQPANL05 0 0 * AQPANL05 0 64 @@ -3476,37 +3485,73 @@ AQBRIK03 64 128 * AQBRIK03 0 0 * AQBRIK03 0 64 AQSECT01 128 128 -* AQSECT01 0 0 +* AQPIPE13 0 0 +* AQSECT01 0 32 +* AQSECT01 64 32 +* AQTRIM05 0 120 AQSECT02 64 128 * AQSECT02 0 0 AQSECT03 64 128 * AQSECT03 0 0 AQSECT04 128 128 -* AQSECT04 0 0 +* AQPIPE13 0 0 +* AQSECT04 0 32 +* AQSECT04 64 32 +* AQTRIM05 0 120 AQSECT05 128 128 -* AQSECT05 0 0 +* AQPIPE13 0 0 +* AQSECT05 0 32 +* AQSECT05 64 32 +* AQTRIM05 0 120 AQSECT06 64 128 * AQSECT06 0 0 AQSECT07 64 128 * AQSECT07 0 0 AQSECT08 128 128 -* AQSECT08 0 0 +* AQCONC13 0 0 +* AQSECT04 0 32 +* AQSECT04 64 32 +* AQTRIM05 0 120 AQSECT09 128 128 -* AQSECT09 0 0 +* AQCONC13 0 0 +* AQSECT05 0 32 +* AQSECT05 64 32 +* AQTRIM05 0 120 AQSECT10 128 128 -* AQSECT10 0 0 +* AQCONC13 0 0 +* AQSECT01 0 32 +* AQSECT01 64 32 +* AQTRIM05 0 120 AQSECT11 128 128 -* AQSECT11 0 0 +* AQCONC14 0 0 +* AQSECT04 0 32 +* AQSECT04 64 32 +* AQTRIM05 0 120 AQSECT12 128 128 -* AQSECT12 0 0 +* AQCONC14 0 0 +* AQSECT05 0 32 +* AQSECT05 64 32 +* AQTRIM05 0 120 AQSECT13 128 128 -* AQSECT13 0 0 +* AQCONC14 0 0 +* AQSECT01 0 32 +* AQSECT01 64 32 +* AQTRIM05 0 120 AQSECT14 128 128 -* AQSECT14 0 0 +* AQCONC15 0 0 +* AQSECT04 0 32 +* AQSECT04 64 32 +* AQTRIM05 0 120 AQSECT15 128 128 -* AQSECT15 0 0 +* AQCONC15 0 0 +* AQSECT05 0 32 +* AQSECT05 64 32 +* AQTRIM05 0 120 AQSECT16 128 128 -* AQSECT16 0 0 +* AQCONC15 0 0 +* AQSECT01 0 32 +* AQSECT01 64 32 +* AQTRIM05 0 120 AQCOMP01 256 128 * AQCOMP01 0 0 AQTILE01 64 128 @@ -3859,6 +3904,11 @@ A-VINE1A 256 64 ; dangling ends of the big vine textures A-VINE2A 256 64 * W106_2 0 0 +; EXITSGN2 but left +EXITSG2L 64 16 +* EXIT_REL 0 0 +* EXIT_GRL 32 0 + ; These textures are only in FreeDM diff --git a/manual/Makefile b/manual/Makefile index 8e25b91c..3dab3ab5 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -8,14 +8,40 @@ # es Spanish # fr French -ASCIIDOCTOR_FLAGS = -a pdf-page-size=A5 +BUILD_VERSION=$(shell git describe --abbrev=8 --dirty 2>/dev/null) +ASCIIDOCTOR_FLAGS = -a pdf-page-size=A5 -a build-version=$(BUILD_VERSION) MANUAL_ADOC_FILES=$(wildcard freedoom-manual-??.adoc) MANUAL_PDF_FILES=$(subst .adoc,.pdf,$(MANUAL_ADOC_FILES)) +PRINT_PDF_FILES=$(subst .adoc,-print.pdf,$(MANUAL_ADOC_FILES)) +COVER_PDF_FILES=cover-en.pdf cover-es.pdf cover-fr.pdf +COVER_SVG_FILES=$(patsubst %.pdf,cover/%.svg,$(COVER_PDF_FILES)) all: $(MANUAL_PDF_FILES) +# `make print` builds all the PDFs for printed versions of the manuals. +print: covers $(PRINT_PDF_FILES) + +# We only build the cover PDFs if the user explicitly runs `make covers`; +# this is because it requires Inkscape and we don't want it as a build +# dependency. Most users won't ever need these, we only use them when we're +# uploading the PDF files to print physical manuals. +covers: $(COVER_PDF_FILES) + freedoom-manual-%.pdf: freedoom-manual-%.adoc -asciidoctor-pdf $(ASCIIDOCTOR_FLAGS) $< -o $@ +freedoom-manual-%-print.pdf: freedoom-manual-%.adoc + -asciidoctor-pdf $(ASCIIDOCTOR_FLAGS) -a media=print $< -o $@ + +cover/cover-%.svg: cover/cover-%.sed cover/template.svg + sed -f $< < cover/template.svg > $@ + +cover-%.pdf: cover/cover-%.svg cover/serpentipede.png cover/minigunner.png + inkscape -o $@ $< + clean: - $(RM) $(MANUAL_PDF_FILES) + $(RM) $(MANUAL_PDF_FILES) $(COVER_PDF_FILES) $(COVER_SVG_FILES) \ + $(PRINT_PDF_FILES) + +# Inkscape can't process files in parallel, it has to be sequential: +.NOTPARALLEL: covers diff --git a/manual/cover/cover-en.sed b/manual/cover/cover-en.sed new file mode 100644 index 00000000..3848d800 --- /dev/null +++ b/manual/cover/cover-en.sed @@ -0,0 +1,13 @@ +s/__BACK_TEXT__/\ +Freedoom is an open-content First-Person\ +Shooter (FPS) game that is Free and Open\ +Source Software. Developed by volunteers\ +since 2001, Freedoom is made available\ +under the 3-clause BSD license.\ +\ +This manual gives a wealth of information,\ +including how to play the game, strategy,\ +tips and tricks and more./ + +s/__FRONT_TITLE__/Game Manual/ +s/__SPINE_TITLE__/Freedoom Manual/ diff --git a/manual/cover/cover-es.sed b/manual/cover/cover-es.sed new file mode 100644 index 00000000..61f1f84a --- /dev/null +++ b/manual/cover/cover-es.sed @@ -0,0 +1,14 @@ +s/__BACK_TEXT__/\ +Freedoom es un videojuego de disparos de\ +primera persona desarrollado por voluntarios\ +desde 2001 y disponible a través de la\ +licencia BSD modificada (de 3 clausuras)\ +permitiendo el software libre, y abierto.\ +\ +Este manual ofrece gran información sobre\ +como jugar, estrategias qué puedes realizar,\ +consejos y trucos qué tomar en cuenta, y\ +mucho más./ + +s/__FRONT_TITLE__/Manual del Juego/ +s/__SPINE_TITLE__/Manual de Freedoom/ diff --git a/manual/cover/cover-fr.sed b/manual/cover/cover-fr.sed new file mode 100644 index 00000000..0afb5918 --- /dev/null +++ b/manual/cover/cover-fr.sed @@ -0,0 +1,12 @@ +s/__BACK_TEXT__/\ +Freedoom est un jeu de tir à la première\ +personne libre et open source. Développé\ +par des bénévoles depuis 2001, Freedoom\ +est disponible sous licence BSD-3-Clause.\ +\ +Ce manuel contient des informations sur le\ +jeu, un guide de stratégie, des trucs et\ +astuces, et bien plus encore./ + +s/__FRONT_TITLE__/Manuel du Jeu/ +s/__SPINE_TITLE__/Manuel Freedoom/ diff --git a/manual/cover/minigunner.png b/manual/cover/minigunner.png new file mode 100644 index 00000000..4aded5a6 Binary files /dev/null and b/manual/cover/minigunner.png differ diff --git a/manual/cover/serpentipede.png b/manual/cover/serpentipede.png new file mode 100644 index 00000000..1c9c470c Binary files /dev/null and b/manual/cover/serpentipede.png differ diff --git a/manual/cover/template.svg b/manual/cover/template.svg new file mode 100644 index 00000000..34293c93 --- /dev/null +++ b/manual/cover/template.svg @@ -0,0 +1,184 @@ + + + +__SPINE_TITLE____BACK_TEXT____FRONT_TITLE__ diff --git a/manual/freedoom-manual-en.adoc b/manual/freedoom-manual-en.adoc index 263018c2..1c139475 100644 --- a/manual/freedoom-manual-en.adoc +++ b/manual/freedoom-manual-en.adoc @@ -1,13 +1,54 @@ = Freedoom Manual // SPDX-License-Identifier: BSD-3-Clause -:toc: +:toc: macro :toc-title: +:showtitle!: +:build-version: (unknown) + +// This is the title page; it looks weird in Asciidoc but makes more +// sense in the PDF output. + +{empty} + +{empty} + +{empty} + +{empty} + +{empty} + +{empty} + + +image::images/freedoom-logo.svg[Freedoom Logo,align="center",width=500,pdfwidth=50vw] +[.text-center] +*Game Manual* + + +<<< + +{empty} + +{empty} + + +Copyright © 2001-2025 Contributors to the Freedoom project. +This manual is licensed under the 3-clause BSD license. + +This is the English version of the Freedoom manual. Translations into other +languages can be found on the Freedoom website. + +This is version {build-version} of the manual. + +<<< + +// Note this is not a heading, so the ToC does not appear in itself. +[big]*Table of Contents* + +toc::[] + +<<< + +== Introduction image::../graphics/titlepic/titlepic.png[Freedoom Title Image,align="center",width=380,pdfwidth=50vw] Welcome to Freedoom, a complete game that is -https://www.gnu.org/philosophy/free-sw.html[free] -and https://opensource.org/osd/[open source software]. +https://www.gnu.org/philosophy/free-sw.html[free,role=bare] +and https://opensource.org/osd/[open source software,role=bare]. Freedoom is made available under the <>, meaning that anyone is free to share it, modify it and reuse parts of it. @@ -841,7 +882,7 @@ would depend on the company supplying them their paints. For over 30 years now, the Doom modding community has produced thousands upon thousands of levels, mods and even entirely new games built upon the original Doom games. These are works of art and ought to be recognised as such. -https://www.youtube.com/watch?v=KxYND6K6u8w[Doom is an art scene]. +https://www.youtube.com/watch?v=KxYND6K6u8w[Doom is an art scene,role=bare]. The raw material these works of art are made from is not paint or ink, but the original game itself -- endlessly modified, reused and remixed into new variations. @@ -863,12 +904,12 @@ something that Freedoom can help to provide. == Contributing to Freedoom == -Freedoom is a https://www.gnu.org/philosophy/free-sw.html[free content] -project contributed to by many users around the world. It is available as both -free in cost (free as in free beer) and in modification and redistribution -rights (free as in free speech) to end users, provided that the original -software license is included and/or viewable by users of modified or -redistributed versions. +Freedoom is a +https://www.gnu.org/philosophy/free-sw.html[free content,role=bare] project +contributed to by many users around the world. It is available as both free in +cost (free as in free beer) and in modification and redistribution rights (free +as in free speech) to end users, provided that the original software license is +included and/or viewable by users of modified or redistributed versions. If you’d like to contribute to the Freedoom project, please check out the following community hubs: @@ -894,16 +935,16 @@ https://guides.github.com/activities/forking/ [[reusing]] == Reusing portions of Freedoom == -Since https://freedoom.github.io/about.html[Freedoom is free], some other -projects have used Freedoom’s assets. We think this is a great use of the -project and should be encouraged. If you use portions of Freedoom in your +Since https://freedoom.github.io/about.html[Freedoom is free,role=bare], some +other projects have used Freedoom’s assets. We think this is a great use of +the project and should be encouraged. If you use portions of Freedoom in your project, please let us know by filing an issue or pull request on Freedoom’s website project page at https://github.com/freedoom/freedoom.github.io. [[licence]] === BSD 3-Clause copyright licence -Copyright © 2001-2024 +Copyright © 2001-2025 Contributors to the Freedoom project. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/manual/freedoom-manual-es.adoc b/manual/freedoom-manual-es.adoc index b31b5602..47290195 100644 --- a/manual/freedoom-manual-es.adoc +++ b/manual/freedoom-manual-es.adoc @@ -1,13 +1,49 @@ = Manual de Freedoom // SPDX-License-Identifier: BSD-3-Clause -:toc: +:toc: macro :toc-title: +:showtitle!: +:build-version: (desconocida) + +// This is the title page; it looks weird in Asciidoc but makes more +// sense in the PDF output. + +{empty} + +{empty} + +{empty} + +{empty} + +{empty} + +{empty} + + +image::images/freedoom-logo.svg[Freedoom Logo,align="center",width=500,pdfwidth=70vw] +[.text-center] +*Manual del Juego* + +<<< + +{empty} + +{empty} + + +Copyright © 2001-2025 Contributors to the Freedoom project. +Este manual está licenciado bajo la licencia BSD de 3 cláusulas. + +Esta es la versión {build-version} del manual. + +<<< + +[big]*Sumario* + +toc::[] + +<<< + +== Introducción image::../graphics/titlepic/titlepic.png[Freedoom Title Image,align="center",width=380,pdfwidth=50vw] Bienvenido a Freedoom, un juego completo que es software -https://www.gnu.org/philosophy/free-sw.html[libre] -y de https://opensource.org/osd/[código abierto]. +https://www.gnu.org/philosophy/free-sw.html[libre,role=bare] +y de https://opensource.org/osd/[código abierto,role=bare]. Freedoom esta disponible bajo una <>, lo que significa que cualquiera es libre de compartirlo, modificarlo y reutilizar partes de el. @@ -864,7 +900,7 @@ Por más de 30 años, la comunidad de modding de Doom ha producido miles y miles de niveles, mods e incluso juegos completamente nuevos hechos en base a los juegos de Doom originales. Estos son obras de artes y deberían ser reconocidos como tales. -https://www.youtube.com/watch?v=KxYND6K6u8w[Doom es una escena artística]. +https://www.youtube.com/watch?v=KxYND6K6u8w[Doom es una escena artística,role=bare]. La materia prima de estas obras de arte no es pintura ni tinta, sino el juego original -- modificado, reutilizado y reversionado sin cesar para dar nuevas variaciones. @@ -887,10 +923,10 @@ y reutilizar, esperamos que eso sea algo que Freedoom pueda otorgar. == Contribuir a Freedoom Freedoom es un proyecto de -https://www.gnu.org/philosophy/free-sw.es.html[contenido libre] al que -contribuyen muchos usuarios de todo el mundo. Está disponible tanto como sin -costo (gratis) y en derechos de modificación y redistribución (libre como en -libertad de expresión) para los usuarios finales, siempre que la licencia de +https://www.gnu.org/philosophy/free-sw.es.html[contenido libre,role=bare] al +que contribuyen muchos usuarios de todo el mundo. Está disponible tanto como +sin costo (gratis) y en derechos de modificación y redistribución (libre como +en libertad de expresión) para los usuarios finales, siempre que la licencia de software original esté incluida y/o sea visible para los usuarios del software modificado o versiones redistribuidas. @@ -915,17 +951,18 @@ https://guides.github.com/activities/forking/ [[reusing]] == Reusar partes de Freedoom -Dado que https://freedoom.github.io/about.html[Freedoom es libre], algunos -otros proyectos han utilizado los materiales de Freedoom. Creemos que este es -un gran uso del proyecto y debe fomentarse. Si tu usas partes de Freedoom en tu -proyecto, puedes informarnos presentando una solicitud a -la página web del proyecto Freedoom en https://github.com/freedoom/freedoom.github.io. +Dado que https://freedoom.github.io/about.html[Freedoom es libre,role=bare], +algunos otros proyectos han utilizado los materiales de Freedoom. Creemos que +este es un gran uso del proyecto y debe fomentarse. Si tu usas partes de +Freedoom en tu proyecto, puedes informarnos presentando una solicitud a +la página web del proyecto Freedoom en +https://github.com/freedoom/freedoom.github.io. [[licence]] === Licencia BSD modificada (inglés) -Copyright © 2001-2024 +Copyright © 2001-2025 Contributors to the Freedoom project. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/manual/freedoom-manual-fr.adoc b/manual/freedoom-manual-fr.adoc index c3f870aa..a9d295d9 100644 --- a/manual/freedoom-manual-fr.adoc +++ b/manual/freedoom-manual-fr.adoc @@ -1,13 +1,46 @@ = Manuel Freedoom // SPDX-License-Identifier: BSD-3-Clause -:toc: +:toc: macro :toc-title: +:showtitle!: +:build-version: (inconnue) + +// This is the title page; it looks weird in Asciidoc but makes more +// sense in the PDF output. + +{empty} + +{empty} + +{empty} + +{empty} + +{empty} + +{empty} + + +image::images/freedoom-logo.svg[Freedoom Logo,align="center",width=500,pdfwidth=70vw] +[.text-center] +*Manuel du Jeu* + +<<< + +Copyright © 2001-2025 Contributors to the Freedoom project. +Ce manuel est sous licence BSD-3-Clause. + +Il s'agit de la version {build-version} du manuel. + +<<< + +[big]*Sommaire* + +toc::[] + +<<< + +== Introduction image::../graphics/titlepic/titlepic.png[Freedoom Title Image,align="center",width=380,pdfwidth=50vw] Bienvenue sur Freedoom, un jeu complet qui est -https://www.gnu.org/philosophy/free-sw.html[libre] -et https://opensource.org/osd/[open source]. +https://www.gnu.org/philosophy/free-sw.html[libre,role=bare] +et https://opensource.org/osd/[open source,role=bare]. Freedoom est disponible sous <>, permettant n'importe qui de partager, de modifier et de réutiliser des parties du jeu. @@ -617,7 +650,7 @@ Le mot « free » a deux significations différentes en Anglais. On dit « fre Imaginez un monde où les artistes ne peuvent qu'acheter de la peinture d'une seule compagnie. Un tel monopole signifierait que la peinture couterait plus chères, mais le prix ne serait pas le problème principal. Le plus gros problème serait le pouvoir qu'il accorderait à cette compagnie. La liberté de ces artistes de s'exprimer dépendrait de la compagnie qui leur fournit leurs peintures. -Depuis plus de 30 ans, la communauté de modders Doom a produit des milliers de niveaux, mods et même des nouveaux jeux construits à partir des jeux Doom originaux. Ce sont des œuvres d'art qui doivent être reconnues comme telles. https://www.youtube.com/watch?v=KxYND6K6u8w[Doom est une scène artistique]. La matière première à partir de laquelle ces œuvres d'art sont fabriquées n'est ni de la peinture ou de l’encre, mais le jeu original lui-même -- sans cesse modifié, réutilisé et remixé en de nouvelles variations. +Depuis plus de 30 ans, la communauté de modders Doom a produit des milliers de niveaux, mods et même des nouveaux jeux construits à partir des jeux Doom originaux. Ce sont des œuvres d'art qui doivent être reconnues comme telles. https://www.youtube.com/watch?v=KxYND6K6u8w[Doom est une scène artistique,role=bare]. La matière première à partir de laquelle ces œuvres d'art sont fabriquées n'est ni de la peinture ou de l’encre, mais le jeu original lui-même -- sans cesse modifié, réutilisé et remixé en de nouvelles variations. Les auteurs de Doom, id Software, ont historiquement été très généreux envers la communauté Doom. Dès la sortie du jeu, ils ont fait de leur mieux pour partager les détails techniques avec les fans, et quelques années après ils ont publié le code source de Doom sous une licence libre -- quelque chose qui était inconnu dans l'industrie du jeu vidéo à l'époque et qui devrait être félicité. Mais malgré cette bienveillance, ils ont toujours occupé une position de pouvoir. Aujourd'hui, au lieu d'être un petit studio indépendant, eux et la franchise Doom appartiennent à une grande multinationale. @@ -625,7 +658,7 @@ Tout le monde mérite de pouvoir apprécier la merveille qu'est Doom et de parti == Contribuer à Freedoom == -Freedoom est un projet au https://www.gnu.org/philosophy/free-sw.html[contenu libre] avec de nombreux contributeurs venant du monde entier. Il est disponible à la fois "free" ^1^ en coût ("free" ^1^ comme une bière gratuite) et en droit de modification et de redistribution ("free" ^1^ comme la liberté d'expression) aux utilisateurs finaux, à condition que la licence originale soit incluse et/ou visible aux utilisateurs de versions modifiées ou redistribuées. +Freedoom est un projet au https://www.gnu.org/philosophy/free-sw.html[contenu libre,role=bare] avec de nombreux contributeurs venant du monde entier. Il est disponible à la fois "free" ^1^ en coût ("free" ^1^ comme une bière gratuite) et en droit de modification et de redistribution ("free" ^1^ comme la liberté d'expression) aux utilisateurs finaux, à condition que la licence originale soit incluse et/ou visible aux utilisateurs de versions modifiées ou redistribuées. Si vous souhaitez contribuer au projet Freedoom, veuillez consulter les hubs communautaires suivants: @@ -653,7 +686,7 @@ https://guides.github.com/activities/forking/ [[reusing]] == Réutilisation de portions de Freedoom == -Puisque https://freedoom.github.io/about.html[Freedoom est libre], d'autres projets ont utilisé des éléments de Freedom. Nous pensons que c'est une excellente utilisation du projet et nous l'encourageons. Si vous utilisez des portions de Freedoom dans votre projet, veuillez nous informer en formulant une « issue » ou un « pull request » sur la page du projet Freedoom +Puisque https://freedoom.github.io/about.html[Freedoom est libre,role=bare], d'autres projets ont utilisé des éléments de Freedom. Nous pensons que c'est une excellente utilisation du projet et nous l'encourageons. Si vous utilisez des portions de Freedoom dans votre projet, veuillez nous informer en formulant une « issue » ou un « pull request » sur la page du projet Freedoom https://github.com/freedoom/freedoom . <<< @@ -661,7 +694,7 @@ https://github.com/freedoom/freedoom . [[licence]] === BSD 3-Clause copyright licence -Copyright © 2001-2024 +Copyright © 2001-2025 Contributors to the Freedoom project. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/manual/images/freedoom-logo.svg b/manual/images/freedoom-logo.svg new file mode 100644 index 00000000..99e77046 --- /dev/null +++ b/manual/images/freedoom-logo.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + diff --git a/musics/d_e1m1.mid b/musics/d_e1m1.mid index f82cb24f..5e58f0dd 100644 Binary files a/musics/d_e1m1.mid and b/musics/d_e1m1.mid differ diff --git a/patches/aqmetl04.png b/patches/aqmetl04.png index 932576ef..b5a3756e 100644 Binary files a/patches/aqmetl04.png and b/patches/aqmetl04.png differ diff --git a/patches/aqmetl05.png b/patches/aqmetl05.png deleted file mode 100644 index bc0a7825..00000000 Binary files a/patches/aqmetl05.png and /dev/null differ diff --git a/patches/aqmetl28.png b/patches/aqmetl28.png deleted file mode 100644 index e8150f1f..00000000 Binary files a/patches/aqmetl28.png and /dev/null differ diff --git a/patches/aqmetl30.png b/patches/aqmetl30.png deleted file mode 100644 index 24fe20eb..00000000 Binary files a/patches/aqmetl30.png and /dev/null differ diff --git a/patches/aqpanl03.png b/patches/aqpanl03.png index ccced796..103daa5e 100644 Binary files a/patches/aqpanl03.png and b/patches/aqpanl03.png differ diff --git a/patches/aqpanl04.png b/patches/aqpanl04.png deleted file mode 100644 index 686608c3..00000000 Binary files a/patches/aqpanl04.png and /dev/null differ diff --git a/patches/aqsect01.png b/patches/aqsect01.png index 37dc80b5..c59707da 100644 Binary files a/patches/aqsect01.png and b/patches/aqsect01.png differ diff --git a/patches/aqsect04.png b/patches/aqsect04.png index 3d9a75e4..d561ae63 100644 Binary files a/patches/aqsect04.png and b/patches/aqsect04.png differ diff --git a/patches/aqsect05.png b/patches/aqsect05.png index 8b708e27..7c56010f 100644 Binary files a/patches/aqsect05.png and b/patches/aqsect05.png differ diff --git a/patches/aqsect08.png b/patches/aqsect08.png deleted file mode 100644 index 0afd0b51..00000000 Binary files a/patches/aqsect08.png and /dev/null differ diff --git a/patches/aqsect09.png b/patches/aqsect09.png deleted file mode 100644 index f3785372..00000000 Binary files a/patches/aqsect09.png and /dev/null differ diff --git a/patches/aqsect10.png b/patches/aqsect10.png deleted file mode 100644 index 717fa215..00000000 Binary files a/patches/aqsect10.png and /dev/null differ diff --git a/patches/aqsect11.png b/patches/aqsect11.png deleted file mode 100644 index 2a0a258a..00000000 Binary files a/patches/aqsect11.png and /dev/null differ diff --git a/patches/aqsect12.png b/patches/aqsect12.png deleted file mode 100644 index 5e505c80..00000000 Binary files a/patches/aqsect12.png and /dev/null differ diff --git a/patches/aqsect13.png b/patches/aqsect13.png deleted file mode 100644 index 08aff2cb..00000000 Binary files a/patches/aqsect13.png and /dev/null differ diff --git a/patches/aqsect14.png b/patches/aqsect14.png deleted file mode 100644 index f23ab478..00000000 Binary files a/patches/aqsect14.png and /dev/null differ diff --git a/patches/aqsect15.png b/patches/aqsect15.png deleted file mode 100644 index 9a865604..00000000 Binary files a/patches/aqsect15.png and /dev/null differ diff --git a/patches/aqsect16.png b/patches/aqsect16.png deleted file mode 100644 index d92fdb01..00000000 Binary files a/patches/aqsect16.png and /dev/null differ diff --git a/patches/door11_1.png b/patches/door11_1.png index 7c7e981a..695d61b6 100644 Binary files a/patches/door11_1.png and b/patches/door11_1.png differ diff --git a/patches/dosw1.png b/patches/dosw1.png index f1bf1683..fc2f7e58 100644 Binary files a/patches/dosw1.png and b/patches/dosw1.png differ diff --git a/patches/dosw1c.png b/patches/dosw1c.png index 8bb91598..d14a04d8 100644 Binary files a/patches/dosw1c.png and b/patches/dosw1c.png differ diff --git a/patches/dosw2.png b/patches/dosw2.png index f1bf1683..2c881193 100644 Binary files a/patches/dosw2.png and b/patches/dosw2.png differ diff --git a/patches/dosw2c.png b/patches/dosw2c.png index 8bb91598..129e3948 100644 Binary files a/patches/dosw2c.png and b/patches/dosw2c.png differ diff --git a/patches/dosw3.png b/patches/dosw3.png index f1bf1683..1e85106c 100644 Binary files a/patches/dosw3.png and b/patches/dosw3.png differ diff --git a/patches/dosw3c.png b/patches/dosw3c.png index 8bb91598..4d5b114b 100644 Binary files a/patches/dosw3c.png and b/patches/dosw3c.png differ diff --git a/patches/dosw4.png b/patches/dosw4.png index f1bf1683..2c881193 100644 Binary files a/patches/dosw4.png and b/patches/dosw4.png differ diff --git a/patches/dosw4c.png b/patches/dosw4c.png index 8bb91598..bd6abfb0 100644 Binary files a/patches/dosw4c.png and b/patches/dosw4c.png differ diff --git a/patches/doswx1.png b/patches/doswx1.png index f1bf1683..c9a7773b 100644 Binary files a/patches/doswx1.png and b/patches/doswx1.png differ diff --git a/patches/doswx1c.png b/patches/doswx1c.png index 8bb91598..f36456a4 100644 Binary files a/patches/doswx1c.png and b/patches/doswx1c.png differ diff --git a/patches/doswx2.png b/patches/doswx2.png index f1bf1683..a6ad5251 100644 Binary files a/patches/doswx2.png and b/patches/doswx2.png differ diff --git a/patches/doswx2c.png b/patches/doswx2c.png index 8bb91598..db9d9022 100644 Binary files a/patches/doswx2c.png and b/patches/doswx2c.png differ diff --git a/patches/doswx3.png b/patches/doswx3.png index f1bf1683..c096c552 100644 Binary files a/patches/doswx3.png and b/patches/doswx3.png differ diff --git a/patches/doswx3c.png b/patches/doswx3c.png index 8bb91598..94abdd21 100644 Binary files a/patches/doswx3c.png and b/patches/doswx3c.png differ diff --git a/patches/doswx4.png b/patches/doswx4.png index f1bf1683..f470aa5a 100644 Binary files a/patches/doswx4.png and b/patches/doswx4.png differ diff --git a/patches/doswx4c.png b/patches/doswx4c.png index 8bb91598..68f6422b 100644 Binary files a/patches/doswx4c.png and b/patches/doswx4c.png differ diff --git a/patches/exit_grl.png b/patches/exit_grl.png new file mode 100644 index 00000000..24590707 Binary files /dev/null and b/patches/exit_grl.png differ diff --git a/patches/exit_rel.png b/patches/exit_rel.png new file mode 100644 index 00000000..662c9bfc Binary files /dev/null and b/patches/exit_rel.png differ diff --git a/patches/rw28_2.png b/patches/rw28_2.png index 980cfb4f..18d447fd 100644 Binary files a/patches/rw28_2.png and b/patches/rw28_2.png differ diff --git a/patches/rw28_4.png b/patches/rw28_4.png index 1300a20a..f66b1a08 100644 Binary files a/patches/rw28_4.png and b/patches/rw28_4.png differ diff --git a/patches/rw36_2.png b/patches/rw36_2.png index 7117e3a2..a871564c 100644 Binary files a/patches/rw36_2.png and b/patches/rw36_2.png differ diff --git a/patches/rw37_1.png b/patches/rw37_1.png index 05c7833d..aa74af56 100644 Binary files a/patches/rw37_1.png and b/patches/rw37_1.png differ diff --git a/patches/rw37_2.png b/patches/rw37_2.png index c4ca99be..7b32ed04 100644 Binary files a/patches/rw37_2.png and b/patches/rw37_2.png differ diff --git a/patches/rw37_3.png b/patches/rw37_3.png index 1cfd73d2..de695061 100644 Binary files a/patches/rw37_3.png and b/patches/rw37_3.png differ diff --git a/patches/rw37_4.png b/patches/rw37_4.png index 0deae4ff..9ae4e7c8 100644 Binary files a/patches/rw37_4.png and b/patches/rw37_4.png differ diff --git a/patches/rw39_1.png b/patches/rw39_1.png index eb870014..0c4a3049 100644 Binary files a/patches/rw39_1.png and b/patches/rw39_1.png differ diff --git a/patches/spine3_1.png b/patches/spine3_1.png index 71f6ae35..e4e14e98 100644 Binary files a/patches/spine3_1.png and b/patches/spine3_1.png differ diff --git a/patches/spine3_2.png b/patches/spine3_2.png index a86c7446..44b129d8 100644 Binary files a/patches/spine3_2.png and b/patches/spine3_2.png differ diff --git a/patches/spine4_1.png b/patches/spine4_1.png index ad0e2c5c..997b5cca 100644 Binary files a/patches/spine4_1.png and b/patches/spine4_1.png differ diff --git a/patches/sw2_1.png b/patches/sw2_1.png index e1f48f44..366f5d33 100644 Binary files a/patches/sw2_1.png and b/patches/sw2_1.png differ diff --git a/patches/sw2_2.png b/patches/sw2_2.png index 39499f38..f7c76fbd 100644 Binary files a/patches/sw2_2.png and b/patches/sw2_2.png differ diff --git a/patches/sw2_5.png b/patches/sw2_5.png index 381945f2..fe7d610b 100644 Binary files a/patches/sw2_5.png and b/patches/sw2_5.png differ diff --git a/patches/sw2_6.png b/patches/sw2_6.png index 2ea556f4..5d0666a4 100644 Binary files a/patches/sw2_6.png and b/patches/sw2_6.png differ diff --git a/patches/sw2_7.png b/patches/sw2_7.png index 365040b6..27808143 100644 Binary files a/patches/sw2_7.png and b/patches/sw2_7.png differ diff --git a/patches/sw2_8.png b/patches/sw2_8.png index d4787f04..cbfdc39c 100644 Binary files a/patches/sw2_8.png and b/patches/sw2_8.png differ diff --git a/patches/w105_1.png b/patches/w105_1.png index 03b08fb0..f723acab 100644 Binary files a/patches/w105_1.png and b/patches/w105_1.png differ diff --git a/patches/w92_1.png b/patches/w92_1.png index 5edfac31..7b2b4b84 100644 Binary files a/patches/w92_1.png and b/patches/w92_1.png differ diff --git a/patches/w92_2.png b/patches/w92_2.png index d1efcc18..5340ba6a 100644 Binary files a/patches/w92_2.png and b/patches/w92_2.png differ diff --git a/patches/wall76_1.png b/patches/wall76_1.png index 10ea6c14..575dbe7a 100644 Binary files a/patches/wall76_1.png and b/patches/wall76_1.png differ diff --git a/patches/wall79_1.png b/patches/wall79_1.png index 840eff87..024e874a 100644 Binary files a/patches/wall79_1.png and b/patches/wall79_1.png differ diff --git a/patches/wolf2.png b/patches/wolf2.png index bb4758da..f234a293 100644 Binary files a/patches/wolf2.png and b/patches/wolf2.png differ diff --git a/patches/wolf2b.png b/patches/wolf2b.png index b119d93f..ea2752e8 100644 Binary files a/patches/wolf2b.png and b/patches/wolf2b.png differ diff --git a/patches/wolf4.png b/patches/wolf4.png index 198abc3d..a8ddad0c 100644 Binary files a/patches/wolf4.png and b/patches/wolf4.png differ diff --git a/patches/wolf4b.png b/patches/wolf4b.png index 5ba30ae5..a3f9b249 100644 Binary files a/patches/wolf4b.png and b/patches/wolf4b.png differ diff --git a/patches/wolf6.png b/patches/wolf6.png index 0b7cb072..5efb79df 100644 Binary files a/patches/wolf6.png and b/patches/wolf6.png differ diff --git a/patches/wolf7.png b/patches/wolf7.png index 70f8d999..b3b06292 100644 Binary files a/patches/wolf7.png and b/patches/wolf7.png differ diff --git a/patches/wolf7b.png b/patches/wolf7b.png index 89a55a23..8e568b45 100644 Binary files a/patches/wolf7b.png and b/patches/wolf7b.png differ diff --git a/patches/wolf8.png b/patches/wolf8.png index 9f6ae2f9..950e2aa5 100644 Binary files a/patches/wolf8.png and b/patches/wolf8.png differ diff --git a/scripts/makejson b/scripts/makejson index 4334b623..755720f8 100755 --- a/scripts/makejson +++ b/scripts/makejson @@ -34,7 +34,7 @@ json_file = os.getenv("JSON") if version is None: sys.stderr.write("Version is not specified for release\n") sys.exit(1) -if version[0] is "v": +if version.startswith("v"): # Strip the leading "v" from versioning version = version[1:] @@ -42,14 +42,16 @@ if json_file is None: sys.stderr.write("JSON file not specified!\n") sys.exit(1) -with open("wads/freedoom1.wad", "rb") as f: - iwads["freedoom1.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() +for filename in iwads: + with open(os.path.join("wads", filename), "rb") as f: + data = f.read() + # TODO: MD5 is long-deprecated throughout the industry; this hash + # will be removed in a future version. + iwads[filename]["md5"] = hashlib.md5(data).hexdigest() + iwads[filename]["sha3"] = hashlib.sha3_512(data).hexdigest() + iwads[filename]["blake2b"] = hashlib.blake2b(data).hexdigest() -with open("wads/freedoom2.wad", "rb") as f: - iwads["freedoom2.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() - -with open("wads/freedm.wad", "rb") as f: - iwads["freedm.wad"]["md5"] = hashlib.md5(f.read()).hexdigest() + iwads[filename]["version"] = version iwads["freedoom1.wad"]["url"] = ( "https://github.com/freedoom/freedoom/releases/download/v" @@ -58,15 +60,7 @@ iwads["freedoom1.wad"]["url"] = ( + version + ".zip" ) -iwads["freedoom1.wad"]["version"] = version -iwads["freedoom2.wad"]["url"] = ( - "https://github.com/freedoom/freedoom/releases/download/v" - + version - + "/freedoom-" - + version - + ".zip" -) -iwads["freedoom2.wad"]["version"] = version +iwads["freedoom2.wad"]["url"] = iwads["freedoom1.wad"]["url"] iwads["freedm.wad"]["url"] = ( "https://github.com/freedoom/freedoom/releases/download/v" + version @@ -74,7 +68,6 @@ iwads["freedm.wad"]["url"] = ( + version + ".zip" ) -iwads["freedm.wad"]["version"] = version with open(json_file, "w") as f: json.dump(iwads, f, indent=2, sort_keys=True) diff --git a/sounds/dspunch.wav b/sounds/dspunch.wav index 5fda9f2f..563e86bc 100644 Binary files a/sounds/dspunch.wav and b/sounds/dspunch.wav differ diff --git a/sounds/dsskepch.wav b/sounds/dsskepch.wav index 2eae82ac..5de4f6d9 100644 Binary files a/sounds/dsskepch.wav and b/sounds/dsskepch.wav differ diff --git a/sprites/fcana0.png b/sprites/fcana0.png index 70015e27..6d604741 100644 Binary files a/sprites/fcana0.png and b/sprites/fcana0.png differ diff --git a/sprites/fcanb0.png b/sprites/fcanb0.png index 247cdfdd..021c3887 100644 Binary files a/sprites/fcanb0.png and b/sprites/fcanb0.png differ diff --git a/sprites/fcanc0.png b/sprites/fcanc0.png index f2a4d546..8f8f252c 100644 Binary files a/sprites/fcanc0.png and b/sprites/fcanc0.png differ diff --git a/sprites/keena0.png b/sprites/keena0.png index 9ff6f893..9e1505ab 100644 Binary files a/sprites/keena0.png and b/sprites/keena0.png differ diff --git a/sprites/keenb0.png b/sprites/keenb0.png index 6c61be07..69a04277 100644 Binary files a/sprites/keenb0.png and b/sprites/keenb0.png differ diff --git a/sprites/keenc0.png b/sprites/keenc0.png index bb18d220..3ad6657c 100644 Binary files a/sprites/keenc0.png and b/sprites/keenc0.png differ diff --git a/sprites/keend0.png b/sprites/keend0.png index defb66b0..cae7dfd7 100644 Binary files a/sprites/keend0.png and b/sprites/keend0.png differ diff --git a/sprites/keene0.png b/sprites/keene0.png index 1ca85002..89541799 100644 Binary files a/sprites/keene0.png and b/sprites/keene0.png differ diff --git a/sprites/keenf0.png b/sprites/keenf0.png index 6088c483..4cb793fa 100644 Binary files a/sprites/keenf0.png and b/sprites/keenf0.png differ diff --git a/sprites/keeng0.png b/sprites/keeng0.png index 73725519..54070075 100644 Binary files a/sprites/keeng0.png and b/sprites/keeng0.png differ diff --git a/sprites/keenh0.png b/sprites/keenh0.png index 1929ddbe..8be6d421 100644 Binary files a/sprites/keenh0.png and b/sprites/keenh0.png differ diff --git a/sprites/keeni0.png b/sprites/keeni0.png index d28cb124..c75f3353 100644 Binary files a/sprites/keeni0.png and b/sprites/keeni0.png differ diff --git a/sprites/keenj0.png b/sprites/keenj0.png index f72dd869..22246089 100644 Binary files a/sprites/keenj0.png and b/sprites/keenj0.png differ diff --git a/sprites/keenk0.png b/sprites/keenk0.png index b5218e7c..7130711a 100644 Binary files a/sprites/keenk0.png and b/sprites/keenk0.png differ diff --git a/sprites/keenl0.png b/sprites/keenl0.png index e4817325..e58ab014 100644 Binary files a/sprites/keenl0.png and b/sprites/keenl0.png differ diff --git a/sprites/keenm0.png b/sprites/keenm0.png index ea59f0b2..686155ce 100644 Binary files a/sprites/keenm0.png and b/sprites/keenm0.png differ diff --git a/sprites/plasa0.png b/sprites/plasa0.png index 13dc7c90..19e15dc5 100644 Binary files a/sprites/plasa0.png and b/sprites/plasa0.png differ diff --git a/sprites/plsfa0.png b/sprites/plsfa0.png index 48b864cc..1efcc542 100644 Binary files a/sprites/plsfa0.png and b/sprites/plsfa0.png differ diff --git a/sprites/plsfb0.png b/sprites/plsfb0.png index 2f210d0c..d4721306 100644 Binary files a/sprites/plsfb0.png and b/sprites/plsfb0.png differ diff --git a/sprites/plsga0.png b/sprites/plsga0.png index 2e9f3b58..8ffdfb54 100644 Binary files a/sprites/plsga0.png and b/sprites/plsga0.png differ diff --git a/sprites/plsgb0.png b/sprites/plsgb0.png index 82d4e89d..f3522f57 100644 Binary files a/sprites/plsgb0.png and b/sprites/plsgb0.png differ