Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Lazer

Heretic/Hexen enemies in Zdoom?

Recommended Posts

As some of you know, I've been working on a conversion called Underworld. I've found it quite frusterating having to work with DEH files and replacing doom enemies to make new ones. I read somewhere that in the newer Zdooms, there is a feature to use some of the Heretic/Hexen enemies in Zdoom. Does this mean I can remake most of the enemies from Heretic so I can have new enemies in Underworld (it uses Zdoom) instead of ones that replace the old ones? And what would I use? HHackEd?

Share this post


Link to post

I read something to that effect in the ZDooM forums. It sounded like ZDooM would allow the use of Heretic and/or Hexen enemies, leaving the DooM enemies untouched. However, I imagine that the player would need to have the Heretic and/or Hexen wad to be able to play the ZDooM wad that uses their resources. (Most DooM players already own Heretic & Hexen, so this shouldn't be a problem.)

Share this post


Link to post

This will be very much possible with the next Zdoom release. Hmmm, dubious grammar.

I've been playing around with this quite a bit recently.

You will have to do a number of things:

1 put the appropriate Heretic/Hexen sounds and graphics into a wad, with graphics converted to the doom palette.

2 Make a SNDINFO lump that has all the Heretic/Hexen sounds you need defined in the ifdoom section. Actually, you can just have them in a SNDINFO without having the ifheretic or ifhexen section markers identified.

3 Eliminate any clashing of resources. eg, the ironlich and the cacodemon use the same sprite names. Heretic in Zdoom does not support dehacked type modification, but you can use it to re allocate the cacodemon graphics. I made a bunch of renamed caco graphics and added them on to the end of the COL1 series, then used DEHACKED to allocate the additional COL1 graphics to the caco frames, allowing the iron lich to use the HEAD ones. The Hexen blue candle and Doom candle also clash over graphic names, as does one of the Hexen rocks and the doom rocket pickup. All easily worked around. In addition, the Heretic imp and Knight clash over sound entries with the Doom Imp and Hell Knight. This time the fix is to put new sound entries for the Doom imp and hell knight into the SNDINFO lump, and then use dehacked to allocate them to the appropriate monsters. Because Zdoom now allows you to put the name from a sndinfo entry directly into a dehacked patch to change a thing's sound, this is also an easy fix.

4 Wait for a version with the spawnspot ACS command to be fixed. This will allow you to put a map spot in a level, and then use a script to spawn the item you want at the spot.

So, just now, you can't easily put items from those games on a map with your editor, but you will be able to soon. For the moment, you can summon them, by loading up your resource file and typing "summon actorname" at the console where actorname is the name of the actor you want to summon. eg summon mummy will summon a Heretic mummy.

To get a list of the summonable things, turn on a log file (type logfile log.txt at the console) and then type "dumpclasses actor" at the console. The list will be saved to your log.

Before I was aware the spawnspot command was going to be available, I made a very clumsy little hack, using the terrain lump to spawn a few Heretic monsters instead of splashes when something hit the floor, and then teleported them to where I wanted them to start. If you want to try this level, just grab the file below (beta 33 required). But remember, there will soon be a much better way to do this. I can also probably look out the fix wad I made to allow the Heretic and doom monsters to co exist without clashing over resources.

http://members.lycos.co.uk/Enjay001/Her01.zip


Edit: Hmmm Tripod UK seems dead ATM, but the file should be there. Keep trying if you're interested.

Share this post


Link to post

good... very good...
I think that clears up the main questions I had, but I have just a couple more.
-Can I spawn weapons from Heretic/Hexen?
-I want to use the Dark Bishop from Hexen. Is this possible yet? If so, how would I do it?

Share this post


Link to post

I just got the Dark Bishop working, but I can't figure out how to get its sounds working. What do I need to type in SNDINFO.lmp to get it working?
For example, I tried putting in"
BISHDT1 BISHDT1
and I have a BISHDT1 sound (death sound), but it doesn't play it.
Also, as of now, is there an ACS command to spawn it?
And my weapons question still stands.

Share this post


Link to post

Apparently the Heretic weapons are possible, but I haven't actually tried them yet. You'll need to put all the necessary resources into a WAD and bind a key to the weapon. Im not sure of the numbers, but I think the Heretic weapons are weapon 9 or 10 upwards. Doom weapons being 0-8. So you would bind a key to "weapon 9" another to "weapon 10" and so on.

Pretty sure the Hexen weapons aren't ready yet.

All of the Heretic sounds are in the SNDINFO lump that comes with Zdoom.wad. They just need to be put in the ifdoom section. There are only a few Hexen sounds defined there though. However, if you export the SNDINFO from Hexen.wad, it has definitions for all the sounds you need.

And finally, the ACS commands are there, but are broken in b33. They are: (from this thread on the Zdoom forum)

int spawn(str actorType, fixed x, fixed y, fixed z, opt int tid, opt int angle);

Spawns an actor at a specific location on the map. For a list of things you can spawn, type

dumpclasses actorfrom the console inside the game. (Note that it is essentially
pointless to spawn some things, such as projectiles.) The thing will be spawned at location
(x, y, z) on the map. The coordinates are fixed point numbers, so be
sure not to forget the decimal point. Also note that z specifies the exact z-coordinate
of the new actor, and is not relative to the floor or ceiling of the sector it is spawned in.

The last two arguments to this function are optional. Tid is the thing id to give this
actor when it is spawned. If you do not specify tid, it will be given an id of 0.
Angle is the byte angle the thing will be facing. If you do not specify this, the thing
will be facing east (0).


This function returns a reference to the spawned actor. Because there is currently nothing you
can do with the reference, you should just ignore it.


Examples:



Spawn ("Barrel", 10.0, 16.0, 0.0); // Spawns a barrelSpawn ("ZombieMan", 128.0, 200.0, 16.0, 1); // Spawns a zombie man with tid 1Spawn ("Imp", 0.0, 0.0, 0.0,, 64); // Spawns an imp facing northSpawn ("Shotgun", 0.0, 0.0, 0.0, 12, 64); // Spawns a shotgun with tid 12 facing north


int spawnspot(str actorType, int spottid, opt int tid, opt int angle);

This function functions identically to spawn, except it uses a map spot to specify the location of the new actor. Spottid is the map spot's thing id.

Examples:



Spawn ("HealthBonus", 13); // Spawn a health bonus at map spot 13

Share this post


Link to post

IMO, the spawnspot will be most useful as you can place a map spot in your editor and then just spawn an item there when the level starts, rather than trying to work out coordinates. Also, in case its not clear from the above, it will be possible to spawn items with tids, so you can then give them specials (like running scripts on death and so on) via further scripting.

Share this post


Link to post

The weapons do work. I have a fully working crossbow. The only problem is the binding, how do I set that up?

Share this post


Link to post

int spawnspot(str actorType, int spottid, opt int tid, opt int angle);

I'm trying to use that, but wadauthor gives me errors. So what do I do to get around it? I'm trying to do this:

spawnspot(Bishop, 17, 0, 0);

Share this post


Link to post

Binding first. Bring down the console and type:

bind yourkey yourcommand

eg to bind the weapon 9 command to key 9 type

bind 9 "weapon 9"

or you could simply put the above into a text file called autoexec.cfg and it will run at Zdoom startup, or have a file with another name, but still a .cfg extension and load it from the command line. As long as it is the first parameter on the command line, zdoom will load it.

eg zdoom myconfig.cfg

Or you could put it later on the command line like this:

zdoom -file mywad.wad +exec myconfig.cfg

Once a binding is set, it stays in the Zdoom.ini. So if you don't alter/delete that your binding will stay put.

For a discussion on bindings and config files that took place on the Zdoom forums a while ago, check this.

Now spawning:

spawnspot(Bishop, 17, 0, 0); is basically it. You may need to put the word Bishop in inverted commas, not sure. This will spawn a Hexen Bishop at map spot 17, once the next version of Zdoom is out. As I said, this is broken in b33, but will be fixed for the release version. To compile a script with this function, you'll need the latest ACC (ver 1.21). Get it here. Or the latest DeePsea, which has been keeping pace with the various Zdoom and ACC changes.

If you run your compiled script with Zdoom 1.23 b33, nothing will happen, however, as the function is temporarily broken.

Share this post


Link to post

In case you have tried my example file that I linked to above (link seems to be working now), and that is confusing the issue - ie how come I can spawn monsters when the spawn script functions are broken - It doesn't use scripts to do the actual Heretic monster spawning.

I noticed the terrain lump that can be used to set up splashes on watery surfaces was actually telling Zdoom to call a specified actor as the splash. Instead of calling the actors that are supposed to be called (ie the splash animations) I set up a terrain lump to call the Heretic Mummy and Snake actors instead. Then I just made a bunch of hidden sectors with my new mummy and snake splash defined flats on the floor. I dropped an item onto the floors (a blood pool or something IIRC) and the splash it makes is actually a spawned monster. The hidden sectors have scrolling floors which carry the newly spawned monster over a teleport line and they teleport to where I want them to be.

OK, its a long way round, and pretty clumsy, but when I did it, I had no idea the spawn and spawnspot commands were going to be possible. At least it works in b33.

Share this post


Link to post

Originally posted by Enjay

Pretty sure the Hexen weapons aren't ready yet.


[)00[) J00 C4/\/ U53 ]-[3><3/\/ \/\/34P0/\/5

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
×