How Do I Edit Monsters And Weapons?

Archive of the old editing forum
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. This forum is archived - please use this set of forums to ask new questions.
Ninja_of_DooM
Posts: 667
Joined: Tue Aug 05, 2003 2:42 am
Location: Lossiemouth, Scotland
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by Ninja_of_DooM »

Easier than that. Download the .DLL and stick it in the SLumpED folder. That should do the trick.
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Re: How Do I Edit Monsters And Weapons?

Post by HotWax »

OK, people, stop the madness!

OK, noy0003, I want you to follow these directions exactly:

1) Download and install ZDoom in a folder with a valid Doom IWAD (doom.wad, doom2.wad, tnt.wad or plutonia.wad), assuming you haven't already done so.
2) Right-click in the folder ZDoom is in and select New->Text Document. Name the new file decorate.txt.
3) Open your new document (you can use Notepad or any other text editor you prefer) and paste into it the following:

Code: Select all

actor MyZombie : ZombieMan replaces ZombieMan
{
     health 100
     obituary "%o was killed by a super-zombieman."
     seesound "baron/sight"
     deathsound "demon/death"
     attacksound "spider/attack"
     dropitem "ShellBox" 128

     States {
            See:
                POSS AABBCCDD 2 A_Chase
                loop
            Missile:
                POSS E 10 A_FaceTarget
                POSS FE 4 bright A_CPosAttack
                POSS F 1 A_CPosRefire
                goto Missile+1
            Pain:
                POSS G 2
                POSS G 2 A_Pain
                POSS G 6 bright A_SetReflectiveInvulnerable
                POSS G 5
                POSS G 5 bright
                POSS G 5
                POSS G 5 bright
                POSS G 5
                POSS G 5 bright
                POSS G 1 A_UnsetReflectiveInvulnerable
                Goto See
            XDeath:
                TNT1 A 0 A_NoBlocking
                BEXP B 5 bright A_PlaySound("world/barrelx")
                BEXP C 5 bright
                BEXP D 10 bright A_Explode
                BEXP E 10 bright
                stop
            Raise:
                stop
     }
}
4) This next step it a bit tricky, as you now need to put the decorate.txt file you just created into a zip file. If you have WinZip installed, this is as easy as right-clicking the file, the selecting WinZip->Add to decorate.zip from the menu.
5) Once you've got the decorate file you created zipped up, drag and drop it onto ZDoom.exe. Pick your favorite Doom game and start playing. You'll notice that the pistol zombie now behaves quite differently. Congratulations! You just created your first custom monster.

The "super-zombie" created by this code has the following changes to the normal zombie:

- He sounds different.
- He's tougher to kill.
- He drops boxes of shells instead of clips!... but only half the time.
- He moves twice as fast.
- He rapid-fires his pistol, and it does more damage than normal.
- When injured, he temporarily becomes invulnerable to attack -- for best effect, use a plasma rifle to see this in action.
- When killed violently (e.g. by the BFG ball), he explodes like a barrel!
- He cannot be resurrected by the Arch-Vile.

So now that you've seen how it's done, let's see how it works, line by line:

actor MyZombie : ZombieMan replaces ZombieMan

The first line's a doozie, as it's doing quite a bit. The word "actor" tells ZDoom that a new actor is being defined. The next word, "MyZombie" gives the new actor a name. In practice, this can be whatever you like, so long as it's not already being used. ("actor Pistol", for example, would generate an error)

Following MyZombie is a colon (:). This is used when you don't want to create the actor entirely from scratch, but want to use an existing actor as a base instead. In this case, the base is "ZombieMan", which is the name ZDoom assigns to the pistol zombie. So ": ZombieMan" means that the new actor ("MyZombie") will "inherit" all of the behaviors and properties of the ZombieMan. In fact, if you stopped here you'd have a valid actor called MyZombie which is an exact carbon-copy of ZombieMan... But that's no fun, so the rest of the actor definition can be used to make changes.

The last part of the line is "replaces ZombieMan". This does what it says -- anywhere in the game the normal ZombieMan would appear, our actor is going to replace him. This allows making changes to an existing monster without having to create your own maps to put him in; whenever you'd normally see a pistol zombie in any Doom game, you'll now encounter "MyZombie" instead.

The second line is just one symbol, typically called a curly brace ({). This defines the start of the actor definition. Everything between this brace and the closing one (}) is part of the MyZombie actor.

health 100

This is an example of a simple actor property. Each property is placed on its own line, and is typically in the format "property value". In this case, the MyZombie's health is set to 100. Since the default pistol zombie has a health of only 20, this variant will be much more resilient.

obituary "%o was killed by a super-zombieman."

This is another actor property being set. As you can see here, properties can either have a numeric value (e.g. 1, 100 or 500), or a "string" (text) value. The obituary property takes a string, and uses it to print a line to the player's screen when they are killed by this monster. %o is a special symbol that causes the player's name to be inserted at that point when the line is printed. So, if I were to get killed by this monster, it would show "HotWax was killed by a super-zombieman." on my screen. Note that all string values must be enclosed in quotation marks to be valid.

The next three lines go together, so we'll tackle them at once:

seesound "baron/sight"
deathsound "demon/death"
attacksound "spider/attack"


These are still more properties that are being set for the new actor. All three define the sounds that the monster will make at various times. seesound is played when the monster becomes aware of the player (or another target) and begins chasing. deathsound is played when the monster dies. attacksound plays during the monster's attack sequence. (Well, actually this is controlled by the various "action functions" that are used during a monster's state definition, but I'll get to that in a bit.) What's been done here is that the normal ZombieMan's sounds have been replaced with a selection of other Doom monsters -- the Baron of Hell for the sight sound, the Demon's death sound, and the Spider Mastermind's attack sound. It should be tough to confuse this guy with its weaker variant now, eh?

dropitem "ShellBox" 128

The final property defined here is an example of a property that takes more than one value (or "argument" as they're called in this case). The string "ShellBox" is the actor that this enemy will drop on death. The number, 128, is the chance out of 256 that the enemy has of dropping the item. Since 128 is half of 256, this monsters has exactly a 50% chance of dropping a box of shells on death. Note that this replaces the normal zombie's bullet clip drop. As with all the other properties being defined, this "overrides" the default ZombieMan behavior.

States {

This line defines the start of the monster's State block. While the previous lines defined the various properties the actor will have (it's health, sounds, obituary, etc), the state block defines how the monster animates and behaves. It's quite a bit more complex than the rest of the definition, but with practice and experimentation it shouldn't be too hard to learn.

Note once again the curly-brace ({) at the end of this line. This is showing that everything between this opening brace and the closing brace (}) below is part of the actor's state block.

See:

This line defines the beginning of the "See" state. There are a number of [wiki=Actor states]"actor states"[/wiki] that are available for use, and each defines the state of interaction that the monster can perform. For example, the "See" state is the state a monster enters when it has seen its target. If the monster decides to attack, then it will jump to its "Melee" or "Missile" state, depending on how close it is to the target. When a monster is killed, it jumps to its "Death" or "XDeath" state. You can see a list of the available states, including when each of them are used, by clicking [wiki=Actor states]this link[/wiki]. For now, just remember that the See state will be entered by the MyZombie actor when it has seen or heard the player and is actively hunting him.

POSS AABBCCDD 2 A_Chase

This is another line that is made up of several pieces, so I'll explain each part individually. The first word, "POSS" is a sprite name. A sprite name is always exactly 4 characters long, and refers to a set of graphics contained within the IWAD or a PWAD that has been loaded. You can read more on how sprites are defined by reading [wiki=Sprite]this page[/wiki] of the wiki. Next comes a series of letters, which on this line is the letters A, B, C and D, each repeating twice. Each letter in this section defines an individual frame. Normally you would define each frame on its own line, but these frames will all share the exact same properties, so ZDoom supports putting them in a series like this to avoid writing excessive amounts of code. This one line is actually a shorthand way of writing this:

Code: Select all

POSS A 2 A_Chase
POSS A 2 A_Chase
POSS B 2 A_Chase
POSS B 2 A_Chase
POSS C 2 A_Chase
POSS C 2 A_Chase
POSS D 2 A_Chase
POSS D 2 A_Chase
As you can see, this method saves quite a bit of rendundant typing.

So, you've probably figured out by now that this frame-series (AABBCCDD) defines 8 frames. But what exactly is a frame? Well, as with any form of animation, the graphic shown on the screen representing the zombie will be animated by stepping through a series of frames. If you were to find the graphics within your Doom IWAD called POSSA1, POSSB1, POSSC1 and POSSD1, you can see that they form a 4-frame animation of the zombie walking toward the screen. This is exactly the animation being defined in the See state. But why define each twice in a row, you might ask... Well, we'll get to that in just a second, so bear with me...

Next on the line is a number, 2, that defines how long each frame in the sequence will last. This is measured in Doom's standard time unit, which is called a "tic". There are 35 tics per second, so a duration of 2 means that each frame stays on screen for just 2/35ths of a second. Since the frames are being doubled-up, each image will actually be seen for twice as long, but that's still only 4/35ths of a second! This speed makes the zombie appear to move smoothly through the world--twice the normal speed of the ZombieMan, in fact.

The last thing to appear on the line is "A_Chase". This refers to an "action function" which will be performed by the zombie as the frame is drawn. Action functions are what make all of the actors in Doom work. There are action functions (like this one) to make monsters chase their target, to make them attack or yell in pain, even to give or take things from their targets inventory. You can see the complete list of currently-supported action functions by clicking [wiki=Action functions]here[/wiki]. In this case, the [wiki]A_Chase[/wiki] function tells the zombie to chase its current target -- specifically, to turn to face whatever it's targetting a move a certain amount of units in its target's direction.

Now, the thing about action functions you need to know is that they are executed only once per frame -- during the first tic of that frame's duration. That means that if you were to put A_Chase on a frame with a long duration such as 35, the actor would only move a tiny bit forward toward its target and then would stop and wait for the remaining 34 tics. A looping animation with this set would appear very jerky and unnatural, and the monster wouldn't get very far. This, then, is why the frames have been doubled up. Even though the animation occurs at a rate of 4 tics per frame, the actor is executing A_Chase twice during each frame, so that he moves toward the target more quickly and smoothly.

So, to recap, when this line is encountered, it instructs the MyZombie actor to display the sprite POSS using the frames A, B, C and D for 4 tics each, chasing its target twice during each of the frame display. This will make it appear that the zombie is intelligently chasing its target for all of 2 steps. Clearly, this sequence needs to be looped in order for the monster to continue walking forward, and that's where the aptly-named command on the next line comes in:

loop

Very simply, this instructs ZDoom to loop the current (See) state repeatedly. By combining these two lines, the zombie will now continually chase its target until otherwise interrupted.

Obviously, a monster that just walked at its target would be pretty useless. Luckily, A_Chase is more than it appears. As it instructs the monster to chase after its target, it also checks to see if the zombie has a clear line of sight and is within a certain range of that target. If so, it has a predefined chance to jump to an attack state, depending on exactly how far the target it from the zombie. When that happens for our zombie, it only has one state to choose from (it doesn't have a melee state), so it will always use it. It just so happens that this state, the "MIssile" state, is the one about to be defined:

Missile:

This simply defines the beginning of the actor's Missile state. To recap, this is where the actor goes to find out what to do when it decides to attack its target.

POSS E 10 A_FaceTarget

By comparison to the last frame definiton we just saw, this one's pretty simplistic. Once again, the POSS sprite is being used. Frame E of that sprite shows the zombie aiming his weapon and preparing to attack. This frame is shown for 10 tics, or 10/35ths of a second. At the beginning of this frame, the A_FaceTarget action function is called, which, as you can probably guess from the name, simply makes the zombie face his target. This is typically used before the actor attacks because otherwise there could be a chance for the enemy to appear to be facing the wrong way when they attack -- possibly resulting in an imp (for example) hurling a fireball out of its butt! How embarrassing....

POSS FE 4 bright A_CPosAttack

This next line defines two frames, displaying F and E for 4 tics each and calling A_CPosAttack for each of them. But wait, what's this "bright" thing doing there? This optional keyword instructs ZDoom to display these frames at full brightness regardless of how dark the surrounding area may be. This is what causes the enemies to "light up" when they attack, and certain actors (like the lost soul or the torches) to glow at all times.

Otherwise, this line should be pretty straightforward except for the A_CPosAttack action function, which we haven't seen yet. This particular function is one of a number of attack functions that ZDoom supports. In this case, it's the attack that is normally used by the chaingun zombies found in Doom 2, which are typically referred to by the name "CPOS" (don't ask me why, I don't know). It is a fairly strong bullet attack meant to be rapidly-fired. and since it's being used twice just 4 tics apart, that is certainly what is happening here. Now, you might wonder how ZDoom can use the Chaingunners attack even if it's playing Doom 1, where there is no chaingunner. Well, it's actually pretty simple -- all of the game code for every actor from all the games that ZDoom supports is defined and always available, even if the resources for that actor (graphics and sounds) are missing. So even though you can't have a chaingun zombie in Doom 1, you're still able to "borrow" his behavior by using the built-in action functions that are available to him. This is actually used later to borrow behavior from a Hexen monster as well!

POSS F 1 A_CPosRefire

Another basic line, and these should be pretty easy to understand by now. Simply put, ZDoom is being instructed to show POSS frame F for 1 tic, and execute the A_CPosRefire action function.

A_CPosRefire, once again borrowed from the chaingunner, is a function that instructs the zombie to check to see if it still has a line of sight to its target. If it does not, then A_CPosRefire will direct the zombie to go back to its See state and resume its search for the target. If this line wasn't present, the zombie would continue firing forever once it had started. This makes it seem more intelligent by instructing it to stop firing when its current target either leaves its line of sight (by hiding behind a pillar, for example), or gets killed.

goto Missile+1

This line tells the actor to "go to" a specific frame. In this case, "Missile+1" means the first frame of the Missile state, plus 1. So this will skip the "POSS E" line and go directly back to the "POSS FE" line, which tells the zombie to continue firing. The result is a rapid-fire pistol attack repeatedly forever until the target is dead or out of sight.

Pain:

By now, you should know what this is -- it's the start of a new state! The Pain state is entered when the monster is damaged by weapons fire, but not always -- there is a random chance that the monster will not enter the pain state when hit, and this can be controlled by the painchance property. Since there's not one defined in this actor, the ZombieMan actor's value will be used instead. The painchance of the ZombieMan is 200, which is a fairly high amount. What this all means is that, more often than not, when this actor gets struck in combat, he'll enter the Pain state and execute the frames that are defined within, starting with these:

POSS G 2
POSS G 2 A_Pain


The G frame of the POSS sprite is shown from 4 tics total between these two lines. The second line also calls the [wiki]A_Pain[/wiki] action function, which simply instructs the actor to play its pain sound. Since the G frame shows the zombie with its head thrown back, this gives the impression that the zombie has been injured and is screaming in pain. Ah, but what's all this happening here?

POSS G 6 bright A_SetReflectiveInvulnerable
POSS G 5
POSS G 5 bright
POSS G 5
POSS G 5 bright
POSS G 5
POSS G 5 bright
POSS G 1 A_UnsetReflectiveInvulnerable


Well, to further set "MyZombie" apart from the normal pistol zombie, I thought I'd borrow the behavior of a Hexen enemy you might not be familiar with. This enemy, the Centaur, has the annoying habit of raising a shield in front of itself when injured, which deflects all attacks and makes the monster temporarily invulnerable. So, the first line uses A_SetReflectiveInvulnerable to do this for the super-zombie. While these two flags are set, any projectiles fired at the zombie will bounce harmlessly away, and any and all damage will be ignored. How wonderfully frustrating! :)

The next several lines cause the zombie to remain in his "in pain" frame and flash between normal and full bright as he continues to reflect oncoming attacks. Crude, but effective.

The final line is simply the reverse of the first, removing the zombie's ability to reflect projectiles and making him once more vulnerable to attack. As you can probably guess, this line is highly important -- if it was left out, the zombie would remain completely immune to all attacks and would effectively be impossible to kill without cheating; not very fun for the player.

goto See

The final line is another goto command, instructing the monster to return to its See state once the Pain state has run through.

XDeath:

Another state definition, this time XDeath, which is entered when the enemy dies in a particularly nasty way -- in order to enter this state, the actor must receive enough damage that its health goes into the negative by more than its starting health. In the zombie's case, it must be hit hard enough that it has -100 or less health. In Doom, the only way to guarantee that this happens is to hit him directly with a BFG shot. In this case I've replaced the normal zombie's blood splatter death with something a bit more dangerous -- an exploding barrel!

TNT1 A 0 A_Noblocking

Hey, what happened to POSS? Well, it's not being used here, and it doesn't really even matter, because this frame has a duration of 0. As silly as that might sound, the sole reason for this line is to call A_NoBlocking, so no frame needs to be displayed. Because it has 0-duration, A_NoBlocking will be called and the actor will immediately move to its next frame within the same tic. This is a good way of getting an actor to do two or more things at exactly the same time. So, you might be wondering what exactly TNT1 is -- It's simply an empty graphic provided by ZDoom to be used when you have nothing you want to actually show. If this were used on a frame that had a duration greater than 0, the monster would become invisible while those frames were being displayed. In my opinion, it's good pratice to use it for 0-duration frames because it makes them stand out from other frames and avoids confusion when other people are reading your actor definition -- if I had used the POSS sprite, people might thing it's a bug that that frame is never shown during the XDeath state. This way, it's immediately clear that the frame will not actually appear on the screen.

BEXP B 5 bright A_PlaySound("world/barrelx")

Oh boy, another biggie. Let's get the stuff you already know out of the way first; This shows the BEXP sprite (Doom's barrel exploding), frame B, for 5 tics, drawing it in full bright. It also calls the A_PlaySound action function, but this function is more complex than others seen so far. This one takes what is called in programming terms as a "parameter list". Parameter lists go between parenthesis -- ( ) -- and contain a number of parameters (or arguments if you prefer, same thing) that the function uses to execute. A_PlaySound takes one parameter, and that is the sound it should play. Note the similary of this sound to the ones used before to define the sight, attack, and death sounds. Once again, the parameter must be enclosed in quotation marks because it is a string. The upshot of all this is that the sound of a barrel exploding will be heard during this frame.

BEXP C 5 bright

Very simple, nothing to see here. Just shows BEXP's C frame at full brightness for 5 tics. Move along.

BEXP D 10 bright A_Explode

This makes the zombie--er, barrel--blow up! Damage will be dealt to anything with the misfortune to be standing too close.

BEXP E 10 bright

Another simple line, and I shouldn't even have to explain it... so I won't.

stop

This tells the actor, quite simply, to stop existing. Since the monster has exploded like a barrel, there's nothing left of it, not even a corpse, so there's no reason for it to even remain in the game. The actor is thus permanently removed after it explodes, never to be seen again. *sniff*

The final state definition is a special one, and by far the simplest to define:

Code: Select all

Raise:
     stop
The Raise state is the state an actor enters while the Arch-Vile is bringing it back to life. Typically it is a reverse of the actor's death frames, so the effect is that of the zombie getting back up and ready to fight again. The presense or absense of the Raise state in an actor determines whether or not an AV can resurrect it. Since the ZombieMan is a very basic monster, it has this state and can thus be resurrected. However, the super-zombie is stronger, so I don't want the AV to be able to bring it back -- but how can I stop this? Since I'm inheriting everything from the ZombieMan, this Raise state would normally come along with it, creating quite a dilemma. In order to get around this, the stop keyword has some special behavior coded in -- if it is the first and only line in a state, then it has the effect of removing that state, as if it was never inherited. The two lines above, in essense, turn off the AV's ability to resurrect this variant of the zombie.

The last two lines are the closing braces of the state block, and the actor block in that order. If you wanted to go on to define more actors, you could do so by simply starting a new actor definition on the following line.
User avatar
Zippy
Posts: 3302
Joined: Wed Mar 23, 2005 5:31 pm
Location: New Jersey

Re: How Do I Edit Monsters And Weapons?

Post by Zippy »

My God, the text!
User avatar
Enjay
 
 
Posts: 26517
Joined: Tue Jul 15, 2003 4:58 pm
Location: Scotland
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by Enjay »

Holy smoke and snakes alive, that has to be one of the fullest and most comprehensive answers ever posted on these forums. Go HotWax! ;)
User avatar
.+:icytux:+.
Posts: 2659
Joined: Thu May 17, 2007 1:53 am
Location: Finland

Re: How Do I Edit Monsters And Weapons?

Post by .+:icytux:+. »

Hotwax: you should definatley put up that text to a tutorial or somethin... if it isnt allready :P..

and u can use DecorateEditor...
tough... i still dont recommend it...
because a simple txt. file is way more flexible and faster...

[EDIT]

and!!!
if you still dont understand this thing...
i recommend u to look at others monsters via XWE or SLumpEd...
and u will slowly get the hang of it...

Training makes a master !
CaptainToenail
Posts: 3975
Joined: Fri Jul 06, 2007 9:16 am

Re: How Do I Edit Monsters And Weapons?

Post by CaptainToenail »

Holy crap, you wrote an essay! :shock:

Lets put that zombie in the Beastiery :lol:
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Re: How Do I Edit Monsters And Weapons?

Post by HotWax »

Enjay wrote:Holy smoke and snakes alive, that has to be one of the fullest and most comprehensive answers ever posted on these forums. Go HotWax! ;)
Well I figured the post would either enlighten him or scare him away forever. Either way, problem solved. ;)

Also, I was bored
User avatar
Unknown_Assassin
Posts: 2468
Joined: Wed Apr 12, 2006 5:17 pm
Location: Where dead carcasses lie
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by Unknown_Assassin »

Hotwax wrote:Well I figured the post would either enlighten him or scare him away forever.
I'd say the latter. :P
User avatar
Matt
Posts: 9696
Joined: Sun Jan 04, 2004 5:37 pm
Preferred Pronouns: They/Them
Operating System Version (Optional): Debian Bullseye
Location: Gotham City SAR, Wyld-Lands of the Lotus People, Dominionist PetroConfederacy of Saudi Canadia
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by Matt »

HotWax wrote:Well I figured the post would either enlighten him or scare him away forever. Either way, problem solved. ;)

Also, I was bored
Heh, figured you were intending one of the two or three :D

Although for people who do learn from here's-the-entire-thing-in-one-neat-and-concise-but-still-huge-package it would certainly be helpful... especially for people who'd lose patience with my 14-page essay on how to create an inert obstacle >_>
User avatar
HotWax
Posts: 10002
Joined: Fri Jul 18, 2003 6:18 pm
Location: Idaho Falls, ID

Re: How Do I Edit Monsters And Weapons?

Post by HotWax »

Speaking of which, if you want to use any or all of the above post in your tutorial project, you're welcome to do so. I don't really have the desire to go back through that and change it into tutorial format, but if someone else wants to, by all means....
User avatar
DBThanatos
Posts: 3101
Joined: Fri Apr 14, 2006 3:17 pm
Location: in "the darkness that lurks in our mind"
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by DBThanatos »

ohh... why there wasnt any tutorial like hotwax's when I started to learn decorate?




DBT
User avatar
Phobus
Posts: 5984
Joined: Thu May 05, 2005 10:56 am
Location: London
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by Phobus »

To be fair, you shouldn't really need a mega-size tutorial like that anyway, as it's generally quite simple to pick up things for ZDoom, and once you've picked it up you just need to work out the action functions and what they do. So really, whilst HotWax's tutorial is a golden example, it's not necessary.
noy0003
Posts: 42
Joined: Fri Dec 07, 2007 11:20 am

Re: How Do I Edit Monsters And Weapons?

Post by noy0003 »

HotWax wrote:OK, people, stop the madness!

OK, noy0003, I want you to follow these directions exactly:

1) Download and install ZDoom in a folder with a valid Doom IWAD (doom.wad, doom2.wad, tnt.wad or plutonia.wad), assuming you haven't already done so.
2) Right-click in the folder ZDoom is in and select New->Text Document. Name the new file decorate.txt.
3) Open your new document (you can use Notepad or any other text editor you prefer) and paste into it the following:

Code: Select all

actor MyZombie : ZombieMan replaces ZombieMan
{
     health 100
     obituary "%o was killed by a super-zombieman."
     seesound "baron/sight"
     deathsound "demon/death"
     attacksound "spider/attack"
     dropitem "ShellBox" 128

     States {
            See:
                POSS AABBCCDD 2 A_Chase
                loop
            Missile:
                POSS E 10 A_FaceTarget
                POSS FE 4 bright A_CPosAttack
                POSS F 1 A_CPosRefire
                goto Missile+1
            Pain:
                POSS G 2
                POSS G 2 A_Pain
                POSS G 6 bright A_SetReflectiveInvulnerable
                POSS G 5
                POSS G 5 bright
                POSS G 5
                POSS G 5 bright
                POSS G 5
                POSS G 5 bright
                POSS G 1 A_UnsetReflectiveInvulnerable
                Goto See
            XDeath:
                TNT1 A 0 A_NoBlocking
                BEXP B 5 bright A_PlaySound("world/barrelx")
                BEXP C 5 bright
                BEXP D 10 bright A_Explode
                BEXP E 10 bright
                stop
            Raise:
                stop
     }
}
4) This next step it a bit tricky, as you now need to put the decorate.txt file you just created into a zip file. If you have WinZip installed, this is as easy as right-clicking the file, the selecting WinZip->Add to decorate.zip from the menu.
5) Once you've got the decorate file you created zipped up, drag and drop it onto ZDoom.exe. Pick your favorite Doom game and start playing. You'll notice that the pistol zombie now behaves quite differently. Congratulations! You just created your first custom monster.

The "super-zombie" created by this code has the following changes to the normal zombie:

- He sounds different.
- He's tougher to kill.
- He drops boxes of shells instead of clips!... but only half the time.
- He moves twice as fast.
- He rapid-fires his pistol, and it does more damage than normal.
- When injured, he temporarily becomes invulnerable to attack -- for best effect, use a plasma rifle to see this in action.
- When killed violently (e.g. by the BFG ball), he explodes like a barrel!
- He cannot be resurrected by the Arch-Vile.
O.....K..... Um, what I was looking for was something similer. Could you either do 1 of 2 things; 1. Put all of the monsters with their original stats, aswell as weapons (monsters and weapons seperate) in a text file, and send me the link to download it. Or 2. Put all of the monsters with their original stats, aswell as weapons (monsters and weapons seperate) in a post in this forum.
User avatar
Unknown_Assassin
Posts: 2468
Joined: Wed Apr 12, 2006 5:17 pm
Location: Where dead carcasses lie
Contact:

Re: How Do I Edit Monsters And Weapons?

Post by Unknown_Assassin »

If you are talking about Doom 2 monsters and weapons, then you can find it in the Wiki.
noy0003
Posts: 42
Joined: Fri Dec 07, 2007 11:20 am

Re: How Do I Edit Monsters And Weapons?

Post by noy0003 »

Unknown_Assassin wrote:If you are talking about Doom 2 monsters and weapons, then you can find it in the Wiki.
Thanks for that. Really helpfull. But I also wanted to know how to change the attacks, and damages of the monsters and weapons.
Locked

Return to “Editing (Archive)”