βοΈCombatService
Service for handling combat actions.
-- Game of red light green light (don't move when red!)
local lightIsGreen = false
-- Toggle from red to green and green to red
function swapLightColor()
local nextLightColorIsGreen = not lightIsGreen
local lightColor = "GREEN"
if not nextLightColorIsGreen then
lightColor = "RED"
end
MessageService.broadcast("Light changed: " .. lightColor .. "!")
-- Wait briefly before changing to "red"
if lightIsGreen then
task.wait(1)
end
-- Swap light color
lightIsGreen = nextLightColorIsGreen
end
function getLightWaitTime()
local waitTime = 1.5 + math.random() * 4
if lightIsGreen then
waitTime = 5 + math.random() * 5
end
return waitTime
end
-- Function to change light color on an interval
function startLightLoop()
while (task.wait(getLightWaitTime())) do
swapLightColor()
end
end
local lastPlayerPosition = {}
-- Function to constantly check if a player has moved
function startMovementLoop()
while task.wait(0.1) do
for i, player in PlayerService.getPlayers() do
local entity = player:getEntity()
if not entity then
lastPlayerPosition[player] = nil
continue
end
-- Check if player moved when light is red
if not lightIsGreen and lastPlayerPosition[player] ~= nil then
local distance = lastPlayerPosition[player] - entity:getPosition()
if distance.Magnitude > 3 then
CombatService.damage(entity, 100)
end
end
if lightIsGreen then
lastPlayerPosition[player] = entity:getPosition()
end
end
end
end
task.spawn(startLightLoop)
task.spawn(startMovementLoop)Functions
heal(entity: Entity, amount: number)
Last updated