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

How do I use DEHEXTRA and DecoHACK for new custom monsters?

Question

As DECORATE lumps only worked in Zandronum (My secondary port) I had to change my plans, because I'm doing my wad focused on DSDA-Doom or MBF21 ports. I'm trying to use DEHEXTRA and DecoHACK to add new monsters without replacing any of the original game, and it won't work anyways because I have 20 monsters ready to be added. The thing is that I don't understand too much about both lumps, even more DEHEXTRA. I've been reading the documentation that Doomworld, internet and the program by themselves are giving me, but I don't understand too much further the basics of functions. I know there are 100 things new to make, and I think it's enough, but the documentation is not really clear. I found this about DEHEXTRA, but as it is about Doom Retro port, I don't think it is really useful or intuitive with the things that I want to make.

 

I thought also on using DSDHacked but as I don't need too many things, and that tool isn't compatible with too many ports, I prefer to use the other two. Now, I don't find any info that can explain that things, and there's even some codes but they're in C, and I'm pretty confused because I don't understand too much about those. I hope that someone could helps me, this might be annoying as it may be research problem, but I'm just really stuck.

Share this post


Link to post

12 answers to this question

Recommended Posts

  • 1

For editing DEHEXTRA related things, you can indeed use DECOHack in Mtrop's DoomTools (which now has a neat GUI):

https://mtrop.github.io/DoomTools/

 

Once you have DoomTools setup, run the DECOHack editor from Tools → DECOHack → Editor, then use File → New → Main File to choose your format (MBF21 in this case).

 

From the left panel, navigate to docs folder and open DECOHack Help.txt, which contains all the info you need on the DECORATE-like syntax of DECOHack. There is plenty of important information throughout the document, but if you are mainly adding things, I recommend you scroll down line 863 to see how a new monster would be defined (the example is of the chaingunner). You can then find more specific information about States, Sounds, Flags etc. in their respective blocks.

 

Another monster example can be found here:

https://mtrop.github.io/DoomTools/decohack.html.

 

Each new thing needs an EdNum, so the editor can find it. Use this reference to choose one not in use: 

https://zdoom.org/wiki/Standard_editor_numbers

I'm not sure if it's up to date with everything nowadays, but you can pretty safely choose some range and not overlap with anything. The thing will be set into the User-Defined category in the Things tab when you edit the map, but you can add a line like //$Category "Custom Monsters" to the monster in DECOHack to set it in a more descriptive container.

 

Once you're done with your new monster thing, save your DECOHack file and go to the DoomTools menu bar and choose Tools → DECOHack → Compile to finally compile your DECOHack file into a .deh lump. You can then include it in your wad.

 

DoomTools also can create an entire project for you and manage all the resource collating, but you can get started on one aspect this way and extend your know-how with other stuff later.

 

Hope this helps.

 

 

Share this post


Link to post
  • 0

Thanks @Aurelius, I'm progressing but there's still troubles with the current code. DecoHACK gave me these problem: ERROR: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 31, Token "A_Jump": Action pointer "A_Jump" is not known or invalid.
ERROR: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 31, Token "(": Expected valid frame characters after sprite name.

 

And I don't know why, I'm going to put the code if you may help me, because I don't see anything strange.

/*****************************************************************************
 * DECOHack Main Patch - Synarchy of Forgotten Souls
 *****************************************************************************/

#include <dsdhacked>
#include <friendly>

thing 151 "Fallen"
{
  //$ Category "Synarchy Monsters"
  EdNum 15000
  Health 200
  Radius 24
  Height 48
  Mass 200
  Speed 12
  PainChance 128
  SeeSound "FALSIT"
  PainSound "FALPAI"
  DeathSound "FALDTH"
  ActiveSound "FALACT"
  +NOGRAVITY
  +FLOAT

  states
  {
  Spawn:
    FALN ABCDB 8 Bright A_Look
    Loop
  See:
    FALN A 0 Bright A_Jump(96,12)
    FALN A 1 Bright A_Playsound("FALWNG")
    FALN AABBCCDDBB 2 Bright A_Chase
    Loop
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 0 Bright A_Jump(64, 1)
    Loop
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN B 2 Bright A_FastChase
    FALN B 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    Loop
  Missile:
    FALN C 0 Bright A_Jump(128, 13)
    FALN CE 2 Bright A_FaceTarget 
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN E 5 Bright
    Goto See
    FALN C 0 Bright A_FastChase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_FastChase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_FastChase
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN F 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN C 0 Bright A_FastChase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_FastChase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_FastChase
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN F 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN C 0 Bright A_FastChase
    FALN C 5 Bright A_FaceTarget
    FALN E 0 Bright A_FastChase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_FastChase
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN F 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN C 0 Bright A_FastChase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_FastChase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_FastChase
    FALN F 3 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN F 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN C 0 Bright A_FastChase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_FastChase 
    FALN E 3 Bright A_FaceTarget
    FALN F 0 Bright A_FastChase
    FALN F 2 Bright A_CustomMissile("FallenShot",40,0,0)
    FALN F 0 Bright A_SpawnItemEx("FallenFX", 0, 0, 40, 0, 0, 0, 0, 128)
    FALN E 5 Bright
    Goto See 
  Pain:
    FALN E 3 Bright
    FALN E 3 Bright A_Pain 
    FALN E 3 Bright
    Goto See 
  Death:
    FALN G 5 Bright
    FALN H 5 Bright A_Scream 
    FALN IJK 5 Bright
    FALN L 5 Bright A_NoBlocking 
    FALN M -1 A_SetFloorClip 
    Stop 
  Raise:
    FALN M 5 A_UnSetFloorClip 
    FALN LKJIHG 5 Bright
    Goto See
  }
}

Actor FallenFX
{  
  Radius 2
  Height 2
  Speed 0
  Scale 1.0
  Projectile
  RenderStyle Add
  Alpha 0.67
  States
  {
  Spawn:
    TNT1 A 3 Bright
    FBFX ABCDE 3 Bright
    Stop 
  }
}

Actor FallenShot
{
  Radius 8
  Height 8
  Speed 16
  Damage 2
  RenderStyle Add
  DamageType Fire
  Alpha 0.67
  Projectile
  +ThruGhost
  Seesound "FIRMFI"
  DeathSound "FIREX5"
  States
  {
  Spawn:
    BALF AB 2 Bright A_SpawnItemEx("FallenFX", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  Death:
    BALF CDEF 4 Bright
    Stop
  }
}

Actor FallenSP
{  
  Radius 2
  Height 2
  Speed 0
  ReactionTime 60
  Projectile
  RenderStyle Normal
  -NoGravity
  States
  {
  Spawn:
    FBSP AB 3 Bright A_Countdown
    Loop
  Death:
    FBSP CDE 3 Bright
    Stop 
  }
}

Share this post


Link to post
  • 0
Just now, Doomy__Doom said:

 

Almost every single codepointer you're using here seems to be a GZdoom-ism. Decohack only supports what's actually part of dehacked.

Damn, then which codepointers should I use? I'm trying first to put this enemy's behavior as how it comes from Realm667, here it is. I'll modify its behavior later, but I'm trying this at first, because I still have to understand these subjects. But, I'm not sure which codepointers should I use to this enemy without being so rude with its original intention?

Share this post


Link to post
  • 0
18 minutes ago, SynarchyBattleDoge said:

Damn, then which codepointers should I use? I'm trying first to put this enemy's behavior as how it comes from Realm667, here it is. I'll modify its behavior later, but I'm trying this at first, because I still have to understand these subjects. But, I'm not sure which codepointers should I use to this enemy without being so rude with its original intention? 

You'll have to creatively get close to its behavior with existing codepointers if you want to specifically use dehacked.

 

For example, it seems to use A_Jump to shift by x frames a lot, the dehacked (mbf) equivalent A_RandomJump can only jump to a specific target frame, so you'll have to define state labels and jump to those instead so decohack can figure out exact frames for you.

A_CustomMissile can be substituted by MBF21's A_MonsterProjectile.

A_FastChase is not a thing, use A_Chase.

There is no such thing as A_Countdown in dehacked either, you'll have to find alternative ways to replicate its functionality.

 

And so on, so forth, you'll have to look at and understand every single thing about how the monster works and find what to replace that with, or how to create similar logic within confines of dehacked. It's not going to be a "quick copypaste" kind of deal.

 

Share this post


Link to post
  • 0

Now I've changed the A_SpawnObject to:

FALN B 0 Bright A_SpawnObject(15001, 0, 40, 0, 0, 0, 0, 128)

But DecoHack keeps sending me this messages:

WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "0": Found integer, but will be converted to fixed-point.
WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "40": Found integer, but will be converted to fixed-point.
WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "0": Found integer, but will be converted to fixed-point.
WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "0": Found integer, but will be converted to fixed-point.
WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "0": Found integer, but will be converted to fixed-point.
WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "0": Found integer, but will be converted to fixed-point.
WARNING: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 36, Token "128": Found integer, but will be converted to fixed-point.

 

And that with the other lines. Also, I'm not completely sure about this line:

  Scale 1.0

It sends me this message:

ERROR: (C:\Users\Sathariel Bathory\Documents\synarchymonsters.dh) Line 128, Token "Scale": Expected Thing property, "clear" directive, or state block start.

 

And finally, I didn't read anything that could replace the A_Countdown function.

Am I doing something wrong?

Share this post


Link to post
  • 0

Read the warning message, it gives you plenty of information to go on. In short, you used integers for arguments when A_SpawnObject uses fixed-point values. You can convert them to their fixed-point counterparts by adding .0 at the end.

 

Scale is not a property supported by MBF21. If you want to adjust sprite sizes, you have to do it manually.

 

Read what A_Countdown does in practice. It should be completely doable in MBF21, albeit not as succintly.

 

Refer to the documentation that Doomy__Doom shared in his first post. They contain all the things you can do in Dehacked for your format. If you get an error with a particular codepointer or property, read through the docs and see if 1) you have incorrect implementation (args, syntax etc.) or 2) you have used something that is not available.

Share this post


Link to post
  • 0
3 hours ago, Aurelius said:

Read the warning message, it gives you plenty of information to go on. In short, you used integers for arguments when A_SpawnObject uses fixed-point values. You can convert them to their fixed-point counterparts by adding .0 at the end.

 

Scale is not a property supported by MBF21. If you want to adjust sprite sizes, you have to do it manually.

 

Read what A_Countdown does in practice. It should be completely doable in MBF21, albeit not as succintly.

 

Refer to the documentation that Doomy__Doom shared in his first post. They contain all the things you can do in Dehacked for your format. If you get an error with a particular codepointer or property, read through the docs and see if 1) you have incorrect implementation (args, syntax etc.) or 2) you have used something that is not available.

Sorry if get too bothering with this issue, I just skipped a lot of things to go directly to my goal, so I'm really inexpert in all of this.

This ain't giving results, this is the full code:


#include <dsdhacked>
#include <friendly>

thing 151 "Fallen"
{
  //$ Category "Synarchy Monsters"
  EdNum 15000
  Health 200
  Radius 24
  Height 48
  Mass 200
  Speed 12
  PainChance 128
  SeeSound "FALSIT"
  PainSound "FALPAI"
  DeathSound "FALDTH"
  ActiveSound "FALACT"
  +NOGRAVITY
  +FLOAT

  states
  {
  Spawn:
    FALN ABCDB 8 Bright A_Look
    Loop
  See:
    FALN A 0 Bright A_RandomJump(96,12)
    FALN A 1 Bright A_Playsound("FALWNG")
    FALN AABBCCDDBB 2 Bright A_Chase
    Loop
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 0 Bright A_RandomJump(64, 1)
    Loop
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN B 2 Bright A_Chase
    FALN B 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    Loop
  Missile:
    FALN C 0 Bright A_RandomJump(128, 13)
    FALN CE 2 Bright A_FaceTarget 
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN E 2 Bright A_FaceTarget 
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN E 5 Bright
    Goto See
    FALN C 0 Bright A_Chase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_Chase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_Chase
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN F 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN C 0 Bright A_Chase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_Chase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_Chase
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN F 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN C 0 Bright A_Chase
    FALN C 5 Bright A_FaceTarget
    FALN E 0 Bright A_Chase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_Chase
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN F 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN C 0 Bright A_Chase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_Chase 
    FALN E 2 Bright A_FaceTarget
    FALN F 0 Bright A_Chase
    FALN F 3 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN F 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN C 0 Bright A_Chase
    FALN C 2 Bright A_FaceTarget
    FALN E 0 Bright A_Chase 
    FALN E 3 Bright A_FaceTarget
    FALN F 0 Bright A_Chase
    FALN F 2 Bright A_MonsterProjectile(15002,40.0,0.0,0.0)
    FALN F 0 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    FALN E 5 Bright
    Goto See 
  Pain:
    FALN E 3 Bright
    FALN E 3 Bright A_Pain 
    FALN E 3 Bright
    Goto See 
  Death:
    FALN G 5 Bright
    FALN H 5 Bright A_Scream 
    FALN IJK 5 Bright
    FALN L 5 Bright A_Fall
    Stop 
  Raise:
    FALN LKJIHG 5 Bright
    Goto See
  }
}

Thing 152 "FallenFX"
{  
  EdNum 15001 
  Radius 2
  Height 2
  Speed 0
  +MISSILE
  
  States
  {
  Spawn:
    TNT1 A 3 Bright
    FBFX ABCDE 3 Bright
    Stop 
  }
}

Thing 153 "FallenShot"
{
  EdNum 15002
  Radius 8
  Height 8
  Speed 16
  Damage 2
  Seesound "FIRMFI"
  DeathSound "FIREX5"
  +MISSILE
  
  States
  {
  Spawn:
    BALF AB 2 Bright A_SpawnObject(15001, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 128.0)
    Loop
  Death:
    BALF CDEF 4 Bright
    Stop
  }
}

Thing 154 "FallenSP"
{  
  Radius 2
  Height 2
  Speed 0
  ReactionTime 60
  -NoGravity
  +MISSILE
  
  States
  {
  Spawn:
    FBSP AB 3 Bright A_Detonate
    Loop
  Death:
    FBSP CDE 3 Bright
    Stop 
  }
}

It was correctly exported without any issues in the DecoHacked output console, but now I got the problem that I can't use that enemy inside my wad. I tried using Slade, but the monsters isn't appearing. I don't have problems to study these functions and subjects to even create the full-monster behavior, but I think there's a lack of examples and condensed info here in the internet, I've read a lot of things but I'm still thinking this is kind of not intuitive, so I'm going to take a lot of time later, and I hope when I finally achieved the results, I'll create a post explaining these subjects. But at the moment, I'll try solving this.

Share this post


Link to post
  • 0
3 hours ago, Aurelius said:

Read the warning message, it gives you plenty of information to go on. In short, you used integers for arguments when A_SpawnObject uses fixed-point values. You can convert them to their fixed-point counterparts by adding .0 at the end.

 

Scale is not a property supported by MBF21. If you want to adjust sprite sizes, you have to do it manually.

 

Read what A_Countdown does in practice. It should be completely doable in MBF21, albeit not as succintly.

 

Refer to the documentation that Doomy__Doom shared in his first post. They contain all the things you can do in Dehacked for your format. If you get an error with a particular codepointer or property, read through the docs and see if 1) you have incorrect implementation (args, syntax etc.) or 2) you have used something that is not available.

Finally got it! I achieved to see at the monster in DSDA-Doom! I still got problems but this is a huge advance to me.

 

First, the sounds of the monster are in Ogg, so it sounds really bad, but I'll change that later. My problem is that when I got to start the map and the Fallen is right there, everything seems nice, well, not everything, DSDA console says: P_LoadNodes: trivial map (no nodes, one subsector) but I think that might be something with Doombuilder X, maybe with ZokumBSP I'll fix that later.

 

The most important problem, is that at first I shoot at the Fallen, it insta dies, or if he doesn't, Doom just crashes and drops this message: The game has crashed! Please report the following information: signal 8 (0x0000). I'm not sure if it is by the code, so I'm just leaving it here in case something's wrong.

 

#include <dsdhacked>
#include <friendly>

thing free 151 to 250

thing 151 "Fallen"
{
	//$Category "Monsters"
	EdNum 15000

	Health 200
	Speed 12
	Radius 24
	Height 48
	PainChance 128
	Mass 200

	clear flags
	+SHOOTABLE
	+COUNTKILL
	+SOLID
	+NOGRAVITY
	+FLOAT

	SeeSound "FALSIT"
	PainSound "FALPAI"
	DeathSound "FALDTH"
	ActiveSound "FALACT"

	states
	{
		Spawn:
			FALN ABCDB 8 Bright A_Look
			Loop
		See:
			FALN A 0 Bright A_RandomJump(96, 12)
			FALN A 1 Bright A_PlaySound("FALWNG")
			FALN AABBCCDDBB 2 Bright A_Chase
			Loop
			FALN B 2 Bright A_Chase
			FALN B 0 Bright A_RandomJump(64, 1)
		Missile:
			FALN C 0 Bright A_RandomJump(128, 13)
			FALN CE 2 Bright A_FaceTarget
			FALN F 3 Bright A_MonsterProjectile(15001, 40.0, 0.0, 0.0)
			FALN E 2 Bright A_FaceTarget
			FALN F 3 Bright A_MonsterProjectile(15001, 40.0, 0.0, 0.0)
			FALN E 2 Bright A_FaceTarget
			FALN F 3 Bright A_MonsterProjectile(15001, 40.0, 0.0, 0.0)
			FALN E 5 Bright
			Goto See
			FALN C 0 Bright A_Chase
			FALN C 2 Bright A_FaceTarget
			FALN E 0 Bright A_Chase
			FALN E 2 Bright A_FaceTarget
			FALN F 0 Bright A_Chase
			FALN F 3 Bright A_MonsterProjectile(15001, 40.0, 0.0, 0.0)
			FALN C 0 Bright A_Chase
			FALN C 2 Bright A_FaceTarget
			FALN E 0 Bright A_Chase
			FALN E 2 Bright A_FaceTarget
			FALN F 0 Bright A_Chase
			FALN F 3 Bright A_MonsterProjectile(15001, 40.0, 0.0, 0.0)
			FALN C 0 Bright A_Chase
			FALN C 2 Bright A_FaceTarget
			FALN E 0 Bright A_Chase
			FALN E 2 Bright A_FaceTarget
			FALN F 0 Bright A_Chase
			FALN F 3 Bright A_MonsterProjectile(15001, 40.0, 0.0, 0.0)
			FALN E 5 Bright
		Pain:
			FALN E 3
			FALN E 3 A_Pain
			FALN E 3 Bright
			Goto See
		Death:
			FALN G 5
			FALN H 5 A_Scream
			FALN IJK 5 Bright
			FALN L 5 Bright A_Fall
			FALN M -1 Bright
			Stop
		Raise:
			FALN M 5
			FALN LKJIHG 5 Bright
			Goto See
	}
}

thing 152 "FallenBall"
{
	Radius 8
	Height 8
	Speed 16
	Damage 2
	ProjectileGroup 2

	SeeSound "FIRMFI"
	DeathSound "FIREX5"

	+MISSILE

	states
	{
		Spawn:
		BALF AB 2 Bright
		Loop
		Death:
		BALF CDEF 4 Bright
		Stop
	}
}

I've changed the fire rate of the monster, so it's shorter by decision. So, my issues are that the enemy is likely to insta die, and leave a lost soul death sprite instead of his own. Also, I got doubts about the flags, because DecoHACK is asking for MISSILE flags to Missile state right there in the code, but as you can see, there are ProjectileGroup, and also +MISSILE but still dropping that. I hope someone can helps.

Share this post


Link to post
  • 0
9 hours ago, SynarchyBattleDoge said:

First, the sounds of the monster are in Ogg, so it sounds really bad, but I'll change that later.

I don't think DSDA-Doom supports .ogg for sound effects. You can convert some sound formats directly to Doom format in Slade, but you might first have to convert them to .wav format in something like Audacity.

 

9 hours ago, SynarchyBattleDoge said:

My problem is that when I got to start the map and the Fallen is right there, everything seems nice, well, not everything, DSDA console says: P_LoadNodes: trivial map (no nodes, one subsector) but I think that might be something with Doombuilder X, maybe with ZokumBSP I'll fix that later.

Again, the error message gives you a pretty good idea. Does your map consist of only one sector? Add a few more and see if it goes away.

 

9 hours ago, SynarchyBattleDoge said:

The most important problem, is that at first I shoot at the Fallen, it insta dies, or if he doesn't, Doom just crashes and drops this message: The game has crashed! Please report the following information: signal 8 (0x0000). I'm not sure if it is by the code, so I'm just leaving it here in case something's wrong.

Signal 8 means an erroneous arithmetic operation, which often means division by 0. I encountered this once when I had the monster's mass set to 0, but this doesn't seem to be the case here. Your monster does have mass, but your projectile doesn't, that could be the issue.

 

Some possible related stuff:

  • Your projectile should have all these four flags: MISSILE, NOGRAVITY, DROPOFF and NOBLOCKMAP.
  • You are using explicit state numbers in your A_RandomJump. Use custom labels like "see2", "missile2" etc. for alternate animations and/or attacks.
  • Your "see" state leaks into your "missile" state, which in turn leaks into your "pain" state. Make sure that you loop or jump out of states appropriately if your express purpose is for them not to continue into another state block.

 

Share this post


Link to post
  • 0
Just now, Aurelius said:

I don't think DSDA-Doom supports .ogg for sound effects. You can convert some sound formats directly to Doom format in Slade, but you might first have to convert them to .wav format in something like Audacity.

Yes, already fixed, wasn't even complicated.

 

Just now, Aurelius said:

Again, the error message gives you a pretty good idea. Does your map consist of only one sector? Add a few more and see if it goes away.

Yes, it actually is, but it wasn't an error, DSDA was running the map anyways, so, later I'll add more sectors.

 

Just now, Aurelius said:

Signal 8 means an erroneous arithmetic operation, which often means division by 0. I encountered this once when I had the monster's mass set to 0, but this doesn't seem to be the case here. Your monster does have mass, but your projectile doesn't, that could be the issue.

 

Some possible related stuff:

  • Your projectile should have all these four flags: MISSILE, NOGRAVITY, DROPOFF and NOBLOCKMAP.
  • You are using explicit state numbers in your A_RandomJump. Use custom labels like "see2", "missile2" etc. for alternate animations and/or attacks.
  • Your "see" state leaks into your "missile" state, which in turn leaks into your "pain" state. Make sure that you loop or jump out of states appropriately if your express purpose is for them not to continue into another state block.

 

I already applied mass 10 to the projectile, but doesn't seems to work.

 

Also, my projectile now has those 4 flags, but DecoHACK still sending that warning, here's the code:

thing 152 "FallenBall"
{
	Speed 16
	Radius 8
	Height 8
	Damage 2

	SeeSound "FIRMFI"
	DeathSound "FIREX5"

	clear flags
	+NOBLOCKMAP
	+NOGRAVITY
	+DROPOFF
	+MISSILE

	// states and whatsoever...

In this part I'm kind of confused, because there I saw a flag available named NOTELEPORT and it worked at first, but later it just dropped error to export, and I think that property should be in.

 

I already changed the A_RandomJumps property into labels, they now are like this:

states
	{
		Spawn:
			FALN ABCDB 8 Bright A_Look
			Loop
		See:
			FALN A 0 Bright A_RandomJump(see, 12)
			FALN A 1 Bright A_PlaySound("FALWNG")
			FALN AABBCCDDBB 2 Bright A_Chase
			Loop
			FALN B 2 Bright A_Chase
			FALN B 0 Bright A_RandomJump(see, 1)
			Loop
		Missile:
			FALN C 0 Bright A_RandomJump(missile, 13)
			// FALN CE 2 Bright A_FaceTarget and there's no more A_RandomJump from here

I think I didn't understand well this part, bud adding it as "see2" and "missile2" asked me later to define those functions, so letting them like just "see" and "missile" made DecoHack export this correctly (Ignoring the MISSILE flag asking btw) but this doesn't solve the problem, every time the monster tries to shoot, the game just crashes, but now I can kill him and nothing will be wrong, it just happens when he's going to attack.

 

And finally, I tried to see which problem did you refer to:

Just now, Aurelius said:
  • Your "see" state leaks into your "missile" state, which in turn leaks into your "pain" state. Make sure that you loop or jump out of states appropriately if your express purpose is for them not to continue into another state block.

And changed some things, but maybe I didn't understand too well, so, this ain't giving results at the moment.

Share this post


Link to post
  • 0

Finally, my monster got working. It was just an issue with the A_MonsterProjectile function, I was using an ednum but I had to use thing ID instead. I only have one last question about this subject. How do I make projectiles to look translucent? I used all those 4 flags that @Aurelius gave me along with +TRANSLUCENT but DecoHack still sending that warning message, and projectiles doesn't seems to be translucent. I hope any person could help me, it's this final task.

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
×