actor StarPlatform 15325
{
height 32
radius 24
scale 2.5
+FORCEYBILLBOARD
+NOGRAVITY
-SHOOTABLE
+SOLID
+THRUSPECIES
+THRUGHOST
+DONTBLAST
var int user_StartZ;
States
{
Spawn:
CSGB C 0 
CSGB C 0 A_SetUserVar("user_StartZ", z)
CSGB ABC 3
CSGB DEFGH 2
Goto Spawn2
Spawn2:
CSGB C 1 A_SpawnItemEx("StarPlatformDetect", 0, 0, 31)
CSGB C 0 A_JumpIfInventory("StarPlatformFlag",1,"FallDown")
Loop
FallDown:
CSGB C 0 A_ChangeVelocity(0, 0, -2, CVF_REPLACE)
CSGB C 1 A_SpawnItemEx("StarPlatformDetect", 0, 0, 31)
CSGB C 1 //A_JumpIf(z-floorz <=8, "Reset")
CSGB C 0 A_JumpIfInventory("StarPlatformFlag",1,"FallDown")
CSGB C 0 A_Stop
Goto RiseUp
RiseUp:
CSGB C 0 A_ChangeVelocity(0, 0, 5, CVF_REPLACE)
CSGB C 1 A_JumpIf(ceilingz-z <= 64, "Reset")
CSGB C 1 A_SpawnItemEx("StarPlatformDetect", 0, 0, 31)

CSGB C 0 A_JumpIfInventory("StarPlatformFlag",1,"FallDown")
Goto RiseUp
Reset:
CSGB C 0 A_Stop
CSGB C 0 A_SetTranslucent(0.0)
CSGB C 0 A_ChangeFlag("SOLID", FALSE)
CSGB C 1 A_ChangeVelocity(0, 0, user_StartZ-z, CVF_REPLACE)
CSGB C 0 A_Stop
CSGB CCCCC 1 A_FadeIn(0.03)
//CSGB C 65
CSGB C 55
Resetting:
CSGB C 5 
CSGB CCCCCCCCCC 1 A_LookEx(LOF_NOSOUNDCHECK,0,192,0,360,"Resetting")
CSGB C 0 A_SetTranslucent(1.0)
CSGB C 0 A_ChangeFlag("SOLID", TRUE)
CSGB ABC 3
CSGB DEFGH 2
Goto Spawn2
}
}

actor StarPlatformDetect
{
PROJECTILE
+LOOKALLAROUND
+SKYEXPLODE
+DONTREFLECT
+DONTBLAST
Speed 0
Damage (0)
radius 23
height 5
scale 2.5
States
{
Spawn:
TNT1 A 2
stop
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("StarPlatformFlag", 1)
stop
}
}

Actor StarPlatformFlag : Powerup
{
Powerup.duration 5
}

actor MiniSaturn 
{
PROJECTILE
Damage 0
+DONTSPLASH
+RIPPER
+BLOODLESSIMPACT
+CLIENTSIDEONLY
scale 2.5
+DONTBLAST
speed 20
-SOLID
+NOGRAVITY
States
{
Spawn:
MSAT ABCD 4
loop
}
}

