1
0
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:
MewMew 2019-03-07 14:53:26 +01:00
parent a9f5b4785e
commit d8c4727b8c
4 changed files with 107 additions and 12 deletions

View File

@ -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"

View 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

View File

@ -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

View File

@ -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)