Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
General Rainbow Bacon

How do I use bestiary monsters?

Recommended Posts

  1. Open the wad that contains a monster in your favorite lump editor.
  2. Locate a lump named DECORATE and copy its contents.
  3. Create a new text document and paste copied data in it. Save it as DECORATE.txt.
  4. Repeat steps 1 - 2 for every monster you downloaded and paste the contents in DECORATE.txt.
  5. Merge the monster wads.
  6. In the merged wad replace the DECORATE lump with your DECORATE.txt file.
If the monster contains a lump named GLDEFS, the same procedure applies.

You can now load this wad as a resource, or you can merge it with the level wad file. Doom Builder recognizes the DECORATE lump and will allow you to place any thing, defined in it, in your level. They will not show up in the Monsters list of the Thing Properties dialog but in the Decorate list.

Hope this helps.

Share this post


Link to post

How knowledgeable are you on the following topics?
- lump management
- DECORATE language
- SNDINFO lump
- GLDEFS lump

The answer will depend on these parameters.

Xtroose said:

  • Repeat steps 1 - 2 for every monster you downloaded and paste the contents in DECORATE.txt.

For a large project, I would rather advise using renaming each DECORATE lump to something that identifies it clearly and using #include statements in a single DECORATE lump that doesn't contain any definition itself. Same thing for GLDEFS. Sure, if you have only three or four custom monsters, you can put everything in the same lump; but if you have two dozens monsters, half a dozen weapons, a couple score miscellaneous decoration and pickups, then it starts becoming unwieldy.

See Action Doom 2 for an example of WAD using #include in its DECORATE lump. See KDiZD for an example of PK3 doing the same.

Share this post


Link to post
Gez said:

For a large project, I would rather advise using renaming each DECORATE lump to something that identifies it clearly and using #include statements in a single DECORATE lump that doesn't contain any definition itself.


You learn something new every day. Thank you very much.

Share this post


Link to post

I'm completely new at this and still can't figure it out. I found the lump called "decorate", copied the contents, and pasted into a new text document. After that I don't understand what to do.

Share this post


Link to post

In this example I will use two monsters from the Realm 667 Beastiary (Acolyte and Afrit), a lump editor (XWE) and a text editor (Notepad). I will assume you have a level wad file named level.wad, which you made with Doom Builder 2.

  • Open Notepad.
  • Open acolyte.wad in XWE.
  • Locate the DECORATE lump and rename it to DECACOL. (right click on the lump and choose Rename Entry)
  • Locate the GLDEFS lump and rename it to GLACOL.
  • Locate the SNDINFO lump and copy its contents.
  • Paste the contents of the SNDINFO lump in Notepad.
  • Close the acolyte.wad file.
  • Open afrit.wad in XWE.
  • Locate the DECORATE lump and rename it to DECFRIT.
  • Locate the GLDEFS lump and rename it to GLFRIT.
  • Locate the SNDINFO lump and copy its contents.
  • Paste the contents of the SNDINFO lump in Notepad.
  • Close the afrit.wad file.
  • Your text document in Notepad should now look like this.
monster/acosit dsacosit
monster/acopai dsacopai
monster/acodth dsacodth
monster/acoact dsacoact
monster/blur dsblur
monster/acosht dsacosht
monster/acohit dsacohit
dragonfam/attack dfattack
comet/launch cometlnc
comet/explosion cometexp
dragonfam/attack dfattack
  • Save this text document as SNDINFO.txt.
  • Close Notepad.
  • Open Notepad and write this.
#include "DECACOL"
#include "DECFRIT"
  • Save this text document as DECORATE.txt.
  • Close Notepad.
  • Open Notepad and write this.
#include "GLACOL"
#include "GLFRIT"
  • Save this text document as GLDEFS.txt.
  • Close Notepad.
  • Locate level.wad.
  • Open it in XWE.
  • In Entry menu select Load, locate DECORATE.txt and select Open.
  • In Entry menu select Load, locate GLDEFS.txt and select Open.
  • In File menu select Join (add lumps only), locate acolyte.wad and select Open.
  • In File menu select Join (add lumps only), locate afrit.wad and select Open.
  • Locate all occurences of SNDINFO lumps and delete them.
  • In Entry menu select Load, locate SNDINFO.txt and select Open.
  • Close XWE.
  • Open level.wad in Doom Builder 2.
  • Go into Things Mode and add a new thing.
  • Edit Thing dialog will now appear.
  • The monsters are in the Thing list under Decorate or "ZDoom Monster pack".
  • Select the monster and press OK.
Hopefully you will be able to understand this. If you are not sure about something, do not hesitate to ask.

Share this post


Link to post

Okay, I got it to work with those two monsters. However, there is a monster pack called differentmonsters1.2 that I would like to use. I tried getting the Hell Elemental into a map doing everything you said, but it didn't work for that monster for some reason.

Share this post


Link to post

I have trouble locating the monster pack, so I can't solve the problem, but I do have a hunch. I believe the DoomEd Number is missing. DoomEd Number is a number that is used by level editors for placing things on the map. Here is a DECORATE definition of a monster (Cacodemon) with a DoomEd Number 3005 (underlined).

actor Cacodemon 3005
{
  spawnid 19
  obituary "%o was smitten by a cacodemon."
  hitobituary "%o got too close to a cacodemon."
  health 400
  radius 31
  height 56
  mass 400
  speed 8
  painchance 128
  seesound "caco/sight"
  painsound "caco/pain"
  deathsound "caco/death"
  activesound "caco/active"
  attacksound "caco/melee"
  MONSTER
  +FLOAT
  +NOGRAVITY
  states
  {
  Spawn:
    HEAD A 10 A_Look
    loop
  See:
    HEAD A 3 A_Chase
    loop
  Missile:
    HEAD BC 5 A_FaceTarget
    HEAD D 5 bright A_HeadAttack    // See CacodemonBall
    goto See
  Pain:
    HEAD E 3
    HEAD E 3 A_Pain
    HEAD F 6
    goto See
  Death:
    HEAD G 8
    HEAD H 8 A_Scream
    HEAD IJ 8
    HEAD K 8 A_NoBlocking
    HEAD L -1 A_SetFloorClip
    stop
  Raise:
    HEAD L 8 A_UnSetFloorClip
    HEAD KJIHG 8
    goto See
  }
}
What can you do?

Locate the DECORATE lump that contains the definition of Hell Elemental and find the line that starts with
actor <ClassName>
<ClassName> will probably be HellElemental or something similar. There may be some other things written behind the <ClassName>, so it may look like this
actor <ClassName> : <AnotherClassName>
This means that <ClassName> inherits properties of <AnotherClassName>.

Now you need to assign a DoomEd Number to this actor, but beware there are some things to consider when choosing it. The number should not interfere with any of the ZDoom's Default editor numbers and any of the other DECORATE monsters you have already added in your map. You will have to search for all the DoomEd Numbers in every DECORATE lump (this means DECACOL and DECFRIT in my previous post) of the already added monsters and write them down.

When you have chosen the number, let's say it was 1337, you have to change the DECORATE definition of Hell Elemental like this
actor <ClassName> 1337
or this
actor <ClassName> : <AnotherClassName> 1337
depending on the way this actor is defined. If the actor has projectiles or any special effects actors, you do not have to assign these actors a DoomEd Number, because you will not be placing them in your map.

Congratulations, you can now place the monster in your map.

Share this post


Link to post

As I guessed it, the DoomEd Number is missing. If I set it to 20000 and I follow this it works for me.

In detail:

I modified the DECORATE lump like this:

actor HellElemental 20000
{
  health 400
  radius 31
  height 56
  mass 400
  speed 8
  painchance 60
  seesound "pain/sight"
  painsound "pain/pain"
  deathsound "pain/death"
  activesound "pain/active"
  obituary "%o was sent to hell by a hell elemental."
  MONSTER
  +FLOAT
  +NOGRAVITY
  states
  {
  Spawn:
    HEEL A 10 A_Look
    loop
  See:
    HEEL AABBCC 3 A_Chase
    loop
  Missile:
    HEEL A 0 A_Jump(256,"Attack1","Attack2","Attack3")
  Attack1:
    HEEL DE 5 A_FaceTarget
    HEEL F 5 bright A_FaceTarget
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,0)
	HEEL EF 5 bright A_FaceTarget
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,0)
	HEEL EF 5 bright A_FaceTarget
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,0)
    goto See
  Attack2:
    HEEL DE 5 A_FaceTarget
    HEEL F 5 bright A_FaceTarget
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,-45)
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,0)
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,45)
    goto See
  Attack3:
    HEEL DE 5 A_FaceTarget
    HEEL F 5 bright A_FaceTarget
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,-60)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,-50)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,-40)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,-30)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,-20)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,-10)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,0)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,10)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,20)
	HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,30)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,40)
    HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,50)
	HEEL F 0 bright A_CustomMissile("HellSoulAttacknS",15,0,60)
    goto See
  Pain:
    HEEL G 3 A_Stop
    HEEL G 3
    HEEL G 6 A_Pain
    goto See
  Death:
    HEEL H 8 bright
    HEEL I 8 bright A_Scream
    HEEL JK 8 bright
    HEEL L 0 bright A_FaceTarget
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,-45)
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,0)
    HEEL F 0 bright A_CustomMissile("HellSoulAttack",15,0,45)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,0)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,20)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,40)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,60)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,80)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,100)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,120)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,140)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,160)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,180)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,200)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,220)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,240)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,260)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,280)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,300)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,320)
    HEEL F 0 bright A_CustomMissile("HellSoulAttackNS",15,0,340)
    HEEL L 8 bright
    HEEL M 8 bright
    stop
  }
}
actor HellSoulAttack
{
  Radius 8
  Height 28
  Speed 15
  Damage 5
  scale 0.5
  Projectile
  +RANDOMIZE
  +SEEKERMISSILE
  RenderStyle Add
  Alpha 1
  seesound "hellsoul/attack"
  deathsound "skull/death"
  obituary "%o was sent to hell by a hell elemental."
  States
  {
  Spawn:
    HLSK A 4 bright A_SeekerMissile(2,10)
	HLSK A 0 A_SpawnItem("HellSoulTrail")
    HLSK B 4 bright A_SeekerMissile(2,10)
	HLSK A 0 A_SpawnItem("HellSoulTrail")
    HLSK A 4 bright A_SeekerMissile(2,10)
	HLSK A 0 A_SpawnItem("HellSoulTrail")
    HLSK B 4 bright A_SeekerMissile(2,10)
	HLSK A 0 A_SpawnItem("HellSoulTrail")
    HLSK A 4 bright A_SeekerMissile(2,10)
	HLSK A 0 A_SpawnItem("HellSoulTrail")
    HLSK B 4 bright A_SeekerMissile(2,10)
	HLSK A 0 A_SpawnItem("HellSoulTrail")
	HLSK A 0 A_PlaySoundEx("hellsoul/attack","Auto")
    loop
  Death:
    HLSK CCCCDDDD 1 A_FadeOut(0.05)
    loop
  }
}
Actor HellSoulAttackNS : HellSoulAttack
{
speed 25
damage 7
-SEEKERMISSILE
}
Actor HellSoulTrail
{
  Radius 0
  Height 0
  Speed 0
  Damage 0
  scale 0.4
  Projectile
  +RANDOMIZE
  +NOCLIP
  +NOBLOCKMAP
  RenderStyle Add
  Alpha 0.8
  States
  {
  Spawn:
    HLSK A 0 A_Die
  Death:
    HLSK AAAABBBB 1 A_FadeOut(0.1)
    stop
  }
}
I renamed the DECORATE lump to DECHEEL and the GLDEFS lump to GLHEEL.

I added this
#include "DECHEEL"
to the DECORATE lump, and this
#include "GLHEEL"
to the GLDEFS lump.

I also copied the contents of SNDINFO into the main SNDINFO lump.

Then I joined the HellElemental.wad file with my level.wad file and deleted the redundant SNDINFO lumps.

It showed up in the Decorate section of the Edit Thing dialog in Doom Builder 2, and I was able to place it in the map.

Importing an MP3 file with XWE for use in ZDoom compatible levels
  1. In the Entry menu select Load.
  2. Locate the MP3 file, let's say it is named MyMusic.mp3 and choose Open.
You have now imported an MP3 file in your wad. But it does not work yet. We have to use a lump named MAPINFO to do it. Open a text document in Notepad and write this
map MAP01 "My level"
{
   music = "MyMusic"
}
Save this document as MAPINFO.txt and load this lump in XWE.

The Hell is alive with the sound of music.

Explanation:

map <maplump> <nice name> - substitutes the name of the map in the wad for <maplump>, and the map's nice name (shown in the automap) for <nice name>. If <nice name> contains spaces, it must be enclosed in quotation marks ("). <Maplump> can be *any* lump in the wad, but since most editing utilities will only recognize maps of the form MAP?? or E?M?, you should probably stick to those if you want to be able to edit the levels easily.

music = "<LumpName>" - sets the map's music, <LumpName> is the name of the lump that contains the music.

More about it here.


Importing textures with XWE for use in ZDoom compatible levels
  1. In the Entry menu select New. And write TX_START in the box.
  2. If it is a BMP file do this: In the Entry menu select Load. Locate the texture file and choose Open.
  3. If it is a PNG file do this: In the Entry menu select Load (raw data). Locate the texture file and choose Open.
  4. In the Entry menu select New. And write TX_END in the box.
Now you are mapping with textures.

Share this post


Link to post

I think I get how to do it, but now when I put the DECORATE.txt lump into my map something weird happens with the geometry in the window on the right, when I close the file it says "File not found" and when I try to open the map in Doombuilder 2 it can't find my map.

Share this post


Link to post

You probably put the lump in a bad place.

A map has a series of lump that should be left alone:
*Header (e.g., E1M1 or MAP01)
*THINGS
*LINEDEFS
*SIDEDEFS
*VERTEXES
*SEGS
*SSECTORS
*NODES
*SECTORS
*REJECT
*BLOCKMAP
*BEHAVIOR (Hexen format only)
*SCRIPTS (Hexen format only, optional)

If you put the DECORATE lump, or anything else, between for example a map's VERTEXES and SEGS, not only will the DECORATE lump not be found, but the map will not be identified as a map because the sequence is broken.

Share this post


Link to post

It could also be that your wad file got corrupted. This usually happens when you have a wad file open in XWE and in Doom Builder 2 at the same time. This is really bad practice and should be avoided with any file and any programs - always have your file open only with one program at a time.

Hopefully it is just bad lump order, but if it is not, you should check the backups Doom Builder made for you. They are usually named <FileName>.wad.xyz.bak where xyz represent three numbers. Rename the latest one (the one with the highest xyz number) from <FileName>.wad.xyz.bak to <FileName>.wad.

Share this post


Link to post
Xtroose said:

IThis usually happens when you have a wad file open in XWE and in Doom Builder 2 at the same time.


This is why one should use Slumped* instead of XWE.

(* Or Slade 3, once it's out of beta.)

Share this post


Link to post

I haven't been trying to do this with any actual map yet. I have just been making random 1 room maps to try this out until I have it down. I'll try to put the lumps in the right order on my next try.

Share this post


Link to post
DoomHero85 said:

What order should the lumps be in?

Which lumps?

Map lumps:

Gez said:

A map has a series of lump that should be left alone:
*Header (e.g., E1M1 or MAP01)
*THINGS
*LINEDEFS
*SIDEDEFS
*VERTEXES
*SEGS
*SSECTORS
*NODES
*SECTORS
*REJECT
*BLOCKMAP
*BEHAVIOR (Hexen format only)
*SCRIPTS (Hexen format only, optional)


Otherwise, it doesn't matter. Textures must be within their textures markers (TX_START and TX_END), same thing for sprites (S_ or SS_ markers), flats (F_ or FF_), patches (P_ or PP_), etc. Top-level lumps like DECORATE must be outside of markers. Order does not matter.

Share this post


Link to post

I got monsters and music to work now. However, I changed the game configuration from Doom in Doom format to ZDoom: Doom in Doom format and now my sky texture is missing. How do I get it back? Also, the Realm 667 textures are just wad files. To use them do I simply load them into my map with XWE?

Share this post


Link to post

To get the sky back add this:

sky1 = "SKY1"
in MAPINFO. If we take the example I posted before, it should now look like this:
map MAP01 "My level"
{
   music = "MyMusic"
   sky1 = "SKY1"
}
Also, I would highly recommend you use ZDoom: Doom in UDMF instead of ZDoom: Doom in Doom format. It has less limitations than ZDoom: Doom in Doom or even ZDoom: Doom in Hexen format. It makes a lot of things simpler to make, for example setting different light levels for floors, ceilings or sidedefs as sector or sidedef properties, instead of making control sectors and using up tags. This way you will also be able to use ZDoom's latest features.

In UDMF the lump order for a map is:

*Header (e.g., E1M1 or MAP01)
*TEXTMAP
*ZNODES
*ENDMAP (marker)

DoomHero85 said:

Also, the Realm 667 textures are just wad files. To use them do I simply load them into my map with XWE?


The answer to your question depends on what you want to do.

If you plan to use just a couple of textures you could just import those you need in your wad.

If you plan to use an entire texture pack, I would recommend, that you just give a link to that texture pack, and write in the accompanying text file, that your project requires it, instead of including all the textures in your wad. There are still people who are unable to get a broadband internet connection and they will less likely download your map. In this case you can load the texture pack in Doom Builder as a resource.

If you make a bigger project, for example a megawad or a TC, then there is nothing wrong with putting many textures in your wad, but don't go overboard.

Share this post


Link to post
DoomHero85 said:

When I got the decorate monsters in my map, doombuilder automatically changed the map format to Zdoom: doom in doom format.

Because it's a Doom-format map and you have a DECORATE lump, so DB2 assumes you're modding for ZDoom.

There is no actual difference between "Doom" and "ZDoom in Doom".

DoomHero85 said:

How do I manually change the format to Zdoom: doom in UDMF?


Map format conversion is not something you do in the editor. (Unless your map is really, really simple.) You're better off using automatic converters.

See map format and UDMF for more information.

If you have a Doom-format map you want to convert to UDMF, you'll have to do it into two steps, because I do not know of any Doom-to-UDMF converter. First, you've got to convert it to Hexen format with ZWADCONV which you can get here, then you have to use a Hexen-to-UDMF converter, see this talk page for pointers where to find one.

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
×