
This is great.
Code: Select all
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
}
}
There sure is!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.
Code: Select all
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
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.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.
Speaking of which, hows that going?Ghastly_dragon wrote: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.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.
@Z86: Awesome! I'll work that in.
Pretty well; I think I'm about ready for another beta.Xtyfe wrote:Speaking of which, hows that going?