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

Replacing WolfensteinSS with new monster

Recommended Posts

I have been working on a wad for a while now and its going quite well. I have come to a point where I want to add a new monster to make it not just another doom2 boring wad. I want to replace the WolfensteinSS as I have don't want to put it in the wad as I think that people usually just use it when they have run out of good ideas. I could od wit hadding it soon so that I can design an area to introduce it and see how it affects the balance of the wad.

However.

I have the sprites I want to use (I have some elements of beautiful doom already in the wad and I have the gibbed body parts sprites for the monster) but how do I go about replacing it. I have Doombuilder, XWE and WhackEd to use, if another editor would be allot betetr than please tell me. I want to change the sprites to my new ones, and the attack from hitscan to melae along with a change in how much damage it does and a slight adjustment to the size of it as it is a little bigger than the WolfensteinSS. One last thing, The WolfenstienSS only has a frontal attack sprite, is it possible to add new attack sprites for all angles?

All help appreciated.

EDIT: sorry, one last thing, im a bit of a noob so please keep it reasonably simple to understand and try and cut the more obscure jargon. cheers.

Share this post


Link to post

Sprite frame replacement is fairly straightforward - use XWE to import the new monster's sprite frames into your PWAD and give them names that correspond to the SS sprite frames they're replacing. WhackEd can handle other details - monster dimensions and adding a melee state, not sure how to change the damage. Another way of modifying monster behaviour is by using port-specific scripting languages like DECORATE or DDF.

Adding new attack sprites (for infighting I presume) is mainly a matter of numbering the rotations (angles) correctly. Reading this wiki page and using XWE to view some Doom2 sprite rotations might explain things better than I can.

Share this post


Link to post

one question, when i put the new sprite into xwe it changes it changes the cyan background that I want so that my monster isnt just a square to a darker blue and I can't understand why, is there any way of stopping it doing this?

Share this post


Link to post

If it's turning dark blue, then what's happening to you is that XWE isn't giving the transparent parts of the sprites Doom's transparent color. You can probably just use the color remap tool to change the background color to index 247 and apply the remapping to all the sprites (which wouldn't take long). That's the color used for transparency. I'm not quite sure why XWE wouldn't automatically convert the cyan though. If it works, the background will appear as cyan along with the rest of the window background.

Share this post


Link to post

That hasn't worked, it hasn't done anyhting. The only 2 things I can see that fix it are either going over every single sprite in xwe and deleting all the dark blue pixels or after putting the sprite into the wad saving it as a seperate file and painting over all the dark blue with the correct cyan on GIMP then saving it and using replace to replace the origional sprite with the new one with the cyan in xwe. both are quite time consuming and annoying as I already have the cyan on the original image, its just xwe that changes it to dark blue for some inexplicable reason.

Share this post


Link to post

After all the images have been imported in XWE and it has changed the colors to dark blue, click on one of the images and go to the color remap option in the menubar, then find that dark blue color in the list of colors the image uses. Then double click on the color index and type in 247. Provided the image doesn't use that same dark blue color for the actual monster sprite, you can just go through each image and click "perform color remap" and save each image when it asks. This will force the image to use the transparent color for each image. It shouldn't take too long for one monster. You only need to change that blue color once and just "perform color remap" on each sprite. However, if your new monster uses the dark blue shade, then this method is not going to work well.

Share this post


Link to post

All those steps really shouldn't be necessary though. XWE should be auto-converting the nominated colour to transparent when you import. Is your cyan actually cyan? If it isn't, perhaps it is close enough to a blue that exists in the palette for XWE to convert it to the blue rather than the cyan. Also, you might try using true colour images as your source files. That might work. Unfortunately, I'm not as familiar with XWE's import routines as I am with other programs.

Share this post


Link to post

Well I have tried remaping the colour for all the sprite rotations and saving it (with the dark blue as 247 but it just doesn't work the blue box remains. and also the cyan is *******ly true cyan as I used the colour picker tool on the shotgun guy sprite on gimp and used it to go around the edga of my monster so it would *******ly be the right colour.

Share this post


Link to post

As a last resort, have you tried using Doom's palette in GIMP and saving the images so they are 8-bit? If that is an option for you, you can force the background to use the color defined by index 247. Then XWE won't have any slack in the color conversion, and everything will be imported exactly as it is in the image files. You probably already know this, but if you avoid the cyan color altogether since Doom does not have a cyan color, then it will not attempt to convert it to blue. Using a fixed palette completely through the entire process will eliminate any problems.

Share this post


Link to post

The easiest solution is indeed adjusting the color number with XWE. Select the frame/ sprite and select color remap (IIRC). That should have worked.

Another way that is more effort, but guaranteed to work:
You can save all your frames as bmp's. Also save another frame which has a working cyan color and open this in MS paint. Select the cyan color with the color pick tool. Then 'paste from' one your frames. The palette of the picture is now that of Doom so when you use 'fill' the cyan should truely be cyan.

Share this post


Link to post

I've worked around the awkward sprites, and now they all look as I want. I am using the decorate function as WhackEd is completely broken and I can't be bothered to reinstall it and it is for zdoom anyway. However I am having some trouble makeing it into a melee monster and having it make the correct sounds.

This is what I currently have and is currently making no noise when seeing me, at death or attacking. Also the monster flashes a brighter colour when it attacks, could that be stopped?

Actor WolfensteinSS1 : WolfensteinSS replaces WolfensteinSS
{
obituary "%o was sliced and diced by a chainsaw zombie."
health 90
radius 20
height 56
mass 120
speed 10
seesound "chaingunguy/sight"
attacksound
painsound
deathsound "chaingunguy/death"
painchance 100
missileheight 0
meleedamage 20
meleerange 44
gibhealth 30
dropitem "Chainsaw"
states
{

Melee:
SSWV E 8 A_FaceTarget
SSWV F 8 A_SargAttack
goto See

Pain:
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
SSWV H 3
SSWV H 3 A_Pain
goto See

Death:
SSWV I 5
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV J 5 A_Scream
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV K 5 A_NoBlocking
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV L 5
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV MM 5 A_spawnitem("BloodSpatter")
SSWV M -1
stop
XDeath:
TNT1 A 1 A_Xscream
TNT1 AAAAAAAAA 0 A_spawnitem("GibsSpawner")
TNT1 A 0 A_spawnitem("HeartBrainsSpawner")
TNT1 A 0 A_spawnitem("SPosPartsSpawner")
TNT1 A 0 A_NoBlocking
stop
}


thanks if anyone can help.

Share this post


Link to post
EarthQuake said:

You can probably just use the color remap tool to change the background color to index 247 and apply the remapping to all the sprites (which wouldn't take long). That's the color used for transparency.

This is false.

The truth is that Doom uses 256 different opaque colors, indexed from 0 to 255, transparency is simply handled by not describing any pixel. The Doom picture format is a series of pixel columns, each described by their X position, Y-starting point, and Y length. Any part of the image that isn't covered by a column is therefore left transparent.

However, since most advanced graphic tools such as MS Paint cannot handle transparency nor even a palette with 257 colors (Doom's 256 colors + a transparent color), people started using a ugly hack of stealing one color from Doom's palette and claiming it was a transparent color. This fell on index 247, because it was redundant (the same color is described in index 0) and none of the pictures in Doom used it.

The convention that it's cyan was also adopted at the same time (in reality, it's black).

While the "247 == cyan == transparent" convention works well enough for Doom graphics, it is broken when applied to, say, Heretic, Hexen or Strife graphics. For this reason, tools that rely on this behavior can only reliably used for Doom.

Share this post


Link to post

Based on my reading of the ZDoom wiki and the Chainsaw Zombie's Decorate script...

Replace attacksound with MeleeSound "weapons/sawhit"
Change the other sounds to "chainguy/sight" and "chainguy/death"
Change the second Melee line from SSWV F 8 A_SargAttack to SSWV F 8 A_MeleeAttack

Hope that helps.

Share this post


Link to post
Gez said:

This is false.


Then I stand corrected.

I always thought the transparent color was included in the palette. Assuming index 247 is the transparent color is still applicable however in Doom-related graphics manipulation for the reasons you described. It does work in XWE with Doom, after all.

Share this post


Link to post

That works great, except that they still have a hitscan attack as well as the melee attack, anyway i can completely remove te hitscan attack from the Wolfenstein SS? Also they still light up when attacking.

Share this post


Link to post
PhilibusMo said:

That works great, except that they still have a hitscan attack as well as the melee attack, anyway i can completely remove te hitscan attack from the Wolfenstein SS? Also they still light up when attacking.

You have to remove the Missile state from them. How to do so is explained here.

Share this post


Link to post

I can't see a missile state in PhilibusMo's script.

You might still need a dehacked patch to remove the WolfSS hitscan attack - alternately give your custom monster an Actor Number (let's say somewhere between 3010 and 4000) and use that when placing it in maps. Try to avoid numbers on this list.

Share this post


Link to post
GreyGhost said:

I can't see a missile state in PhilibusMo's script.


Look better: it is on the first line:

Actor WolfensteinSS1 : WolfensteinSS replaces WolfensteinSS
Inheritance means that the actor inherits all the states from the parent class (which itself inherited all the states from its own parent class, and so on, up to the original Actor class itself). Since WolfensteinSS has a Missile state, any class derived from it has a missile state as well.

As I said, how to remove a state from a class is explained here. The example given is this:

This example demonstrates using the stop keyword to remove a state. This definition uses inheritance to define a tougher version of the imp that cannot be resurrected by the Arch-Vile:

actor SuperImp : DoomImp
{
     health 1500
     mass 200
     painchance 10

     States {
          Raise:
              stop
     }
}



If PhilibusMo's chainsaw zombie were entirely redefined (it lacks a Spawn: and a See: state at least, and it could have a Raise: state I suppose), if he doesn't want to inherit stuff from WolfensteinSS, he could as well simply not inherit from it; the following code would work just as well:

Actor WolfensteinSS1 replaces WolfensteinSS

Share this post


Link to post

Inheritance - a stumbling block for people who've done little Decorate scripting.
Thanks for pointing that out to me.

Share this post


Link to post

Thanks so much, I have been puzzeling over that for 2 days. Onelast thing, doesn't particuarly matter but they still stop occasionally and play the attack frame, even though they are miles away. This is obviously to try and do a missile or hitscan but nothing happens and they carry on walking after about half a second also they are still very slow, Isn't 10 speed demon speed? I thought they would move allot faster. My new decorate script for it is:
Actor WolfensteinSS1 replaces WolfensteinSS
{
spawnid 116
obituary "%o was sliced and diced by a chainsaw zombie."
health 90
radius 20
height 56
mass 120
speed 10
painchance 100
seesound "chainguy/sight"
meleesound "weapons/sawhit"
painsound "wolfss/pain"
deathsound "chainguy/death"
activesound "wolfss/active"
meleedamage 15
meleerange 44
gibhealth 50
dropitem "Chainsaw"
states
{


Spawn:
SSWV AB 10 A_Look
loop
See:
SSWV AABBCCDD 3 A_Chase
Melee:
SSWV E 8 A_FaceTarget
SSWV F 8 A_MeleeAttack
goto See

Pain:
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
TNT1 A 0 A_customMissile("BloodDrop",32,0,random(-40,40),2,random(15,40))
SSWV H 3
SSWV H 3 A_Pain
goto See

Death:
SSWV I 5
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV J 5 A_Scream
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV K 5 A_NoBlocking
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV L 5
TNT1 A 0 A_spawnitem("BloodSpatter")
SSWV MM 5 A_spawnitem("BloodSpatter")
SSWV M -1
stop
XDeath:
TNT1 A 1 A_Xscream
TNT1 AAAAAAAAA 0 A_spawnitem("GibsSpawner")
TNT1 A 0 A_spawnitem("HeartBrainsSpawner")
TNT1 A 0 A_spawnitem("SPosPartsSpawner")
TNT1 A 0 A_NoBlocking
stop
Raise:
SSWV MLKJI 5
goto See
}
}

Can anyone see anything wrong with it as you are obviously allot better at this than I am. Thanks again.

Share this post


Link to post
PhilibusMo said:

Thanks so much, I have been puzzeling over that for 2 days. Onelast thing, doesn't particuarly matter but they still stop occasionally and play the attack frame, even though they are miles away. This is obviously to try and do a missile or hitscan but nothing happens and they carry on walking after about half a second

No idea why, honestly.

PhilibusMo said:

also they are still very slow, Isn't 10 speed demon speed? I thought they would move allot faster. My new decorate script for it is:

The value (here, 10) isn't the only factor. The monster will move 10 units every time it calls A_Chase. Since it calls it every 3 tics (the duration of the frames in its See: state), that gives it a speed of 3.333... units/tic.

The demon, on the other hand, has the same speed but calls A_Chase every two tics. So it gives it a speed of 5 units/tic.

So you can either increase speed even more (to 15) or shorten the duration of the See: states (to 2) in order to give it the actual same speed as a demon.

(Edit: by the way, that's why you'll see monsters with code like AABBCCDD 2 instead of ABCD 4. For the animation, AABBCCDD 2 is the same thing as ABCD 4, but it allows to call the codepointers twice as often.)

Share this post


Link to post

OK I will have a look at the frames, on a slightly more odd note I have just started the game up again and they are completly non-solid, u can walk through them and you can shoot through them! and I have looked at other decorate codes and can't see whats wrong.

EDIT: OK sorry, after a thorough look through I found the problems, just me being careless and then wondering why it hasn't worked properly. I didn't add MONSTER and +FLOORCLIP just before the states, meaning they couldn't be shot and I didn't put loop after the See frames. i have also removed the second A, B, C and D from the See frames and now it works exactly how I want him to. thanks a bunch, i just need to muck about with attack damage and health now so he's nicely balanced.

Many thanks, I would have given up ages ago otherwise.

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
×