Okay, here it is, with stuff such as custom animations, helpers, sounds and explods removed, only the stuff that matters. You can see how the move works here.VIDEO [statedef 10706] type = S physics = N movetype = H anim = 10604 ctrl = 0 velset = 0,0 sprpriority = 4 [State 10706, VelSet] type = Veladd trigger1 = gametime%2 = 1 x = 0.3 [State 10706, VelSet] type = Veladd trigger1 = pos y < 0 y = 1 [State 10706, VelSet] type = VelSet trigger1 = pos y > 0 y = 0 [State 10706, ChangeState] type = ChangeState trigger1 = p2dist x =< 35 value = 10707 ctrl = 0 ;Recycle inhaler - Opponent gets swallowed [statedef 10707] type = S physics = S movetype = U sprpriority = 4 anim = -1 ctrl = 0 velset = 0,-6 [State 10707, PosAdd] type = PosAdd trigger1 = time = 1 y = -4 [State 10707, PosAdd] type = PosAdd trigger1 = time = 2 y = -3 [State 10707, PosAdd] type = PosAdd trigger1 = time = 3 y = -3 [State 10707, PosAdd] type = PosAdd trigger1 = time = 4 y = -2 [State 10707, PosAdd] type = PosAdd trigger1 = time = 5 y = -2 [State 10707, PosAdd] type = PosAdd trigger1 = time = 6 y = -1 ;shrink effect [State 10707, VarAdd] type = Varset trigger1 = time = 6 fv = 4 value = 0.90 [State 10707, VarAdd] type = Varset trigger1 = time = 5 fv = 4 value = 0.80 [State 10707, VarAdd] type = Varset trigger1 = time = 4 fv = 4 value = 0.65 [State 10707, VarAdd] type = Varset trigger1 = time = 3 fv = 4 value = 0.45 [State 10707, VarAdd] type = Varset trigger1 = time = 2 fv = 4 value = 0.20 [State 10707, VarAdd] type = Varset trigger1 = time = 1 fv = 4 value = 0.10 [State 10707, AngleDraw] type = AngleDraw trigger1 = time < 8 value = 0 scale = 1-fvar(4),1-fvar(4) [State 10707, AssertSpecial] type = AssertSpecial trigger1 = time > 7 flag = invisible [State 10707, PosSet] type = PosSet trigger1 = time > 7 x = enemy,pos x [State 10707, VelSet] type = VelSet trigger1 = pos y < -10 y = 2 [State 10707, VelSet] type = VelSet trigger1 = time > 10 x = 0 y = 0 [State 10707, NotHitBy] type = NotHitBy trigger1 = 1 value = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT [State 10707, ChangeState] type = ChangeState trigger1 = p2stateno = 10704 value = 10708 ctrl = 0 ;Recycle inhaler - Opponent gets blasted out [statedef 10708] type = S physics = N movetype = U anim = 10605 ctrl = 0 velset = -14 [State 10708, VarAdd] type = Varset trigger1 = !time fv = 4 value = 1 [State 10708, PlayerPush] type = PlayerPush trigger1 = 1 value = 0 [State 10708, PosSet] type = PosSet trigger1 = !time y = -39 [State 10708, NotHitBy] type = NotHitBy trigger1 = 1 value = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT [State 10708, ChangeState] type = ChangeState trigger1 = BackEdgeBodyDist <= 20 value = 10709 ctrl = 0 ;Recycle inhaler - Opponent gets crashed against wall [statedef 10709] type = A movetype= H physics = N ctrl = 0 velset = 2,-12 [State 10709, PosAdd] type = PosAdd trigger1 = !time y = 30 [State 10709, ChangeAnim2] type = ChangeAnim2 trigger1 = !time value = 5052 [State 10709, LifeAdd] type = LifeAdd trigger1 = !time value = -175 kill = 1 [state 10709, angledraw] type = angleDraw trigger1 = 1 [state 10709, angleadd] type = angleAdd trigger1 = gametime%2600 value = 2 [State 10709, Gravity] type = Gravity trigger1 = 1 [State 10709, Hit ground] type = SelfState trigger1 = Pos y >= 0 value = 5100 Also, I misunderstood the problem you had on the corner, I thought that it only happened when the opponent was near the thrower's corner, not the opposite. Therefore the values on those two trigger's should be lower, around 10 or 0, possibly even a negative value.