mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-03-11 14:49:24 +02:00
junkyard > unearthing enemies
This commit is contained in:
parent
a9f5b4785e
commit
d8c4727b8c
@ -14,7 +14,7 @@ require "score"
|
||||
require "on_tick_schedule"
|
||||
|
||||
---- enable modules here ----
|
||||
--require "maps.tools.cheat_mode"
|
||||
require "maps.tools.cheat_mode"
|
||||
--require "maps.modules.hunger"
|
||||
--require "maps.modules.area_unlocked_on_rotated_entity"
|
||||
--require "maps.modules.fish_respawner"
|
||||
|
79
functions/unearthing_biters.lua
Normal file
79
functions/unearthing_biters.lua
Normal file
@ -0,0 +1,79 @@
|
||||
local math_random = math.random
|
||||
local table_insert = table.insert
|
||||
|
||||
local biter_table = {
|
||||
[1] = {"small-biter"},
|
||||
[2] = {"small-biter","small-biter","small-biter","small-biter","small-biter","medium-biter"},
|
||||
[3] = {"small-biter","small-biter","small-biter","small-biter","medium-biter","medium-biter"},
|
||||
[4] = {"small-biter","small-biter","small-biter","medium-biter","medium-biter","small-spitter"},
|
||||
[5] = {"small-biter","small-biter","medium-biter","medium-biter","medium-biter","small-spitter"},
|
||||
[6] = {"small-biter","small-biter","medium-biter","medium-biter","big-biter","small-spitter"},
|
||||
[7] = {"small-biter","small-biter","medium-biter","medium-biter","big-biter","medium-spitter"},
|
||||
[8] = {"small-biter","medium-biter","medium-biter","medium-biter","big-biter","medium-spitter"},
|
||||
[9] = {"small-biter","medium-biter","medium-biter","big-biter","big-biter","medium-spitter"},
|
||||
[10] = {"medium-biter","medium-biter","medium-biter","big-biter","big-biter","big-spitter"},
|
||||
[11] = {"medium-biter","medium-biter","big-biter","big-biter","big-biter","big-spitter"},
|
||||
[12] = {"medium-biter","big-biter","big-biter","big-biter","big-biter","big-spitter"},
|
||||
[13] = {"big-biter","big-biter","big-biter","big-biter","big-biter","big-spitter"},
|
||||
[14] = {"big-biter","big-biter","big-biter","big-biter","behemoth-biter","big-spitter"},
|
||||
[15] = {"big-biter","big-biter","big-biter","behemoth-biter","behemoth-biter","big-spitter"},
|
||||
[16] = {"big-biter","big-biter","big-biter","behemoth-biter","behemoth-biter","behemoth-spitter"},
|
||||
[17] = {"big-biter","big-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter"},
|
||||
[18] = {"big-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter"},
|
||||
[19] = {"behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter"},
|
||||
[20] = {"behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter","behemoth-spitter"}
|
||||
}
|
||||
|
||||
local function create_particles(surface, position, amount)
|
||||
for i = 1, amount, 1 do
|
||||
local m = math_random(6, 12)
|
||||
local m2 = m * 0.005
|
||||
|
||||
surface.create_entity({
|
||||
name = "stone-particle",
|
||||
position = position,
|
||||
frame_speed = 0.1,
|
||||
vertical_speed = 0.1,
|
||||
height = 0.1,
|
||||
movement = {m2 - (math_random(0, m) * 0.01), m2 - (math_random(0, m) * 0.01)}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local function spawn_biter(surface, position)
|
||||
local evolution = math.ceil(game.forces.enemy.evolution_factor * 20)
|
||||
local raffle = biter_table[evolution]
|
||||
local biter_name = raffle[math.random(1,#raffle)]
|
||||
local p = surface.find_non_colliding_position(biter_name, position, 8, 0.5)
|
||||
if not p then p = {x = position.x, y = position.y} end
|
||||
surface.create_entity({name = biter_name, position = p, force = "enemy"})
|
||||
end
|
||||
|
||||
local function unearthing_biters(surface, position, amount)
|
||||
if not surface then return end
|
||||
if not position then return end
|
||||
if not position.x then return end
|
||||
if not position.y then return end
|
||||
|
||||
local ticks = amount * 30
|
||||
ticks = ticks + 120
|
||||
for t = 1, ticks, 1 do
|
||||
if not global.on_tick_schedule[game.tick + t] then global.on_tick_schedule[game.tick + t] = {} end
|
||||
|
||||
global.on_tick_schedule[game.tick + t][#global.on_tick_schedule[game.tick + t] + 1] = {
|
||||
func = create_particles,
|
||||
args = {surface, position, 5}
|
||||
}
|
||||
|
||||
if t > 120 then
|
||||
if t % 30 == 29 then
|
||||
global.on_tick_schedule[game.tick + t][#global.on_tick_schedule[game.tick + t] + 1] = {
|
||||
func = spawn_biter,
|
||||
args = {surface, position}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return unearthing_biters
|
@ -37,7 +37,7 @@ local function spawn_worm(surface, position)
|
||||
surface.create_entity({name = worm_name, position = position})
|
||||
end
|
||||
|
||||
local function unburrowing_worm(surface, position)
|
||||
local function unearthing_worm(surface, position)
|
||||
if not surface then return end
|
||||
if not position then return end
|
||||
if not position.x then return end
|
||||
@ -60,4 +60,4 @@ local function unburrowing_worm(surface, position)
|
||||
end
|
||||
end
|
||||
|
||||
return unburrowing_worm
|
||||
return unearthing_worm
|
@ -5,7 +5,9 @@ require "maps.modules.satellite_score"
|
||||
require "maps.modules.mineable_wreckage_yields_scrap"
|
||||
require "maps.modules.spawners_contain_biters"
|
||||
require "maps.modules.biters_yield_coins"
|
||||
local unburrowing_worm = require "functions.unburrowing_worm"
|
||||
local unearthing_worm = require "functions.unearthing_worm"
|
||||
local unearthing_biters = require "functions.unearthing_biters"
|
||||
|
||||
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
simplex_noise = simplex_noise.d2
|
||||
@ -274,7 +276,7 @@ local function on_chunk_generated(event)
|
||||
end
|
||||
end
|
||||
else
|
||||
if math_random(1, 65536) == 1 then secret_shop(pos, surface) end
|
||||
if math_random(1, 98304) == 1 then secret_shop(pos, surface) end
|
||||
end
|
||||
end
|
||||
|
||||
@ -329,24 +331,38 @@ local function on_marked_for_deconstruction(event)
|
||||
end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
--local player = game.players[event.player_index]
|
||||
if not global.map_init_done then
|
||||
game.surfaces["nauvis"].ticks_per_day = game.surfaces["nauvis"].ticks_per_day * 2
|
||||
--game.surfaces["nauvis"].freeze_daytime = true
|
||||
global.map_init_done = true
|
||||
local player = game.players[event.player_index]
|
||||
if player.online_time == 0 then
|
||||
player.insert({name = "pistol", count = 1})
|
||||
player.insert({name = "firearm-magazine", count = 32})
|
||||
end
|
||||
|
||||
if global.map_init_done then return end
|
||||
game.surfaces["nauvis"].ticks_per_day = game.surfaces["nauvis"].ticks_per_day * 2
|
||||
global.map_init_done = true
|
||||
end
|
||||
|
||||
local function on_player_mined_entity(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.name ~= "mineable-wreckage" then return end
|
||||
if math_random(1,2) ~= 1 then return end
|
||||
unburrowing_worm(entity.surface, entity.position)
|
||||
|
||||
if math_random(1,32) == 1 then
|
||||
unearthing_biters(entity.surface, entity.position, math_random(4,12))
|
||||
end
|
||||
|
||||
if math_random(1,64) == 1 then
|
||||
unearthing_worm(entity.surface, entity.position)
|
||||
end
|
||||
end
|
||||
|
||||
local function on_entity_died(event)
|
||||
on_player_mined_entity(event)
|
||||
end
|
||||
|
||||
event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction)
|
||||
event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
event.add(defines.events.on_player_mined_entity, on_player_mined_entity)
|
||||
event.add(defines.events.on_entity_died, on_entity_died)
|
||||
event.add(defines.events.on_chunk_generated, on_chunk_generated)
|
||||
event.add(defines.events.on_chunk_charted, on_chunk_charted)
|
Loading…
x
Reference in New Issue
Block a user