PhilibusMo Posted November 4, 2008 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. 0 Share this post Link to post
GreyGhost Posted November 5, 2008 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. 0 Share this post Link to post
PhilibusMo Posted November 5, 2008 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? 0 Share this post Link to post
EarthQuake Posted November 5, 2008 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. 0 Share this post Link to post
PhilibusMo Posted November 5, 2008 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. 0 Share this post Link to post
EarthQuake Posted November 6, 2008 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. 0 Share this post Link to post
Enjay Posted November 6, 2008 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. 0 Share this post Link to post
PhilibusMo Posted November 6, 2008 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. 0 Share this post Link to post
EarthQuake Posted November 6, 2008 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. 0 Share this post Link to post
t.v. Posted November 7, 2008 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. 0 Share this post Link to post
PhilibusMo Posted November 9, 2008 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. 0 Share this post Link to post
Gez Posted November 9, 2008 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. 0 Share this post Link to post
PhilibusMo Posted November 9, 2008 would it have been better if i put the thing about decorate on the zdoom forum? 0 Share this post Link to post
GreyGhost Posted November 10, 2008 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. 0 Share this post Link to post
EarthQuake Posted November 10, 2008 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. 0 Share this post Link to post
PhilibusMo Posted November 10, 2008 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. 0 Share this post Link to post
Gez Posted November 10, 2008 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. 0 Share this post Link to post
GreyGhost Posted November 10, 2008 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. 0 Share this post Link to post
Gez Posted November 10, 2008 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 WolfensteinSSInheritance 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 0 Share this post Link to post
GreyGhost Posted November 10, 2008 Inheritance - a stumbling block for people who've done little Decorate scripting. Thanks for pointing that out to me. 0 Share this post Link to post
PhilibusMo Posted November 10, 2008 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. 0 Share this post Link to post
Gez Posted November 10, 2008 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.) 0 Share this post Link to post
PhilibusMo Posted November 10, 2008 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. 0 Share this post Link to post