[Hexen] Death Wyvern gets stuck/clips into wall

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.

[Hexen] Death Wyvern gets stuck/clips into wall

Postby ZDL_800 » Sun Oct 11, 2020 6:12 pm

Hello GZDoom community and hope everyone is good.

Seems we have a major issue with the Hexen Death Wyvern which gets stuck/clips into the walls and doesn't fire anymore, screams and kills itself.

Its the same issue with many other threads like this one.

https://tracker.dengine.net/issues/1634

This is using the Brutal Hexen mod, from researching it looks like if not setup correctly it would not fly around, just stay idle and fall to the ground? This is not the case here, the Wyvern would fly around for a few mins before it clips into the wall? Here is the Wyvern script, if anyone could figure this out, would be greatly appreciated.

Code: Select allExpand view
// Dragon -------------------------------------------------------------------

ACTOR BrutalDragon : Dragon Replaces Dragon
{
   +DONTRIP
   -NOICEDEATH
   -NOBLOOD
   +QUICKTORETALIATE
   Health 2000
   Scale 1.0
   DamageFactor 0.78
   DamageFactor "Firestorm", 0.2
   Tag "Death Wyvern"
   DamageFactor "PoisonCloud", 0.6
   DamageFactor "Explosives", 1.8
   Painchance "PoisonCloud", 32
   DamageFactor "Thunder", 2.0
   DamageFactor "Quietus", 0.5
   DamageFactor "QuietusSlash", 0.11
   DamageFactor "Axe", 0.3
   DamageFactor "Sword", 0.3
   DamageFactor "GemMace", 0.3
   DamageFactor "BatAttack", 0.0
   PainChance "BatAttack", 0
   DamageFactor "HarpyDive", 0.0
   PainChance "HarpyDive", 0
   DamageFactor "WaspSting", 0.0
   PainChance "WaspSting", 0
   DamageFactor "SpiderBite", 0.0
   PainChance "SpiderBite", 0
   DamageFactor "Bastard", 0.0
   PainChance "Bastard", 0
   DropItem "Red_Mana", 256, 10
   DropItem "Green_Mana", 256, 10
   DropItem "Blue_Mana", 256, 10
   DropItem "Mana3", 256
   DropItem "BrutalMysticSand", 96, 1
   States
   {
   Spawn:
      TNT1 A 0 NoDelay ACS_NamedExecuteAlways("MStartStuff",0)
      DRAG A 2 A_Look
      Loop
   See:
      DRAG CB 5 ACS_NamedExecuteAlways("LevelUpCheck",0)
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG A 5 A_DragonInitFlight
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG B 3 A_DragonFlap
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG BC 3 A_DragonFlight
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG CD 3 A_DragonFlight
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG DC 3 A_DragonFlight
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG CB 3 A_DragonFlight
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG BA 3 A_DragonFlight
      TNT1 A 0 ACS_NamedExecuteAlways("LevelUpCheck",0)
      DRAG A 3 A_DragonFlight
      Goto See+4
   Pain:
      TNT1 A 0 ThrustThingZ(0,29,0,1)
      TNT1 A 0 A_FaceTarget
      TNT1 A 0 ThrustThing(angle*256/360+128, 9, 0, 0)
      DRAG F 10 A_DragonPain
      Goto See+3
   Death:
      TNT1 A 0 A_GiveToTarget("Experience", 100)
      TNT1 AAA 0 A_SpawnItem("BrutalBlood", 0, 46)
      DRAG G 5 A_Scream
      TNT1 AA 0 A_SpawnItem("BrutalBlood", 0, 40)
      DRAG H 4 A_NoBlocking
      DRAG I 4
      TNT1 AA 0 A_SpawnItem("BrutalBlood", 0, 32)
      DRAG J 4 A_DragonCheckCrash
      Wait
   Crash:
      TNT1 AAAA 0 A_SpawnItem("BrutalBlood", 0, 24)
      DRAG KL 5
      DRAG M -1
      Stop
   Ice:
      TNT1 A 0 A_GiveToTarget("Experience", 100)
      DRAG N 5 A_FreezeDeath
      DRAG N 1 A_FreezeDeathChunks
      Wait
   }
}

ACTOR BrutalDragonFireball : DragonFireball replaces DragonFireball
{
   Speed 40
   Radius 7
   Height 7
   Damage 6
   DamageType Fire
   Projectile
   -ACTIVATEIMPACT
   -ACTIVATEPCROSS
   RenderStyle Add
   DeathSound "DragonFireballExplode"
   States
   {
   Spawn:
      DRFX AAAABBBBCCCCDDDDEEEEFFFF 1 Bright NoDelay A_GiveInventory("BrutalDragonBallFX",1)
      Loop
   Death:
      TNT1 A 0 A_Explode(40, 128, 0, 1)
      TNT1 A 0 A_JumpIf(CallACS("GetSFXCVar") == 1, 2)
      TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
      TNT1 A 0 A_PlaySound("DSBAREXP", 1)
      TNT1 A 0 Radius_Quake (4, 15, 0, 12, 0)
      TNT1 AAAA 0 A_CustomMissile ("PlasmaSmoke", 3, 0, random (0, 360), 2, random (0, 360))
      TNT1 AAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticle1", 3, 0, random (0, 360), 2, random (0, 360))
      FIR3 ABCDEFGHIJKLMNOP 1 Bright A_SpawnItem("RedFlare")
      TNT1 A 0 A_DragonFX2
      Stop
   }
}

Actor BrutalDragonBallFX : CustomInventory
{
   Inventory.PickupMessage ""
   Inventory.PickupSound ""
   -COUNTITEM
   states
   {
   Spawn:
      TNT1 A 1
      Fail
   Pickup:
      TNT1 A 0 A_SpawnItemEx("SmokeTrail1",0,0,0,frandom(-0.7,0.7),frandom(-0.7,0.7),frandom(-0.7,0.7))
      TNT1 A 0 A_JumpIf(CallACS("GetSFXCVar") == 0, 1)
      Stop
      TNT1 A 0 A_SpawnItemEx("MinotaurFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
      Stop
   }
}

ACTOR BrutalDragonAfterShock : DragonExplosion replaces DragonExplosion
{
   Radius 8
   Height 8
   DamageType Fire
   +NOBLOCKMAP
   +NOTELEPORT
   -INVISIBLE
   +NOINTERACTION
   RenderStyle Add
   States
   {
   Spawn:
      TNT1 A 0 A_Explode(80, 128, 0, 1)
      TNT1 A 0 A_JumpIf(CallACS("GetSFXCVar") == 1, 2)
      TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
      TNT1 A 0 A_PlaySound("DSBAREXP", 1)
      TNT1 A 0 Radius_Quake (4, 7, 0, 12, 0)
      TNT1 AA 0 A_CustomMissile ("PlasmaSmoke", 3, 0, random (0, 360), 2, random (0, 360))
      TNT1 AAAAAAA 0 A_CustomMissile ("ExplosionParticle1", 3, 0, random (0, 360), 2, random (0, 360))
      FIR3 ABCDEFGHIJKLMNOP 1 Bright A_SpawnItem("RedFlare")
      Stop
   }
}


In coop mode, the first few mins of battle is epic, the Wyvern would loop around a few times before it finally decides, I'm going to just fly into the wall.

Thankyou for your time and hope to speak soon.
User avatar
ZDL_800
 
Joined: 15 May 2019

Re: [Hexen] Death Wyvern gets stuck/clips into wall

Postby Ichor » Sun Oct 11, 2020 8:53 pm

What do the ThrustThingZ and ThrustThing do in the Pain state? Also, I don't know if this will fix anything, but maybe try changing the Goto See+3 in the Pain state to Goto See+4.
User avatar
Ichor
The fun cannot be halted
 
Joined: 24 Jul 2003

Re: [Hexen] Death Wyvern gets stuck/clips into wall

Postby ZDL_800 » Mon Oct 12, 2020 3:02 pm

Hello and thanks for the reply.

You might be on the something here, ThrustThingZ I believe has to be moving the entity into the walls, just not sure, wonder if the +SLIDESONWALLS flag would make any difference?

I'll try and remove ThrustThingZ, edit the pain state and add +SLIDESONWALLS to the config, hopefully have some luck.

Thanks again.
User avatar
ZDL_800
 
Joined: 15 May 2019


Return to Scripting

Who is online

Users browsing this forum: No registered users and 0 guests