--!strict local world = require("@rave/world") local math3d = require("@rave/math") local task = require("@rave/task") local net = require("@rave/net") local state = require("@rave/state") local schema = require("@rave/schema") local matches = world.query { kind = "part", name = "Part0", } local source = assert(matches[1], "Could not find a brick named Part0") local RATE = 20 local LIFETIME = 20 local enabled = state.create( "brick-rain/enabled", true, schema.boolean() ) local set_enabled = net.event( "brick-rain/set-enabled", schema.boolean() ) set_enabled:connect(function(_player, value) enabled:set(value) end) while true do if enabled:get() then local brick = world.spawn { kind = "block", name = "BrickRain", position = source.position + math3d.vector3.new( math.random(-50, 50) / 10, -(source.size.y / 2 + 2), math.random(-50, 50) / 10 ), size = math3d.vector3.new( math.random(5, 15) / 10, math.random(5, 15) / 10, math.random(5, 15) / 10 ), physics = { enabled = true, bounciness = 0.4, }, } task.spawn(function() task.sleep(LIFETIME) brick:destroy() end) end task.sleep(1 / RATE) end