From DoomWiki.org

(Custom things mapping: update skip-for-now list)
(.ini scripts: describe extraCoopBot.php)
(47 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''XymphBot''' is an account for use in MediaWiki API queries. It is owned by [[User:Xymph|Xymph]], and used via bot scripts written in PHP based on the [https://github.com/hamstar/Wikimate Wikimate] library.
+
'''XymphBot''' is an account for use in [[mediawikiwiki:API:Main page|MediaWiki API]] queries. It is owned by [[User:Xymph|Xymph]], and used via bot scripts written in PHP based on the [https://github.com/hamstar/Wikimate Wikimate] library. After a coding and testing period, it commenced automated edits in October 2016.
  
 
The overall goal of these scripts is to put as much computer-creatable content into map pages as feasible, and check that existing content is as complete and consistent as possible, so that human contributors can focus more on crafting creative prose like background information, walkthroughs, trivia and other map-specific content. Also, I like alliteration. :)
 
The overall goal of these scripts is to put as much computer-creatable content into map pages as feasible, and check that existing content is as complete and consistent as possible, so that human contributors can focus more on crafting creative prose like background information, walkthroughs, trivia and other map-specific content. Also, I like alliteration. :)
Line 15: Line 15:
 
The .ini file can easily be generated from a list of levels in wikicode (e.g. [https://doomwiki.org/w/index.php?title=Doom_II&action=edit&section=4 Doom II]'s) copy/pasted into a file, and passing it through the '''wiki2ini.php''' script. This extracts the list of required map settings and prefixes it with the general settings, so that only a few manual edits remain necessary to result in a .ini file usable by the scripts.
 
The .ini file can easily be generated from a list of levels in wikicode (e.g. [https://doomwiki.org/w/index.php?title=Doom_II&action=edit&section=4 Doom II]'s) copy/pasted into a file, and passing it through the '''wiki2ini.php''' script. This extracts the list of required map settings and prefixes it with the general settings, so that only a few manual edits remain necessary to result in a .ini file usable by the scripts.
  
== Scripts ==
+
== .ini scripts ==
  
 
=== skeletonBot.php ===
 
=== skeletonBot.php ===
Line 25: Line 25:
 
=== secretsBot.php ===
 
=== secretsBot.php ===
 
Compares DMMPST's list of secret sectors against those in map pages' Secrets sections (or Official subsections) and updates its formatting if necessary, or adds the list if such a section is empty.
 
Compares DMMPST's list of secret sectors against those in map pages' Secrets sections (or Official subsections) and updates its formatting if necessary, or adds the list if such a section is empty.
 +
 +
=== pspawnsBot.php ===
 +
Compares DMMPST's list of DM/CTF player spawns with facings (directions) against those in map pages' "Player spawns" sections and updates their formatting if necessary, or adds the list if such a section is empty.
  
 
=== dmmpstBot.php ===
 
=== dmmpstBot.php ===
Line 30: Line 33:
 
Optionally provides interactive comparison between old and new contents of the pertaining section, prior to submitting the edit.<br/>
 
Optionally provides interactive comparison between old and new contents of the pertaining section, prior to submitting the edit.<br/>
 
Alternatively creates new map pages with DMMPST's full skeleton output.
 
Alternatively creates new map pages with DMMPST's full skeleton output.
 +
 +
=== dmsectionBot.php ===
 +
Uses DMMPST's output to add "Player spawns" and Things subsections (with a short introduction sentence) to the Deathmatch sections for separate arenas within larger maps. The things tables are generated from WADs with the pertaining levels (linedefs and things) cropped down to just the arenas.<br/>
 +
For regular maps without separate arenas, only the "Player spawns" subsection is added, along with the Deathmatch section header (before the Statistics section) if not yet present.<br/>
 +
Conversely, for maps without [[deathmatch start]]s, the Deathmatch header is removed (unless the section is not empty).<br/>
 +
Optionally provides interactive comparison between old and new contents of the pertaining section or page, prior to submitting the edit.
 +
 +
=== extraCoopBot.php ===
 +
Uses DMMPST's logging of additional Things existing in [[cooperative]] (for [[Thing#Boom flags|Boom]] or [[Thing#Hexen Flags|Hexen]] flags) or [[multiplayer]] mode when compared to single-player mode to add categories {{cat|Levels with extra monsters in co-op}} and/or {{cat|Levels with extra equipment in co-op}}.<br/>
 +
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
  
 
=== uploadmapBot.php ===
 
=== uploadmapBot.php ===
 
Uploads new or updated [[User:Xymph/Map views|map view images]] with description text, of which the exact phrasing about scale or size and cropping is determined from image sets generated via [[Omgifol#Drawing maps|Omgifol drawmaps]]. New images are uploaded according to the map view pattern.<br/>
 
Uploads new or updated [[User:Xymph/Map views|map view images]] with description text, of which the exact phrasing about scale or size and cropping is determined from image sets generated via [[Omgifol#Drawing maps|Omgifol drawmaps]]. New images are uploaded according to the map view pattern.<br/>
 
Always provides interactive viewing of (old and) new contents of the description, prior to submitting the image and description.
 
Always provides interactive viewing of (old and) new contents of the description, prior to submitting the image and description.
 +
 +
=== uploadmapDmBot.php ===
 +
Performs the same tasks as uploadmapBot.php, but for deathmatch (arena) map views with spawn points. The images are generated from WADs with the pertaining linedefs cropped down to just the arenas, but their things left intact (because cropping them in [[SLADE 3]] changes their order, which would result in incorrect spawn points numbering).
  
 
=== mapviewBot.php ===
 
=== mapviewBot.php ===
Checks and updates the map view (link, dimensions, caption, and spots template) in map pages' Walkthrough sections. Newly uploaded images are linked according to the map view pattern.<br/>
+
Checks and updates the map view (link, dimensions, caption, and map spots template) in map pages' Walkthrough sections. Newly uploaded images are linked according to the map view pattern.<br/>
 
Always provides interactive comparison between old and new contents of the map view lines, prior to submitting the edit.
 
Always provides interactive comparison between old and new contents of the map view lines, prior to submitting the edit.
 +
 +
=== mapviewDmBot.php ===
 +
Performs the same tasks as mapviewBot.php, but in Analysis sections for deathmatch maps or in Deathmatch sections for arenas within larger maps, and without the spots template.
  
 
=== navboxBot.php ===
 
=== navboxBot.php ===
Line 48: Line 67:
  
 
=== galleryBot.php ===
 
=== galleryBot.php ===
Checks and updates the gallery in map pages' Areas / screenshots sections. Adds the gallery container (and section) if it's not yet present. Applies the [[Doom Wiki:Central Processing#Map screenshots gallery dimensions|standard parameters]] and trims unneeded image attributes, if any. Also cleans up some minor page issues, if necessary.<br/>
+
Checks and updates the gallery in map pages' "Areas / screenshots" sections. Adds the gallery container (and section) if it's not yet present. Applies the [[Doom Wiki:Central Processing#Map screenshots gallery dimensions|standard parameters]] and trims unneeded image attributes, if any. Also cleans up some minor page issues, if necessary.<br/>
 
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
 
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
  
 
=== demolinkBot.php ===
 
=== demolinkBot.php ===
Checks and updates [[Compet-n]] and [[Doomed Speed Demos Archive|DSDA]] links in map pages' External links sections, or adds them if applicable.  Also standardizes formatting of categories and H2 headers.<br/>
+
Checks and updates [[Compet-n]] and [[Doomed Speed Demos Archive|DSDA]] links in map pages' "External links" sections, or adds them if applicable.  Also standardizes formatting of categories and H2 headers.<br/>
 
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
 
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
  
Line 59: Line 78:
 
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.<br/>
 
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.<br/>
 
If the page already deviates from the skeleton text, then instead shows the initial intro line and all trailing categories.
 
If the page already deviates from the skeleton text, then instead shows the initial intro line and all trailing categories.
 +
 +
=== comparisonBot.php ===
 +
Checks and updates the map view gallery for comparing PC maps with console counterpart(s) on the latter's map pages: adds the PSX variant if not yet included, appends platform indicators to map captions, and redimensions the gallery per the aspect ratio of the PC image so that [[User:Xymph/Map views#Goal for thumbnail area|its area approximates 90000 px<sup>2</sup>]].<br/>
 +
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
 +
 +
=== mapperMaps.php ===
 +
In a mapper's article, finds the multi-level WADs and their pertaining maps that are covered in the .ini collection, checks consistency of their names (using [http://www.php.net/manual/en/function.levenshtein.php approximate matching] to detect typos) and authorship both ways, and (re)links them via the {{tl|maplinkgen}} template.<br/>
 +
If needed, italicizes a parenthesized string after an individual map entry (usually cooperating authors).  Also, formats bullet indentation consistently, and erases trailing whitespace and extraneous empty lines throughout the page. Further, (re)formats DEFAULTSORT and any categories towards the end of the page, one per line.<br/>
 +
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.<br/>
 +
Lastly, lists any maps attributed in the .ini collection that were not found on the mapper's page, suitably formatted for manual addition.<br/>
 +
All this can performed on one named page, or on a list of pages loaded from a file. Auxiliary script '''listCategory.php''' generates such a list from the {{cat|Mappers}} category.
 +
 +
=== createMapper.php ===
 +
From the author registration in the .ini collection, generates the text for a manually createable stub page of a mapper, with preformatted name, alias, DEFAULTSORT (if needed) and category. Organizes their covered projects / contributions by year (optionally with annual section headers), with formatted lists of co-authors per map where applicable.
 +
 +
=== addCategoryBot.php ===
 +
Appends a new category to all or selected map pages. Optionally inserts it before an existing category.<br/>
 +
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
 +
 +
== Miscellaneous scripts ==
 +
These scripts don't work on a .ini file and its series of map pages as such, but perform other convenient tasks.
 +
 +
=== coveredWads.php ===
 +
Collects and lists the names of all single- and multi-level WADs covered by the aforementioned .ini files and scripts, and totals the number of maps included in them. Also totals the number of navboxes created/updated by [[#navboxGen.php|navboxGen.php]], the number of [[#Custom things mapping|custom things mapping files]], and the number of distinct links covered by [[#demolinkBot.php|demolinkBot.php]]. Its output is the entire "[[#WADs covered so far|WADs covered so far]]" section below.
 +
 +
=== articleSort.php ===
 +
Finds article, category and template pages whose titles start with an article ("A"/"An"/"The") and shows whether they contain a DEFAULTSORT tag, named map template, category sortkey, or none. Its output is the entire "[[User:Xymph/Pages starting with an article|Pages starting with an article]]" page. Thanks to [[User:Ryan W/Maintenance#Minimal knowledge of wiki structure and goals 2|Ryan W]] for the idea.
 +
 +
=== textmapStats.php ===
 +
Processes an extracted TEXTMAP lump with regular expressions and a little code to generate statistics in [[Template:Mapdata]] format, along with formatted lists of secret sector numbers and deathmatch spawn points (if any). Useful for [[UDMF]] maps, which DMMPST doesn't support.
 +
 +
=== textmapExtra.php ===
 +
Processes an extracted TEXTMAP lump with regular expressions and some code to collect monster and equipment counts for single-player and cooperative modes, and lists those {{cat|Levels with extra monsters in co-op|where the}} {{cat|Levels with extra equipment in co-op|counts differ}}. Again, useful for UDMF maps.
 +
 +
=== listWikiLinks.php ===
 +
Collects links to {{wp|Main Page|Wikipedia}} by templates, interwiki links and direct links, along with the DoomWiki pages they're linked from, in the following namespaces: main, Doom Wiki, Help, File, Category, and Template. Its output is the entire "[[User:Xymph/List of Wikipedia links|List of Wikipedia links]]" page. Requested by [[User talk:Xymph#Report on Wikipedia linking?|Ryan W]].
 +
 +
=== listInterLinks.php ===
 +
Collects direct links to sites for which [[Special:Interwiki|Interwikis]] are defined, along with the DoomWiki pages they're linked from, in the following namespaces: main, Doom Wiki, Help, File, Category, and Template. Its output is the entire "[[User:Xymph/List of Interwiki links|List of Interwiki links]]" page. Thanks to [[User talk:Xymph#Interwiki links|Gez]] for the idea.
 +
 +
=== listExternLinks.php ===
 +
Collects direct links to sites for which [[:Category:External link templates|external link templates]] are defined, along with the DoomWiki pages they're linked from, in the following namespaces: main, Doom Wiki, Help, File, and Category. Its output is the entire "[[User:Xymph/List of templatable links|List of templatable links]]" page. Thanks to [[User talk:Xymph#Templatable links|Gez]] for the idea.
 +
 +
=== linkArticle.php ===
 +
Performs a [[Special:Search|search]] for the specified string in the main and Category namespaces, then in each of the resulting articles wikilinks the first occurrence of the string, if not already linked.<br/>
 +
Conversely, '''unlinkArticle.php''' removes any wikilinks.<br/>
 +
Both always provide interactive comparison between old and new contents of the page, prior to submitting the edit.
 +
 +
=== appearMaps.sh ===
 +
From the archived things tables, collects/sorts the maps with the highest count of a given [[thing]] and emits a prettytable. Because [[Holy Hell]] MAP05 is a superset of MAP01-04, the latter are skipped from the table.
 +
 +
=== top100MemMaps.php ===
 +
Processes the maps list of the [[Top 100 Most Memorable Maps]] and appends a sentence about the map's place to each page's intro section (taking a trailing 'level stub' into account). Also checks for the presence of the Top100 category.
  
 
=== And more? ===
 
=== And more? ===
Line 69: Line 141:
  
 
===Custom things mapping===
 
===Custom things mapping===
For custom things, a description or table of thing types and the new monster/weapon names is particularly helpful, and can be used to provide a mapping file to DMMPST that automatically incorporates the customizations into the Things table. An initial discussion and example mapping was presented for [[Talk:Valiant#Custom monster mapping|Valiant]]. When generating the Things tables for [[Ancient Aliens]], I wasn't fully aware of this topic yet, so those tables still contain default names.
+
For custom things, a description or table of thing types and the new monster/weapon names is particularly helpful, and can be used to provide a mapping file to DMMPST that automatically incorporates the customizations into the Things table. An initial discussion and example mapping was presented for [[Talk:Valiant#Custom monster mapping|Valiant]].
  
 
The mapping file ideally links to description(s) of the custom thing(s) on the WAD's overview page. This can be a [[Resurgence#Monsters|simple one-liner]] but preferably contains a brief [[NewDoom Community Project II#Monsters|entry per thing]] that mentions which original thing is replaced by which custom one, and may be [[Scythe 2#Monsters|even more elaborate]].
 
The mapping file ideally links to description(s) of the custom thing(s) on the WAD's overview page. This can be a [[Resurgence#Monsters|simple one-liner]] but preferably contains a brief [[NewDoom Community Project II#Monsters|entry per thing]] that mentions which original thing is replaced by which custom one, and may be [[Scythe 2#Monsters|even more elaborate]].
Line 75: Line 147:
 
So, to help, please provide such descriptions (or provide a quick mapping table on the WAD's talk page) for the following WADs that I already processed previously:
 
So, to help, please provide such descriptions (or provide a quick mapping table on the WAD's talk page) for the following WADs that I already processed previously:
  
 +
<div style="-webkit-column-width: 20em; -moz-column-width: 20em; column-width: 20em;">
 
* [[Aliens TC]]
 
* [[Aliens TC]]
* [[Ancient Aliens]]
 
 
* [[Caverns of Darkness]]
 
* [[Caverns of Darkness]]
 
* [[Cheogsh]]
 
* [[Cheogsh]]
 
* [[Daedalus: Alien Defense]]
 
* [[Daedalus: Alien Defense]]
 +
* [[Disrepair]]
 
* [[Doom Raider: Crypt of the Vile]]
 
* [[Doom Raider: Crypt of the Vile]]
 +
* [[Doomworld Mega Project 2014]] (zDMP2014.pk3)
 +
* [[Doomworld Mega Project 2015]] (DMP15C.wad)
 +
* [[Doomworld Mega Project 2017]]
 
* [[Epic]]
 
* [[Epic]]
 +
* [[The Green Machine]]
 +
* [[Happy Time Circus]]
 
* [[Harmony]]
 
* [[Harmony]]
* [[Happy Time Circus]]
 
 
* [[Oniria 2]]
 
* [[Oniria 2]]
 
* [[Phobia - The Age]]
 
* [[Phobia - The Age]]
 +
* [[Putrefier]]
 
* [[Scythe X]]
 
* [[Scythe X]]
 
* [[Threshold of Pain]]
 
* [[Threshold of Pain]]
 +
* [[Void and Rainbow]]
 +
* [[Waterlab GZD]]
 +
* [[The ZDoom Community Map Project "Take 1"]]
 +
</div>
  
 
and verify the correctness of Valiant's mapping file. Then I can (re)generate the Things tables on all pertaining map pages.
 
and verify the correctness of Valiant's mapping file. Then I can (re)generate the Things tables on all pertaining map pages.
Line 93: Line 175:
 
Going forward, the same is welcome for WADs I am skipping for now because the overview information does not appear to be sufficiently descriptive and complete. This includes:
 
Going forward, the same is welcome for WADs I am skipping for now because the overview information does not appear to be sufficiently descriptive and complete. This includes:
  
 +
<div style="-webkit-column-width: 20em; -moz-column-width: 20em; column-width: 20em;">
 
* [[The Adventures of MassMouth]], [[Massmouthmas]], [[MassMouth 2]]
 
* [[The Adventures of MassMouth]], [[Massmouthmas]], [[MassMouth 2]]
* [[All Hell is Breaking Loose]]
+
* [[The Alfonzone]]
* [[Army of Darkness TC]]
+
* [[Armageddon 2]]
 
* [[Assault on Tei Tenga]]
 
* [[Assault on Tei Tenga]]
 
* [[Batman Doom]]
 
* [[Batman Doom]]
 +
* [[Brutal Doom: Hell on Earth Starter Pack]]
 
* [[Cheogsh 2]], [[Realm of Cheogsh]]
 
* [[Cheogsh 2]], [[Realm of Cheogsh]]
 +
* [[Community Is Falling 3]]
 
* [[Cyberdreams]]
 
* [[Cyberdreams]]
 
* [[Demons of Problematique]], [[Demons of Problematique 2]]
 
* [[Demons of Problematique]], [[Demons of Problematique 2]]
Line 104: Line 189:
 
* [[Doom Arcade]]
 
* [[Doom Arcade]]
 
* [[Doom Resurrection (WAD)]]
 
* [[Doom Resurrection (WAD)]]
 +
* [[Ghoul School 3D]]
 +
* [[Midgard Outlaw]]
 
* [[Mordeth]]
 
* [[Mordeth]]
 
* [[NeoDoom]]
 
* [[NeoDoom]]
 
* [[Nerves of Steel]]
 
* [[Nerves of Steel]]
 
* [[Nimrod: Project Doom]]
 
* [[Nimrod: Project Doom]]
 +
* [[Operation Body Count]]
 
* [[Operation Overlord]]
 
* [[Operation Overlord]]
 +
* [[Operation Sea Wolf]]
 
* [[Pirate Doom]]
 
* [[Pirate Doom]]
 
* [[Project Einherjar]]
 
* [[Project Einherjar]]
 
* [[Psychophobia]]
 
* [[Psychophobia]]
 +
* [[Realms of Dr. Chaos]]
 +
* [[Splatterhouse 3D]]
 
* [[STRAIN]]
 
* [[STRAIN]]
 
* [[Strange Aeons]]
 
* [[Strange Aeons]]
 +
* [[Stronghold: On the Edge of Chaos]]
 
* [[Temple of the Lizard Men 2]]
 
* [[Temple of the Lizard Men 2]]
 +
* [[Total Chaos]]
 
* [[Twilight Warrior]]
 
* [[Twilight Warrior]]
 +
* [[The Twilight Zone II: Final Dreams]]
 
* [[Unloved]]
 
* [[Unloved]]
 
* [[Winter's Fury]]
 
* [[Winter's Fury]]
 
* [[ZanZan]]
 
* [[ZanZan]]
 
* [[Zen Dynamics]]
 
* [[Zen Dynamics]]
 +
</div>
 +
 +
and (m?)any more I haven't gotten around to yet.
 +
 +
== WADs covered so far ==
 +
The lists below show the single-level and multi-level WADs that have so far been covered (created and/or updated) via XymphBot and its .ini files. Map counts per WAD and various totals are included (''state of 2019-05-17 16:28 CDT'').
 +
 +
===Single-level WADs===
 +
<div style="-moz-column-width: 20em; column-width: 20em;">
 +
* [[5till L1 Complex]]
 +
* [[After the Holocaust]]
 +
* [[All Aboard the Mega Magilla Gorilla Flotilla]]
 +
* [[Altar of Evil]] *
 +
* [[Arcadia Demade]]
 +
* [[Artica 2]]
 +
* [[Artica 3]] *
 +
* [[Artica 4]] *
 +
* [[Artica B]]
 +
* [[Atomic Tomb]]
 +
* [[The Attraction to All Things Uncertain]]
 +
* [[Austerity: A Simplicity Tribute]]
 +
* [[Awakening]] *
 +
* [[Axiom]] *
 +
* [[B21]]
 +
* [[Berserk (WAD)]]
 +
* [[BLT]]
 +
* [[Breach]]
 +
* [[Brigandine]]
 +
* [[The C.P.U.]]
 +
* [[Call of Dooty]] *
 +
* [[The Call of Ktulu]]
 +
* [[The Castle of Blood]]
 +
* [[Castle of Eternal Carrot in the Sky]]
 +
* [[Castle of the Renegades]] (Doom II)
 +
* [[Castle of the Renegades]] (Doom)
 +
* [[Chainmill]]
 +
* [[Chambers of Dis]]
 +
* [[Cheogsh]]
 +
* [[Chord 1]]
 +
* [[Chord 2]]
 +
* [[Chord 3]]
 +
* [[Chord G]]
 +
* [[Chord NG]]
 +
* [[The City of the Damned]] *
 +
* [[The City of the Damned: Apocalypse]]
 +
* [[Comatose]]
 +
* [[The Community is falling!! Oh No!!!]]
 +
* [[Congestion Control]]
 +
* [[Containment Area]]
 +
* [[The Corruption of Substation Alpha]]
 +
* [[Crestfallen]]
 +
* [[CROSS.WAD]]
 +
* [[CrossFire]]
 +
* [[Crossing Acheron]]
 +
* [[Crusader (WAD)]]
 +
* [[The Cursed Generation]]
 +
* [[The D.M.Z.]]
 +
* [[Dante's Gate]]
 +
* [[Dark Tide]]
 +
* [[Darker]]
 +
* [[Day of the Acolyte]] *
 +
* [[Dead.air]]
 +
* [[Dead.wire]]
 +
* [[Decade]]
 +
* [[The Deimos Subway]]
 +
* [[Demonastery]]
 +
* [[DemWAD01]]
 +
* [[Device One]]
 +
* [[Diabolos]]
 +
* [[Dickie 10]]
 +
* [[Diopatra]]
 +
* [[Disturbia]]
 +
* [[Doom City]]
 +
* [[Doom Must Fall]]
 +
* [[Doom Raider: Crypt of the Vile]]
 +
* [[Doom2 Map14 Homage]]
 +
* [[DoomEd example levels]]
 +
* [[Doomsday of UAC]]
 +
* [[Doomworld Forum Adventures!]]
 +
* [[Doomworld Forums 3]]
 +
* [[Drip Feed]]
 +
* [[The Dying End]]
 +
* [[Dystopia]]
 +
* [[E1M10: Sewers (Xbox Doom)]]
 +
* [[E2M1ED.WAD]]
 +
* [[Eden]]
 +
* [[The Enemy Inside]]
 +
* [[Escape from Castle Chezcrea]]
 +
* [[Europa 1]]
 +
* [[Europa 2]]
 +
* [[Europa 3 - The Dark Side of Vrack]]
 +
* [[Exquisite Corpse]]
 +
* [[Extinguished]]
 +
* [[Extramap.wad]]
 +
* [[The Eye]]
 +
* [[Eyedea]]
 +
* [[The Farside of Titan]]
 +
* [[The Final Geometry]]
 +
* [[Forsaken Overlook]]
 +
* [[Fortress of Doom]]
 +
* [[FORTRESS.WAD]]
 +
* [[Frozen Time]]
 +
* [[Fuel Devourer]] *
 +
* [[The Fury]]
 +
* [[The Given]]
 +
* [[Grove]]
 +
* [[Halo Of Wonders]] *
 +
* [[Hank's Lair]]
 +
* [[Happy Time Circus]]
 +
* [[HeDRoX]]
 +
* [[Hell's Eventide]]
 +
* [[Helpyourselfish]]
 +
* [[A Hidden Mountain Factory]]
 +
* [[High/Low 1]]
 +
* [[High/Low 2]]
 +
* [[High/Low 3]]
 +
* [[High/Low 4]]
 +
* [[High/Low 5]]
 +
* [[The Hive]]
 +
* [[Hollow Minds]]
 +
* [[Holy Hell]]
 +
* [[Holy Hell Revealed]]
 +
* [[Hoover Dam]]
 +
* [[IC2005]]
 +
* [[Icebound]]
 +
* [[id Map01]]
 +
* [[Impossible: A New Reality]] *
 +
* [[The Interdiction Zone]]
 +
* [[Internal Reaches 2]]
 +
* [[Internal Reaches 4]]
 +
* [[Invasion... Level 1: Contamination]]
 +
* [[Invasion... Level 2: The Upper Decks]]
 +
* [[Invasion: The Siege]]
 +
* [[Jade Earth]]
 +
* [[Jägermörder 1: Chemical Lab]]
 +
* [[Jägermörder 2: Terra Nova]]
 +
* [[KZDoom1]]
 +
* [[KZDoom2]]
 +
* [[KZDoom3]]
 +
* [[KZDoom4]]
 +
* [[KZDoom5]]
 +
* [[KZDoom6]]
 +
* [[KZDoom7]]
 +
* [[L'agonie Finale]]
 +
* [[Lake4]]
 +
* [[Man on the Moon]] *
 +
* [[MAP33: Betray (Xbox Doom II)]]
 +
* [[MarkRoom]]
 +
* [[Mayan Temple]]
 +
* [[MEGADETH.WAD]]
 +
* [[Megalab]]
 +
* [[Megawatt]]
 +
* [[Miasma]]
 +
* [[Mines of Titan]]
 +
* [[Monolith 1]]
 +
* [[Monolith 2]]
 +
* [[Monolith 3]]
 +
* [[Monolith 4]]
 +
* [[Monolith 5]]
 +
* [[Monolith 6]]
 +
* [[Monster Hunter Ltd. Part I]] *
 +
* [[Monster Hunter Ltd. Part II]] *
 +
* [[Neith]]
 +
* [[Nickel Electroplate Facility]]
 +
* [[Nightfall]]
 +
* [[No Chance]]
 +
* [[Nostromo's Run]]
 +
* [[Not Another E1 Wad]]
 +
* [[Not Another E3 Wad]]
 +
* [[Null Space]]
 +
* [[Odessa 1]]
 +
* [[Odessa 11]]
 +
* [[Odessa 12]]
 +
* [[Odessa 13]]
 +
* [[Odessa 14]]
 +
* [[Odessa 2]]
 +
* [[Odessa 3]]
 +
* [[Odessa 6]]
 +
* [[Odessa 7]]
 +
* [[Odessa 9]]
 +
* [[Ogro Power Facility]]
 +
* [[Omelet Face]]
 +
* [[Oniria]] *
 +
* [[Oniria 2]]
 +
* [[Origwad]]
 +
* [[The Outer Darkness]]
 +
* [[Outpost 21]]
 +
* [[Painful Evil]]
 +
* [[Palladium Electroplate Facility]]
 +
* [[Pax]]
 +
* [[Pazuzu]]
 +
* [[Phobos Mission Control]]
 +
* [[Planisphere]]
 +
* [[Planisphere 2]]
 +
* [[Plasmaplant]]
 +
* [[Polygon Base]]
 +
* [[Port Glacia]]
 +
* [[Punisher]]
 +
* [[Putrefier]]
 +
* [[RCK]]
 +
* [[RCK2]]
 +
* [[Realm of the Green Soul]]
 +
* [[Recant]]
 +
* [[Reconstruction / Decomposition]]
 +
* [[Red Rock]]
 +
* [[Redemption of the Slain]]
 +
* [[REDRUM]]
 +
* [[Return of The Order]] *
 +
* [[RRWARD01]]
 +
* [[RRWARD02]]
 +
* [[RRWARD03]]
 +
* [[RRWARD04]]
 +
* [[Rule the World!]]
 +
* [[Ruma]]
 +
* [[Run Buddy]]
 +
* [[Runaway Train]]
 +
* [[Sapidus]]
 +
* [[Saturnine Chapel]]
 +
* [[Sharp Things]]
 +
* [[Sheer Poison]]
 +
* [[Shrine of the Warriors]]
 +
* [[Sigma]]
 +
* [[Sin City]]
 +
* [[Soldier of Fortune]]
 +
* [[Songs of the Damned]]
 +
* [[Space Station Omega]]
 +
* [[Spidersilk]]
 +
* [[SQUARES]]
 +
* [[Squid]]
 +
* [[Squid 2]]
 +
* [[STONES.WAD]]
 +
* [[Supernaught]]
 +
* [[Surrounded!]]
 +
* [[Talpoida]]
 +
* [[Tantrum 2]]
 +
* [[Tech Gone Bad]]
 +
* [[TEKRKBRN]]
 +
* [[Temple of Chaos 2 - Warped Reality]] *
 +
* [[Their Selfish Realms]]
 +
* [[Thematic Elements]]
 +
* [[The Titan Anomaly]]
 +
* [[Total Control]]
 +
* [[Town Of Witchcraft]]
 +
* [[ToxicHole]]
 +
* [[Tremor]]
 +
* [[Triple-Play]]
 +
* [[Trouble on Titan]]
 +
* [[UAC Invasion: The Supply Depot]] *
 +
* [[UCA]]
 +
* [[Umbra of Fate]]
 +
* [[Under Neith]]
 +
* [[The Unholy Trinity]]
 +
* [[Untitled]]
 +
* [[Untitled 2]]
 +
* [[Valhalla]]
 +
* [[Vengeance: SkyBase Sirius IV]]
 +
* [[Venom]]
 +
* [[Void]] *
 +
* [[Void and Rainbow]]
 +
* [[Vrack]]
 +
* [[Vrack 2]]
 +
* [[Vrack 3]]
 +
* [[The Wailing Horde]]
 +
* [[The Warlock's Hearth]]
 +
* [[Warphouse]]
 +
* [[Wasteland: Dead Base]]
 +
* [[Wasteland: Mountain of Fire]]
 +
* [[The Waterfront]]
 +
* [[Waterlab GZD]]
 +
* [[Wow]]
 +
* [[Xenomorph: The complex]]
 +
* [[XXXI CyberSky]]
 +
* [[Yesterday's Nightmare]]
 +
* [[You Dig]]
 +
* [[The ZDoom Community Map Project "Take 1"]]
 +
* [[The ZDoom Community Map Project "Take 2"]]
 +
* [[Zeus]]
 +
* [[Zort 1]]
 +
* [[Zort 2]]
 +
* [[Zort 3]]
 +
* [[Zort 4]]
 +
* [[Zort 5]]
 +
* [[Zort 6]]
 +
* [[Zort 7]]
 +
* [[Zort 8]]
 +
* [[Zort 9]]
 +
</div>
 +
 +
===Multi-level WADs===
 +
<div style="-moz-column-width: 20em; column-width: 20em;">
 +
* [[1 Monster]] (25)
 +
* [[10 Sectors]] (32)
 +
* [[1994 Tune-up Community Project]] (32)
 +
* [[2 Sectors]] (17)
 +
* [[2002 A Doom Odyssey]] (37)
 +
* [[2002 A Doom Odyssey#Tenth anniversary edition]] (38)
 +
* [[2048 Unleashed]] (49) *
 +
* [[3 heures d'agonie]] (32)
 +
* [[3 heures d'agonie 2]] (32)
 +
* [[3 heures d'agonie 3]] (32) *
 +
* [[32 in 24]] (32)
 +
* [[32in24 II: Single Player]] (19)
 +
* [[32in24 III: DUEL CORE]] (32)
 +
* [[32in24 IV: CAPTURE THE FAG]] (32)
 +
* [[32in24-10: MAPS FOR THE MAP GOD]] (39)
 +
* [[32in24-11: Occupy Doomworld]] (45)
 +
* [[32in24-12: IRON MAPPER]] (37)
 +
* [[32in24-13: A Thanksgiving Without Burgers]] (48) *
 +
* [[32in24-14: How the Hamburglar Stole Christmas]] (42)
 +
* [[32in24-15: DWANGO Unchained]] (54)
 +
* [[32in24-16: DOOT CTF]] (34)
 +
* [[32in24-5]] (32)
 +
* [[32in24-6]] (46)
 +
* [[32in24-7: Return of the Night of Capture the Flag]] (35)
 +
* [[32in24-8: DWANGO2008]] (33)
 +
* [[32in24-9: Return of DUEL CORE]] (45)
 +
* [[50 Monsters]] (34) *
 +
* [[50 Shades of Graytall]] (18)
 +
* [[99 Ways to Die]] (3)
 +
* [[Absolutely Killed]] (9)
 +
* [[The Abyss]] (24)
 +
* [[Alien Vendetta]] (35)
 +
* [[Aliens TC]] (11)
 +
* [[All Hell is Breaking Loose]] (5) *
 +
* [[Aloha999]] (8)
 +
* [[Ancient Aliens]] (32) *
 +
* [[Army of Darkness TC]] (10) *
 +
* [[Artica]] (2)
 +
* [[The Artifact (WAD)]] (3)
 +
* [[ASDoom]] (9)
 +
* [[ASDOOMII: The Final Countdown]] (8)
 +
* [[Back to Hell]] (9)
 +
* [[Back to Saturn X]] E1 (27)
 +
* [[Back to Saturn X]] E2 (27)
 +
* [[Base Ganymede]] (27)
 +
* [[Bella II]] (43) *
 +
* [[BF THUD!]] (29)
 +
* [[Bloodstain]] (32) *
 +
* [[BOBKDV2]] (9)
 +
* [[Boothill]] (4)
 +
* [[The Brotherhood of Ruin]] (7)
 +
* [[Cabal]] (7)
 +
* [[Castle Phobos]] (10)
 +
* [[Caverns of Darkness]] (12)
 +
* [[The Classic Episode, Part 2]] (9)
 +
* [[The Classic Episode]] (9)
 +
* [[Claustrophobia 1024]] (34)
 +
* [[Claustrophobia 1024 2: The Mystery of Too Many Maps]] (34)
 +
* [[Cleimos]] (9)
 +
* [[Cleimos 2]] (32)
 +
* [[Community Chest]] (32)
 +
* [[Community Chest 2]] (32)
 +
* [[Community Chest 3]] (32)
 +
* [[Community Chest 4]] (33)
 +
* [[Congestion 1024]] (32)
 +
* [[Counterattack]] (7) *
 +
* [[Crimson Canyon]] (12)
 +
* [[Cringe]] (9)
 +
* [[Crumpets]] (9)
 +
* [[Crusades]] (9)
 +
* [[Curse of D'Sparil]] (9)
 +
* [[Daedalus: Alien Defense]] (31)
 +
* [[Dark 7]] (7)
 +
* [[Dark Hell]] (9)
 +
* [[The Darkening Episode 2]] (12)
 +
* [[The Darkening]] (11)
 +
* [[Dawn of the Dead]] (8)
 +
* [[Death Tormention 3]] (10) *
 +
* [[Demonfear]] (32)
 +
* [[Deus Vult]] (5)
 +
* [[Deus Vult II]] (13) *
 +
* [[Deus Vult Zero]] (1)
 +
* [[Diet 32in24]] (16)
 +
* [[Disrepair]] (10)
 +
* [[Doom 2 In Name Only]] (33)
 +
* [[Doom 2 Reloaded]] (32)
 +
* [[Doom 2 the Way id Did]] (33) *
 +
* [[Doom 2 Unleashed]] (40)
 +
* [[Doom Core]] (32)
 +
* [[Doom II]] (32)
 +
* [[Doom the Way id Did]] (27)
 +
* [[Doom the Way id Did: The Lost Episodes]] (55)
 +
* [[Doom: The Lost Episode]] (9)
 +
* [[Doomworld Mega Project 2012]] (40)
 +
* [[Doomworld Mega Project 2013]] (54) *
 +
* [[Doomworld Mega Project 2014]] (35)
 +
* [[Doomworld Mega Project 2015]] (53)
 +
* [[Doomworld Mega Project 2016]] (50)
 +
* [[Doomworld Mega Project 2017]] (52)
 +
* [[Double Impact]] (9)
 +
* [[Dystopia 3]] (11)
 +
* [[Earth (WAD)]] (10)
 +
* [[Elements]] (5)
 +
* [[End Game]] (8)
 +
* [[The Enigma Episode]] (9)
 +
* [[Epic]] (5)
 +
* [[Epic 2]] (32)
 +
* [[Equinox]] (13)
 +
* [[Erkattäññe]] (11)
 +
* [[ESW2]] (10)
 +
* [[Eternal Doom]] (34)
 +
* [[Eternally Yours]] (12)
 +
* [[Eternity (WAD)]] (8)
 +
* [[The Evil Unleashed]] (9)
 +
* [[Eviternity]] (32) *
 +
* [[Eye of the Beholder]] (9) *
 +
* [[Eye of the Beholder II]] (7)
 +
* [[Fava Beans]] (9)
 +
* [[The Final Gathering]] (5)
 +
* [[A Fistful of Doom]] (2)
 +
* [[For Whom the Bell Tolls]] (2)
 +
* [[Forest Valley]] (5)
 +
* [[Full On]] (5)
 +
* [[Galaxia]] (2)
 +
* [[Going Down]] (32) *
 +
* [[The Green Machine]] (12)
 +
* [[H2H-Xmas]] (32)
 +
* [[Hadephobia]] (35)
 +
* [[Harmony]] (11)
 +
* [[Hell Revealed]] (32)
 +
* [[Hell Revealed II]] (32)
 +
* [[Hell To Pay]] (32)
 +
* [[Hellbound]] (32)
 +
* [[Hellcore]] (32)
 +
* [[Hellcore 2.0]] (12)
 +
* [[Heretic]] (48)
 +
* [[Heretic Treasure Chest]] (27)
 +
* [[Herian 2]] (32)
 +
* [[Heroes' Tales]] (33)
 +
* [[Hexen]] (31)
 +
* [[Hexen: Deathkings of the Dark Citadel]] (26)
 +
* [[Hi-Tech Hell 2 - Alien Tech]] (7)
 +
* [[HYMN: A Heretic Community Project]] (9)
 +
* [[Icarus: Alien Vanguard]] (32)
 +
* [[Infinity]] (8)
 +
* [[Interception]] (32)
 +
* [[The Invaders]] (6)
 +
* [[Japanese Community Project]] (32)
 +
* [[Jenesis]] (34) *
 +
* [[Kama Sutra]] (32)
 +
* [[Kansam's Trial]] (9)
 +
* [[Khorus (WAD)]] (9)
 +
* [[Knee-Deep in ZDoom]] (10)
 +
* [[Legacy of Heroes]] (10) *
 +
* [[Lilith]] (11)
 +
* [[The Lost Episodes of Doom]] (24)
 +
* [[Lunatic]] (5) *
 +
* [[Magnolia]] (3) *
 +
* [[Mano Laikas]] (32)
 +
* [[Mars War]] (32)
 +
* [[Maskim Xul]] (3) *
 +
* [[Master Levels for Doom II]] (21)
 +
* [[Mayan Mishap]] (5) *
 +
* [[MAYhem 1500]] (34)
 +
* [[MAYhem 2012]] (12)
 +
* [[MAYhem 2013]] (11)
 +
* [[MAYhem 2016]] (21)
 +
* [[MAYhem 2018]] (42) *
 +
* [[MAYhem 2048]] (35)
 +
* [[Memento Mori]] (32)
 +
* [[Memento Mori II]] (34)
 +
* [[Mock 2: The Speed of Stupid]] (41)
 +
* [[Mutiny]] (16)
 +
* [[Newdoom Community Project]] (32)
 +
* [[NewDoom Community Project II]] (32) *
 +
* [[NJ Doom]] (27)
 +
* [[NJ Doom2]] (30)
 +
* [[No End In Sight]] (38)
 +
* [[No Rest for the Living]] (9)
 +
* [[No Sleep for the Dead]] (10)
 +
* [[NOVA II: New Dawn]] (32) *
 +
* [[NOVA: The Birth]] (32)
 +
* [[Nuke Mine]] (9)
 +
* [[Obituary]] (17) *
 +
* [[Oracle...]] (2)
 +
* [[Perdition's Gate]] (32)
 +
* [[Pesha]] (3)
 +
* [[Phobia]] (8)
 +
* [[Phobos (WAD)]] (4)
 +
* [[Phobos Revisited]] (9)
 +
* [[Phobos: Anomaly Reborn]] (9)
 +
* [[PhobosDeimos Anomaly]] (12)
 +
* [[Plutonia 2]] (33)
 +
* [[The Plutonia Experiment]] (32)
 +
* [[Plutonia: Revisited Community Project]] (32)
 +
* [[Preacher]] (10) *
 +
* [[Project - Kate]] (3) *
 +
* [[Rage Doom]] (19)
 +
* [[Raven series]] (11)
 +
* [[The Realm of Parthoris]] (10)
 +
* [[The Rebirth]] (32) *
 +
* [[Requiem]] (32)
 +
* [[Resurgence]] (32) *
 +
* [[Return to Hadron]] (18)
 +
* [[Return to Phobos]] (9)
 +
* [[Reverie]] (32)
 +
* [[Revolution!]] (33)
 +
* [[Sacrifice]] (6)
 +
* [[Scythe]] (32)
 +
* [[Scythe 2]] (32) *
 +
* [[Scythe X]] (10)
 +
* [[Serenity]] (8)
 +
* [[Sin City (1995 WAD)]] (9)
 +
* [[SkePLand]] (3)
 +
* [[Slaughter Until Death]] (9)
 +
* [[SlayeR (WAD)]] (11)
 +
* [[Slugfest]] (10)
 +
* [[Sony PlayStation]] (59)
 +
* [[Speed of Doom]] (33)
 +
* [[Stardate 20X6]] (8)
 +
* [[Stardate 20X7]] (11) *
 +
* [[Strife]] (34)
 +
* [[Strife: Veteran Edition]] (4)
 +
* [[Sunder]] (14)
 +
* [[Sunlust]] (32)
 +
* [[Super MAYhem 17]] (28) *
 +
* [[Suspended in Dusk]] (4)
 +
* [[Swift Death]] (32)
 +
* [[Swim With The Whales]] (4)
 +
* [[The Talosian Incident]] (20)
 +
* [[Tangerine Nightmare]] (10) *
 +
* [[Threshold of Pain]] (12)
 +
* [[THT: Threnody]] (20)
 +
* [[Thy Flesh turned into a draft-excluder]] (9)
 +
* [[TNT: Evilution]] (32)
 +
* [[TNT: Revilution]] (32) *
 +
* [[The Troopers' Playground]] (9) *
 +
* [[The Twilight Zone]] (32)
 +
* [[UAC Ultra]] (11) *
 +
* [[Ultimate Doom]] (36)
 +
* [[Ultimate Doom the Way id Did]] (9)
 +
* [[Unholy Realms]] (32)
 +
* [[Vae Victus 2]] (7)
 +
* [[Valiant]] (32) *
 +
* [[Vanguard]] (13)
 +
* [[Vile Flesh]] (32)
 +
* [[Whispers of Satan]] (35) *
 +
* [[Whitemare 2]] (32)
 +
* [[Xmas Doom]] (3)
 +
* [[Yak World]] (2)
 +
* [[Ye Olde Smudge Wad]] (3)
 +
* [[ZPack - Random Maps for ZDoom]] (31) *
 +
</div>
  
and many(?) more I haven't gotten around to yet.
+
===Statistics===
 +
{| {{prettytable}}
 +
! !! Total
 +
|-
 +
| '''Overall map pages''' ||style="text-align: right;"| '''5678'''
 +
|-
 +
| [[#Single-level WADs|Single-level WAD]] map pages ||style="text-align: right;"| '''277'''
 +
|-
 +
| [[#Multi-level WADs|Multi-level WAD]] map pages ||style="text-align: right;"| '''5401'''
 +
|-
 +
| WADs with a [[#Custom things mapping|custom things mapping]] file * ||style="text-align: right;"| '''61'''
 +
|-
 +
| {{cat|Navboxes for map articles}} ||style="text-align: right;"| '''648'''
 +
|-
 +
| Distinct links to [[Compet-n]] ||style="text-align: right;"| '''346'''
 +
|-
 +
| Distinct links to [[Doomed Speed Demos Archive|DSDA]] ||style="text-align: right;"| '''384'''
 +
|-
 +
| .ini files ||style="text-align: right;"| '''274'''
 +
|}

Revision as of 08:38, 5 June 2019

XymphBot is an account for use in MediaWiki API queries. It is owned by Xymph, and used via bot scripts written in PHP based on the Wikimate library. After a coding and testing period, it commenced automated edits in October 2016.

The overall goal of these scripts is to put as much computer-creatable content into map pages as feasible, and check that existing content is as complete and consistent as possible, so that human contributors can focus more on crafting creative prose like background information, walkthroughs, trivia and other map-specific content. Also, I like alliteration. :)

Configuration

The starting point for all scripts is a .ini file that specifies settings and a series of map pages. Typically the list includes all levels in an IWAD or megawad, but combining single-level PWADs in one list is also possible.

The settings for all maps include the various input and output paths, the relevant IWAD, an optional PWAD, the type of DMMPST output and any DMMPST flags, an optional pattern for map view filenames, an optional flag defining whether to put the "notally=1" parameter into the map spots template (for Hexen and Strife levels), the WAD ID for Compet-n and DSDA links, and the WAD's author(s).

The settings per map are the episode and mission, the path to the Doom Wiki page, and optional overrides of that map's PWAD, DMMPST output type and flags, author(s), and script-specific actions.

An optional navboxes section defines the number and style of navboxes (Doom-like, standard Doom II-like or Doom II episodic grouping), and the paths, optional episode names, and map ranges for each navbox.

The .ini file can easily be generated from a list of levels in wikicode (e.g. Doom II's) copy/pasted into a file, and passing it through the wiki2ini.php script. This extracts the list of required map settings and prefixes it with the general settings, so that only a few manual edits remain necessary to result in a .ini file usable by the scripts.

.ini scripts

skeletonBot.php

Checks map pages' section headers against the reference map skeleton and shows differences in ordering, spelling, and formatting.

conventionsBot.php

Checks map pages for a wide variety of spelling, linking and formatting conventions.

secretsBot.php

Compares DMMPST's list of secret sectors against those in map pages' Secrets sections (or Official subsections) and updates its formatting if necessary, or adds the list if such a section is empty.

pspawnsBot.php

Compares DMMPST's list of DM/CTF player spawns with facings (directions) against those in map pages' "Player spawns" sections and updates their formatting if necessary, or adds the list if such a section is empty.

dmmpstBot.php

Uses DMMPST's output to replace map pages' Statistics, Map data or Things sections.
Optionally provides interactive comparison between old and new contents of the pertaining section, prior to submitting the edit.
Alternatively creates new map pages with DMMPST's full skeleton output.

dmsectionBot.php

Uses DMMPST's output to add "Player spawns" and Things subsections (with a short introduction sentence) to the Deathmatch sections for separate arenas within larger maps. The things tables are generated from WADs with the pertaining levels (linedefs and things) cropped down to just the arenas.
For regular maps without separate arenas, only the "Player spawns" subsection is added, along with the Deathmatch section header (before the Statistics section) if not yet present.
Conversely, for maps without deathmatch starts, the Deathmatch header is removed (unless the section is not empty).
Optionally provides interactive comparison between old and new contents of the pertaining section or page, prior to submitting the edit.

extraCoopBot.php

Uses DMMPST's logging of additional Things existing in cooperative (for Boom or Hexen flags) or multiplayer mode when compared to single-player mode to add categories Levels with extra monsters in co-op and/or Levels with extra equipment in co-op.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.

uploadmapBot.php

Uploads new or updated map view images with description text, of which the exact phrasing about scale or size and cropping is determined from image sets generated via Omgifol drawmaps. New images are uploaded according to the map view pattern.
Always provides interactive viewing of (old and) new contents of the description, prior to submitting the image and description.

uploadmapDmBot.php

Performs the same tasks as uploadmapBot.php, but for deathmatch (arena) map views with spawn points. The images are generated from WADs with the pertaining linedefs cropped down to just the arenas, but their things left intact (because cropping them in SLADE 3 changes their order, which would result in incorrect spawn points numbering).

mapviewBot.php

Checks and updates the map view (link, dimensions, caption, and map spots template) in map pages' Walkthrough sections. Newly uploaded images are linked according to the map view pattern.
Always provides interactive comparison between old and new contents of the map view lines, prior to submitting the edit.

mapviewDmBot.php

Performs the same tasks as mapviewBot.php, but in Analysis sections for deathmatch maps or in Deathmatch sections for arenas within larger maps, and without the spots template.

navboxBot.php

Checks and adds the navbox line in map pages' intro sections, updates or strips the nocat option in the map template, and strips the skeleton preamble comment.
Always provides interactive comparison between old and new contents of the intro lines, prior to submitting the edit.

navboxGen.php

Generates one or multiple navboxes for Doom/Doom II/Heretic map pages based on the navboxes settings, and adds or replaces them in the template space.
Always provides interactive viewing of (old and) new contents of each navbox, prior to submitting the edit.

galleryBot.php

Checks and updates the gallery in map pages' "Areas / screenshots" sections. Adds the gallery container (and section) if it's not yet present. Applies the standard parameters and trims unneeded image attributes, if any. Also cleans up some minor page issues, if necessary.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.

demolinkBot.php

Checks and updates Compet-n and DSDA links in map pages' "External links" sections, or adds them if applicable. Also standardizes formatting of categories and H2 headers.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.

authorBot.php

Adds one or more authors to map pages' intro sections (optionally omitting wikilinks), along with each corresponding author's levels category at the end. Optionally removes the default skeleton text about custom music.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
If the page already deviates from the skeleton text, then instead shows the initial intro line and all trailing categories.

comparisonBot.php

Checks and updates the map view gallery for comparing PC maps with console counterpart(s) on the latter's map pages: adds the PSX variant if not yet included, appends platform indicators to map captions, and redimensions the gallery per the aspect ratio of the PC image so that its area approximates 90000 px2.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.

mapperMaps.php

In a mapper's article, finds the multi-level WADs and their pertaining maps that are covered in the .ini collection, checks consistency of their names (using approximate matching to detect typos) and authorship both ways, and (re)links them via the {{maplinkgen}} template.
If needed, italicizes a parenthesized string after an individual map entry (usually cooperating authors). Also, formats bullet indentation consistently, and erases trailing whitespace and extraneous empty lines throughout the page. Further, (re)formats DEFAULTSORT and any categories towards the end of the page, one per line.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.
Lastly, lists any maps attributed in the .ini collection that were not found on the mapper's page, suitably formatted for manual addition.
All this can performed on one named page, or on a list of pages loaded from a file. Auxiliary script listCategory.php generates such a list from the Mappers category.

createMapper.php

From the author registration in the .ini collection, generates the text for a manually createable stub page of a mapper, with preformatted name, alias, DEFAULTSORT (if needed) and category. Organizes their covered projects / contributions by year (optionally with annual section headers), with formatted lists of co-authors per map where applicable.

addCategoryBot.php

Appends a new category to all or selected map pages. Optionally inserts it before an existing category.
Always provides interactive comparison between old and new contents of the page, prior to submitting the edit.

Miscellaneous scripts

These scripts don't work on a .ini file and its series of map pages as such, but perform other convenient tasks.

coveredWads.php

Collects and lists the names of all single- and multi-level WADs covered by the aforementioned .ini files and scripts, and totals the number of maps included in them. Also totals the number of navboxes created/updated by navboxGen.php, the number of custom things mapping files, and the number of distinct links covered by demolinkBot.php. Its output is the entire "WADs covered so far" section below.

articleSort.php

Finds article, category and template pages whose titles start with an article ("A"/"An"/"The") and shows whether they contain a DEFAULTSORT tag, named map template, category sortkey, or none. Its output is the entire "Pages starting with an article" page. Thanks to Ryan W for the idea.

textmapStats.php

Processes an extracted TEXTMAP lump with regular expressions and a little code to generate statistics in Template:Mapdata format, along with formatted lists of secret sector numbers and deathmatch spawn points (if any). Useful for UDMF maps, which DMMPST doesn't support.

textmapExtra.php

Processes an extracted TEXTMAP lump with regular expressions and some code to collect monster and equipment counts for single-player and cooperative modes, and lists those where the counts differ. Again, useful for UDMF maps.

listWikiLinks.php

Collects links to Wikipedia by templates, interwiki links and direct links, along with the DoomWiki pages they're linked from, in the following namespaces: main, Doom Wiki, Help, File, Category, and Template. Its output is the entire "List of Wikipedia links" page. Requested by Ryan W.

listInterLinks.php

Collects direct links to sites for which Interwikis are defined, along with the DoomWiki pages they're linked from, in the following namespaces: main, Doom Wiki, Help, File, Category, and Template. Its output is the entire "List of Interwiki links" page. Thanks to Gez for the idea.

listExternLinks.php

Collects direct links to sites for which external link templates are defined, along with the DoomWiki pages they're linked from, in the following namespaces: main, Doom Wiki, Help, File, and Category. Its output is the entire "List of templatable links" page. Thanks to Gez for the idea.

linkArticle.php

Performs a search for the specified string in the main and Category namespaces, then in each of the resulting articles wikilinks the first occurrence of the string, if not already linked.
Conversely, unlinkArticle.php removes any wikilinks.
Both always provide interactive comparison between old and new contents of the page, prior to submitting the edit.

appearMaps.sh

From the archived things tables, collects/sorts the maps with the highest count of a given thing and emits a prettytable. Because Holy Hell MAP05 is a superset of MAP01-04, the latter are skipped from the table.

top100MemMaps.php

Processes the maps list of the Top 100 Most Memorable Maps and appends a sentence about the map's place to each page's intro section (taking a trailing 'level stub' into account). Also checks for the presence of the Top100 category.

And more?

Ideas for future scripts, anyone?

How can you help?

Create overview pages for all WADs to be covered (e.g. Top 100 WADs of All Time, Cacowards, List of notable WADs) with information as accurate and complete as feasible, especially the episodic structure (if any), the list of levels, and the use of custom monsters/weapons (see below).

And after a series of skeleton pages has been created, edit them to add any music and other introductory information, and of course walkthrough and secrets descriptions, speedrunning records, and whatever else you can contribute.

Custom things mapping

For custom things, a description or table of thing types and the new monster/weapon names is particularly helpful, and can be used to provide a mapping file to DMMPST that automatically incorporates the customizations into the Things table. An initial discussion and example mapping was presented for Valiant.

The mapping file ideally links to description(s) of the custom thing(s) on the WAD's overview page. This can be a simple one-liner but preferably contains a brief entry per thing that mentions which original thing is replaced by which custom one, and may be even more elaborate.

So, to help, please provide such descriptions (or provide a quick mapping table on the WAD's talk page) for the following WADs that I already processed previously:

and verify the correctness of Valiant's mapping file. Then I can (re)generate the Things tables on all pertaining map pages.

Going forward, the same is welcome for WADs I am skipping for now because the overview information does not appear to be sufficiently descriptive and complete. This includes:

and (m?)any more I haven't gotten around to yet.

WADs covered so far

The lists below show the single-level and multi-level WADs that have so far been covered (created and/or updated) via XymphBot and its .ini files. Map counts per WAD and various totals are included (state of 2019-05-17 16:28 CDT).

Single-level WADs

Multi-level WADs

Statistics

Total
Overall map pages 5678
Single-level WAD map pages 277
Multi-level WAD map pages 5401
WADs with a custom things mapping file * 61
Navboxes for map articles 648
Distinct links to Compet-n 346
Distinct links to DSDA 384
.ini files 274