Fixed. I'm currently working on a way to have a projectile set p2 into state 53, since I think the overlapping helpers thing is inefficient (having to set the x distance depending on what team side you're on every time is a pain). I'll keep testing.
Edit: Meh. The stacking helpers thing won't be THAT bad... it's just a bit of positioning anyway.
Here's the code for the platforms. I still have to make the whole breaking platforms thing, but I don't think that'll be THAT bad. Everything's working well, a big thanks to everyone!
Statedef -2
Spoiler, click to toggle visibilty
[State -2, Fall from platform]
type = ChangeState
triggerall = pos y < 0
triggerall = stateno!=50
triggerall = stateno!=[170,3051]
triggerall = stateno!=[5020,5071]
trigger1 = (pos y > ((helper(8000), pos y) - 2)) && (pos y < ((helper(8000), pos y) + 2)) && abs(pos x - helper(8000),pos x)>=50
trigger2 = (pos y > ((helper(8001), pos y) - 2)) && (pos y < ((helper(8001), pos y) + 2)) && abs(pos x - helper(8001),pos x)>=50
value = 50
[State -2, Fall from platform getting hit]
type = ChangeState
triggerall = pos y < 0
triggerall = stateno!=50
triggerall = stateno!=[170,3051]
triggerall = stateno=[5020,5071]
triggerall = movetype = H
trigger1 = (pos y > ((helper(8000), pos y) - 2)) && (pos y < ((helper(8000), pos y) + 2)) && abs(pos x - helper(8000),pos x)>=50
trigger2 = (pos y > ((helper(8001), pos y) - 2)) && (pos y < ((helper(8001), pos y) + 2)) && abs(pos x - helper(8001),pos x)>=50
value = 5050
[State -2, Land on platform]
type = ChangeState
triggerall = vel y > 0
triggerall = stateno != [5020,5071]
triggerall = statetype = A && movetype != H
trigger1 = abs(pos y - helper(8000),pos y)<5 && abs(pos x - helper(8000),pos x)<=50
trigger2 = abs(pos y - helper(8001),pos y)<5 && abs(pos x - helper(8001),pos x)<=50
value = 53
[State -2, Land on platform when hurt]
type = ChangeState
triggerall = vel y > 0
triggerall = stateno = [5020,5071]
triggerall = movetype = H
trigger1 = abs(pos y - helper(8000),pos y)<5 && abs(pos x - helper(8000),pos x)<=50
trigger2 = abs(pos y - helper(8001),pos y)<5 && abs(pos x - helper(8001),pos x)<=50
value = 55
;Platform 1 ----------------
[State -2, Helper]
type = Helper
;triggerall = teamside = 1
trigger1 = numhelper(8000) = 0
helpertype = normal ;player
name = "Platform"
ID = 8000
stateno = 8000
pos = ifelse(teamside=1,0,320),-50
postype = back
facing = 1
;---------------------------
;Platform 2 ----------------
[State -2, Helper]
type = Helper
;triggerall = teamside = 1
trigger1 = numhelper(8001) = 0
helpertype = normal ;player
name = "Platform"
ID = 8001
stateno = 8001
pos = ifelse(teamside=1,300,20),-100
postype = back
facing = 1
;---------------------------
Platform 1 & 2 helpers
Spoiler, click to toggle visibilty
;Platform 1
[StateDef 8000]
type = S
movetype = U
physics = S
anim = 8000
sprpriority = -3
ctrl = 0
[State 0, NotHitBy]
type = NotHitBy
trigger1 = 1
value = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT
value2 = S,NA
time = -1
[State 0, DestroySelf]
type = DestroySelf
trigger1 = time = -1
;Platform 2
[StateDef 8001]
type = S
movetype = U
physics = S
anim = 8001
sprpriority = -3
ctrl = 0
[State 0, NotHitBy]
type = NotHitBy
trigger1 = 1
value = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT
value2 = S,NA
time = -1
[State 0, DestroySelf]
type = DestroySelf
trigger1 = time = -1
Custom land state
Spoiler, click to toggle visibilty
;===============================
;Land on Platform
[statedef 53]
type=s
physics=s
anim=53
velset=0,0
ctrl=0
[State 53, Stepping on platform 8000]
type = PosSet
trigger1 = abs(pos x - helper(8000),pos x)<50
trigger1 = abs(pos y - helper(8000),pos y)<5
trigger1 = pos y!=helper(8000),pos y
y = helper(8000),pos y
[State 53, Stepping on platform 8001]
type = PosSet
trigger1 = abs(pos x - helper(8001),pos x)<50
trigger1 = abs(pos y - helper(8001),pos y)<5
trigger1 = pos y!=helper(8001),pos y
y = helper(8001),pos y
[state 0]
type=changestate
trigger1=animtime=0
value=0
ctrl=1
Custom "land on the platform from getting hit in the air" state
Spoiler, click to toggle visibilty
;Hit Ground on Platform
[statedef 55]
type=l
movetype=h
physics=n
anim = 55
[State 0, PosSet]
type = PosSet
trigger1 = abs(pos y - helper(8000),pos y)<5 && abs(pos x - helper(8000),pos x)<=50
y = helper(8000),pos y
[State 0, PosSet]
type = PosSet
trigger1 = abs(pos y - helper(8001),pos y)<5 && abs(pos x - helper(8001),pos x)<=50
y = helper(8001),pos y
[state 0]
type=fallenvshake
trigger1=!time
[state 0] ;; save fall velocity
type=null;varset
trigger1=!time
sysvar(1)=floor(vel y)
[state 0]
type=velset
trigger1=!time
y=0
[state 0]
type=velmul
trigger1=!time
x=0.75
[state 0]
type=hitfalldamage
trigger1=time=3
[state 0]
type=changestate
trigger1=animtime=0
value=56
[statedef 56]
type=l
movetype=h
physics=n
[state 0]
type=changeanim
triggerall=!time
trigger1=(anim!=[5101,5109])
trigger2=!selfanimexist(5160+(anim%10))
value=5160
[state 0]
type=changeanim
triggerall=!time
trigger1=(anim=[5101,5109])
trigger1=selfanimexist(5160+(anim%10))
value=5160+(anim%10)
[state 0]
type=hitfallvel
trigger1=!time
; edited
[state 0] ; *new v1.1
type=posadd
trigger1=!time
x=-1
;; acceleration
[state 0]
type=veladd
trigger1=1
y=0.2
;---
;; hit ground (edited)
[state 0]
type=changestate
trigger1= pos y >= helper(8000),pos y
trigger2= pos y >= helper(8001),pos y
trigger2= pos y < helper(8000),pos y
value=57
[statedef 57]
type=l
movetype=h
physics=n
[state 0]
type=fallenvshake
trigger1=!time
;; for hit up/up-diag type (from state 5081)
[state 0]
type=changeanim
trigger1=selfanimexist(5110+(anim%10))
trigger1=(anim=[5081,5089])
value=5110+(anim%10)
persistent=0
;; hit ground anim (normal)
[state 0]
type=changeanim
triggerall=!time
triggerall=(anim!=[5110,5119]) ;;<-not already changed anim
trigger1=(anim!=[5161,5169])
trigger2=!selfanimexist(5170+(anim%10))
value=5170
;; hit ground anim (for hit up)
[state 0]
type=changeanim
triggerall=!time
triggerall=(anim!=[5110,5119]) ;;<-not already changed anim
trigger1=(anim=[5161,5169])
trigger1=selfanimexist(5170+(anim%10))
value=5170+(anim%10)
[state 0]
type=hitfalldamage
trigger1=!time
;---
[state 0] ;; *new v11 Get fall velocity
type=varset
trigger1=!time && gethitvar(fall.yvel)!=0
sysvar(1)=floor(vel y)
;---
[state 0]
type=velset
trigger1=!time
y=0
;; for hit up type
[state 0]
type=changeanim
triggerall=anim=[5171,5179]
triggerall=selfanimexist(5110+(anim%10))
trigger1=animtime=0
trigger2=sysvar(0) ;;<-sysvar(0)=1 ;;avoids hit ground anim
value=5110+(anim%10)
persistent=0
;; for normal
[state 0]
type=changeanim
triggerall=anim!=[5111,5119]
trigger1=animtime=0
trigger2=sysvar(0) ;;<-sysvar(0)=1 ;;avoids hit ground frame
value=5110
persistent=0
;; if just died
[state 0]
type=changestate
;;old; triggerall=!alive
triggerall=!alive && time>0
trigger1=animtime=0
trigger2=sysvar(0) ;;<-sysvar(0)=1 ;;avoids hit ground frame
trigger3=anim=[5110,5119]
value=5150
[state 0]
type=varset
;;old; trigger1=!time && sysvar(0)
trigger1=time>0 && sysvar(0)
sysvar(0)=0
;; friction
[state 0]
type=velmul
trigger1=1
x=0.85
;; friction
[state 0]
type=velset
trigger1=time>abs(vel x)<const(movement.down.friction.threshold)
;;@ trigger1=time>3
persistent=0
x=0
[state 0]
type=changestate
trigger1=time>42 ;; normal standing
value=5120
It'd be amazing if a ton of more people could work on platforming. Flat stages get a tad mundane after a while, and this really spices things up. Once again, thanks to everyone who contributed! I hope this helps people!