Kappes Buur Posted December 19, 2023 (edited) ObsidianRavager.zip is an actor (monster) done with ZSCRIPT and thus GZDoom specific. zip.zip is a pwad done for DOOM/BOOM format and thus not compatible with the actor. Solution: Convert your pwad to GZDoom format, either Doom in Hexen format (DiHF) or Universal Doom Map Format (UDMF). Add the actor to the convertedpwad. Add a MAPINFO definition with a DoomEDnums block to specify a Thing Type number. Search Doomworld for convert to GZDoom Visit the ZDoom Wiki and search MAPINFO and UDMF You probably will have a few additional questions. Edited December 19, 2023 by Kappes Buur 0 Quote Share this post Link to post
PZER Posted December 19, 2023 (edited) Should I make a decorate file? Or should I copy everything in the file and paste it over? Edited December 19, 2023 by PZER 0 Quote Share this post Link to post
PZER Posted December 19, 2023 This is what I got for MAPINFO: DoomEDnums { 32001 }class ObsidianRavager : Actor { bool CanCastTrap; Default { Health 2000; Radius 24; Height 96; Mass 1000; Speed 14; PainChance 40; Monster; Scale 0.7; MeleeRange 84; +FLOORCLIP; +MISSILEMORE; +MISSILEEVENMORE; +DONTGIB; +NOBLOODDECALS; BloodType "ObsidianChunk"; SeeSound "Obsidian/Alert"; PainSound "Obsidian/Pain"; DeathSound "Obsidian/Death"; ActiveSound "Obsidian/Idle"; Obituary "%o was killed by an Obsidian Ravager."; HitObituary "%o was killed by an Obsidian Ravager."; Tag "Obsidian Ravager"; } States { Spawn: VSTL IJK 10 A_Look; Loop; See: VSTL ABCDEFGH 7 A_Chase; Loop; Melee: VSTL L 1 A_FaceTarget; VSTL L 1 A_PlaySound("Obsidian/Swipe"); VSTL L 4 A_FaceTarget; VSTL M 6 A_FaceTarget; VSTL NNN 2 { A_FaceTarget(); A_Recoil(-3); } VSTL O 12 A_CustomMeleeAttack(random(10, 15) * 7, "Obsidian/Melee"); VSTL P 10; Goto See; Missile: TNT1 A 0 { if (CanCastTrap==true && random(1,3)==1) { CanCastTrap = false; SetStateLabel("CastTrap"); } } VSTL QR 5 A_FaceTarget; VSTL S 10 A_PlaySound("Obsidian/Attack"); VSTL T 5 A_FaceTarget; TNT1 A 0 { if (random(1,2)==1) SetStateLabel("Missile1"); } Goto Missile2; CastTrap: VSTL R 10 A_FaceTarget; VSTL P 10 A_SpawnProjectile("TrapAttack"); Goto See; Missile1: VSTL U 8 { if(target) { int Dist = Distance3D(target); int zDiff = (self.pos.z - target.pos.z); if ((Dist < 250) || (zDiff < 0)) A_SpawnProjectile("ChaosBallNoGrav",59,0,0); else if (Dist < 400) A_SpawnProjectile("ChaosBall",59,0,0,CMF_OFFSETPITCH,Dist*-0.01); else if (Dist > 1000) A_SpawnProjectile("ChaosBall",59,0,0,CMF_OFFSETPITCH,-18); else A_SpawnProjectile("ChaosBall",59,0,0,CMF_OFFSETPITCH,Dist*-0.018); } A_Playsound("Obsidian/Missile"); CanCastTrap = true; } VSTL V 8; Goto See; Missile2: VSTL U 8 { if(target) { int Dist = Distance3D(target); int zDiff = (self.pos.z - target.pos.z); if ((Dist < 250) || (zDiff < 0)) { A_SpawnProjectile("ChaosBarrageNoGrav",59,0,random(-14,-18)); A_SpawnProjectile("ChaosBarrageNoGrav",59,0,random(14,18)); A_SpawnProjectile("ChaosBarrageNoGrav",59,0,random(-8,-12)); A_SpawnProjectile("ChaosBarrageNoGrav",59,0,random(8,12)); A_SpawnProjectile("ChaosBarrageNoGrav",59,0,random(-2,-6)); A_SpawnProjectile("ChaosBarrageNoGrav",59,0,random(2,6)); } else if (Dist < 400) { A_SpawnProjectile("ChaosBarrage",59,0,random(-14,-18),CMF_OFFSETPITCH,(Dist*-0.01)); A_SpawnProjectile("ChaosBarrage",59,0,random(14,18),CMF_OFFSETPITCH,(Dist*-0.01)); A_SpawnProjectile("ChaosBarrage",59,0,random(-8,-12),CMF_OFFSETPITCH,(Dist*-0.01)); A_SpawnProjectile("ChaosBarrage",59,0,random(8,12),CMF_OFFSETPITCH,(Dist*-0.01)); A_SpawnProjectile("ChaosBarrage",59,0,random(-2,-6),CMF_OFFSETPITCH,(Dist*-0.01)); A_SpawnProjectile("ChaosBarrage",59,0,random(2,6),CMF_OFFSETPITCH,(Dist*-0.01)); } else if (Dist > 1000) { A_SpawnProjectile("ChaosBarrage",59,0,random(-14,-18),CMF_OFFSETPITCH,-18); A_SpawnProjectile("ChaosBarrage",59,0,random(14,18),CMF_OFFSETPITCH,-18); A_SpawnProjectile("ChaosBarrage",59,0,random(-8,-12),CMF_OFFSETPITCH,-18); A_SpawnProjectile("ChaosBarrage",59,0,random(8,12),CMF_OFFSETPITCH,-18); A_SpawnProjectile("ChaosBarrage",59,0,random(-2,-6),CMF_OFFSETPITCH,-18); A_SpawnProjectile("ChaosBarrage",59,0,random(2,6),CMF_OFFSETPITCH,-18); } else { A_SpawnProjectile("ChaosBarrage",59,0,random(-14,-18),CMF_OFFSETPITCH,(Dist*-0.018)); A_SpawnProjectile("ChaosBarrage",59,0,random(14,18),CMF_OFFSETPITCH,(Dist*-0.018)); A_SpawnProjectile("ChaosBarrage",59,0,random(-8,-12),CMF_OFFSETPITCH,(Dist*-0.018)); A_SpawnProjectile("ChaosBarrage",59,0,random(8,12),CMF_OFFSETPITCH,(Dist*-0.018)); A_SpawnProjectile("ChaosBarrage",59,0,random(-2,-6),CMF_OFFSETPITCH,(Dist*-0.018)); A_SpawnProjectile("ChaosBarrage",59,0,random(2,6),CMF_OFFSETPITCH,(Dist*-0.018)); } A_Playsound("Obsidian/Missile"); CanCastTrap = true; } } VSTL V 8; Goto See; Pain: VSTL W 4; VSTL X 4 A_Pain; VSTL YZ 4; Goto See; Death: VSTK A 8; VSTK B 8 A_Scream; VSTK C 8; VSTK D 8 A_NoBlocking; VSTK E 8; VSTK F -1; Stop; Raise: VSTL F 8; VSTL EDCBA 8; Goto See; } } Class ChaosBall : Actor { Default { Radius 5; Height 5; Speed 12; DamageFunction (random(10,12) * 6); Translation "112:127=176:191"; Scale 1.4; Projectile; Gravity 0.2; -NOGRAVITY; +SEEKERMISSILE; +RANDOMIZE; DeathSound "Obsidian/Impact"; Decal "ChaosBallScorch"; } States { Spawn: BAL7 AAABBBAAABBB 2 BRIGHT A_SpawnItemEx("ChaosBallTrail", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS); TNT1 A 0 BRIGHT A_NoGravity; TNT1 A 0 BRIGHT A_SeekerMissile(2, 3); loop; Death: BAL7 C 0 BRIGHT A_NoGravity; BAL7 CDE 6 BRIGHT; stop; } } Class ChaosBallNoGrav : ChaosBall { Default { +NOGRAVITY; } } Class ChaosBarrage : ChaosBall { Default { Radius 2; Height 2; DamageFunction (random(10,12) * 2); Scale 0.5; Decal "ChaosBarrageScorch"; } States { Spawn: BAL7 AAAAAABBBBBBAAAAAABBBBBB 1 BRIGHT A_SpawnItemEx("ChaosBarrageTrail", -5, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS); TNT1 A 0 BRIGHT A_NoGravity; TNT1 A 0 BRIGHT A_SeekerMissile(1, 2); Goto See; See: BAL7 AAAAAA 1 BRIGHT A_SpawnItemEx("ChaosBarrageTrail", -5, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS); TNT1 A 0 BRIGHT A_SeekerMissile(1, 2); BAL7 BBBBBB 1 BRIGHT A_SpawnItemEx("ChaosBarrageTrail", -5, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS); TNT1 A 0 BRIGHT A_SeekerMissile(1, 2); loop; } } Class ChaosBarrageNoGrav : ChaosBarrage { Default { +NOGRAVITY; } } Class ChaosBallTrail : Actor { Default { RenderStyle "Translucent"; Alpha 0.5; +NOGRAVITY; +RANDOMIZE; } States { Spawn: BAL7 AB 4 BRIGHT A_FadeOut(0.15); loop; } } Class ChaosBarrageTrail : ChaosBallTrail { Default { Scale 0.3; } States { Spawn: BAL7 AB 4 BRIGHT A_FadeOut(0.2); loop; } } Class ObsidianChunk : Actor { Default { Scale 0.3; Gravity 0.5; +NOBLOCKMAP; +NOTELEPORT; } States { Spawn: VOBC ABCDEFGH 4; stop; } } Class TrapAttack : Actor { bool trapped; Default { Radius 5; Height 5; Speed 256; Damage 0; Projectile; +SEEKERMISSILE; } //spawn obsidian trap override void PostBeginPlay() { super.PostBeginPlay(); } override int SpecialMissileHit(actor victim) { if (victim && target && (victim != target)) { if (trapped != 1) { victim.A_Playsound("Obsidian/TrapSpawn"); victim.A_SpawnItemEx("ObsidianTrap1", 16, -32, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap2", 32, -16, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap3", 32, 16, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap4", 16, 32, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap1", -16, 32, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap2", -32, 16, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap3", -32, -16, -32, 0, 0, 0, 0); victim.A_SpawnItemEx("ObsidianTrap4", -16, -32, -32, 0, 0, 0, 0); trapped = 1; } } return 1; } States { Spawn: TNT1 A 1 A_SeekerMissile(90, 90); loop; Death: TNT1 A 0; stop; } } Class ObsidianTrap1 : ThrustFloorUp { Default { Scale 0.4; Radius 6; Height 52; DeathSound "Obsidian/TrapDeath"; Health 30; +NOTELEPORT; +SOLID; +SHOOTABLE; +DONTTHRUST; +NOBLOODDECALS; BloodType "ObsidianChunk"; } States { Spawn: VOT1 ABC 2; Goto See; See: VOT1 DDDD 32; Goto Death; Death: VOT1 C 3 A_Scream; VOT1 BA 3 A_ParticleDust(); TNT1 A 0; stop; } } Class ObsidianTrap2 : ObsidianTrap1 { States { Spawn: VOT2 ABC 2; Goto See; See: VOT2 DDDD 32; Goto Death; Death: VOT2 C 3 A_Scream; VOT2 BA 3 A_ParticleDust(); TNT1 A 0; stop; } } Class ObsidianTrap3 : ObsidianTrap1 { States { Spawn: VOT3 ABC 2; Goto See; See: VOT3 DDDD 32; Goto Death; Death: VOT3 C 3 A_Scream; VOT3 BA 3 A_ParticleDust(); TNT1 A 0; stop; } } Class ObsidianTrap4 : ObsidianTrap1 { States { Spawn: VOT4 ABC 2; Goto See; See: VOT4 DDDD 32; Goto Death; Death: VOT4 C 3 A_Scream; VOT4 BA 3 A_ParticleDust(); TNT1 A 0; stop; } } Extend Class ObsidianTrap1 { void A_ParticleDust() { A_SpawnParticle("black",SPF_RELATIVE,70,50,0,0,0,0,0,0,0.5,0,0,0,0.5,-1,3); } } 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.