1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-08 00:39:30 +02:00

unit rolls

This commit is contained in:
MewMew 2019-10-08 06:54:42 +02:00
parent cfd18b617a
commit 7f14b8cd53
3 changed files with 72 additions and 41 deletions

View File

@ -179,9 +179,8 @@ function random_type_market(surface, position, rarity)
if #items > 0 then table.shuffle_table(items) end
local market = surface.create_entity({name = "market", position = position})
for i = 1, math.random(4, 10), 1 do
if items[i] then
market.add_market_item(items[i])
end
if not items[i] then break end
market.add_market_item(items[i])
end
return market
end

View File

@ -0,0 +1,67 @@
function wave_defense_roll_biter_name()
local max_chance = 0
for k, v in pairs(global.wave_defense.biter_raffle) do
max_chance = max_chance + v
end
local r = math.random(1, max_chance)
local current_chance = 0
for k, v in pairs(global.wave_defense.biter_raffle) do
current_chance = current_chance + v
if r <= current_chance then return k end
end
end
function wave_defense_set_biter_raffle(level)
global.wave_defense.biter_raffle = {
["small-biter"] = 1000 - level * 2,
["small-spitter"] = 1000 - level * 2,
["medium-biter"] = level,
["medium-spitter"] = level,
["big-biter"] = 0,
["big-spitter"] = 0,
["behemoth-biter"] = 0,
["behemoth-spitter"] = 0,
}
if level > 500 then
global.wave_defense.biter_raffle["big-biter"] = (level - 500) * 5
global.wave_defense.biter_raffle["big-spitter"] = (level - 500) * 5
end
if level > 800 then
global.wave_defense.biter_raffle["behemoth-biter"] = (level - 800) * 10
global.wave_defense.biter_raffle["behemoth-spitter"] = (level - 800) * 10
end
for k, v in pairs(global.wave_defense.biter_raffle) do
if global.wave_defense.biter_raffle[k] < 0 then global.wave_defense.biter_raffle[k] = 0 end
end
end
function wave_defense_roll_worm_name()
local max_chance = 0
for k, v in pairs(global.wave_defense.worm_raffle) do
max_chance = max_chance + v
end
local r = math.random(1, max_chance)
local current_chance = 0
for k, v in pairs(global.wave_defense.worm_raffle) do
current_chance = current_chance + v
if r <= current_chance then return k end
end
end
function wave_defense_set_worm_raffle(level)
global.wave_defense.worm_raffle = {
["small-worm-turret"] = 1000 - level * 2,
["medium-worm-turret"] = level,
["big-worm-turret"] = 0,
["behemoth-worm-turret"] = 0,
}
if level > 500 then
global.wave_defense.worm_raffle["big-worm-turret"] = (level - 500) * 5
end
if level > 800 then
global.wave_defense.worm_raffle["behemoth-worm-turret"] = (level - 800) * 10
end
for k, v in pairs(global.wave_defense.worm_raffle) do
if global.wave_defense.worm_raffle[k] < 0 then global.wave_defense.worm_raffle[k] = 0 end
end
end

View File

@ -1,3 +1,5 @@
require "modules.wave_defense.biter_rolls"
local math_random = math.random
local threat_values = {
["behemoth-biter"] = 10,
@ -16,43 +18,6 @@ local function debug_print(msg)
end
end
function wave_defense_roll_biter_name()
local max_chance = 0
for k, v in pairs(global.wave_defense.biter_raffle) do
max_chance = max_chance + v
end
local r = math.random(1, max_chance)
local current_chance = 0
for k, v in pairs(global.wave_defense.biter_raffle) do
current_chance = current_chance + v
if r <= current_chance then return k end
end
end
function wave_defense_set_biter_raffle(level)
global.wave_defense.biter_raffle = {
["small-biter"] = 1000 - level * 2,
["small-spitter"] = 1000 - level * 2,
["medium-biter"] = level,
["medium-spitter"] = level,
["big-biter"] = 0,
["big-spitter"] = 0,
["behemoth-biter"] = 0,
["behemoth-spitter"] = 0,
}
if level > 500 then
global.wave_defense.biter_raffle["big-biter"] = (level - 500) * 5
global.wave_defense.biter_raffle["big-spitter"] = (level - 500) * 5
end
if level > 800 then
global.wave_defense.biter_raffle["behemoth-biter"] = (level - 800) * 10
global.wave_defense.biter_raffle["behemoth-spitter"] = (level - 800) * 10
end
for k, v in pairs(global.wave_defense.biter_raffle) do
if global.wave_defense.biter_raffle[k] < 0 then global.wave_defense.biter_raffle[k] = 0 end
end
end
local function is_unit_valid(biter)
if not biter.entity then debug_print("is_unit_valid - Unit did no longer exist") return false end
if not biter.entity.valid then debug_print("is_unit_valid - Unit invalid") return false end
@ -336,7 +301,7 @@ function reset_wave_defense()
unit_groups = {},
unit_group_last_command = {},
unit_group_command_delay = 3600 * 5,
unit_group_command_step_length = 64,
unit_group_command_step_length = 96,
max_active_unit_groups = 6,
max_active_biters = 1024,
max_group_size = 256,