Page 3 of 5

Re: [Monster]Vore from Quake

PostPosted: Thu Apr 05, 2012 4:41 pm
by Captain Awesome
Image

This is great.

Re: [Monster]Vore from Quake

PostPosted: Thu Apr 05, 2012 5:27 pm
by .+:icytux:+.
Heh, I remember being amazed at how the revenants seekermissiles worked in hideous destructor. It used a very similar code to make the missiles home around corners :P

Re: [Monster]Vore from Quake

PostPosted: Fri Apr 06, 2012 11:43 am
by Snarboo
I can't help but feel that there is a more efficient way of writing that missile code without duplicating it for every single frame of animation. I'll have to experiment with this.

Edit:
Okay, I have no idea if this will work, but it's worth a try!

Code: Select allExpand view
Actor XtRevenantTracer replaces RevenantTracer
{
var int user_theta; // <-- This is the important part!
*Snip*
States
   {
   Spawn:
      TNT1 A 0
      TNT1 A 0 A_PlaySound ("skeleton/ballloop", 6, 1, 1)
      RVTR AB 2 Bright
      Goto SpawnLoop
   SpawnLoop:
      RVTR A 0 A_SetUserVar ("user_theta", 0)
       "####" "#" 1 BRIGHT A_SetUserVar ("user_theta", user_theta+1)
      "####" "#" 0 A_SpawnItemEx ("XtRevenantTracerTrail", Random(-10,10), Random(-10,10))
      "####" "#" 0 A_GiveToTarget ("XtRevenantTracerToken", 1)
      "####" "#" 0 A_JumpIfTargetInLOS(3, 360, 1)
      "####" "#" 0 A_JumpIf (user_theta >=4, "SpawnLoop")
      "####" "#" 0 A_JumpIf (user_theta ==2, "FrameB")
      Goto SpawnLoop+1
      "####" "#" 0 A_SeekerMissile(90, 90, 2)
      "####" "#" 0 A_JumpIf (user_theta >=4, "SpawnLoop")
      "####" "#" 0 A_JumpIf (user_theta ==2, "FrameB")
      Goto SpawnLoop+1
   FrameB:
      RVTR B 0
      Goto SpawnLoop+1
   Death:
      TNT1 A 0 A_StopSound (6)
      FBXP A 4 Bright A_Explode (10, 64)
      FBXP BBBBCCCC 1 Bright A_FadeOut (0.05)
      Stop
   }
}


Assuming this works, this should cut down on redundant code by using frame inheritance!

Re: [Monster]Vore from Quake

PostPosted: Sat Apr 07, 2012 1:33 pm
by NeuralStunner
Snarboo wrote:I can't help but feel that there is a more efficient way of writing that missile code without duplicating it for every single frame of animation.
There sure is! :P

Re: [Monster]Vore from Quake

PostPosted: Sat Apr 07, 2012 5:55 pm
by Snarboo
Huh, I had no idea custom inventory items behaved like that. In that case, the code could be made even more efficient in theory. :p

Re: [Monster]Vore from Quake

PostPosted: Sun Apr 08, 2012 10:03 am
by Xtyfe
Could the same be applied to this?

Code: Select allExpand view
   Chase:
      TNT1 A 0 A_SpawnItemEx ("XtRevenantStep", 10, 10, 15)
      SKEL A 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL A 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameA2
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL A 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameA2
   FrameA2:
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL A 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameB1
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL A 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameB1
   FrameB1:
      SKEL B 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL B 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameB2
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL B 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameB2
   FrameB2:
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL B 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameC1
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL B 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameC1
   FrameC1:
      SKEL C 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL C 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameC2
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL C 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameC2
   FrameC2:
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL C 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameD1
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL C 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameD1
   FrameD1:
      TNT1 A 0 A_SpawnItemEx ("XtRevenantStep", 0, 0, 15)
      SKEL D 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_JumpIfInventory("XtRevenantTracerToken", 1, 2)
      SKEL D 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameD2
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL D 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameD2
   FrameD2:
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL D 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameE1
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL D 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameE1
   FrameE1:
      SKEL E 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_JumpIfInventory("XtRevenantTracerToken", 1, 2)
      SKEL E 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameE2
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL E 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameE2
   FrameE2:
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 2)
      SKEL E 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameF1
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL E 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameF1
   FrameF1:
      SKEL F 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_JumpIfInventory("XtRevenantTracerToken", 1, 2)
      SKEL F 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      Goto FrameF2
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL F 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      Goto FrameF2
   FrameF2:
      TNT1 A 0 A_JumpIfInventory ("XtRevenantTracerToken", 1, 3)
      SKEL F 2 A_Chase ("Melee", "Missile", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_Jump (96, "ActiveSound")
      Goto Chase
      TNT1 A 0 A_TakeInventory ("XtRevenantTracerToken", 1)
      SKEL F 2 A_Chase ("Melee", "", CHF_NOPLAYACTIVE)
      TNT1 A 0 A_Jump (96, "ActiveSound")
      Goto Chase

Re: [Monster]Vore from Quake

PostPosted: Sun Apr 08, 2012 4:38 pm
by Z86
Brightmaps done!

With lights disabled:
Screenshot_Doom_20120409_003350.png


Vore.zip
(116.92 KiB) Downloaded 41 times

Re: [Monster]Vore from Quake

PostPosted: Mon Apr 09, 2012 6:45 am
by VICE
Don't know if this is intended, but I noticed that if I just barely dodge the vore's projectile and stand in place without moving, the projectile will orbit me instead of closing in. It will home in again once I've moved, though.

Re: [Monster]Vore from Quake

PostPosted: Mon Apr 09, 2012 8:37 am
by Ghastly
Megaherz wrote:Don't know if this is intended, but I noticed that if I just barely dodge the vore's projectile and stand in place without moving, the projectile will orbit me instead of closing in. It will home in again once I've moved, though.

Yeah, I noticed that during testing. Hilariously, it's actually easier to pull off with the Revenant's fireball, but I've actually went ahead and fixed this. It can turn a full 180 degrees, if necessary, to home in on you.

@Z86: Awesome! I'll work that in. :D

Re: [Monster]Vore from Quake

PostPosted: Mon Apr 09, 2012 12:22 pm
by Xtyfe
Ghastly_dragon wrote:
Megaherz wrote:Don't know if this is intended, but I noticed that if I just barely dodge the vore's projectile and stand in place without moving, the projectile will orbit me instead of closing in. It will home in again once I've moved, though.

Yeah, I noticed that during testing. Hilariously, it's actually easier to pull off with the Revenant's fireball, but I've actually went ahead and fixed this. It can turn a full 180 degrees, if necessary, to home in on you.

@Z86: Awesome! I'll work that in. :D


Speaking of which, hows that going?

Re: [Monster]Vore from Quake

PostPosted: Tue Apr 10, 2012 7:09 am
by Ghastly
Xtyfe wrote:Speaking of which, hows that going?
Pretty well; I think I'm about ready for another beta.

Edit: http://dl.dropbox.com/u/67411518/Vore.zip

Can't remember all the changes, but I did make the around-corner behavior a bit more reliable (it now waits two tics or so before adjusting, but checks again if it still has LOS before adjusting), added the brightmaps, messed with some delays, added +NoTarget so they won't infight (pending a +DontInfightSpecies flag, hopefully), and played around with the walking animation a bit so it has that "stop-and-go" quality it has in Quake (Vader's suggestion).

How is this new version?

Re: [Monster]Vore from Quake

PostPosted: Tue Apr 10, 2012 10:53 am
by Clebardman
try to crouch against him, it's glitchy :p. vore balls will just stack over your head until you change height, you can potientially force infights, etc.

i also guess you're trying to emulate his quake's behavior, but he is really REALLY slow, has a rather high painchance (attacks can be easily cancelled with a shotgun blast), doesn't deal that much damage (20 blast AoE vs 10-80 direct damage for the revenant), has no high single target damage/melee attack, and is rather big. if you take all this into account, you understand why a ~700hp fearsome boss can die to 3 imps at close range. My advice would be to give him a small buff in all those stats : pain chance, speed, and a faster attack animation to make it harder to cancel (this allows you to keep the 20 blast damage to stay closer to quake). That, or give him a 50 direct damage purple FALCOOOON... PUUUNCH ! to get rid of pesky melee opponents :p but that's not really quake-like.

the homing missile is really fun btw. if you manage to solve that crouching issue, it will be perfect ^^

Re: [Monster]Vore from Quake

PostPosted: Tue Apr 10, 2012 12:21 pm
by VICE
My suggestion would be to give it some sort of weak shockwave attack that pushes everything away from itself if it's possible (with A_Explode?). That way they won't be completely helpless in melee, and it will have more opportunities to use the seeking shot in close quarters, after it pushes melee aggressors away to get a breather. Plus a purple energy shockwave thingey as an alternate attack still fits with the monster's style, in my opinion.

Re: [Monster]Vore from Quake

PostPosted: Tue Apr 10, 2012 2:30 pm
by Clebardman
how to improve vore's concept huhu. that's what the sprites inspire me at least (and probably that delay in the attack animation you coded :p)
Image

edit : while i agree with you on a shockwave attack, i think ghastly_dragon wants to keep it as close as possible to quake's vore, at least for the bestiary. that's why i suggested lower pain chance and faster attack animation, it's nothing obvious like damage values or a new attack.
...but at the same time, all doom enemies that have a "claw" animation for fireballs also use it for a melee attack. so it would make sense to give that vore at least a simple melee attack. the decision is up to ghastly_dragon anyway ^^.

Re: [Monster]Vore from Quake

PostPosted: Tue Apr 10, 2012 3:25 pm
by Ghastly
Just gave it a melee attack (Immediately falls through into the Missile state :P), lowered the pain chance, increased damage (50-70 damage), and slightly lowered the delay before throwing. I think this is as powerful as I want to make this. Can't fix the problem when you crouch, unfortunately.

Here it is: http://dl.dropbox.com/u/67411518/Vore.zip