trying to make a PK starstorm that homes in on the enemy but some of the meteor sprites either spaz out and reversed from the direction its going then fixes itself after a second after it enters the screen. some of them do just fine but others are buggy despite using the directional angle code
tracking code i used
[State 2010, Angle]
type = AngleSet
trigger1 = 1
value = ((atan((-1*Vel Y)/Vel X))*(360/(2*pi))) + 90
[State 2010, Draw]
type = AngleDraw
trigger1 = 1
[State 2010: Turn]
type = Turn
trigger1 = (P2Dist X < 10)
[State 2010: VelSet]
type = VelSet
trigger1 = (!Time)
x = 3
[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X < 0) && (Vel X > -6)
x = -0.1
[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X > 0) && (Vel X < 6)
x = 0.1
[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y > Pos Y) && (Vel Y < 6)
y = 0.1
[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y <= Pos Y) && (Vel Y > -6)
y = -0.1
the whole attack
[Statedef 2000]
type = U
movetype= I
physics = N
velset = 0,0
ctrl = 0
anim = 2000
[State 2000, 0]
type = SuperPause
trigger1 = time = 0
time = 60
anim = 102
sound = 20,0
pos = 5*const(size.xscale),-50*const(size.yscale)
movetime = 60
darken = 1
p2defmul = 1
poweradd = -3000
unhittable = 0
[State 400, 0]
type = PosAdd
trigger1 = time > 15
trigger1 = time%4 = 0
y = const(size.yscale)
[State 400, 0]
type = PosAdd
trigger1 = time > 18
trigger1 = time%4 = 2
y = -const(size.yscale)
[State 1000, 0]
type = BGPalFX
trigger1 = 1
time = 1
mul = 100,100,100
[State 2000, 0]
type = Offset
trigger1 = AnimElem = 4,>=0
trigger1 = AnimElem = 4,< 180
y = -2*const(size.yscale)
[State 2000]
type = VelSet
trigger1 = Pos Y >= 0
x = 0
y = 0
[State 2000]
type = PosSet
trigger1 = Pos Y > 0
y = 0
[State 2000]
type = PlaySnd
trigger1 = AnimElem = 1
value = s12, 0
[State 2000]
type = Helper
trigger1 = Anim = 2000
trigger1 = AnimElem = 4
helpertype = normal
name = "FinalSmashHelper1"
ID = 2001
stateno = 2001
pos = 0,0
postype = p1
facing = 1
ownpal = 1
[State 2000]
type = Helper
trigger1 = Anim = 2000
trigger1 = AnimElem = 4
helpertype = normal
name = "FinalSmashHelper2"
ID = 2002
stateno = 2002
pos = 0,0
postype = p1
facing = 1
ownpal = 1
[State 2000]
type = ChangeAnim
trigger1 = Anim = 2000
trigger1 = Time = 340
value = 2005
[State 2000]
type = ChangeState
trigger1 = Anim = 2005
trigger1 = AnimTime = 0
value = 50
ctrl = 1
[State 2000]
type = Changestate
trigger1 = Anim = 2005
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;---------------------------------------------------------------------------
[Statedef 2001]
type = A
movetype= I
physics = N
anim = 2001
[State 2001]
type = Turn
trigger1 = Facing = -1
[State 2001]
type = PosSet
trigger1 = 1
x = 0
y = -480
[State 2001]
type = VarRandom
trigger1 = time%60= 0
v = 20
range = -10,-2
[State 2001]
type = VarRandom
trigger1 = time = 235
v = 20
range = -10,-7
[State 2001]
type = Helper
trigger1 = time%60= 0
trigger2 = time = 235
helpertype = normal
name = "PKStarStorm"
ID = 2010
stateno = 2010
pos = Var(20)*30,0
postype = p1
facing = 1
ownpal = 1
size.xscale = 1.15*const(size.yscale)
size.yscale = 1.15*const(size.yscale)
[State 0, Explod]
type = Explod
trigger1 = Time % 5 = 0
anim = 30000
sprPriority = 5
posType = P1
random = 350,200
pos = 0,100
vel = 0 -(Random / 2000.0), 5 - (Random / 2000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = 1.5,1.5
ownpal = 1
[State 2001]
type = DestroySelf
trigger1 = Time = 235
[Statedef 2002]
type = A
movetype= I
physics = N
anim = 2001
[State 2002]
type = Turn
trigger1 = Facing = -1
[State 2002]
type = PosSet
trigger1 = 1
x = 0
y = -480
[State 2002]
type = VarRandom
trigger1 = time%60= 30
v = 20
range = 2,10
[State 2002]
type = VarRandom
trigger1 = time = 220
v = 20
range = -3,3
[State 2002]
type = VarRandom
trigger1 = time = 230
v = 20
range = 7,10
[State 2002]
type = Helper
trigger1 = time%60= 30
trigger2 = time = 220
trigger3 = time = 230
helpertype = normal
name = "PKStarStorm"
ID = 2010
stateno = 2010
pos = Var(20)*30,0
postype = p1
facing = 1
ownpal = 1
size.xscale = 1.15*const(size.yscale)
size.yscale = 1.15*const(size.yscale)
[State 2002]
type = DestroySelf
trigger1 = Time = 235
[Statedef 2010]
type = A
movetype= A
physics = N
ctrl = 0
anim = 2010
[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X <= -45
x = -7*const(size.xscale)*sin(Pi*17/9)
y = 7*const(size.yscale)*cos(Pi*17/9)
[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X = [-45,-20]
x = -7*const(size.xscale)*sin(Pi*35/18)
y = 7*const(size.yscale)*cos(Pi*35/18)
[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X = [-20,20]
x = 0
y = 7*const(size.yscale)
[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X = [20,45]
x = -7*const(size.xscale)*sin(Pi/18)
y = 7*const(size.yscale)*cos(Pi/18)
[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X > 45
x = -7*const(size.xscale)*sin(Pi/9)
y = 7*const(size.yscale)*cos(Pi/9)
[State 2010, Angle]
type = AngleSet
trigger1 = 1
value = ((atan((-1*Vel Y)/Vel X))*(360/(2*pi))) + 90
[State 2010, Draw]
type = AngleDraw
trigger1 = 1
[State 2010: Turn]
type = Turn
trigger1 = (P2Dist X < 10)
[State 2010: VelSet]
type = VelSet
trigger1 = (!Time)
x = 3
[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X < 0) && (Vel X > -6)
x = -0.1
[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X > 0) && (Vel X < 6)
x = 0.1
[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y > Pos Y) && (Vel Y < 6)
y = 0.1
[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y <= Pos Y) && (Vel Y > -6)
y = -0.1
[State 2010]
type = HitDef
trigger1 = time = 0
attr = A, HA
damage = 150,150
animtype = heavy
hitflag = MAFD
getpower = 0
givepower = 200
priority = 0, Hit
sparkno = s10002
pausetime = 0,12
sparkxy = -10, 30
hitsound = S12,2
guardsound = 6,0
ground.type = High
ground.slidetime = 30
ground.hittime = 30
ground.velocity = ifelse(Vel X >=0,1,-1),-8
air.velocity = ifelse(Vel X >=0,1,-1),-8
fall = 1
envshake.time = 15
envshake.freq = 60
envshake.ampl = -4
envshake.phase = 90
PalFX.time = 40
PalFX.add = -104,-14,70
PalFX.mul = 256,256,256
PalFX.sinadd = 56,56,0,10
PalFX.invertall = 0
PalFX.color = 0
[State 0, Explod]
type = Explod
trigger1 = Time % 3 = 0
anim = 2011
sprPriority = 5
posType = P1
random = 80,80
pos = 0,0
vel = 0 -(Random / 4000.0), 0 - (Random / 4000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = .5,.5
ownpal = 1
[State 0, Explod]
type = Explod
trigger1 = Time % 3 = 0
anim = 2012
sprPriority = 5
posType = P1
random = 80,80
pos = 0,0
vel = 0 -(Random / 4000.0), 0 - (Random / 4000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = .5,.5
ownpal = 1
[State 2010]
type = TargetVelAdd
trigger1 = NumTarget > 0
trigger1 = Target,Alive = 1
trigger1 = Target,Pos Y < -480
trigger1 = NumHelper(2001)
y = .2
ID = -1
[State 2010]
type = AttackDist
trigger1 = 1
value = 0
[State 2010]
type = DestroySelf
trigger1 = Pos Y > 0
trigger1 = ScreenPos Y > 300
trigger2 = time > 600
trigger3 = MoveContact
just looking for a proper code for this kind of attack