User:XymphBot

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 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.

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.

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.

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.

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. Always provides interactive comparison between old and new contents of the map view lines, prior to submitting the edit.

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.

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. 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 a formatted list of secret sector numbers (if any). Useful for UDMF maps, which DMMPST doesn't support.

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:


 * Aliens TC
 * Caverns of Darkness
 * Cheogsh
 * Daedalus: Alien Defense
 * Disrepair
 * Doom Raider: Crypt of the Vile
 * Epic
 * Happy Time Circus
 * Harmony
 * Oniria 2
 * Phobia - The Age
 * Putrefier
 * Scythe X
 * Threshold of Pain
 * Void and Rainbow
 * Waterlab GZD
 * The ZDoom Community Map Project "Take 1"

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:


 * The Adventures of MassMouth, Massmouthmas, MassMouth 2
 * All Hell is Breaking Loose
 * Army of Darkness TC
 * Assault on Tei Tenga
 * Batman Doom
 * Cheogsh 2, Realm of Cheogsh
 * Community Is Falling 3
 * Cyberdreams
 * Demons of Problematique, Demons of Problematique 2
 * Doom 64 TC
 * Doom Arcade
 * Doom Resurrection (WAD)
 * Mordeth
 * NeoDoom
 * Nerves of Steel
 * Nimrod: Project Doom
 * Operation Overlord
 * Pirate Doom
 * Project Einherjar
 * Psychophobia
 * STRAIN
 * Strange Aeons
 * Stronghold: On the Edge of Chaos
 * Temple of the Lizard Men 2
 * Twilight Warrior
 * Unloved
 * Winter's Fury
 * ZanZan
 * Zen Dynamics

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 2018-02-20 11:51 CST).

Single-level WADs
Total map pages: 163
 * 5till L1 Complex
 * After the Holocaust
 * All Aboard the Mega Magilla Gorilla Flotilla
 * Altar of Evil
 * Arcadia Demade
 * Atomic Tomb
 * Austerity: A Simplicity Tribute
 * Awakening
 * Axiom
 * B21
 * BLT
 * Breach
 * Brigandine
 * The Call of Ktulu
 * Castle of Eternal Carrot in the Sky
 * Castle of the Renegades (Doom II)
 * Castle of the Renegades (Doom)
 * Chambers of Dis
 * Cheogsh
 * Chord 3
 * Chord G
 * Chord NG
 * The City of the Damned
 * The City of the Damned: Apocalypse
 * Congestion Control
 * Containment Area
 * Crestfallen
 * Crossing Acheron
 * Dark Tide
 * Dead.air
 * Dead.wire
 * Decade
 * The Deimos Subway
 * Diabolos
 * Dickie 10
 * Diopatra
 * Doom Raider: Crypt of the Vile
 * Doomsday of UAC
 * Doomworld Forum Adventures!
 * Doomworld Forums 3
 * Drip Feed
 * The Dying End
 * E1M10: Sewers (Xbox Doom)
 * E2M1ED.WAD
 * Eden
 * Escape from Castle Chezcrea
 * Europa 1
 * Europa 2
 * Europa 3 - The Dark Side of Vrack
 * Exquisite Corpse
 * Extinguished
 * Extramap.wad
 * The Eye
 * Eyedea
 * Forsaken Overlook
 * FORTRESS.WAD
 * Frozen Time
 * Fuel Devourer
 * The Given
 * Grove
 * Happy Time Circus
 * HeDRoX
 * Hell's Eventide
 * Helpyourselfish
 * A Hidden Mountain Factory
 * Hollow Minds
 * Hoover Dam
 * IC2005
 * Icebound
 * id Map01
 * Impossible: A New Reality
 * The Interdiction Zone
 * Invasion... Level 1: Contamination
 * Invasion... Level 2: The Upper Decks
 * Jägermörder 1: Chemical Lab
 * Jägermörder 2: Terra Nova
 * Lake4
 * MAP33: Betray (Xbox Doom II)
 * MarkRoom
 * MEGADETH.WAD
 * Megalab
 * Megawatt
 * Monolith 1
 * Monolith 2
 * Monolith 3
 * Monolith 4
 * Monolith 5
 * Monolith 6
 * Monster Hunter Ltd. Part I
 * Monster Hunter Ltd. Part II
 * Neith
 * Nightfall
 * Nostromo's Run
 * Null Space
 * Odessa 14
 * Ogro Power Facility
 * Oniria
 * Oniria 2
 * Origwad
 * The Outer Darkness
 * Outpost 21
 * Painful Evil
 * Pax
 * Pazuzu
 * Phobos Mission Control
 * Planisphere 2
 * Plasmaplant
 * Polygon Base
 * Punisher
 * Putrefier
 * RCK
 * RCK2
 * Realm of the Green Soul
 * Reconstruction / Decomposition
 * REDRUM
 * RRWARD01
 * RRWARD02
 * RRWARD03
 * RRWARD04
 * Ruma
 * Run Buddy
 * Sapidus
 * Saturnine Chapel
 * Sharp Things
 * Sheer Poison
 * Sigma
 * Sin City
 * Soldier of Fortune
 * Songs of the Damned
 * Space Station Omega
 * Spidersilk
 * SQUARES
 * STONES.WAD
 * Surrounded!
 * Talpoida
 * Tantrum 2
 * Tech Gone Bad
 * Temple of Chaos 2 - Warped Reality
 * Total Control
 * Tremor
 * UCA
 * Under Neith
 * The Unholy Trinity
 * Valhalla
 * Vengeance: SkyBase Sirius IV
 * Venom
 * Void
 * Vrack
 * Vrack 2
 * Vrack 3
 * The Wailing Horde
 * 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

Multi-level WADs
Total map pages: 3659
 * 1 Monster (25)
 * 10 Sectors (32)
 * 1994 Tune-up Community Project (32)
 * 2 Sectors (17)
 * 2048 Unleashed (49)
 * 32in24 II (19)
 * 32in24-14 (42)
 * 50 Shades of Graytall (18)
 * 99 Ways to Die (3)
 * Absolutely Killed (9)
 * The Abyss (24)
 * Alien Vendetta (35)
 * Aliens TC (11)
 * Ancient Aliens (32)
 * The Artifact (WAD) (3)
 * ASDoom (9)
 * Back to Saturn X E1 (27)
 * Back to Saturn X E2 (27)
 * Base Ganymede (27)
 * Bloodstain (32)
 * BOBKDV2 (9)
 * Boothill (4)
 * The Brotherhood of Ruin (7)
 * Cabal (7)
 * 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)
 * Crusades (9)
 * Curse of D'Sparil (9)
 * Daedalus: Alien Defense (31)
 * Dark 7 (7)
 * 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)
 * 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)
 * 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)
 * Eternal Doom (34)
 * Eternally Yours (12)
 * Eternity (WAD) (8)
 * The Evil Unleashed (9)
 * Fava Beans (9)
 * The Final Gathering (5)
 * A Fistful of Doom (2)
 * For Whom the Bell Tolls (2)
 * Galaxia (2)
 * Going Down (32)
 * 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)
 * Japanese Community Project (32)
 * Jenesis (32)
 * 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)
 * Mano Laikas (32)
 * Mars War (32)
 * Master Levels for Doom II (21)
 * Mayan Mishap (5)
 * MAYhem 2048 (35)
 * Memento Mori (32)
 * Memento Mori II (34)
 * Mutiny (16)
 * Newdoom Community Project (32)
 * NewDoom Community Project II (32)
 * 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)
 * 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)
 * Project - Kate (3)
 * 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)
 * SkePLand (3)
 * Slaughter Until Death (9)
 * SlayeR (WAD) (11)
 * Speed of Doom (33)
 * Stardate 20X6 (8)
 * Stardate 20X7 (11)
 * Strife (34)
 * Strife: Veteran Edition (4)
 * Sunder (14)
 * Sunlust (32)
 * Suspended in Dusk (4)
 * Swift Death (32)
 * Swim With The Whales (4)
 * The Talosian Incident (20)
 * 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)
 * UAC Ultra (11)
 * Ultimate Doom (36)
 * Unholy Realms (32)
 * Vae Victus 2 (7)
 * Valiant (32)
 * Vanguard (13)
 * Vile Flesh (32)
 * Whispers of Satan (35)
 * Whitemare 2 (32)
 * Yak World (2)

Overall total map pages: 3822