1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2024-12-28 23:06:38 +02:00

switch to repo tick_tack_trap

This commit is contained in:
danielmartin0 2024-10-01 14:06:55 +01:00 committed by Gerkiz
parent 7b17e3860e
commit dec985172b
2 changed files with 2092 additions and 2245 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,154 +0,0 @@
-- by mewmew
-- modified by Gerkiz
-- this fork by thesixthroc to use forces except 'enemy'
local Event = require('utils.event')
local Global = require('utils.global')
local traps = {}
Global.register(traps, function(t)
traps = t
end)
local tick_tacks = { '*tick*', '*tick*', '*tack*', '*tak*', '*tik*', '*tok*' }
local kaboom_weights = {
{ name = 'grenade', chance = 7 },
{ name = 'cluster-grenade', chance = 1 },
{ name = 'destroyer-capsule', chance = 1 },
{ name = 'defender-capsule', chance = 4 },
{ name = 'distractor-capsule', chance = 3 },
{ name = 'poison-capsule', chance = 2 },
{ name = 'explosive-uranium-cannon-projectile', chance = 3 },
{ name = 'explosive-cannon-projectile', chance = 5 },
}
local kabooms = {}
for _, t in pairs(kaboom_weights) do
for _ = 1, t.chance, 1 do
table.insert(kabooms, t.name)
end
end
local function create_flying_text(surface, position, text)
if not surface.valid then
return
end
for _, player in pairs(game.connected_players) do
if player.surface_index == surface.index then
player.create_local_flying_text({
position = position,
text = text,
color = { r = 0.75, g = 0.75, b = 0.75 },
})
end
end
if text == '...' then
return
end
surface.play_sound({ path = 'utility/armor_insert', position = position, volume_modifier = 0.75 })
end
local function create_kaboom(force_name, surface, position, name)
if not surface.valid then
return
end
local target = position
local speed = 0.5
if name == 'defender-capsule' or name == 'destroyer-capsule' or name == 'distractor-capsule' then
for _, player in pairs(game.connected_players) do
if player.surface_index == surface.index then
player.create_local_flying_text({
position = position,
text = '(((Sentries Engaging Target)))',
color = { r = 0.8, g = 0.0, b = 0.0 },
})
end
end
local nearest_player_unit =
surface.find_nearest_enemy({ position = position, max_distance = 128, force = force_name })
if nearest_player_unit then
target = nearest_player_unit.position
end
speed = 0.001
end
surface.create_entity({
name = name,
position = position,
force = force_name,
target = target,
speed = speed,
})
end
local function tick_tack_trap(force_name, surface, position)
if not surface then
return
end
if not surface.valid then
return
end
if not position then
return
end
if not position.x then
return
end
if not position.y then
return
end
local tick_tack_count = math.random(5, 9)
for t = 60, tick_tack_count * 60, 60 do
local tick = game.tick - (game.tick % 10) + t
if not traps[tick] then
traps[tick] = {}
end
if t < tick_tack_count * 60 then
traps[tick][#traps[tick] + 1] = {
callback = 'create_flying_text',
params = { surface, { x = position.x, y = position.y }, tick_tacks[math.random(1, #tick_tacks)] },
}
else
if math.random(1, 10) == 1 then
traps[tick][#traps[tick] + 1] = {
callback = 'create_flying_text',
params = { surface, { x = position.x, y = position.y }, '(☞ ͡° ͜ʖ ͡°)☞' },
}
else
traps[tick][#traps[tick] + 1] = {
callback = 'create_kaboom',
params = {
force_name,
surface,
{ x = position.x, y = position.y },
kabooms[math.random(1, #kabooms)],
},
}
end
end
end
end
local function on_tick()
if not traps[game.tick] then
return
end
for _, token in pairs(traps[game.tick]) do
local callback = token.callback
local params = token.params
if callback == 'create_kaboom' then
create_kaboom(params[1], params[2], params[3], params[4])
elseif callback == 'create_flying_text' then
create_flying_text(params[1], params[2], params[3])
end
end
traps[game.tick] = nil
end
Event.on_nth_tick(10, on_tick)
return tick_tack_trap