DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Ask about ACS, DECORATE, ZScript, or any other scripting questions here!

Moderator: GZDoom Developers

Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.

Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Post Reply
User avatar
Cataflexia
Posts: 57
Joined: Mon Oct 01, 2012 8:45 pm

DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Cataflexia »

Hi there,
This is an old post from the 2016, with BD v20.
viewtopic.php?f=3&t=51811#

The same question in the present but whit BD v21:
I don't like the transparent effect of the Spectre Demons (but I want to maintain the brutalized version of course).
In adition, I want to apply the Fuzz effect to all dead sprites of the same actor (Spectre). Because when he dead, the body parts and gibs becomes into the normal Pinky color.

Zombie Killer help me in the past time, with the following code:

Code: Select all

actor Spectro : BullDemon replaces Spectre
{
   -FASTER
   speed 8
   height 52
   fastSpeed 6
   renderStyle "OptFuzzy"
   alpha 0.5
   maxStepHeight 48
   maxDropOffHeight 48
   obituary "%o has been sodomized by a Spectre."
   dropItem "DemonStrengthRune", 2
   dropItem "SuperBlurSphere", 12
   states
   {
   ReplaceVanilla:
      TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
      TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
      TNT1 A 0 A_SpawnItemEx("VanillaSpectre", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERAMBUSHFLAG, 0)
      stop
   Death:
      TNT1 A 0
      TNT1 A 0 A_Jump(96, "LeftDeath")
      TNT1 A 0 A_Jump(96, 13)
      TNT1 AAA 0
      SARG I 8
      SARG J 8 A_Scream
      SARG K 4
      SARG L 4 A_NoBlocking
      SARG M 4
      TNT1 A 0 A_SpawnItem("DeadDemon1", 1)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      stop
      TNT1 AAAAAAAAA 0
      TNT1 A 0 A_CustomMissile("MuchBlood", 50, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 35, 0, random(0, 360), 2, random(0, 160))
      SAAR A 8 A_CustomMissile("XDeath1", 40, 0, random(0, 360), 2, random(0, 160))
      SAAR B 8 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_SpawnItemEx("PoorPinkyLostHisArm", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   LeftDeath:
      S2RG I 8
      S2RG J 8 A_Scream
      S2RG K 4
      S2RG L 4 A_NoBlocking
      S2RG M 4
      TNT1 A 0 A_SpawnItemEx("DeadDemon1Left", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      stop
   CleanDeath:
      TNT1 A 0
      TNT1 A 0 A_Jump(96, "LeftDeath")
      SARG I 8
      SARG J 8 A_Scream
      SARG K 4
      SARG L 4 A_NoBlocking
      SARG M 4
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      TNT1 A 0 A_SpawnItem("DeadDemon1", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Kick:
   Death.Melee:
   Death.SuperKick:
      TNT1 A 0
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 A_Recoil(5)
      TNT1 A 0 ThrustThingZ(0, 20, 0, 1)
      goto CleanDeath
   Death.Shotgun:
      TNT1 A 0
      TNT1 A 0 A_JumpIfCloser(200, "Death.Strong")
      goto Death + 4
   Death.Strong:
      TNT1 A 0
      TNT1 A 0 A_Jump(128, "DeathRemoveArm")
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 A_SpawnItem("BloodSplasher2")
      TNT1 AA 0 A_CustomMissile("XDeathBrain1", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeathBrain2", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath3", random(45, 55), random(5, -5), random(160, 200), 2, random(-10, 10))
      TNT1 AA 0 A_CustomMissile("XDeath2", random(45, 55), random(5, -5), random(160, 200), 2, random(-10, 10))
      TNT1 A 0 A_CustomMissile("MuchBlood", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 AAAA 0 A_CustomMissile("BloodMistBig", 50, 0, random(0, 360), 2, random(30, 90))
      TNT1 A 0 A_CustomMissile("BaronHeadPiece", 52, 0, random(0, 360), 2, random(0, 160))
      TNT1 AAAAA 0 A_CustomMissile("SmallBrainPieceFast", random(45, 55), random(5, -5), random(170, 190), 2, random(-10, 10))
      SARH AAAAAAA 2 A_CustomMissile("Brutal_LiquidBlood", 40, 0, random(0, 360), 2, random(30, 110))
      SARH BBBBBB 2 A_CustomMissile("Brutal_LiquidBlood", 40, 0, random(0, 360), 2, random(30, 110))
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_Scream
      SARH CCCCCC 2 A_CustomMissile("Brutal_LiquidBlood", 30, 0, random(0, 360), 2, random(30, 110))
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      SARH DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2 A_CustomMissile("Brutal_LiquidBlood", 20, 0, random(0, 360), 2, random(30, 110))
      TNT1 A 0 A_SpawnItemEx("DeadDemonNoHead", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Cut:
      TNT1 A 0 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_Jump(32, "Death")
      TNT1 A 0 A_CustomMissile("XDeathHalfDemon", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathStomach", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath1", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath2", 60, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath3", 60, 0, random(0, 360), 2, random(0, 160))
      SARC AAABBBCCCDDD 3 A_CustomMissile("Brutal_LiquidBlood", 35, 0, random(0, 360), 2, random(30, 110))
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      SARC DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2 A_CustomMissile("Brutal_LiquidBlood", 15, 0, random(0, 360), 2, random(30, 110))
      SARC D 0 A_SpawnItemEx("DeadDemonHalf23", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Blast:
   Death.SSG:
      SARC A 1 A_Pain
      SARC A 1 A_FaceTarget
      TNT1 A 0 A_SpawnItem("BloodSplasher2")
      TNT1 AAA 0 bright A_CustomMissile("SuperGoreSpawner", 35, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("XDeath1", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("XDeath2", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("XDeath3", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("Brutal_FlyingBlood", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("Brutal_FlyingBloodFaster", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("Brutal_FlyingBloodMuchFaster", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("SuperWallRedBlood", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("SuperWallRedBlood", 46, 0, random(170, 190), 2, random(0, 40))
      TNT1 AAAA 0 A_CustomMissile("BloodMist", 42, 0, random(0, 360), 2, random(40, 90))
      TNT1 AA 0 A_CustomMissile("BaronHeadPiece", 42, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("PinkyJaw", 42, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeathDemonArm", 32, 0, random(170, 190), 2, random(0, 40))
      TNT1 A 0 A_XScream
      TNT1 A 0 A_NoBlocking
      SARC AAABBBCCCDDD 3 A_CustomMissile("Brutal_LiquidBlood", 35, 0, random(0, 360), 2, random(30, 110))
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      SARC DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2 A_CustomMissile("Brutal_LiquidBlood", 15, 0, random(0, 360), 2, random(30, 110))
      SARC D 0 A_SpawnItemEx("DeadDemonHalf23", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.SuperPunch:
   Death.ExtremePunches:
      TNT1 A 0
      TNT1 A 0 A_JumpIfInTargetInventory("HeavyStrikeRight", 1, "HeavyPunchRight")
      TNT1 A 0 A_JumpIfInTargetInventory("HeavyStrikeLeft", 1, "HeavyPunchLeft")
      TNT1 A 0 ThrustThingZ(0, 45, 0, 1)
      Goto Death.SSG
   HeavyPunchRight:
      TNT1 A 0
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 ThrustThing(angle*256/360+64, 10, 0)
      TNT1 A 0 A_Jump(128, "Death.LandMine")
      Goto BlownAwayLeft
   HeavyPunchLeft:
      TNT1 A 0
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 ThrustThing(angle*256/360+192, 10, 0)
      Goto BlownAwayRight
   Death.CutLess:
      TNT1 A 0
      TNT1 A 0 A_Jump(32, "Death.Cut")
      TNT1 A 0 A_Jump(132, "DeathRemoveArm")
      Goto Death
   Crush:
   Death.Stomp:
      TNT1 A 0 A_Scream
      TNT1 A 0 A_NoBlocking
      SARG IJKL 2
      TNT1 AA 0 A_SpawnItem("MeatDeathSmall")
      TNT1 AAA 0 bright A_CustomMissile("SuperGoreSpawner", 5, 0, random(0, 360), 2, random(30, 180))
      TNT1 AAAA 0 bright A_CustomMissile("XDeath1", 5, 0, random(0, 360), 2, random(30, 180))
      TNT1 AA 0 bright A_CustomMissile("XDeath2b", 55, 0, random(0, 360), 2, random(30, 180))
      TNT1 AA 0 bright A_CustomMissile("XDeath3b", 55, 0, random(0, 360), 2, random(30, 180))
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      TNT1 A 0 A_SpawnItemEx("CrushedRemains", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      TNT1 A 1
      TNT1 A 1 A_XScream
      Stop
   DeathRemoveArm:
      Goto Death + 14
   Death.Fire:
      TNT1 A 0
      TNT1 A 0 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_SpawnItemEx("BurningDemon", 0, 0, 10, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      Stop
   BlownAwayLeft:   
      TNT1 A 0
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_CustomMissile("XDeath1", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeath2", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
      TNT1 A 0 A_CustomMissile("Brains2", 50, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathStomach", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathBullLeg12", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath2b", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath3b", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathPinkyDemonHead", 42, 0, random(0, 360), 2, random(0, 160))
      TNT1 AAA 0 A_CustomMissile("BloodMistLarge", 40, 0, random(0, 360), 2, random(20, 90))
      TNT1 A 0 ThrustThingZ(0,30,0,1)
      TNT1 A 0 A_Xscream
      SRRD ABCD 5 A_CustomMissile("Brutal_FlyingBlood", 0, 0, 0, 2, 90)
      SRRD DDDDDDDDDD 3 A_CheckFloor("LandBlownAwayLeft")
      LandBlownAwayLeft:
      TNT1 A 0 A_Stop
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      TNT1 A 0 A_SpawnItemEx("DeadDemonSRRDE", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      Stop
   BlownAwayRight:
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_CustomMissile("XDeath1", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeath2", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
      TNT1 A 0 A_CustomMissile("Brains2", 50, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathStomach", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathBullLeg12", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath2b", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 AA 0 A_CustomMissile("XDeath3b", 32, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathPinkyDemonHead", 42, 0, random(0, 360), 2, random(0, 160))
      TNT1 AAA 0 A_CustomMissile("BloodMistLarge", 40, 0, random(0, 360), 2, random(20, 90))
      TNT1 A 0 ThrustThingZ(0,30,0,1)
      TNT1 A 0 A_Xscream
      SRRD FGHI 5 A_CustomMissile("Brutal_FlyingBlood", 0, 0, 0, 2, 90)
      SRRD GGGGGGGGGG 3 A_CheckFloor("LandBlownAwayRight")
      LandBlownAwayRight:
      TNT1 A 0 A_Stop
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      TNT1 A 0 A_SpawnItemEx("DeadDemonSRRDJ", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      Stop
   Death.Ice:
   Death.Freeze:
   Death.Frost:
      TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
      TNT1 A 0 A_ChangeFlag("SOLID", 0)
      TNT1 A 0 A_SpawnItemEx("FrozenDemon", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Massacre:
      goto Death
   }
}
But this don't work and says the following:

Code: Select all

Script error, "J:/gzdoom-4-7-1-Windows-64bit-2 bd/mod/brutalv21/:spectre.txt" line 60:
Expected ')', got ','.
I see that line number 60, but I can't figure out where is the error, I see clearly that the 60 line finish with )

If some can help me, will be great. :D
User avatar
Sir Robin
Posts: 537
Joined: Wed Dec 22, 2021 7:02 pm
Graphics Processor: Intel (Modern GZDoom)
Location: Medellin, Colombia

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Sir Robin »

I don't know the specifics of what the code does, but I do notice that anytime you use 9 parameters you use A_SpawnItemEx and when you have only 1 parameter you use A_SpawnItem. But on line 60 you use A_SpawnItem with 9 parameters. Maybe try changing it to A_SpawnItemEx and see if that fixes it.
User avatar
Cataflexia
Posts: 57
Joined: Mon Oct 01, 2012 8:45 pm

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Cataflexia »

Yes, this work now! thanks!

The line 60 now is like this:
TNT1 A 0 A_SpawnItemEx("DeadDemon1", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
BTW, one more thing:
The dead state of Spectre still maintain the normal Pinky Demon texture.
Here's is where I got stuck that time in 2016.

I've recorded a little video that's shows the problem:
https://youtu.be/C-e6G03rovE
User avatar
Sir Robin
Posts: 537
Joined: Wed Dec 22, 2021 7:02 pm
Graphics Processor: Intel (Modern GZDoom)
Location: Medellin, Colombia

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Sir Robin »

There are a lot of death states in the code. Can you say which one specifically are you seeing problems with? I see a death.shotgun there and in the video the shotgun was used for the kill.
User avatar
Cataflexia
Posts: 57
Joined: Mon Oct 01, 2012 8:45 pm

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Cataflexia »

I think we need all the death states for Spectre, in the video I show what's the problem.
However, I'm not an advanced scripting programmer, and I don't know where are all death states and how to manage this into the code of BD21.
Even more, I'm not a programmer in any way. Only I'm a noob trying to modify an existing code, in this case, of BD21.

Sorry for my low level on this.
But I apreciate a lot your help man, really really thanks. 😉
User avatar
Sir Robin
Posts: 537
Joined: Wed Dec 22, 2021 7:02 pm
Graphics Processor: Intel (Modern GZDoom)
Location: Medellin, Colombia

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Sir Robin »

Yes I am new here also, I am only telling you the things I see in the code. In the video the player has killed the demon with the shotgun. So in the code I see a state called death.shotgun so I assume that's what is being called. There is a frame that calls A_JumpIfCloser(200, "Death.Strong") and the player in the video is closer than 200 so again I assume that Death.Strong is being used. That state has a frame that calls A_Jump(128, "DeathRemoveArm") and the video shows the demon with a missing arm so I assume that is what is being used. DeathRemoveArm goes directly to Death + 14 so I look at that code:

Code: Select all

      TNT1 AAAAAAAAA 0
      TNT1 A 0 A_CustomMissile("MuchBlood", 50, 0, random(0, 360), 2, random(0, 160))
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 35, 0, random(0, 360), 2, random(0, 160))
      SAAR A 8 A_CustomMissile("XDeath1", 40, 0, random(0, 360), 2, random(0, 160))
      SAAR B 8 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_SpawnItemEx("PoorPinkyLostHisArm", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
It is calling 3 A_CustomMIssiles and a A_SpawnItemEx, so if the death sequence isn't showing what you want it to, one of those is probably the problem.
[wiki]A_CustomMIssile[/wiki] which is depreceiated and replaced by [wiki]A_SpawnProjectile[/wiki]
[wiki]A_SpawnItemEx[/wiki]

EDIT: I also notice in the video that the demon remains invisible for a few frames after losing the arm. That makes me think that the PoorPinkyLostHisArm is spawning with the proper renderstyle, but then changing it. Look at the code for that actor.
User avatar
Cataflexia
Posts: 57
Joined: Mon Oct 01, 2012 8:45 pm

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Cataflexia »

Very thanks! for continuing help me.
Sir Robin wrote:That makes me think that the PoorPinkyLostHisArm is spawning with the proper renderstyle, but then changing it. Look at the code for that actor.
I follow your suggestions and I understand the SXF_TRANSFERRENDERSTYLE is the parameter that transfer the render type of the called actor.
But, I can't figure why this is not transfered to the rest of the actor parts (gibs) if all the rest of the code have the same parameter, I mean SXF_TRANSFERRENDERSTYLE.

In the meantime, I've found another mod that already have a fuzz render implementation for Spectre, I refer to Project SIDE mod.
viewtopic.php?t=67699

In this mod, the blood are grey (very more close to the fuzz effect) and in adition, the gibs are fuzzed too!
Look:
https://youtu.be/tDsFastLGvk

So, looking into the code of PS, I've found this: (in the demon.txt file, the path into the .pk3 are: /deco/monsters)

Code: Select all

ACTOR smoothspectre : smoothdemon replaces Spectre
{
  BloodColor "40 40 40"
  +SHADOW
  RenderStyle OptFuzzy
  Alpha 0.5
  Translation "168:191=96:111", "16:31=132:143", "32:47=74:79"
  HitObituary "$OB_SPECTREHIT" // "%o was eaten by a spectre."
	States
	{
	Spawn:
		SSRG NO 10 A_Look
		Loop
	See:	
		SSRG AABCDDEF 2 fast A_Chase
		Loop
		
	Melee:		
		SSRG G 8 fast A_FaceTarget
		SSRG GGHHIIJ 1 fast A_FaceTarget
		SSRG K 1 fast
		SSRG L 1 fast A_SargAttack
		SSRG M 4 fast
		SSRG G 3 fast
		Goto See
	
	Pain:
		SSRG N 2 fast
		SSRG O 2 fast A_Pain
		Goto See
		
	Death.GibbyHaynes:
		TNT1 A 0 A_JumpIf(CallACS("StudioGibbly")==0, "Death")
		TNT1 A 0 A_JumpIfCloser(128, "xdeath")
		goto death
	Death.Saw:
		TNT1 A 0 A_JumpIf(CallACS("ChainsawGib")==0, "Death")
		goto Xdeath
		
	Death:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(CallACS("MoDeathToggle")==1, "DeathExtra")
		TNT1 A 0 A_Jump(255, "Death1")
		Goto Death1
		
	DeathExtra:
	TNT1 A 0
	TNT1 A 0 A_Jump(255, "Death1", "Death2", "Death3")
	Goto Death1
	
	Death1:
		TNT1 a 0 A_JumpIfHealthLower(-30,"xdeath")
		SSRD A 3
		SSRD B 3 A_Scream
		SSRD C 3
		SSRD D 3 A_NoBlocking
		SSRD EFGH 3
		SSRD I 3
		TNT1 A 0 a_jumpif(callACS("NukeCheck")==1, "NukeMelt")
		TNT1 A 0 a_jumpif(callACS("LavaCheck")==1, "NukeMelt")
		SSRD I -1
		Stop
	Death2:
		TNT1 a 0 A_JumpIfHealthLower(-30,"xdeath")
		SSRN A 3
		SSRN B 3 A_Scream
		SSRN C 3
		SSRN D 3 A_NoBlocking
		SSRN EFGHI 3
		SSRN J 3
		TNT1 A 0 a_jumpif(callACS("NukeCheck")==1, "NukeMelt2")
		TNT1 A 0 a_jumpif(callACS("LavaCheck")==1, "NukeMelt2")
		SSRN J -1
		Stop
	Death3:
		TNT1 a 0 A_JumpIfHealthLower(-30,"xdeath")
		SARX A 3
		SARX B 3 A_Scream
		SARX C 3
		SARX D 3 A_NoBlocking
		SARX EFGHIJK 3
		SARX L 3
		TNT1 A 0 a_jumpif(callACS("NukeCheck")==1, "NukeMelt3")
		TNT1 A 0 a_jumpif(callACS("LavaCheck")==1, "NukeMelt3")
		SARX L -1
		Stop

	xdeath:
		SARG o 3
		TNT1 A 0 A_JumpIf(CallACS("Gibtoggle")==0, "Death.massacre")
		TNT1 a 0 a_spawnitemex("Greygorecontroller")
		SARG p 0 a_playsound ("misc/gibbed")
		SARG p 3 a_scream
		SARG q 3
		SARG r 3 a_noblocking
		SARG stuvw 3
		SARG x 3
		TNT1 A 0 a_jumpif(callACS("NukeCheck")==1, "NukeMeltX")
		TNT1 A 0 a_jumpif(callACS("LavaCheck")==1, "NukeMeltX")
		SARG x -1
		stop
	Death.Massacre:
		SARG o 3
		SARG p 0 a_playsound ("misc/gibbed")
		SARG p 3 a_scream
		SARG q 3
		SARG r 3 a_noblocking
		SARG stuvw 3
		SARG x 3
		TNT1 A 0 a_jumpif(callACS("NukeCheck")==1, "NukeMeltX")
		TNT1 A 0 a_jumpif(callACS("LavaCheck")==1, "NukeMeltX")
		SARG x -1
		stop
		
	Raise:
		TNT1 A 0 A_setscale(1,1)
		TNT1 A 0 A_JumpIf(CallACS("MoDeathToggle")==1, "RaiseExtra")
		TNT1 A 0 A_Jump(255, "Raise1")
	Goto Raise1
	RaiseExtra:
	TNT1 A 0
	TNT1 A 0 A_Jump(255, "Raise1", "Raise2", "Raise3")
	Goto Raise1
	Raise1:
		SSRD IHGFEDCBA 3
		Goto See
	Raise2:
		SSRN JIHGFEDCBA 3
		Goto See
	Raise3:
		SARX LKJIHGFEDCBA 3
		Goto See
		
		NukeMelt:
		TNT1 a 0 a_playsound("terrain/melties",7)
		SSRD I 2 A_SetScale(1,0.975)
		SSRD I 2 A_SetScale(1,0.95)
		SSRD I 2 A_SetScale(1,0.925)
		SSRD I 2 A_SetScale(1,0.9)
		SSRD I 2 A_SetScale(1,0.875)
		SSRD I 2 A_SetScale(1,0.85)
		SSRD I 2 A_SetScale(1,0.825)
		SSRD I 2 A_SetScale(1,0.8)
		SSRD I 2 A_SetScale(1,0.775)
		SSRD I 2 A_SetScale(1,0.75)
		SSRD I 2 A_SetScale(1,0.725)
		SSRD I 2 A_SetScale(1,0.7)
		SSRD I 2 A_SetScale(1,0.675)
		SSRD I 2 A_SetScale(1,0.65)
		SSRD I 2 A_SetScale(1,0.625)
		SSRD I 2 A_SetScale(1,0.6)
		SSRD I 2 A_SetScale(1,0.575)
		SSRD I 2 A_SetScale(1,0.55)
		SSRD I 2 A_SetScale(1,0.525)
		SSRD I 2 A_SetScale(1,0.5)
		SSRD I 2 A_SetScale(1,0.475)
		SSRD I 2 A_SetScale(1,0.45)
		SSRD I 2 A_SetScale(1,0.425)
		SSRD I 2 A_SetScale(1,0.4)
		SSRD I 2 A_SetScale(1,0.375)
		SSRD I 2 A_SetScale(1,0.35)
		SSRD I 2 A_SetScale(1,0.325)
		SSRD I 2 A_SetScale(1,0.3)
		SSRD I 2 A_SetScale(1,0.275)
		SSRD I 2 A_SetScale(1,0.25)
		SSRD I 2 A_SetScale(1,0.225)
		SSRD I 2 A_SetScale(1,0.2)
		SSRD I 2 A_SetScale(1,0.175)
		SSRD I 2 A_SetScale(1,0.15)
		SSRD I 2 A_SetScale(1,0.125)
		SSRD I 2 A_SetScale(1,0.1)
		SSRD I 2 A_SetScale(1,0.075)
		SSRD I 2 A_SetScale(1,0.025)
		SSRD I 2 A_SetScale(0.9,0.025)
		SSRD I 2 A_SetScale(0.8,0.025)
		SSRD I 2 A_SetScale(0.7,0.025)
		SSRD I 2 A_SetScale(0.6,0.025)
		SSRD I 2 A_SetScale(0.5,0.025)
		SSRD I 2 A_SetScale(0.4,0.025)
		SSRD I 2 A_SetScale(0.3,0.025)
		SSRD I 2 A_SetScale(0.2,0.025)
		SSRD I 2 A_SetScale(0.1,0.025)
		SSRD I 2 A_SetScale(0.075,0.025)
		SSRD I 2 A_SetScale(0.05,0.025)
		SSRD I 2 A_SetScale(0.025,0.025)
		SSRD I -1
		stop
		
	NukeMelt2:
		TNT1 a 0 a_playsound("terrain/melties",7)
		SSRN J 2 A_SetScale(1,0.975)
		SSRN J 2 A_SetScale(1,0.95)
		SSRN J 2 A_SetScale(1,0.925)
		SSRN J 2 A_SetScale(1,0.9)
		SSRN J 2 A_SetScale(1,0.875)
		SSRN J 2 A_SetScale(1,0.85)
		SSRN J 2 A_SetScale(1,0.825)
		SSRN J 2 A_SetScale(1,0.8)
		SSRN J 2 A_SetScale(1,0.775)
		SSRN J 2 A_SetScale(1,0.75)
		SSRN J 2 A_SetScale(1,0.725)
		SSRN J 2 A_SetScale(1,0.7)
		SSRN J 2 A_SetScale(1,0.675)
		SSRN J 2 A_SetScale(1,0.65)
		SSRN J 2 A_SetScale(1,0.625)
		SSRN J 2 A_SetScale(1,0.6)
		SSRN J 2 A_SetScale(1,0.575)
		SSRN J 2 A_SetScale(1,0.55)
		SSRN J 2 A_SetScale(1,0.525)
		SSRN J 2 A_SetScale(1,0.5)
		SSRN J 2 A_SetScale(1,0.475)
		SSRN J 2 A_SetScale(1,0.45)
		SSRN J 2 A_SetScale(1,0.425)
		SSRN J 2 A_SetScale(1,0.4)
		SSRN J 2 A_SetScale(1,0.375)
		SSRN J 2 A_SetScale(1,0.35)
		SSRN J 2 A_SetScale(1,0.325)
		SSRN J 2 A_SetScale(1,0.3)
		SSRN J 2 A_SetScale(1,0.275)
		SSRN J 2 A_SetScale(1,0.25)
		SSRN J 2 A_SetScale(1,0.225)
		SSRN J 2 A_SetScale(1,0.2)
		SSRN J 2 A_SetScale(1,0.175)
		SSRN J 2 A_SetScale(1,0.15)
		SSRN J 2 A_SetScale(1,0.125)
		SSRN J 2 A_SetScale(1,0.1)
		SSRN J 2 A_SetScale(1,0.075)
		SSRN J 2 A_SetScale(1,0.025)
		SSRN J 2 A_SetScale(0.9,0.025)
		SSRN J 2 A_SetScale(0.8,0.025)
		SSRN J 2 A_SetScale(0.7,0.025)
		SSRN J 2 A_SetScale(0.6,0.025)
		SSRN J 2 A_SetScale(0.5,0.025)
		SSRN J 2 A_SetScale(0.4,0.025)
		SSRN J 2 A_SetScale(0.3,0.025)
		SSRN J 2 A_SetScale(0.2,0.025)
		SSRN J 2 A_SetScale(0.1,0.025)
		SSRN J 2 A_SetScale(0.075,0.025)
		SSRN J 2 A_SetScale(0.05,0.025)
		SSRN J 2 A_SetScale(0.025,0.025)
		SSRN J -1
		stop
		
	NukeMelt3:
		TNT1 a 0 a_playsound("terrain/melties",7)
		SARX L 2 A_SetScale(1,0.975)
		SARX L 2 A_SetScale(1,0.95)
		SARX L 2 A_SetScale(1,0.925)
		SARX L 2 A_SetScale(1,0.9)
		SARX L 2 A_SetScale(1,0.875)
		SARX L 2 A_SetScale(1,0.85)
		SARX L 2 A_SetScale(1,0.825)
		SARX L 2 A_SetScale(1,0.8)
		SARX L 2 A_SetScale(1,0.775)
		SARX L 2 A_SetScale(1,0.75)
		SARX L 2 A_SetScale(1,0.725)
		SARX L 2 A_SetScale(1,0.7)
		SARX L 2 A_SetScale(1,0.675)
		SARX L 2 A_SetScale(1,0.65)
		SARX L 2 A_SetScale(1,0.625)
		SARX L 2 A_SetScale(1,0.6)
		SARX L 2 A_SetScale(1,0.575)
		SARX L 2 A_SetScale(1,0.55)
		SARX L 2 A_SetScale(1,0.525)
		SARX L 2 A_SetScale(1,0.5)
		SARX L 2 A_SetScale(1,0.475)
		SARX L 2 A_SetScale(1,0.45)
		SARX L 2 A_SetScale(1,0.425)
		SARX L 2 A_SetScale(1,0.4)
		SARX L 2 A_SetScale(1,0.375)
		SARX L 2 A_SetScale(1,0.35)
		SARX L 2 A_SetScale(1,0.325)
		SARX L 2 A_SetScale(1,0.3)
		SARX L 2 A_SetScale(1,0.275)
		SARX L 2 A_SetScale(1,0.25)
		SARX L 2 A_SetScale(1,0.225)
		SARX L 2 A_SetScale(1,0.2)
		SARX L 2 A_SetScale(1,0.175)
		SARX L 2 A_SetScale(1,0.15)
		SARX L 2 A_SetScale(1,0.125)
		SARX L 2 A_SetScale(1,0.1)
		SARX L 2 A_SetScale(1,0.075)
		SARX L 2 A_SetScale(1,0.025)
		SARX L 2 A_SetScale(0.9,0.025)
		SARX L 2 A_SetScale(0.8,0.025)
		SARX L 2 A_SetScale(0.7,0.025)
		SARX L 2 A_SetScale(0.6,0.025)
		SARX L 2 A_SetScale(0.5,0.025)
		SARX L 2 A_SetScale(0.4,0.025)
		SARX L 2 A_SetScale(0.3,0.025)
		SARX L 2 A_SetScale(0.2,0.025)
		SARX L 2 A_SetScale(0.1,0.025)
		SARX L 2 A_SetScale(0.075,0.025)
		SARX L 2 A_SetScale(0.05,0.025)
		SARX L 2 A_SetScale(0.025,0.025)
		SARX L -1
		stop
		
	NukeMeltX:
		TNT1 a 0 a_playsound("terrain/melties",7)
		SARG x 2 A_SetScale(1,0.975)
		SARG x 2 A_SetScale(1,0.95)
		SARG x 2 A_SetScale(1,0.925)
		SARG x 2 A_SetScale(1,0.9)
		SARG x 2 A_SetScale(1,0.875)
		SARG x 2 A_SetScale(1,0.85)
		SARG x 2 A_SetScale(1,0.825)
		SARG x 2 A_SetScale(1,0.8)
		SARG x 2 A_SetScale(1,0.775)
		SARG x 2 A_SetScale(1,0.75)
		SARG x 2 A_SetScale(1,0.725)
		SARG x 2 A_SetScale(1,0.7)
		SARG x 2 A_SetScale(1,0.675)
		SARG x 2 A_SetScale(1,0.65)
		SARG x 2 A_SetScale(1,0.625)
		SARG x 2 A_SetScale(1,0.6)
		SARG x 2 A_SetScale(1,0.575)
		SARG x 2 A_SetScale(1,0.55)
		SARG x 2 A_SetScale(1,0.525)
		SARG x 2 A_SetScale(1,0.5)
		SARG x 2 A_SetScale(1,0.475)
		SARG x 2 A_SetScale(1,0.45)
		SARG x 2 A_SetScale(1,0.425)
		SARG x 2 A_SetScale(1,0.4)
		SARG x 2 A_SetScale(1,0.375)
		SARG x 2 A_SetScale(1,0.35)
		SARG x 2 A_SetScale(1,0.325)
		SARG x 2 A_SetScale(1,0.3)
		SARG x 2 A_SetScale(1,0.275)
		SARG x 2 A_SetScale(1,0.25)
		SARG x 2 A_SetScale(1,0.225)
		SARG x 2 A_SetScale(1,0.2)
		SARG x 2 A_SetScale(1,0.175)
		SARG x 2 A_SetScale(1,0.15)
		SARG x 2 A_SetScale(1,0.125)
		SARG x 2 A_SetScale(1,0.1)
		SARG x 2 A_SetScale(1,0.075)
		SARG x 2 A_SetScale(1,0.025)
		SARG x 2 A_SetScale(0.9,0.025)
		SARG x 2 A_SetScale(0.8,0.025)
		SARG x 2 A_SetScale(0.7,0.025)
		SARG x 2 A_SetScale(0.6,0.025)
		SARG x 2 A_SetScale(0.5,0.025)
		SARG x 2 A_SetScale(0.4,0.025)
		SARG x 2 A_SetScale(0.3,0.025)
		SARG x 2 A_SetScale(0.2,0.025)
		SARG x 2 A_SetScale(0.1,0.025)
		SARG x 2 A_SetScale(0.075,0.025)
		SARG x 2 A_SetScale(0.05,0.025)
		SARG x 2 A_SetScale(0.025,0.025)
		SARG x -1
		stop
	}
}
So, could this implemented into BD21? Is exactly the way of appareance that I want to the Spectre Demon.
I'm thinking that that grey blood is a particular texture (extracted from Duke Nukem 3D for sure and changed the color from red to grey).
I'm afraid that's will be complicated to inject all this stuff on BD21.
User avatar
Sir Robin
Posts: 537
Joined: Wed Dec 22, 2021 7:02 pm
Graphics Processor: Intel (Modern GZDoom)
Location: Medellin, Colombia

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Sir Robin »

Cataflexia wrote:Very thanks! for continuing help me.
Sir Robin wrote:That makes me think that the PoorPinkyLostHisArm is spawning with the proper renderstyle, but then changing it. Look at the code for that actor.
I follow your suggestions and I understand the SXF_TRANSFERRENDERSTYLE is the parameter that transfer the render type of the called actor.
But, I can't figure why this is not transfered to the rest of the actor parts (gibs) if all the rest of the code have the same parameter, I mean SXF_TRANSFERRENDERSTYLE.
It seems that the other 3 gibs are MuchBlood, XDeathDemonArm, and XDeath1. They are spawned with [wiki]A_CustomMIssile[/wiki] which does not have flags to transfer the render style. Neither does the replacement [wiki]A_SpawnProjectile[/wiki]. So if you want fuzzy-rendered gibs, you'll have to create new fuzzy gibs to replace those with.
Cataflexia wrote:In the meantime, I've found another mod that already have a fuzz render implementation for Spectre, I refer to Project SIDE mod.
So, could this implemented into BD21? Is exactly the way of appareance that I want to the Spectre Demon.
I'm thinking that that grey blood is a particular texture (extracted from Duke Nukem 3D for sure and changed the color from red to grey).
I'm afraid that's will be complicated to inject all this stuff on BD21.
You could, it seems to be implemented quite differently. You'd have to look into those ACS scripts and see what they're doing.
User avatar
Cataflexia
Posts: 57
Joined: Mon Oct 01, 2012 8:45 pm

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Cataflexia »

Sir Robin wrote:It seems that the other 3 gibs are MuchBlood, XDeathDemonArm, and XDeath1. They are spawned with [wiki]A_CustomMIssile[/wiki] which does not have flags to transfer the render style. Neither does the replacement [wiki]A_SpawnProjectile[/wiki]. So if you want fuzzy-rendered gibs, you'll have to create new fuzzy gibs to replace those with.
For that I can understand, the problem is because there is many states that don't have the flag to transfer the render style (i mean SXF_TRANSFERRENDERSTYLE).
So, I've added the SXF_TRANSFERRENDERSTYLE flag to all dead states. It work in half, because now the Spectre maintain the fuzz render when he's dead. But only when the body is not dismembered.

At least is a aproach to the what I am searching.

But, if I:
-Dismember the Spectre body, the gibs still are visible (no fuzz effect)
-Reshoot an already entire dead spectre body, this becomes visible when I crush the flesh with a shotgun or similar
-Smash with a rocket or similar to a spectre, the bigs still are visible.

So, if I have to create new fuzzy gibs to replace the existing ones, I'm in trouble, because I don't know how to create new states (gibs).
I never have come this far with coding, now I don't know what more I can do with all this :(
Jajajajaja!! :D

Again, your help was incredible men, jaja, I didn't know that I could do this kind of things! xDD

Here's my horrible failed trying to make the fuzz effect work on gibs:

Code: Select all

actor Spectro : BullDemon replaces Spectre
{
   -FASTER
   Mass 400
   height 52
   speed 8
   fastSpeed 6
   renderStyle "OptFuzzy"
   alpha 0.5
   maxStepHeight 48
   maxDropOffHeight 48
   obituary "%o has been sodomized by a Spectre."
   dropItem "DemonStrengthRune", 2
   dropItem "SuperBlurSphere", 12
   Tag "Spectre"
   states
   {
   ReplaceVanilla:
      TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
      TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
      TNT1 A 0 A_SpawnItemEx("VanillaSpectre", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERAMBUSHFLAG, 0)
      stop
   Death:
      TNT1 A 0
      TNT1 A 0 A_Jump(96, "LeftDeath")
      TNT1 A 0 A_Jump(96, 13)
      TNT1 AAA 0
      SARG I 8
      SARG J 8 A_Scream
      SARG K 4
      SARG L 4 A_NoBlocking
      SARG M 4
      TNT1 A 0 A_SpawnItem("DeadDemon1", 1, SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      stop
      TNT1 AAAAAAAAA 0
      TNT1 A 0 A_CustomMissile("MuchBlood", 50, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 35, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      SAAR A 8 A_CustomMissile("XDeath1", 40, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      SAAR B 8 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_SpawnItemEx("PoorPinkyLostHisArm", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   LeftDeath:
      S2RG I 8
      S2RG J 8 A_Scream
      S2RG K 4
      S2RG L 4 A_NoBlocking
      S2RG M 4
      TNT1 A 0 A_SpawnItemEx("DeadDemon1Left", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      stop
   CleanDeath:
      TNT1 A 0
      TNT1 A 0 A_Jump(96, "LeftDeath")
      SARG I 8
      SARG J 8 A_Scream
      SARG K 4
      SARG L 4 A_NoBlocking
      SARG M 4
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItemEx("DeadDemon1", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Kick:
   Death.Melee:
   Death.SuperKick:
      TNT1 A 0
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 A_Recoil(5)
      TNT1 A 0 ThrustThingZ(0, 20, 0, 1)
      goto CleanDeath
   Death.Shotgun:
      TNT1 A 0
      TNT1 A 0 A_JumpIfCloser(200, "Death.Strong")
      goto Death + 4
   Death.Strong:
      TNT1 A 0
      TNT1 A 0 A_Jump(128, "DeathRemoveArm")
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 A_SpawnItem("BloodSplasher2", SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeathBrain1", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeathBrain2", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath3", random(45, 55), random(5, -5), random(160, 200), 2, random(-10, 10), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath2", random(45, 55), random(5, -5), random(160, 200), 2, random(-10, 10), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("MuchBlood", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("BloodMistBig", 50, 0, random(0, 360), 2, random(30, 90), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("BaronHeadPiece", 52, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAAA 0 A_CustomMissile("SmallBrainPieceFast", random(45, 55), random(5, -5), random(170, 190), 2, random(-10, 10), SXF_TRANSFERRENDERSTYLE)
      SARH AAAAAAA 2 A_CustomMissile("Brutal_LiquidBlood", 40, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      SARH BBBBBB 2 A_CustomMissile("Brutal_LiquidBlood", 40, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_Scream
      SARH CCCCCC 2 A_CustomMissile("Brutal_LiquidBlood", 30, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      SARH DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2 A_CustomMissile("Brutal_LiquidBlood", 20, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItemEx("DeadDemonNoHead", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Cut:
      TNT1 A 0 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_Jump(32, "Death")
      TNT1 A 0 A_CustomMissile("XDeathHalfDemon", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathStomach", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath1", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath2", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath3", 60, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      SARC AAABBBCCCDDD 3 A_CustomMissile("Brutal_LiquidBlood", 35, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool")
      SARC DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2 A_CustomMissile("Brutal_LiquidBlood", 15, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      SARC D 0 A_SpawnItemEx("DeadDemonHalf23", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Blast:
   Death.SSG:
      SARC A 1 A_Pain
      SARC A 1 A_FaceTarget
      TNT1 A 0 A_SpawnItem("BloodSplasher2", SXF_TRANSFERRENDERSTYLE)
      TNT1 AAA 0 bright A_CustomMissile("SuperGoreSpawner", 35, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("XDeath1", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("XDeath2", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("XDeath3", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("Brutal_FlyingBlood", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("Brutal_FlyingBloodFaster", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("Brutal_FlyingBloodMuchFaster", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("SuperWallRedBlood", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("SuperWallRedBlood", 46, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 A_CustomMissile("BloodMist", 42, 0, random(0, 360), 2, random(40, 90), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("BaronHeadPiece", 42, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("PinkyJaw", 42, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeathDemonArm", 32, 0, random(170, 190), 2, random(0, 40), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_XScream
      TNT1 A 0 A_NoBlocking
      SARC AAABBBCCCDDD 3 A_CustomMissile("Brutal_LiquidBlood", 35, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      SARC DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2 A_CustomMissile("Brutal_LiquidBlood", 15, 0, random(0, 360), 2, random(30, 110), SXF_TRANSFERRENDERSTYLE)
      SARC D 0 A_SpawnItemEx("DeadDemonHalf23", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.SuperPunch:
   Death.ExtremePunches:
      TNT1 A 0
      TNT1 A 0 A_JumpIfInTargetInventory("HeavyStrikeRight", 1, "HeavyPunchRight")
      TNT1 A 0 A_JumpIfInTargetInventory("HeavyStrikeLeft", 1, "HeavyPunchLeft")
      TNT1 A 0 ThrustThingZ(0, 45, 0, 1)
      Goto Death.SSG
   HeavyPunchRight:
      TNT1 A 0
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 ThrustThing(angle*256/360+64, 10, 0)
      TNT1 A 0 A_Jump(128, "Death.LandMine")
      Goto BlownAwayLeft
   HeavyPunchLeft:
      TNT1 A 0
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 ThrustThing(angle*256/360+192, 10, 0)
      Goto BlownAwayRight
   Death.CutLess:
      TNT1 A 0
      TNT1 A 0 A_Jump(32, "Death.Cut")
      TNT1 A 0 A_Jump(132, "DeathRemoveArm")
      Goto Death
   Crush:
   Death.Stomp:
      TNT1 A 0 A_Scream
      TNT1 A 0 A_NoBlocking
      SARG IJKL 2
      TNT1 AA 0 A_SpawnItem("MeatDeathSmall", SXF_TRANSFERRENDERSTYLE)
      TNT1 AAA 0 bright A_CustomMissile("SuperGoreSpawner", 5, 0, random(0, 360), 2, random(30, 180), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAAA 0 bright A_CustomMissile("XDeath1", 5, 0, random(0, 360), 2, random(30, 180), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 bright A_CustomMissile("XDeath2b", 55, 0, random(0, 360), 2, random(30, 180), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 bright A_CustomMissile("XDeath3b", 55, 0, random(0, 360), 2, random(30, 180), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItemEx("CrushedRemains", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      TNT1 A 1
      TNT1 A 1 A_XScream
      Stop
   DeathRemoveArm:
      Goto Death + 14
   Death.Fire:
      TNT1 A 0
      TNT1 A 0 A_Scream
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_SpawnItemEx("BurningDemon", 0, 0, 10, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      Stop
   BlownAwayLeft:   
      TNT1 A 0
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_CustomMissile("XDeath1", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeath2", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
      TNT1 A 0 A_CustomMissile("Brains2", 50, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathStomach", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathBullLeg12", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath2b", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath3b", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathPinkyDemonHead", 42, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAA 0 A_CustomMissile("BloodMistLarge", 40, 0, random(0, 360), 2, random(20, 90), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 ThrustThingZ(0,30,0,1)
      TNT1 A 0 A_Xscream
      SRRD ABCD 5 A_CustomMissile("Brutal_FlyingBlood", 0, 0, 0, 2, 90, SXF_TRANSFERRENDERSTYLE)
      SRRD DDDDDDDDDD 3 A_CheckFloor("LandBlownAwayLeft")
      LandBlownAwayLeft:
      TNT1 A 0 A_Stop
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItemEx("DeadDemonSRRDE", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      Stop
   BlownAwayRight:
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_CustomMissile("XDeath1", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeath2", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
      TNT1 A 0 A_CustomMissile("Brains2", 50, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathStomach", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathBullLeg12", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathDemonArm", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath2b", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AA 0 A_CustomMissile("XDeath3b", 32, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_CustomMissile("XDeathPinkyDemonHead", 42, 0, random(0, 360), 2, random(0, 160), SXF_TRANSFERRENDERSTYLE)
      TNT1 AAA 0 A_CustomMissile("BloodMistLarge", 40, 0, random(0, 360), 2, random(20, 90), SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 ThrustThingZ(0,30,0,1)
      TNT1 A 0 A_Xscream
      SRRD FGHI 5 A_CustomMissile("Brutal_FlyingBlood", 0, 0, 0, 2, 90, SXF_TRANSFERRENDERSTYLE)
      SRRD GGGGGGGGGG 3 A_CheckFloor("LandBlownAwayRight")
      LandBlownAwayRight:
      TNT1 A 0 A_Stop
      TNT1 A 0 A_SpawnItem("GrowingBloodPool", SXF_TRANSFERRENDERSTYLE)
      TNT1 A 0 A_SpawnItemEx("DeadDemonSRRDJ", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      Stop
   Death.Ice:
   Death.Freeze:
   Death.Frost:
      TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
      TNT1 A 0 A_ChangeFlag("SOLID", 0)
      TNT1 A 0 A_SpawnItemEx("FrozenDemon", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERALPHA|SXF_TRANSFERRENDERSTYLE)
      stop
   Death.Massacre:
      goto Death
   }
}
And here's another video showing all that I have explained before.
https://youtu.be/V3pJupxYfCI
User avatar
Sir Robin
Posts: 537
Joined: Wed Dec 22, 2021 7:02 pm
Graphics Processor: Intel (Modern GZDoom)
Location: Medellin, Colombia

Re: DEMON SPECTRE with fuzz effect in BRUTAL DOOM

Post by Sir Robin »

Cataflexia wrote:For that I can understand, the problem is because there is many states that don't have the flag to transfer the render style (i mean SXF_TRANSFERRENDERSTYLE).
So, I've added the SXF_TRANSFERRENDERSTYLE flag to all dead states. It work in half, because now the Spectre maintain the fuzz render when he's dead. But only when the body is not dismembered.
The SXF flags should work in the [wiki]A_SpawnItemEx[/wiki] calls, but won't work in any [wiki]A_CustomMissile[/wiki] or [wiki]A_SpawnProjectile[/wiki] calls, because those functions use the CMF flagset, which does not have a flag for transferring the render style. That's why I suggested creating separte fuzzy gibs and using those instead.
Cataflexia wrote:So, if I have to create new fuzzy gibs to replace the existing ones, I'm in trouble, because I don't know how to create new states (gibs).
I never have come this far with coding, now I don't know what more I can do with all this :(
You don't want to create new states, you want to create completely new actors for fuzzy gibs and use those instead.
You have to look at the code to see what it's doing, but I'd guess you could try something like this:

Code: Select all

actor XDeathDemonArmFuzz : XDeathDemonArm
{
	default
	{
		renderStyle "OptFuzzy"
	}
}
And then replace "XDeathDemonArm" in the code with "XDeathDemonArmFuzz "
Cataflexia wrote: And here's another video showing all that I have explained before.
https://youtu.be/V3pJupxYfCI
Your first video shows demon killed closely by shotgun and losing an arm. This video shows many different death paths. When I'm working on something, I pick one path through the code and work on that. Once it works I can use what I learned to work on other paths. I'd recommend that for you, it will seem less overwhelming that way. Draw yourself a flowchart of all the paths through the death states, and then pick one and work on that. Once it works the way you want, you'll know how to change the code on the other paths.
Post Reply

Return to “Scripting”