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

Fish Defender Map Update

This commit is contained in:
MewMew 2018-11-20 14:46:13 +01:00
parent 33ac5854dc
commit 0195279c31
6 changed files with 284 additions and 107 deletions

View File

@ -9,17 +9,17 @@ require "player_list"
require "poll" require "poll"
require "score" require "score"
--require "maps.tools.cheat_mode" require "maps.tools.cheat_mode"
---- enable maps here ---- ---- enable maps here ----
--require "maps.biter_battles" --require "maps.biter_battles"
--require "maps.cave_miner" --require "maps.cave_miner"
--require "maps.deep_jungle" --require "maps.deep_jungle"
--require "maps.lost_desert" --require "maps.lost_desert"
require "maps.labyrinth" --require "maps.labyrinth"
--require "maps.spaghettorio" --require "maps.spaghettorio"
--require "maps.spiral_troopers" --require "maps.spiral_troopers"
--require "maps.fish_defender" require "maps.fish_defender"
--require "maps.crossing" --require "maps.crossing"
--require "maps.empty_map" --require "maps.empty_map"
----------------------------- -----------------------------

View File

@ -3,11 +3,10 @@
local event = require 'utils.event' local event = require 'utils.event'
require "maps.fish_defender_map_intro" require "maps.fish_defender_map_intro"
require "maps.fish_defender_kaboomsticks" require "maps.fish_defender_kaboomsticks"
local market_items = require "maps.fish_defender_market_items"
local map_functions = require "maps.tools.map_functions" local map_functions = require "maps.tools.map_functions"
local math_random = math.random local math_random = math.random
local insert = table.insert local insert = table.insert
local wave_interval = 5400 local wave_interval = 3600
local function shuffle(tbl) local function shuffle(tbl)
local size = #tbl local size = #tbl
@ -24,7 +23,7 @@ local function create_wave_gui(player)
frame.style.maximal_height = 38 frame.style.maximal_height = 38
local wave_count = 0 local wave_count = 0
if global.wave_count then wave_count = global.wave_count / 2 end if global.wave_count then wave_count = global.wave_count end
local label = frame.add({ type = "label", caption = "Wave: " .. wave_count }) local label = frame.add({ type = "label", caption = "Wave: " .. wave_count })
label.style.font_color = {r=0.88, g=0.88, b=0.88} label.style.font_color = {r=0.88, g=0.88, b=0.88}
@ -42,22 +41,107 @@ local function create_wave_gui(player)
end end
local function get_biters() local threat_values = {
local surface = game.surfaces[1] ["small_biter"] = 1,
local biters_found = {} ["medium_biter"] = 4,
for x = 288, 8000, 32 do ["big_biter"] = 8,
if not surface.is_chunk_generated({math.ceil(x / 32, 0), 0}) then return biters_found end ["behemoth_biter"] = 16,
local area = { ["small_spitter"] = 1,
left_top = {x = x, y = -1024}, ["medium_spitter"] = 4,
right_bottom = {x = x + 32, y = 1024} ["big_spitter"] = 8,
} ["behemoth_spitter"] = 16
local entities = surface.find_entities_filtered({area = area, type = "unit", limit = global.wave_count}) }
for _, entity in pairs(entities) do
if #biters_found > global.wave_count then break end local function get_biter_initial_pool()
insert(biters_found, entity) local biter_pool = {}
end if game.forces.enemy.evolution_factor < 0.1 then
if #biters_found >= global.wave_count then return biters_found end biter_pool = {
{name = "small-biter", threat = threat_values.small_biter, weight = 3},
{name = "small-spitter", threat = threat_values.small_spitter, weight = 1}
}
return biter_pool
end end
if game.forces.enemy.evolution_factor < 0.25 then
biter_pool = {
{name = "small-biter", threat = threat_values.small_biter, weight = 10},
{name = "medium-biter", threat = threat_values.medium_biter, weight = 2},
{name = "small-spitter", threat = threat_values.small_spitter, weight = 5},
{name = "medium-spitter", threat = threat_values.medium_spitter, weight = 1}
}
return biter_pool
end
if game.forces.enemy.evolution_factor < 0.4 then
biter_pool = {
{name = "small-biter", threat = threat_values.small_biter, weight = 2},
{name = "medium-biter", threat = threat_values.medium_biter, weight = 8},
{name = "big-biter", threat = threat_values.big_biter, weight = 2},
{name = "small-spitter", threat = threat_values.small_spitter, weight = 1},
{name = "medium-spitter", threat = threat_values.medium_spitter, weight = 4},
{name = "big-spitter", threat = threat_values.big_spitter, weight = 1}
}
return biter_pool
end
if game.forces.enemy.evolution_factor < 0.6 then
biter_pool = {
{name = "small-biter", threat = threat_values.small_biter, weight = 2},
{name = "medium-biter", threat = threat_values.medium_biter, weight = 4},
{name = "big-biter", threat = threat_values.big_biter, weight = 8},
{name = "small-spitter", threat = threat_values.small_spitter, weight = 1},
{name = "medium-spitter", threat = threat_values.medium_spitter, weight = 2},
{name = "big-spitter", threat = threat_values.big_spitter, weight = 4}
}
return biter_pool
end
if game.forces.enemy.evolution_factor < 0.8 then
biter_pool = {
{name = "behemoth-biter", threat = threat_values.small_biter, weight = 2},
{name = "medium-biter", threat = threat_values.medium_biter, weight = 6},
{name = "big-biter", threat = threat_values.big_biter, weight = 10},
{name = "behemoth-spitter", threat = threat_values.small_spitter, weight = 1},
{name = "medium-spitter", threat = threat_values.medium_spitter, weight = 3},
{name = "big-spitter", threat = threat_values.big_spitter, weight = 5}
}
return biter_pool
end
if game.forces.enemy.evolution_factor <= 1 then
biter_pool = {
{name = "big-biter", threat = threat_values.big_biter, weight = 4},
{name = "behemoth-biter", threat = threat_values.behemoth_biter, weight = 2},
{name = "big-spitter", threat = threat_values.big_spitter, weight = 2},
{name = "behemoth-spitter", threat = threat_values.behemoth_spitter, weight = 1}
}
return biter_pool
end
end
local function get_biter_pool()
local surface = game.surfaces[1]
local biter_pool = get_biter_initial_pool()
local biter_raffle = {}
for _, biter_type in pairs(biter_pool) do
for x = 1, biter_type.weight, 1 do
insert(biter_raffle, {name = biter_type.name, threat = biter_type.threat})
end
end
return biter_raffle
end
local function spawn_biter_attack_group(pos, amount_of_biters)
if global.attack_wave_threat < 1 then return false end
local surface = game.surfaces[1]
local biter_pool = get_biter_pool()
local unit_group = surface.create_unit_group({position=pos})
while global.attack_wave_threat > 0 do
biter_pool = shuffle(biter_pool)
global.attack_wave_threat = global.attack_wave_threat - biter_pool[1].threat
local valid_pos = surface.find_non_colliding_position(biter_pool[1].name, pos, 50, 0.5)
unit_group.add_member(surface.create_entity({name = biter_pool[1].name, position = valid_pos}))
amount_of_biters = amount_of_biters - 1
if amount_of_biters == 0 then break end
end
return unit_group
end end
local function biter_attack_wave() local function biter_attack_wave()
@ -65,16 +149,17 @@ local function biter_attack_wave()
local surface = game.surfaces[1] local surface = game.surfaces[1]
if not global.wave_count then if not global.wave_count then
global.wave_count = 2 global.wave_count = 1
else else
global.wave_count = global.wave_count + 2 global.wave_count = global.wave_count + 1
end end
global.attack_wave_threat = global.wave_count * 5
local evolution = (global.wave_count / 2) * 0.0025
local evolution = global.wave_count * 0.00125
if evolution > 1 then evolution = 1 end if evolution > 1 then evolution = 1 end
game.forces.enemy.evolution_factor = evolution game.forces.enemy.evolution_factor = evolution
if game.forces.enemy.evolution_factor > 0.9 then if game.forces.enemy.evolution_factor > 0.98 then
if not global.endgame_modifier then if not global.endgame_modifier then
global.endgame_modifier = 0.01 global.endgame_modifier = 0.01
game.print("Endgame enemy evolution reached. Biter damage is rising...", {r = 0.7, g = 0.1, b = 0.1}) game.print("Endgame enemy evolution reached. Biter damage is rising...", {r = 0.7, g = 0.1, b = 0.1})
@ -83,63 +168,108 @@ local function biter_attack_wave()
end end
end end
--game.print("Wave " .. tostring(global.wave_count / 2) .. " incoming!", {r = 0.9, g = 0.05, b = 0.4})
local group_coords = {
{spawn = {x = 256, y = 0}, target = {x = 0, y = 0}}
}
local number_of_groups = 1
local spawn_x = 242 local spawn_x = 242
if global.wave_count > 50 then local group_coords = {
group_coords = {
{spawn = {x = spawn_x, y = -160}, target = {x = -32, y = -64}}, {spawn = {x = spawn_x, y = -160}, target = {x = -32, y = -64}},
{spawn = {x = spawn_x, y = -128}, target = {x = -32, y = -64}}, {spawn = {x = spawn_x, y = -128}, target = {x = -32, y = -48}},
{spawn = {x = spawn_x, y = -96}, target = {x = -32, y = -48}}, {spawn = {x = spawn_x, y = -96}, target = {x = -32, y = -36}},
{spawn = {x = spawn_x, y = -64}, target = {x = -32, y = -32}}, {spawn = {x = spawn_x, y = -64}, target = {x = -8, y = -24}},
{spawn = {x = spawn_x, y = -32}, target = {x = -32, y = -16}}, {spawn = {x = spawn_x, y = -32}, target = {x = -8, y = -12}},
{spawn = {x = spawn_x, y = 0}, target = {x = -32, y = 0}}, {spawn = {x = spawn_x, y = 0}, target = {x = -8, y = 0}},
{spawn = {x = spawn_x, y = 32}, target = {x = -32, y = 16}}, {spawn = {x = spawn_x, y = 32}, target = {x = -8, y = 12}},
{spawn = {x = spawn_x, y = 64}, target = {x = -32, y = 32}}, {spawn = {x = spawn_x, y = 64}, target = {x = -8, y = 24}},
{spawn = {x = spawn_x, y = 96}, target = {x = -32, y = 48}}, {spawn = {x = spawn_x, y = 96}, target = {x = -32, y = 36}},
{spawn = {x = spawn_x, y = 128}, target = {x = -32, y = 64}}, {spawn = {x = spawn_x, y = 128}, target = {x = -32, y = 48}},
{spawn = {x = spawn_x, y = 160}, target = {x = -32, y = 64}} {spawn = {x = spawn_x, y = 160}, target = {x = -32, y = 64}}
} }
number_of_groups = math.ceil(global.wave_count / 125, 0)
if number_of_groups > #group_coords then number_of_groups = #group_coords end
end
group_coords = shuffle(group_coords) group_coords = shuffle(group_coords)
local biters = get_biters() local max_group_size = 25 * math.ceil(global.wave_count / 100)
if max_group_size > 300 then max_group_size = 300 end
local max_group_size = math.ceil(global.wave_count / number_of_groups, 0) if global.wave_count < 35 then max_group_size = 200 end
if max_group_size > 150 then max_group_size = 150 end
for i = 1, #group_coords, 1 do
local biter_counter = 0 local biter_squad = spawn_biter_attack_group(group_coords[i].spawn, max_group_size)
local biter_attack_groups = {} if biter_squad == false then return end
for i = 1, number_of_groups, 1 do
if biter_counter > global.wave_count then break end if global.wave_count < 35 then
biter_attack_groups[i] = surface.create_unit_group({position=group_coords[i].spawn}) biter_squad.set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy})
for x = 1, max_group_size, 1 do
biter_counter = biter_counter + 1
if biter_counter > global.wave_count then break end
if not biters[biter_counter] then break end
biter_attack_groups[i].add_member(biters[biter_counter])
end
if number_of_groups == 1 then
biter_attack_groups[i].set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy})
else else
if math_random(1,6) == 1 then if math_random(1,6) == 1 then
biter_attack_groups[i].set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy}) biter_squad.set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy})
else else
biter_attack_groups[i].set_command({type=defines.command.attack_area, destination=group_coords[i].target, radius=12, distraction=defines.distraction.by_anything}) biter_squad.set_command({type=defines.command.attack_area, destination=group_coords[i].target, radius=12, distraction=defines.distraction.by_anything})
end end
end end
end end
end end
local function refresh_market_offers()
if not global.market then return end
for i = 1, 100, 1 do
local a = global.market.remove_market_item(1)
if a == false then break end
end
local str1 = "Turret Slot for " .. tostring(global.entity_limits["gun-turret"].limit * global.entity_limits["gun-turret"].slot_price)
str1 = str1 .. " Coins."
local str2 = "Laser Turret Slot for " .. tostring(global.entity_limits["laser-turret"].limit * global.entity_limits["laser-turret"].slot_price)
str2 = str2 .. " Coins."
local str3 = "Landmine Slot for " .. tostring(global.entity_limits["land-mine"].limit * global.entity_limits["land-mine"].slot_price)
str3 = str3 .. " Coins."
local market_items = {
{price = {}, offer = {type = 'nothing', effect_description = str1}},
{price = {}, offer = {type = 'nothing', effect_description = str2}},
{price = {}, offer = {type = 'nothing', effect_description = str3}},
{price = {{"coin", 3}}, offer = {type = 'give-item', item = "raw-fish", count = 1}},
{price = {{"coin", 1}}, offer = {type = 'give-item', item = 'raw-wood', count = 4}},
{price = {{"coin", 1}}, offer = {type = 'give-item', item = 'explosives', count = 4}},
{price = {{"coin", 10}}, offer = {type = 'give-item', item = 'grenade', count = 1}},
{price = {{"coin", 60}}, offer = {type = 'give-item', item = 'cluster-grenade', count = 1}},
{price = {{"coin", 4}}, offer = {type = 'give-item', item = 'land-mine', count = 1}},
{price = {{"coin", 80}}, offer = {type = 'give-item', item = 'car', count = 1}},
{price = {{"coin", 650}}, offer = {type = 'give-item', item = 'tank', count = 1}},
{price = {{"coin", 6}}, offer = {type = 'give-item', item = 'cannon-shell', count = 1}},
{price = {{"coin", 12}}, offer = {type = 'give-item', item = 'explosive-cannon-shell', count = 1}},
{price = {{"coin", 75}}, offer = {type = 'give-item', item = 'gun-turret', count = 1}},
{price = {{"coin", 750}}, offer = {type = 'give-item', item = 'laser-turret', count = 1}},
{price = {{"coin", 1}}, offer = {type = 'give-item', item = 'firearm-magazine', count = 1}},
{price = {{"coin", 4}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine', count = 1}},
{price = {{"coin", 3}}, offer = {type = 'give-item', item = 'shotgun-shell', count = 1}},
{price = {{"coin", 7}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 1}},
{price = {{"coin", 50}}, offer = {type = 'give-item', item = "submachine-gun", count = 1}},
{price = {{"coin", 250}}, offer = {type = 'give-item', item = 'combat-shotgun', count = 1}},
{price = {{"coin", 500}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}},
{price = {{"coin", 35}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 1}},
{price = {{"coin", 125}}, offer = {type = 'give-item', item = 'rocket-launcher', count = 1}},
{price = {{"coin", 4}}, offer = {type = 'give-item', item = 'rocket', count = 1}},
{price = {{"coin", 8}}, offer = {type = 'give-item', item = 'explosive-rocket', count = 1}},
{price = {{"coin", 1000}}, offer = {type = 'give-item', item = 'atomic-bomb', count = 1}},
{price = {{"coin", 150}}, offer = {type = 'give-item', item = 'railgun', count = 1}},
{price = {{"coin", 5}}, offer = {type = 'give-item', item = 'railgun-dart', count = 1}},
{price = {{"coin", 40}}, offer = {type = 'give-item', item = 'poison-capsule', count = 1}},
{price = {{"coin", 8}}, offer = {type = 'give-item', item = 'defender-capsule', count = 1}},
{price = {{"coin", 10}}, offer = {type = 'give-item', item = 'light-armor', count = 1}},
{price = {{"coin", 150}}, offer = {type = 'give-item', item = 'heavy-armor', count = 1}},
{price = {{"coin", 350}}, offer = {type = 'give-item', item = 'modular-armor', count = 1}},
{price = {{"coin", 1500}}, offer = {type = 'give-item', item = 'power-armor', count = 1}},
{price = {{"coin", 2500}}, offer = {type = 'give-item', item = 'fusion-reactor-equipment', count = 1}},
{price = {{"coin", 100}}, offer = {type = 'give-item', item = 'battery-equipment', count = 1}},
{price = {{"coin", 75}}, offer = {type = 'give-item', item = 'solar-panel-equipment', count = 1}},
{price = {{"coin", 200}}, offer = {type = 'give-item', item = 'energy-shield-equipment', count = 1}},
{price = {{"coin", 175}}, offer = {type = 'give-item', item = 'exoskeleton-equipment', count = 1}},
{price = {{"coin", 125}}, offer = {type = 'give-item', item = 'night-vision-equipment', count = 1}},
{price = {{"coin", 500}}, offer = {type = 'give-item', item = 'belt-immunity-equipment', count = 1}},
{price = {{"coin", 250}}, offer = {type = 'give-item', item = 'personal-roboport-equipment', count = 1}},
{price = {{"coin", 40}}, offer = {type = 'give-item', item = 'construction-robot', count = 1}}
}
for _, item in pairs(market_items) do
global.market.add_market_item(item)
end
end
local function get_sorted_list(column_name, score_list) local function get_sorted_list(column_name, score_list)
for x = 1, #score_list, 1 do for x = 1, #score_list, 1 do
for y = 1, #score_list, 1 do for y = 1, #score_list, 1 do
@ -405,27 +535,28 @@ local function on_player_joined_game(event)
local pos = surface.find_non_colliding_position("player",{4, 0}, 50, 1) local pos = surface.find_non_colliding_position("player",{4, 0}, 50, 1)
game.players[1].teleport(pos, surface) game.players[1].teleport(pos, surface)
local pos = surface.find_non_colliding_position("market",{0, 0}, 50, 1) global.entity_limits = {
["gun-turret"] = {placed = 1, limit = 1, str = "gun turret", slot_price = 100},
["laser-turret"] = {placed = 0, limit = 1, str = "laser turret", slot_price = 350},
["flamethrower-turret"] = {placed = 0, limit = 0, str = "flamethrower turret", slot_price = 100},
["land-mine"] = {placed = 0, limit = 5, str = "landmine", slot_price = 1}
}
local pos = surface.find_non_colliding_position("market",{0, 0}, 50, 1)
global.market = surface.create_entity({name = "market", position = pos, force = "player"}) global.market = surface.create_entity({name = "market", position = pos, force = "player"})
global.market.minable = false global.market.minable = false
for _, item in pairs(market_items) do refresh_market_offers()
global.market.add_market_item(item)
end
local radius = 512 local pos = surface.find_non_colliding_position("gun-turret",{4, 1}, 50, 1)
local turret = surface.create_entity({name = "gun-turret", position = pos, force = "player"})
turret.insert({name = "firearm-magazine", count = 32})
local radius = 256
game.forces.player.chart(game.players[1].surface,{{x = -1 * radius, y = -1 * radius}, {x = radius, y = radius}}) game.forces.player.chart(game.players[1].surface,{{x = -1 * radius, y = -1 * radius}, {x = radius, y = radius}})
surface.create_entity({name = "electric-beam", position = {160, -95}, source = {160, -95}, target = {160,96}}) surface.create_entity({name = "electric-beam", position = {160, -95}, source = {160, -95}, target = {160,96}})
game.players[1].insert({name = "gun-turret", count = 1})
global.entity_limits = {
["gun-turret"] = {placed = 0, limit = 7, str = "gun turret"},
["laser-turret"] = {placed = 0, limit = 3, str = "laser turret"},
["flamethrower-turret"] = {placed = 0, limit = 1, str = "flamethrower turret"},
["land-mine"] = {placed = 0, limit = 250, str = "landmine"}
}
global.fish_defense_init_done = true global.fish_defense_init_done = true
end end
@ -551,10 +682,14 @@ local function on_chunk_generated(event)
local tile = surface.get_tile(pos) local tile = surface.get_tile(pos)
if tile.name ~= "out-of-map" then if tile.name ~= "out-of-map" then
insert(tiles, {name = "dirt-6", position = pos}) if pos.x > 312 then
end insert(tiles, {name = "out-of-map", position = pos})
else
if left_top.x > 256 and math_random(1,32) == 1 then insert(tiles, {name = "dirt-6", position = pos})
end
if pos.x > 296 and pos.x < 312 and math_random(1,64) == 1 then
if surface.can_place_entity({name = "biter-spawner", force = "enemy", position = pos}) then if surface.can_place_entity({name = "biter-spawner", force = "enemy", position = pos}) then
if math_random(1,4) == 1 then if math_random(1,4) == 1 then
surface.create_entity({name = "spitter-spawner", force = "enemy", position = pos}) surface.create_entity({name = "spitter-spawner", force = "enemy", position = pos})
@ -562,7 +697,8 @@ local function on_chunk_generated(event)
surface.create_entity({name = "biter-spawner", force = "enemy", position = pos}) surface.create_entity({name = "biter-spawner", force = "enemy", position = pos})
end end
end end
end end
end
end end
end end
surface.set_tiles(tiles, true) surface.set_tiles(tiles, true)
@ -629,6 +765,9 @@ local function on_tick()
create_wave_gui(player) create_wave_gui(player)
end end
end end
if game.tick % 240 == 0 then
game.forces.player.chart(game.players[1].surface,{{x = 0, y = -256}, {x = 288, y = 256}})
end
end end
if game.tick % wave_interval == wave_interval - 1 then if game.tick % wave_interval == wave_interval - 1 then
@ -662,8 +801,41 @@ local function on_robot_mined_entity(event)
global.entity_limits[event.entity.name].placed = global.entity_limits[event.entity.name].placed - 1 global.entity_limits[event.entity.name].placed = global.entity_limits[event.entity.name].placed - 1
end end
end end
local function on_market_item_purchased(event)
local player = game.players[event.player_index]
local market = event.market
local offer_index = event.offer_index
local offers = market.get_market_items()
local bought_offer = offers[offer_index].offer
if bought_offer.type ~= "nothing" then return end
local slot_upgrade_offers = {
[1] = {"gun-turret", "gun turret"},
[2] = {"laser-turret", "gun turret"},
[3] = {"land-mine", "land mine"}
}
for x = 1, 3, 1 do
if offer_index == x then
local price = global.entity_limits[slot_upgrade_offers[x][1]].limit * global.entity_limits[slot_upgrade_offers[x][1]].slot_price
local coins_removed = player.remove_item({name = "coin", count = price})
if coins_removed ~= price then
if coins_removed > 0 then
player.insert({name = "coin", count = coins_removed})
end
player.print("Not enough coins.", {r = 0.22, g = 0.77, b = 0.44})
return
end
global.entity_limits[slot_upgrade_offers[x][1]].limit = global.entity_limits[slot_upgrade_offers[x][1]].limit + 1
game.print(player.name .. " has bought a " .. slot_upgrade_offers[x][2] .. " slot for " .. price .. " coins!", {r = 0.22, g = 0.77, b = 0.44})
refresh_market_offers()
end
end
end
event.add(defines.events.on_tick, on_tick) event.add(defines.events.on_tick, on_tick)
event.add(defines.events.on_market_item_purchased, on_market_item_purchased)
event.add(defines.events.on_player_changed_position, on_player_changed_position) event.add(defines.events.on_player_changed_position, on_player_changed_position)
event.add(defines.events.on_built_entity, on_built_entity) event.add(defines.events.on_built_entity, on_built_entity)
event.add(defines.events.on_robot_built_entity, on_robot_built_entity) event.add(defines.events.on_robot_built_entity, on_robot_built_entity)

View File

@ -1,3 +1,7 @@
0.10
biter waves complete rework
turret slots can now be purchased in the market
0.09 0.09
biter wave fixes biter wave fixes
new turret and land mine limits new turret and land mine limits

View File

@ -1,39 +1,40 @@
local items = { local items = {
--{price = {{"coin", 50}}, offer = {type = 'nothing', effect_description = 'Buy Turret Slot'}}, {price = {}, offer = {type = 'nothing', effect_description = 'Buy Turret Slot for 100 Coins.'}},
--{price = {{"coin", 250}}, offer = {type = 'nothing', effect_description = 'Buy Laser Turret Slot'}}, {price = {}, offer = {type = 'nothing', effect_description = 'Buy Laser Turret Slot'}},
--{price = {{"coin", 10}}, offer = {type = 'nothing', effect_description = 'Buy Mine Slot'}}, {price = {}, offer = {type = 'nothing', effect_description = 'Buy Mine Slot'}},
{price = {{"coin", 3}}, offer = {type = 'give-item', item = "raw-fish", count = 1}}, {price = {{"coin", 3}}, offer = {type = 'give-item', item = "raw-fish", count = 1}},
{price = {{"coin", 1}}, offer = {type = 'give-item', item = 'raw-wood', count = 1}}, {price = {{"coin", 1}}, offer = {type = 'give-item', item = 'raw-wood', count = 4}},
{price = {{"coin", 1}}, offer = {type = 'give-item', item = 'explosives', count = 2}}, {price = {{"coin", 1}}, offer = {type = 'give-item', item = 'explosives', count = 4}},
{price = {{"coin", 10}}, offer = {type = 'give-item', item = 'grenade', count = 1}}, {price = {{"coin", 10}}, offer = {type = 'give-item', item = 'grenade', count = 1}},
{price = {{"coin", 60}}, offer = {type = 'give-item', item = 'cluster-grenade', count = 1}}, {price = {{"coin", 60}}, offer = {type = 'give-item', item = 'cluster-grenade', count = 1}},
{price = {{"coin", 8}}, offer = {type = 'give-item', item = 'land-mine', count = 1}}, {price = {{"coin", 4}}, offer = {type = 'give-item', item = 'land-mine', count = 1}},
{price = {{"coin", 80}}, offer = {type = 'give-item', item = 'car', count = 1}}, {price = {{"coin", 80}}, offer = {type = 'give-item', item = 'car', count = 1}},
{price = {{"coin", 650}}, offer = {type = 'give-item', item = 'tank', count = 1}}, {price = {{"coin", 650}}, offer = {type = 'give-item', item = 'tank', count = 1}},
{price = {{"coin", 6}}, offer = {type = 'give-item', item = 'cannon-shell', count = 1}}, {price = {{"coin", 6}}, offer = {type = 'give-item', item = 'cannon-shell', count = 1}},
{price = {{"coin", 12}}, offer = {type = 'give-item', item = 'explosive-cannon-shell', count = 1}}, {price = {{"coin", 12}}, offer = {type = 'give-item', item = 'explosive-cannon-shell', count = 1}},
{price = {{"coin", 75}}, offer = {type = 'give-item', item = 'gun-turret', count = 1}}, {price = {{"coin", 75}}, offer = {type = 'give-item', item = 'gun-turret', count = 1}},
{price = {{"coin", 750}}, offer = {type = 'give-item', item = 'laser-turret', count = 1}}, {price = {{"coin", 750}}, offer = {type = 'give-item', item = 'laser-turret', count = 1}},
{price = {{"coin", 3}}, offer = {type = 'give-item', item = 'firearm-magazine', count = 1}}, {price = {{"coin", 1}}, offer = {type = 'give-item', item = 'firearm-magazine', count = 1}},
{price = {{"coin", 7}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine', count = 1}}, {price = {{"coin", 4}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine', count = 1}},
{price = {{"coin", 4}}, offer = {type = 'give-item', item = 'shotgun-shell', count = 1}}, {price = {{"coin", 3}}, offer = {type = 'give-item', item = 'shotgun-shell', count = 1}},
{price = {{"coin", 8}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 1}}, {price = {{"coin", 7}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 1}},
{price = {{"coin", 50}}, offer = {type = 'give-item', item = "submachine-gun", count = 1}}, {price = {{"coin", 50}}, offer = {type = 'give-item', item = "submachine-gun", count = 1}},
{price = {{"coin", 250}}, offer = {type = 'give-item', item = 'combat-shotgun', count = 1}}, {price = {{"coin", 250}}, offer = {type = 'give-item', item = 'combat-shotgun', count = 1}},
{price = {{"coin", 500}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}}, {price = {{"coin", 500}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}},
{price = {{"coin", 35}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 1}}, {price = {{"coin", 35}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 1}},
{price = {{"coin", 125}}, offer = {type = 'give-item', item = 'rocket-launcher', count = 1}}, {price = {{"coin", 125}}, offer = {type = 'give-item', item = 'rocket-launcher', count = 1}},
{price = {{"coin", 5}}, offer = {type = 'give-item', item = 'rocket', count = 1}}, {price = {{"coin", 4}}, offer = {type = 'give-item', item = 'rocket', count = 1}},
{price = {{"coin", 8}}, offer = {type = 'give-item', item = 'explosive-rocket', count = 1}}, {price = {{"coin", 8}}, offer = {type = 'give-item', item = 'explosive-rocket', count = 1}},
{price = {{"coin", 750}}, offer = {type = 'give-item', item = 'atomic-bomb', count = 1}}, {price = {{"coin", 1000}}, offer = {type = 'give-item', item = 'atomic-bomb', count = 1}},
{price = {{"coin", 150}}, offer = {type = 'give-item', item = 'railgun', count = 1}}, {price = {{"coin", 150}}, offer = {type = 'give-item', item = 'railgun', count = 1}},
{price = {{"coin", 10}}, offer = {type = 'give-item', item = 'railgun-dart', count = 1}}, {price = {{"coin", 5}}, offer = {type = 'give-item', item = 'railgun-dart', count = 1}},
{price = {{"coin", 40}}, offer = {type = 'give-item', item = 'poison-capsule', count = 1}}, {price = {{"coin", 40}}, offer = {type = 'give-item', item = 'poison-capsule', count = 1}},
{price = {{"coin", 8}}, offer = {type = 'give-item', item = 'defender-capsule', count = 1}}, {price = {{"coin", 8}}, offer = {type = 'give-item', item = 'defender-capsule', count = 1}},
{price = {{"coin", 10}}, offer = {type = 'give-item', item = 'light-armor', count = 1}}, {price = {{"coin", 10}}, offer = {type = 'give-item', item = 'light-armor', count = 1}},
{price = {{"coin", 150}}, offer = {type = 'give-item', item = 'heavy-armor', count = 1}}, {price = {{"coin", 150}}, offer = {type = 'give-item', item = 'heavy-armor', count = 1}},
{price = {{"coin", 350}}, offer = {type = 'give-item', item = 'modular-armor', count = 1}}, {price = {{"coin", 350}}, offer = {type = 'give-item', item = 'modular-armor', count = 1}},
{price = {{"coin", 1500}}, offer = {type = 'give-item', item = 'power-armor', count = 1}}, {price = {{"coin", 1500}}, offer = {type = 'give-item', item = 'power-armor', count = 1}},
{price = {{"coin", 2500}}, offer = {type = 'give-item', item = 'fusion-reactor-equipment', count = 1}},
{price = {{"coin", 100}}, offer = {type = 'give-item', item = 'battery-equipment', count = 1}}, {price = {{"coin", 100}}, offer = {type = 'give-item', item = 'battery-equipment', count = 1}},
{price = {{"coin", 75}}, offer = {type = 'give-item', item = 'solar-panel-equipment', count = 1}}, {price = {{"coin", 75}}, offer = {type = 'give-item', item = 'solar-panel-equipment', count = 1}},
{price = {{"coin", 200}}, offer = {type = 'give-item', item = 'energy-shield-equipment', count = 1}}, {price = {{"coin", 200}}, offer = {type = 'give-item', item = 'energy-shield-equipment', count = 1}},

View File

@ -6,7 +6,7 @@ function cheat_mode()
game.players[1].insert({name="personal-laser-defense-equipment", count=8}) game.players[1].insert({name="personal-laser-defense-equipment", count=8})
game.players[1].insert({name="rocket-launcher"}) game.players[1].insert({name="rocket-launcher"})
game.players[1].insert({name="explosive-rocket", count=200}) game.players[1].insert({name="explosive-rocket", count=200})
game.players[1].insert({name="coin", count = 1000})
game.players[1].insert({name="loader"}) game.players[1].insert({name="loader"})
game.players[1].insert({name="fast-loader"}) game.players[1].insert({name="fast-loader"})
game.players[1].insert({name="express-loader"}) game.players[1].insert({name="express-loader"})

View File

@ -63,13 +63,13 @@ f.draw_smoothed_out_ore_circle = function(position, name, surface, radius, richn
if not surface then return end if not surface then return end
if not radius then return end if not radius then return end
if not richness then return end if not richness then return end
local math_random = math.random local math_random = math.random
local seed = game.surfaces[1].map_gen_settings.seed
local noise_seed_add = 25000 local noise_seed_add = 25000
local richness_part = richness / radius local richness_part = richness / radius
for y = radius*-1, radius, 1 do for y = radius*-1, radius, 1 do
for x = radius*-1, radius, 1 do for x = radius*-1, radius, 1 do
local pos = {x = x + position.x, y = y + position.y} local pos = {x = x + position.x, y = y + position.y}
local seed = game.surfaces[1].map_gen_settings.seed
local noise_1 = simplex_noise(pos.x * 0.08, pos.y * 0.08, seed) local noise_1 = simplex_noise(pos.x * 0.08, pos.y * 0.08, seed)
seed = seed + noise_seed_add seed = seed + noise_seed_add
local noise_2 = simplex_noise(pos.x * 0.15, pos.y * 0.15, seed) local noise_2 = simplex_noise(pos.x * 0.15, pos.y * 0.15, seed)