Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
ChapyOne

Hexen: How to Add Deathkings of the Dark Citadel as an episode (Made for GZDoom)

Recommended Posts

Hey, I wanted to try to quickly show you how to get Deathkings of the Dark Citadel working as an episode for vanilla Hexen. This is targeted at GZDoom, but could be used to work with other source ports without much difference.

 

Before we start, make a backup of your HEXDD.WAD as we'll be converting the original file. You'll need a hex editor and a WAD editor to do this. I personally used HxD and Slade 3.

 

  1. Open HEXDD.WAD in your hex editor. Change the first 2 bytes from '49' to '50' and save. This changes the file from an IWAD to a PWAD so we can edit it.
  2. Open HEXDD.WAD in your WAD editor. We're going to be renaming and deleting a lot of files.
    • Delete DEMO1, DEMO2, and DEMO3, or rename them to DEMO4, DEMO5, and DEMO6 respectively.
    • Right click each MAPXX file and rename them to add 'D' to the end. For example, MAP33 would become MAP33D. Make sure to rename every MAPXX file.
    • Rename CLUS1MSG to CLUS6MSG, and CLUS2MSG to CLUS7MSG.
    • Rename WIN1MSG to WIN4MSG, WIN2MSG to WIN5MSG, and WIN3MSG to WIN6MSG.
    • Delete TITLE, HELP1, HELP2, and CREDIT
  3. Open the MAPINFO file with your WAD editor. Delete everything, and then copy and paste the following text into MAPINFO:
    • Spoiler

      // --- End sequence for Hexen: Deathkings of the Dark Citadel ---

      Intermission Inter_ChessD
      {
          Fader
          {
              Music = "Hall"
              Background = "FINALE1"
              Time = 2
              FadeType = FadeIn
          }
          TextScreen
          {
              Background = "FINALE1"
              TextSpeed = 3
              TextLump = "win4msg"
              Time = -250
          }
          TextScreen
          {
              Music = "Orb"
              Background = "FINALE2"
              TextSpeed = 3
              TextLump = "win5msg"
              Time = -250
          }
          Fader
          {
              Background = "FINALE2"
              Time = 2
              FadeType = FadeOut
          }
          Fader
          {
              Music = "Chess"
              Background = "FINALE3"
              DrawConditional = "Multiplayer", "CHESSALL", 20, 0
              DrawConditional = "ClericPlayer", "CHESSC", 60, 0
              DrawConditional = "MagePlayer", "CHESSM", 60, 0
              Time = 2
              FadeType = FadeIn
          }
          TextScreen
          {
              Background = "FINALE3"
              DrawConditional = "Multiplayer", "CHESSALL", 20, 0
              DrawConditional = "ClericPlayer", "CHESSC", 60, 0
              DrawConditional = "MagePlayer", "CHESSM", 60, 0
              TextSpeed = 3
              TextLump = "win6msg"
              Position = 5, 135
          }
      }

      // --- Episodes ---

      clearepisodes
      episode "&wt@01"
      {
          name = "Hexen - Beyond Heretic"
          key = "h"
      }

      episode "&wt@42"
      {
          name = "Deathkings of the Dark Citadel"
          key = "d"
      }

      // --- MAPINFO for Hexen ---

      // --- Cluster 1 ---

      map MAP01 "WINNOWING HALL"
      {
      warptrans = 1
      next = MAP02
      cluster = 1
      sky1 = sky2
      sky2 = SKY3
      lightning
      music = winnowr
      }

      map MAP02 "SEVEN PORTALS"
      {
      warptrans = 2
      next = MAP03
      cluster = 1
      sky1 = SKY4
      sky2 = SKY4
      music = jachr
      }

      map MAP03 "GUARDIAN OF ICE"
      {
      warptrans = 3
      next = MAP04
      cluster = 1
      sky1 = SKY4
      sky2 = SKY4
      music = simonr
      }

      map MAP04 "GUARDIAN OF FIRE"
      {
      warptrans = 4
      next = MAP05
      cluster = 1
      sky1 = SKY4
      sky2 = SKY4
      music = wutzitr
      }

      map MAP05 "GUARDIAN OF STEEL"
      {
      warptrans = 5
      next = MAP06
      cluster = 1
      sky1 = SKY4
      sky2 = SKY4
      music = falconr
      }

      map MAP06 "BRIGHT CRUCIBLE"
      {
      warptrans = 6
      next = MAP13
      cluster = 1
      sky1 = SKY4
      sky2 = SKY4
      music = levelr
      }

      // --- Cluster 2 ---

      map MAP13 "SHADOW WOOD"
      {
      warptrans = 7
      next = MAP08
      cluster = 2
      sky1 = SKYWALL
      sky2 = sky1, .18
      doublesky
      music = cryptr
      }

      map MAP08 "DARKMERE"
      {
      warptrans = 8
      next = MAP09
      cluster = 2
      sky1 = SKYFOG2, .12
      sky2 = SKYFOG, .16
      doublesky
      fadetable = fogmap
      music = swampr
      }

      map MAP09 "CAVES OF CIRCE"
      {
      warptrans = 9
      next = MAP10
      cluster = 2
      sky1 = SKYWALL
      sky2 = sky1, .18
      doublesky
      music = deepr
      }

      map MAP10 "WASTELANDS"
      {
      warptrans = 10
      next = MAP11
      cluster = 2
      sky1 = SKYWALL
      sky2 = sky1, .18
      doublesky
      music = fubasr
      }

      map MAP11 "SACRED GROVE"
      {
      warptrans = 11
      next = MAP12
      cluster = 2
      sky1 = SKYFOG2, .12
      sky2 = SKYFOG, .16
      doublesky
      fadetable = fogmap
      music = grover
      }

      map MAP12 "HYPOSTYLE"
      {
      warptrans = 12
      next = MAP27
      cluster = 2
      sky1 = SKYWALL
      sky2 = sky1, .18
      doublesky
      music = fortr
      }

      // --- Cluster 3 ---

      map MAP27 "HERESIARCH'S SEMINARY"
      {
      warptrans = 13
      next = MAP28
      cluster = 3
      sky1 = SKYWALL2
      sky2 = SKY4, .15
      doublesky
      music = voidr
      }

      map MAP28 "DRAGON CHAPEL"
      {
      warptrans = 14
      next = MAP30
      cluster = 3
      sky1 = SKYWALL2
      sky2 = SKY4, .15
      doublesky
      music = chap_1r
      }

      map MAP30 "GRIFFIN CHAPEL"
      {
      warptrans = 15
      next = MAP31
      cluster = 3
      sky1 = SKYWALL2
      sky2 = SKY4, .15
      doublesky
      music = chap_3r
      }

      map MAP31 "DEATHWIND CHAPEL"
      {
      warptrans = 16
      next = MAP32
      cluster = 3
      sky1 = SKYWALL2
      sky2 = SKY4, .15
      doublesky
      music = chap_4r
      }

      map MAP32 "ORCHARD OF LAMENTATIONS"
      {
      warptrans = 17
      next = MAP33
      cluster = 3
      sky1 = SKYFOG2, .12
      sky2 = SKYFOG, .16
      doublesky
      fadetable = fogmap
      music = chippyr
      }

      map MAP33 "SILENT REFECTORY"
      {
      warptrans = 18
      next = MAP34
      cluster = 3
      sky1 = SKYWALL2
      sky2 = SKY4, .15
      doublesky
      music = percr
      }

      map MAP34 "WOLF CHAPEL"
      {
      warptrans = 19
      next = MAP21
      cluster = 3
      sky1 = SKYWALL2
      sky2 = SKY4, .15
      doublesky
      music = secretr
      }

      // --- Cluster 4 ---

      map MAP21 "FORSAKEN OUTPOST"
      {
      warptrans = 20
      next = MAP22
      cluster = 4
      sky1 = sky2, .15
      sky2 = SKY3, .15
      lightning
      music = foojar
      }

      map MAP22 "CASTLE OF GRIEF"
      {
      warptrans = 21
      next = MAP23
      cluster = 4
      sky1 = sky2, .15
      sky2 = SKY3, .15
      lightning
      music = sixater
      }

      map MAP23 "GIBBET"
      {
      warptrans = 22
      next = MAP24
      cluster = 4
      sky1 = sky2, .15
      sky2 = SKY3, .15
      lightning
      music = wobabyr
      }

      map MAP24 "EFFLUVIUM"
      {
      warptrans = 23
      next = MAP25
      cluster = 4
      sky1 = sky2, .15
      sky2 = SKY3, .15
      lightning
      music = cryptr
      }

      map MAP25 "DUNGEONS"
      {
      warptrans = 24
      next = MAP26
      cluster = 4
      sky1 = sky2, .15
      sky2 = SKY3, .15
      lightning
      music = fantar
      }

      map MAP26 "DESOLATE GARDEN"
      {
      warptrans = 25
      next = MAP35
      cluster = 4
      sky1 = sky2, .15
      sky2 = SKY3, .15
      lightning
      music = blechr
      }

      // --- Cluster 5 ---

      map MAP35 "NECROPOLIS"
      {
      warptrans = 26
      next = MAP36
      cluster = 5
      sky1 = sky2, .14
      sky2 = SKY3, .14
      lightning
      music = bonesr
      }

      map MAP36 "ZEDEK'S TOMB"
      {
      warptrans = 37
      next = MAP37
      cluster = 5
      sky1 = sky2, .14
      sky2 = SKY3, .14
      lightning
      music = octor
      }

      map MAP37 "MENELKIR'S TOMB"
      {
      warptrans = 38
      next = MAP38
      cluster = 5
      sky1 = SKY4, .14
      sky2 = SKY4, .14
      music = rithmr
      }

      map MAP38 "TRADUCTUS' TOMB"
      {
      warptrans = 39
      next = MAP39
      cluster = 5
      sky1 = sky2, .14
      sky2 = SKY3, .14
      lightning
      music = stalkr
      }

      map MAP39 "VIVARIUM"
      {
      warptrans = 40
      next = MAP40
      cluster = 5
      sky1 = sky2, .14
      sky2 = SKY3, .14
      lightning
      music = borkr
      }

      map MAP40 "DARK CRUCIBLE"
      {
      warptrans = 41
      next = endsequence, "Inter_Chess"
      cluster = 5
      sky1 = SKY4
      sky2 = SKY4
      music = crucibr
      }

      // --- Miscellaneous maps ---

      map MAP7 "SHADOW WOOD"
      {
      warptrans = 70
      sky1 = SKYWALL 0
      sky2 = sky1, .18
      doublesky
      }

      map MAP14 "SWAMP DEMO"
      {
      warptrans = 71
      sky1 = SKYFOG2, .12
      sky2 = SKYFOG, .16
      doublesky
      fadetable = fogmap
      }

      map MAP29 "NADA"
      {
      warptrans = 72
      sky1 = SKYWALL2, .17
      sky2 = SKY4
      doublesky
      }

      map MAP42 "ERIC'S WHIRLWIND O' DEATH"
      {
      sky1 = sky2
      sky2 = SKY3
      lightning
      map MAP43 "MAYA"
      sky1 = SKY4
      sky2 = SKY4
      }

      map MAP50 "THE BADLANDS"
      {
      sky1 = SKYWALL
      sky2 = SKY4, .15
      doublesky
      }

      map MAP51 "CAVES OF ASCENSION"
      {
      sky1 = SKYWALL
      sky2 = SKY4, .15
      doublesky
      }

      map MAP52 "LOWER CRYPTS"
      {
      sky1 = SKYWALL
      sky2 = SKY4, .15
      doublesky
      }

      map MAP53 "THE HYPOSTYLE HALL"
      {
      sky1 = SKY4, .15
      sky2 = SKY4, .15
      }

      map MAP54 "THE SANCTORIUM"
      {
      sky1 = SKYWALL
      sky2 = SKY4, .15
      doublesky
      }

      map MAP55 "THE ATHENAEUM"
      {
      sky1 = SKYWALL
      sky2 = SKY4, .15
      doublesky
      }

      map MAP56 "THE CLERIC'S CITADEL"
      {
      sky1 = SKYWALL
      sky2 = SKY4, .15
      doublesky
      }

      map MAP60 "PROGRAMMER MAP"
      {
      sky1 = sky1, .18
      }

      map MAP90 "BGOKEY"
      {
      sky1 = sky1
      }

      map MAP92 "PAUL MAP"
      {
      sky1 = sky1, .12
      }

      map MAP93 "PAUL MAP2"
      {
      sky1 = sky1, .12
      }

      map MAP95 "CJR@RAVENSOFT.COM"
      {
      sky1 = sky1
      }

      map MAP96 "SOUND DEVELOPMENT MAP"
      {
      sky1 = sky1
      }

      // --- MAPINFO for Hexen: Deathkings of the Dark Citadel ---

      // --- Cluster 6 ---

      map MAP41D "RUINED VILLAGE"
      {
      warptrans = 42
      next = MAP42D
      cluster = 6
      sky1 = SKYWALL
      sky2 = SKY1, .14
      doublesky
      music = winnowr
      }

      map MAP42D "BLIGHT"
      {
      warptrans = 43
      next = MAP43D
      cluster = 6
      sky1 = SKYWALL
      sky2 = SKY1, .14
      doublesky
      music = jachr
      }

      map MAP43D "SUMP"
      {
      warptrans = 44
      next = MAP44D
      cluster = 6
      sky1 = SKYFOG2, .12
      sky2 = SKYFOG, .16
      doublesky
      fadetable = fogmap
      music = voidr
      }

      map MAP44D "CATACOMB"
      {
      warptrans = 45
      next = MAP45D
      cluster = 6
      sky1 = SKYWALL
      sky2 = SKY1, .14
      doublesky
      music = deepr
      }

      map MAP45D "BADLANDS"
      {
      warptrans = 46
      next = 37
      cluster = 6
      sky1 = SKYWALL
      sky2 = SKY1, .14
      doublesky
      music = fubasr
      }

      map MAP46 "BRACKENWOOD"
      {
      warptrans = 47
      next = MAP47D
      cluster = 6
      sky1 = SKYWALL
      sky2 = SKY1, .14
      doublesky
      music = sixater
      }

      map MAP47D "PYRE"
      {
      warptrans = 48
      next = MAP48D
      cluster = 6
      sky1 = SKYWALL
      sky2 = SKY1, .14
      doublesky
      music = chap_1r
      }

      // --- Cluster 7 ---

      map MAP48D "CONSTABLE'S GATE"
      {
      warptrans = 49
      next = MAP49D
      cluster = 7
      sky1 = SKYWALL2
      sky2 = SKY2, .16
      doublesky
      music = bonesr
      }

      map MAP49D "TREASURY"
      {
      warptrans = 50
      next = MAP50D
      cluster = 7
      sky1 = SKYWALL2
      sky2 = SKY2, .16
      doublesky
      music = wutzitr
      }

      map MAP50D "MARKET PLACE"
      {
      warptrans = 51
      next = MAP51D
      cluster = 7
      sky1 = SKYWALL2
      sky2 = SKY2, .16
      doublesky
      music = chap_2r
      }

      map MAP51D "LOCUS REQUIESCAT"
      {
      warptrans = 52
      next = MAP52D
      cluster = 7
      sky1 = SKY2
      sky2 = SKY3
      lightning
      music = octor
      }

      map MAP52D "ORDEAL"
      {
      warptrans = 53
      next = MAP53D
      cluster = 7
      sky1 = SKYWALL2
      sky2 = SKY2, .16
      doublesky
      music = stalkr
      }

      map MAP53D "ARMORY"
      {
      warptrans = 54
      next = MAP54D
      cluster = 7
      sky1 = SKYWALL2
      sky2 = SKY2, .16
      doublesky
      music = falconr
      }

      // --- Cluster 8 ---

      map MAP54D "NAVE"
      {
      warptrans = 55
      next = MAP55D
      cluster = 8
      sky1 = SKY4
      sky2 = SKY4
      music = chap_3r
      }

      map MAP55D "CHANTRY"
      {
      warptrans = 56
      next = MAP56D
      cluster = 8
      sky1 = SKY4
      sky2 = SKY4
      music = percr
      }

      map MAP56D "ABATTOIR"
      {
      warptrans = 57
      next = MAP57D
      cluster = 8
      sky1 = SKY4
      sky2 = SKY4
      music = rithmr
      }

      map MAP57D "DARK WATCH"
      {
      warptrans = 58
      next = MAP58D
      cluster = 8
      sky1 = SKY4
      sky2 = SKY4
      music = foojar
      }

      map MAP58 "CLOACA"
      {
      warptrans = 59
      next = MAP59D
      cluster = 7
      sky1 = SKY4
      sky2 = SKY4
      music = cryptr
      }

      map MAP59D "ICE HOLD"
      {
      warptrans = 60
      next = MAP60D
      cluster = 8
      sky1 = SKY4
      sky2 = SKY4
      music = simonr
      }

      map MAP60D "DARK CITADEL"
      {
      warptrans = 61
      next = endsequence, "Inter_ChessD"
      cluster = 8
      sky1 = SKY4
      sky2 = SKY4
      music = crucibr
      }

      // --- Cluster 9 ---

      map MAP33D "TRANSIT"
      {
      warptrans = 62
      next = MAP34D
      cluster = 9
      sky1 = SKY1
      sky2 = SKY4
      music = grover
      }

      map MAP34D "OVER N UNDER"
      {
      warptrans = 63
      next = MAP35D
      cluster = 9
      sky1 = SKY1
      sky2 = SKY4
      music = fortr
      }

      map MAP35D "DEATHFOG"
      {
      warptrans = 64
      next = MAP36D
      cluster = 9
      sky1 = SKYFOG2, .12
      sky2 = SKYFOG, .16
      doublesky
      fadetable =  fogmap
      music = swampr
      }

      map MAP36D "CASTLE OF PAIN"
      {
      warptrans = 65
      next = MAP37D
      cluster = 9
      sky1 = SKY4
      sky2 = SKY4
      music = wobabyr
      }

      map MAP37D "SEWER PIT"
      {
      warptrans = 66
      next = MAP38D
      cluster = 9
      sky1 = SKY4
      sky2 = SKY4
      music = blechr
      }

      map MAP38D "THE ROSE"
      {
      warptrans = 67
      next = MAP36D
      cluster = 9
      sky1 = SKY1
      sky2 = SKY4
      music = falconr
      }

      map MAP83D "TEST"
      {
      warptrans = 68
      next = MAP37D
      cluster = 9
      sky1 = SKY1
      sky2 = SKY4
      music = falconr
      }

      // --- Clusters Definition ---

      cluster 1
      {
          hub
          exittext = "clus1msg"
          exittextislump
          pic = "interpic"
      }

      cluster 2
      {
          hub
          exittext = "clus2msg"
          exittextislump
          pic = "interpic"
      }

      cluster 3
      {
          hub
          exittext = "clus3msg"
          exittextislump
          pic = "interpic"
      }

      cluster 4
      {
          hub
          exittext = "clus4msg"
          exittextislump
          pic = "interpic"
      }

      cluster 6
      {
          hub
          exittext = "clus6msg"
          exittextislump
          pic = "interpic"
      }

      cluster 7
      {
          hub
          exittext = "clus7msg"
          exittextislump
          pic = "interpic"
      }

      cluster 8
      {
          hub
          music = "hub"
          pic = "interpic"
      }

       

  4. Save the file and you're done!

 

I hope this guide was able to help you out. Please let me know if you run into any problems playing with this.

Edited by ChapyOne : typos

Share this post


Link to post

Hi, I tried this and when exiting first map of Deathkings it crashes HeXen. Using the latest GZDooM.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×