//propellers underneath spring ball objects when Lua.SpringPropeller is set to 1 on the map header
freeslot("MT_SPRING_PR","S_SPRING_PR","spr_prpl")

mobjinfo[MT_SPRING_PR] = {
	spawnstate = S_SPRING_PR,
	flags = MF_NOGRAVITY|MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT
}
states[S_SPRING_PR] = {
	sprite = SPR_PRPL,
	frame = FF_PAPERSPRITE|A,
	tics = -1,
	nextstate = S_NULL
}

local function CreatePropeller(mo)
	if mapheaderinfo[gamemap].springpropeller == "true"
		local pr1 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_SPRING_PR)
		local pr2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_SPRING_PR)
		pr2.angle = ANGLE_90
		local pr3 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_SPRING_PR)
		pr3.angle = ANGLE_180
		local pr4 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_SPRING_PR)
		pr4.angle = ANGLE_180 + ANGLE_90
		
		pr1.target = mo
		pr2.target = mo
		pr3.target = mo
		pr4.target = mo
	end
end

addHook("MapThingSpawn", CreatePropeller, MT_YELLOWSPRINGBALL)
addHook("MapThingSpawn", CreatePropeller, MT_REDSPRINGBALL)

addHook("MobjThinker", function(mo)
	if not mo.target.valid P_KillMobj(mo) end
	local smo = mo.target
	
	P_TeleportMove(mo,smo.x,smo.y,smo.z)
	mo.angle = $ + ANG20 + ANG2
end, MT_SPRING_PR)