-- LUA Script - precede every function and global member with lowercase name of script + '_main' local U = require "scriptbank\\utillib" local Q = require "scriptbank\\quatlib" local rad = math.rad local deg = math.deg local merry_go_round_list = {} function merry_go_round_init( e ) Include( "utillib.lua" ) merry_go_round_list[ e ] = nil end -- 0.1 degree rotation in y axis local rotQuat = Q.FromEuler( 0, rad( 0.1 ), 0 ) function merry_go_round_main( e ) local de = merry_go_round_list[ e ] if de == nil then merry_go_round_list[ e ] = { state = 'init', timer = math.huge } return end if de.state == 'init' then -- register for dynamic entities if DE_Register == nil then return end -- twenty four blocks for i = 1, 24 do DE_Register( e, 'slabclean' ) end de.state = 'show' local Ent = g_Entity[ e ] de.quat = Q.FromEuler( rad( Ent.anglex ), rad( Ent.angley ), rad( Ent.anglez ) ) de.x, de.y, de.z = Ent.x, Ent.y, Ent.z -- wait 5 seconds de.timer = g_Time + 5000 return end if de.state == 'show' then DE_Show( e, 'slabclean' ) de.state = 'idle' end if de.state == 'idle' and g_Time > de.timer then -- apply rotation de.quat = Q.Mul( de.quat, rotQuat ) -- get new Euler angles local xa, ya, za = Q.ToEuler( de.quat ) -- reposition merry_go_round CollisionOff( e ) ResetRotation( e, deg( xa ), deg( ya ), deg( za ) ) CollisionOn( e ) end -- update 'attached' decals DE_Update( e, de.x, de.y, de.z, de.quat ) end