Doom 64: Retribution

Projects that have specifically been abandoned or considered "dead" get moved here, so people will quit bumping them. If your project has wound up here and it should not be, contact a moderator to have it moved back to the land of the living.

Re: [v1.3] Doom 64: Retribution

Postby Retraux Squid » Mon Jun 12, 2017 5:24 pm

JohnnyTheWolf wrote:Given how active and productive the Doom community has been for the last two decades, it is weird that nobody has made proper sprites for the missing Doom 64 monsters.

You would think it would have been a much more straightforward task than to create brand-new monsters, like Realm667 did.


There are zombie Marines and zombie chaingunners (both are present in Brutal Doom 64); however, I haven't seen Revenants (beyond BD64's Tchernobog sprite-hack) or Arch-Viles unfortunately.
User avatar
Retraux Squid
A_PosAttack
 
Joined: 14 Aug 2016
Location: E1M1

Re: [v1.3] Doom 64: Retribution

Postby Nevander » Tue Jun 13, 2017 10:36 am

Retraux Squid wrote:Just a note: the Arachnotron appears to be totally helpless if you stand beyond a certain range from it; its twin plasma shots will simply go straight past you on either side.

I've tried to fix this but no luck yet. They also fail at infighting if their target is below a certain height, they just shoot the ground. There's not much I can do because the origin of the attack still needs to line up with the sprite's guns. Them shooting the floor is a side effect.
Nevander
Self-Banned User
 
Joined: 07 Jan 2014

Re: [v1.3] Doom 64: Retribution

Postby TheBoltReaper » Thu Jun 15, 2017 8:30 pm

I liked the game, it's just like the original 8-)
User avatar
TheBoltReaper
 
Joined: 16 Jun 2017

Re: [v1.3] Doom 64: Retribution

Postby snackerfork » Thu Jun 29, 2017 8:48 am

Hello! I noticed that the Pain Elemental is missing a feature - in Doom 64, the Pain Elemental's Lost Souls explode like rockets if they're too close to the player or a wall to spawn, discouraging players from getting in the Pain Elemental's face or being close to it when it pops. But this version of them acts like the vanilla Doom 2 Pain Elemental, so nothing happens in those situations.

I made a mod that adds this to the Doom 2 Pain Elemental, so I reworked it for the Doom 64 one. I've tested it in comparison to DOOM 64 EX extensively - I can't be sure if it's 1:1, but it looks pretty close to me. I don't know if it's the exact same damage as in Doom 64 either, but just the default barrel explosion damage seems about the same as Doom 64 EX (i.e. an 100 health no armor player dies instantly if hit by both Lost Soul explosions). Here's the Decorate code:

Code: Select allExpand view
ACTOR 64PainElemental : PainElemental REPLACES PainElemental
{
   Radius 50
   Height 90
   DamageFactor "SoulBoom", 0
   Mass 600 // DEFAULT IS 400
   Obituary "$OB_SKULL"
   
   States
   {
      Spawn:
         PAIN AD 10 A_Look
         Loop
      See:
         PAIN A 0 A_ScaleVelocity(0.50)
         PAIN A 3 A_Chase
         Loop
      Missile:
         PAIN BB 6 A_FaceTarget
         PAIN C 6 BRIGHT A_FaceTarget
         TNT1 A 0 A_DualPainAttack("LostSoulExplode")
         Goto See
      Pain:
         PAIN D 6
         PAIN D 6 A_Pain
         Goto See
      Pain.Vertigo:
         PAIN D 0 ThrustThingZ(0, 55, 0, 0)
         PAIN D 6
         PAIN D 6 A_Pain
         Goto See
      Death:
         PAIN E 8 BRIGHT
         PAIN F 8 BRIGHT A_Scream
         PAIN G 8 BRIGHT
         PAIN H 8 BRIGHT A_SetTranslucent(0.90)
         PAIN I 5 BRIGHT A_PainDie("LostSoulDeath")
         PAIN J 5 BRIGHT A_SetTranslucent(0.75)
         PAIN K 4 BRIGHT A_SetTranslucent(0.50)
         PAIN L 4 BRIGHT
         Stop
      Raise:
         PAIN LKJIHGFE 8
         Goto See
      Crush:
         TNT1 A 0
         TNT1 A 1
         Stop
   }
}

ACTOR 64LostSoul : LostSoul REPLACES LostSoul
{
   Health 45
   Radius 16
   Height 56
   RenderStyle SoulTrans
   +MISSILEMORE
   +MISSILEEVENMORE
   +NOBLOOD
   +NOBLOODDECALS
   +NOTARGET
   
   States
   {
      Spawn:
         SKUL ABC 5 BRIGHT A_Look
         Loop
      See:
         SKUL ABC 3 BRIGHT A_Chase
         Loop
      Missile:
         SKUL D 10 BRIGHT A_FaceTarget
         SKUL E 4 BRIGHT A_SkullAttack(30)
         SKUL DE 4 BRIGHT A_ChangeFlag("NOTARGET", FALSE)
         Goto Missile+2
      Pain:
         SKUL F 3 BRIGHT
         SKUL F 3 BRIGHT A_Pain
         Goto See
      Pain.Vertigo:
         SKUL F 0 BRIGHT ThrustThingZ(0, 55, 0, 0)
         SKUL F 3 BRIGHT
         SKUL F 3 BRIGHT A_Pain
         Goto See
      Death:
         SKUL G 0 BRIGHT
         SKUL G 6 BRIGHT
         SKUL H 6 BRIGHT A_Scream
         SKUL I 4 BRIGHT
         SKUL J 3 BRIGHT A_NoBlocking
         SKUL KLMNOP 3 BRIGHT A_FadeOut(0.20)
         Stop
      Crush:
         TNT1 A 0
         TNT1 A 1
         Stop
   }
}

Actor LostSoulExplode : 64LostSoul
{
states
   {
   Spawn:
   SKUL D 5 BRIGHT
   TNT1 A 0 A_SpawnItemEx("LostSoulCharge", 0, 0, 0, 0, 0, 3, 0, SXF_NOCHECKPOSITION)
   stop
   Death:
         SKUL G 0 BRIGHT
         SKUL G 6 BRIGHT
         SKUL H 6 BRIGHT A_Scream
         TNT1 A 0 A_Explode(128,128,XF_EXPLICITDAMAGETYPE,0,0,0,0,0,"SoulBoom")
         SKUL I 4 BRIGHT
         SKUL J 3 BRIGHT A_NoBlocking
         SKUL KLMNOP 3 BRIGHT A_FadeOut(0.20)
         Stop
   }
}

Actor LostSoulDeath : 64LostSoul
{
states
   {
   Spawn:
   TNT1 A 0
   SKUL AB 5 BRIGHT
   SKUL C 5 BRIGHT
   stop
   Pain:
      SKUL F 3 BRIGHT
      SKUL F 3 BRIGHT A_Pain
      TNT1 A 0 A_SpawnItemEx("64LostSoul", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
      stop
   Death:
         SKUL G 0 BRIGHT
         SKUL G 6 BRIGHT
         SKUL H 6 BRIGHT A_Scream
         TNT1 A 0 A_Explode(128,128,XF_EXPLICITDAMAGETYPE,0,0,0,0,0,"SoulBoom")
         SKUL I 4 BRIGHT
         SKUL J 3 BRIGHT A_NoBlocking
         SKUL KLMNOP 3 BRIGHT A_FadeOut(0.20)
         Stop
   }
}

Actor LostSoulCharge : 64LostSoul
{
states
   {
   Spawn:
   SKUL D 5 BRIGHT A_FaceTarget
   SKUL E 4 BRIGHT A_SkullAttack(30)
   SKUL DE 4 BRIGHT A_ChangeFlag("NOTARGET", FALSE)
   Goto Super::Missile+2
   }
}


What this does is have the Pain Elemental fire two "Lost Soul"s as projectiles. If the "Lost Soul" hits anything (like a player) immediately upon spawning, it explodes like a barrel, but if it doesn't hit anything, it's instantly and seamlessly replaced with a real Lost Soul. The same thing happens to the Lost Souls that spawn when the PE dies, but these use a different actor so that they aren't charging when they spawn.

The only problems I've been able to see is that the Lost Soul explosion can launch the player (or their corpse) quite a bit. But that's a property of A_Explode, so I don't know what to do about it - you could use A_RadiusGive and Inventory items to simulate giving the damage to the player instead, but you'd lose the radius damage that way.

Anyway, feel free to use!

ETA: Made a bunch of changes to make it more accurate to the Doom 64 version.
snackerfork
 
Joined: 29 Jun 2017

Re: [v1.3] Doom 64: Retribution

Postby GripZ » Mon Jul 03, 2017 6:52 am

There's a bug (hopefully you see this)
Whenever i kill the imp with the ketchup patch mod the imp just freeze mid death animation.
User avatar
GripZ
 
Joined: 29 May 2017
Location: Southeast Asia
Graphics Processor: Intel (Legacy GZDoom)

Re: [v1.3] Doom 64: Retribution

Postby Nevander » Mon Jul 03, 2017 3:20 pm

GripZ wrote:There's a bug (hopefully you see this)
Whenever i kill the imp with the ketchup patch mod the imp just freeze mid death animation.

That's not something I can fix on my end. The problem most likely is that the ketchup patch mod most likely redefines the Imp again using standard the Doom 2 animation set, which when used with Doom 64 graphics causes the animation to end a frame or two too soon.
Nevander
Self-Banned User
 
Joined: 07 Jan 2014

Re: [v1.3] Doom 64: Retribution

Postby Kinsie » Tue Jul 04, 2017 2:14 pm

JohnnyTheWolf wrote:Given how active and productive the Doom community has been for the last two decades, it is weird that nobody has made proper sprites for the missing Doom 64 monsters.
Imitating the Doom 64 visual style would require a reasonably skilled 3D artist, and those are in pretty short supply in this community.
User avatar
Kinsie
Dog Days
 
Joined: 22 Oct 2004
Location: MAP33
Discord: Find Me...
Twitch ID: thekinsie

Re: [v1.3] Doom 64: Retribution

Postby snackerfork » Tue Jul 04, 2017 8:41 pm

Hi again! I realized after more testing that my exploding Lost Soul code was really hacky, buggy, and inefficient so I went back and redid it. I realized I could do the same thing with the normal Lost Soul by using inventory items, like this:

Code: Select allExpand view
ACTOR 64PainElemental : PainElemental REPLACES PainElemental
{
   Radius 50
   Height 90
   DamageFactor "SoulBoom", 0
   Mass 600 // DEFAULT IS 400
   
   States
   {
      Spawn:
         PAIN AD 10 A_Look
         Loop
      See:
         PAIN A 0 A_ScaleVelocity(0.50)
         PAIN A 3 A_Chase
         Loop
      Missile:
         PAIN BB 6 A_FaceTarget
         PAIN C 6 BRIGHT A_FaceTarget
         TNT1 A 0 A_DualPainAttack
         Goto See
      Pain:
         PAIN D 6
         PAIN D 6 A_Pain
         Goto See
      Pain.Vertigo:
         PAIN D 0 ThrustThingZ(0, 55, 0, 0)
         PAIN D 6
         PAIN D 6 A_Pain
         Goto See
      Death:
         PAIN E 8 BRIGHT
         PAIN F 8 BRIGHT A_Scream
         PAIN G 8 BRIGHT
         PAIN H 8 BRIGHT A_SetTranslucent(0.90)
         PAIN I 5 BRIGHT A_PainDie
         PAIN J 5 BRIGHT A_SetTranslucent(0.75)
         PAIN K 4 BRIGHT A_SetTranslucent(0.50)
         PAIN L 4 BRIGHT
         Stop
      Raise:
         PAIN LKJIHGFE 8
         Goto See
      Crush:
         TNT1 A 0
         TNT1 A 1
         Stop
   }
}

ACTOR 64LostSoul : LostSoul REPLACES LostSoul
{
   Health 45
   Radius 16
   Height 56
   RenderStyle SoulTrans
   DamageFactor "SoulBoom", 0
   +MISSILEMORE
   +MISSILEEVENMORE
   +NOBLOOD
   +NOBLOODDECALS
   +NOTARGET
   
   States
   {
      Spawn:
         TNT1 A 0
         TNT1 A 0 A_GiveInventory("SoulNoBoom", 1)
         SKUL ABC 5 BRIGHT A_Look
         Loop
      See:
         TNT1 A 0 A_GiveInventory("SoulNoBoom", 1)
         SKUL ABC 3 BRIGHT A_Chase
         Loop
      Missile:
         SKUL D 10 BRIGHT A_FaceTarget
         SKUL E 4 BRIGHT A_SkullAttack(30)
         SKUL DE 4 BRIGHT A_ChangeFlag("NOTARGET", FALSE)
         Goto Missile+2
      Pain:
         TNT1 A 0 A_GiveInventory("SoulNoBoom", 1)
         SKUL F 3 BRIGHT
         SKUL F 3 BRIGHT A_Pain
         Goto See
      Pain.Vertigo:
         TNT1 A 0 A_GiveInventory("SoulNoBoom", 1)
         SKUL F 0 BRIGHT ThrustThingZ(0, 55, 0, 0)
         SKUL F 3 BRIGHT
         SKUL F 3 BRIGHT A_Pain
         Goto See
      Death:
         SKUL G 0 BRIGHT
         TNT1 A 0 A_JumpIfInventory("SoulNoBoom", 1, 1)
         goto SoulBoom
         SKUL G 6 BRIGHT
         SKUL H 6 BRIGHT A_Scream
         SKUL I 4 BRIGHT
         SKUL J 3 BRIGHT A_NoBlocking
         SKUL KLMNOP 3 BRIGHT A_FadeOut(0.20)
         Stop
      SoulBoom:
         SKUL G 6 BRIGHT
         SKUL H 6 BRIGHT A_Scream
         TNT1 A 0 A_Explode(128,128,XF_EXPLICITDAMAGETYPE,0,0,0,0,0,"SoulBoom")
         SKUL I 4 BRIGHT
         SKUL J 3 BRIGHT A_NoBlocking
         SKUL KLMNOP 3 BRIGHT A_FadeOut(0.20)
         Stop
      Crush:
         TNT1 A 0
         TNT1 A 1
         Stop
   }
}

ACTOR SoulNoBoom : Inventory
{
   Inventory.MaxAmount 1
}


Now, if the Lost Soul dies the instant it spawns (as it would if it can't spawn), it explodes and does damage, but if it successfully enters any other state, an inventory item is given to it that prevents the explosion from happening. So now it otherwise acts exactly like a real Lost Soul (because it is one)!
snackerfork
 
Joined: 29 Jun 2017

Re: [v1.3] Doom 64: Retribution

Postby Nevander » Tue Jul 04, 2017 9:35 pm

But what if one of the two Lost Souls spawned dies and the other does not? And what about multiple spawns? Because there's no TakeInventory happening so as soon as one successfully spawns you will always have 1 of the item and it will never get taken away, thus the normal Death will always run even if it should run SoulBoom. With multiple Pain Elementals around not to mention normal Lost Souls it will get chaotic.

Why not instead do a JumpIfCloser on the Lost Soul death state if the target (which will be the player the majority of the time) is within a very short distance?
Nevander
Self-Banned User
 
Joined: 07 Jan 2014

Re: [v1.3] Doom 64: Retribution

Postby snackerfork » Tue Jul 04, 2017 10:39 pm

I'm sorry, I don't understand. The Lost Souls do the A_GiveInventory check individually on themselves, so if one spawns and the other doesn't, that shouldn't be a problem - the one that spawns successfully will get the "SoulNoBoom" inventory item, so it won't explode, while the one that doesn't spawn never gets a chance to receive the item (because it instantly enters the Death state), so it will explode. There's no need for a TakeInventory to happen either because if the Lost Soul has spawned successfully (i.e. entered any other state), then it shouldn't ever have a need to explode - the only purpose of the SoulNoBoom item is to prevent it from exploding.

If you did a JumpIfCloser on the target, that would cause all Lost Souls to explode if the player is next to them. So if you were in a tight space or were attacking a Lost Soul in a corner, you'd damage yourself when you killed them, even if the Lost Soul spawned thirty seconds ago.

ETA: OK, I did some more testing. If a Pain Elemental summons one Lost Soul but the other fails to spawn, only the one that failed to spawn will explode. The other one doesn't when it's killed (and using TargetInv shows it has the SoulNoBoom item).
snackerfork
 
Joined: 29 Jun 2017

Re: [v1.3] Doom 64: Retribution

Postby Nevander » Tue Jul 04, 2017 11:52 pm

Oh wow I had no idea things other than the player could have inventories. Does that mean you can give a lamp items? :lol:
Nevander
Self-Banned User
 
Joined: 07 Jan 2014

Re: [v1.3] Doom 64: Retribution

Postby snackerfork » Wed Jul 05, 2017 12:10 am

Yep! In fact, I've done exactly that before - it has its uses! :)
snackerfork
 
Joined: 29 Jun 2017

Re: [v1.3] Doom 64: Retribution

Postby Nevander » Wed Jul 05, 2017 12:26 am

How do you tell A_Explode to ignore using a puff? I'm getting a warning now that there is an unknown class name 0.

EDIT: I just inherited from BulletPuff and made an invisible one that dies immediately, warning is gone.
Nevander
Self-Banned User
 
Joined: 07 Jan 2014

Re: [v1.3] Doom 64: Retribution

Postby snackerfork » Wed Jul 05, 2017 12:42 am

Whoops. I'm not sure if it's possible to get it to not spawn a puff, but if you replace that line with this, that error should go away:

Code: Select allExpand view
TNT1 A 0 A_Explode(128,128,XF_EXPLICITDAMAGETYPE,0,0,0,0,"BulletPuff","SoulBoom")


Testing it, I don't see the puff at all (it seems to be covered up by the LS sprites), so this should be fine. If you want to be extra sure though, you could make an actor that inherits from bulletpuff but has no sprites, like this:

Code: Select allExpand view
 actor fakebulletpuff : bulletpuff
{
States
  {
  Spawn:
    TNT1 A 1
    // Intentional fall-through
  Melee:
    TNT1 A 1
    Stop
  }
}


Then just replace "BulletPuff" with "FakeBulletPuff" in the above line.
snackerfork
 
Joined: 29 Jun 2017

Re: [v1.3] Doom 64: Retribution

Postby Nevander » Wed Jul 05, 2017 12:50 am

Now for some reason I can't get A_Explode to do any damage to me even if I apply it to the normal Death state... wtf. I can't tell if it's working because of the clusterf**k that happens when a Pain Elemental is spawned. I cant distinguish the damage from Lost Souls hitting me or if they are exploding. Is there some easy way to test this because if I summon a Lost Soul to test damage and radius I don't seem to be getting hurt at all when it explodes.

EDIT: Some testing... the state is happening and A_Explode is happening because I gave it an absurd damage and radius and it sends stuff flying and blows up barrels across the map but it's not hurting me! However, if a Lost Soul fails to spawn it does indeed hurt me. I see a huge red flash when it happens, but any Lout Souls I personally send to the Death state by killing them seems to not hurt me whatsoever. Only if they spawn into it apparently do I take damage... is it because the player is instigating the state and not the world?

EDIT 2: I needed to add the XF_NOTMISSILE flag apparently... it seems somehow because the player kills it, we send it to the death state and the game somehow thinks it's a player made missile or something weird like that. Now I can test the radius and damage without needing to mess with Elementals.
Nevander
Self-Banned User
 
Joined: 07 Jan 2014

PreviousNext

Return to Abandoned/Dead Projects

Who is online

Users browsing this forum: No registered users and 0 guests