1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2024-12-26 22:56:43 +02:00

Other various fixes and changes

This commit is contained in:
Gerkiz 2023-05-26 16:24:22 +02:00
parent ce7abbe0e7
commit cf6a6141dc
11 changed files with 203 additions and 164 deletions

View File

@ -289,7 +289,7 @@ local function protect_entities(data)
local check_heavy_damage = Public.get('check_heavy_damage')
if check_heavy_damage then
if entity.type == 'simple-entity' and dmg >= 500 then
if (entity.type == 'simple-entity' or entity.type == 'simple-entity-with-owner') and dmg >= 500 then
entity.health = entity.health + dmg
end
end
@ -313,7 +313,7 @@ local function protect_entities(data)
local carriages_numbers = Public.get('carriages_numbers')
if is_protected(entity) then
if (cause and cause.valid) then
if cause.force.index == 2 then
if Public.valid_enemy_forces[cause.force.name] then
if carriages_numbers and carriages_numbers[entity.unit_number] then
set_train_final_health(dmg, false)
return
@ -323,7 +323,7 @@ local function protect_entities(data)
end
end
elseif not (cause and cause.valid) then
if force and force.index == 2 then
if force and Public.valid_enemy_forces[force.name] then
if carriages_numbers and carriages_numbers[entity.unit_number] then
set_train_final_health(dmg, false)
return
@ -743,7 +743,9 @@ local function on_player_mined_entity(event)
give_coin(player)
end
else
give_coin(player)
if random(1, 6) == 1 then
give_coin(player)
end
end
if rpg_char.stone_path then
entity.surface.set_tiles({{name = 'stone-path', position = entity.position}}, true)
@ -970,13 +972,14 @@ local function on_entity_died(event)
on_entity_removed(d)
local player
local valid_enemy_forces = Public.valid_enemy_forces
if cause then
if cause.valid then
if (cause and cause.name == 'character' and cause.player) then
player = cause.player
end
if cause.force.index == 2 or cause.force.index == 3 then
if valid_enemy_forces[cause.force.name] or cause.force.index == 3 then
entity.destroy()
return
end

View File

@ -4,102 +4,102 @@ local simplex_noise = require 'utils.simplex_noise'.d2
--add or use noise templates from here
local noises = {
['bb_biterland'] = {
{modifier = 0.001, weight = 1},
{modifier = 0.01, weight = 0.35},
{modifier = 0.1, weight = 0.015}
{modifier = 0.0015, weight = 1.1},
{modifier = 0.009, weight = 0.34},
{modifier = 0.095, weight = 0.016}
},
['bb_ore'] = {{modifier = 0.0042, weight = 1}, {modifier = 0.031, weight = 0.08}, {modifier = 0.1, weight = 0.025}},
['cave_ponds'] = {{modifier = 0.01, weight = 0.75}, {modifier = 0.15, weight = 0.08}},
['smol_areas'] = {{modifier = 0.005, weight = 0.85}, {modifier = 0.15, weight = 0.025}, {modifier = 0.15, weight = 0.035}},
['cave_worms'] = {{modifier = 0.001, weight = 1}, {modifier = 0.1, weight = 0.06}},
['bb_ore'] = {{modifier = 0.0046, weight = 0.95}, {modifier = 0.03, weight = 0.077}, {modifier = 0.09, weight = 0.023}},
['cave_ponds'] = {{modifier = 0.011, weight = 0.74}, {modifier = 0.14, weight = 0.079}},
['smol_areas'] = {{modifier = 0.0042, weight = 0.81}, {modifier = 0.129, weight = 0.021}, {modifier = 0.119, weight = 0.03}},
['cave_worms'] = {{modifier = 0.0011, weight = 0.99}, {modifier = 0.09, weight = 0.059}},
['cave_rivers'] = {
{modifier = 0.007, weight = 0.75},
{modifier = 0.0090, weight = 0.30},
{modifier = 0.075, weight = 0.03}
{modifier = 0.0077, weight = 0.74},
{modifier = 0.0089, weight = 0.29},
{modifier = 0.072, weight = 0.028}
},
['cave_rivers_2'] = {
{modifier = 0.003, weight = 1},
{modifier = 0.01, weight = 0.21},
{modifier = 0.05, weight = 0.01}
{modifier = 0.0033, weight = 0.99},
{modifier = 0.0099, weight = 0.2},
{modifier = 0.049, weight = 0.009}
},
['cave_rivers_3'] = {
{modifier = 0.002, weight = 1},
{modifier = 0.01, weight = 0.15},
{modifier = 0.05, weight = 0.01}
{modifier = 0.0022, weight = 0.99},
{modifier = 0.0099, weight = 0.14},
{modifier = 0.049, weight = 0.009}
},
['cave_rivers_4'] = {
{modifier = 0.001, weight = 1},
{modifier = 0.01, weight = 0.11},
{modifier = 0.05, weight = 0.01}
{modifier = 0.0009, weight = 0.99},
{modifier = 0.0099, weight = 0.1},
{modifier = 0.049, weight = 0.009}
},
['decoratives'] = {{modifier = 0.03, weight = 1}, {modifier = 0.05, weight = 0.25}, {modifier = 0.1, weight = 0.05}},
['dungeons'] = {{modifier = 0.003, weight = 1}, {modifier = 0.006, weight = 0.25}},
['decoratives'] = {{modifier = 0.031, weight = 1.05}, {modifier = 0.055, weight = 0.24}, {modifier = 0.11, weight = 0.055}},
['dungeons'] = {{modifier = 0.0033, weight = 1.05}, {modifier = 0.0066, weight = 0.24}},
['dungeon_sewer'] = {
{modifier = 0.0005, weight = 1},
{modifier = 0.005, weight = 0.015},
{modifier = 0.025, weight = 0.0015}
{modifier = 0.00055, weight = 1.05},
{modifier = 0.0055, weight = 0.014},
{modifier = 0.0275, weight = 0.00135}
},
['large_caves'] = {
{modifier = 0.0033, weight = 1},
{modifier = 0.01, weight = 0.22},
{modifier = 0.05, weight = 0.05},
{modifier = 0.1, weight = 0.04}
{modifier = 0.00363, weight = 1.05},
{modifier = 0.01, weight = 0.23},
{modifier = 0.055, weight = 0.045},
{modifier = 0.11, weight = 0.042}
},
['n1'] = {{modifier = 0.0001, weight = 1}},
['n2'] = {{modifier = 0.001, weight = 1}},
['n3'] = {{modifier = 0.01, weight = 1}},
['n4'] = {{modifier = 0.1, weight = 1}},
['n5'] = {{modifier = 0.07, weight = 1}},
['n1'] = {{modifier = 0.00011, weight = 1.1}},
['n2'] = {{modifier = 0.0011, weight = 1.1}},
['n3'] = {{modifier = 0.011, weight = 1.1}},
['n4'] = {{modifier = 0.11, weight = 1.1}},
['n5'] = {{modifier = 0.077, weight = 1.1}},
['watery_world'] = {
{modifier = 0.0007, weight = 1},
{modifier = 0.01, weight = 0.02},
{modifier = 0.1, weight = 0.005}
{modifier = 0.00077, weight = 1.1},
{modifier = 0.011, weight = 0.022},
{modifier = 0.11, weight = 0.0055}
},
['no_rocks'] = {
{modifier = 0.0045, weight = 0.95},
{modifier = 0.017, weight = 0.25},
{modifier = 0.045, weight = 0.045},
{modifier = 0.088, weight = 0.035}
{modifier = 0.00495, weight = 0.945},
{modifier = 0.01665, weight = 0.2475},
{modifier = 0.0435, weight = 0.0435},
{modifier = 0.07968, weight = 0.0315}
},
['no_rocks_2'] = {{modifier = 0.016, weight = 1.15}, {modifier = 0.13, weight = 0.095}},
['no_rocks_2'] = {{modifier = 0.0184, weight = 1.265}, {modifier = 0.143, weight = 0.1045}},
['oasis'] = {
{modifier = 0.0015, weight = 1},
{modifier = 0.0025, weight = 0.5},
{modifier = 0.01, weight = 0.15},
{modifier = 0.1, weight = 0.017}
{modifier = 0.00165, weight = 1.1},
{modifier = 0.00275, weight = 0.55},
{modifier = 0.011, weight = 0.165},
{modifier = 0.11, weight = 0.0187}
},
['scrapyard'] = {
{modifier = 0.005, weight = 1},
{modifier = 0.01, weight = 0.35},
{modifier = 0.05, weight = 0.23},
{modifier = 0.1, weight = 0.11}
{modifier = 0.0055, weight = 1.1},
{modifier = 0.011, weight = 0.385},
{modifier = 0.055, weight = 0.253},
{modifier = 0.11, weight = 0.121}
},
['scrapyard_modified'] = {
{modifier = 0.006, weight = 1},
{modifier = 0.04, weight = 0.15},
{modifier = 0.22, weight = 0.05},
{modifier = 0.05, weight = 0.32}
{modifier = 0.0066, weight = 1.1},
{modifier = 0.044, weight = 0.165},
{modifier = 0.242, weight = 0.055},
{modifier = 0.055, weight = 0.352}
},
['big_cave'] = {
{modifier = 0.003, weight = 1},
{modifier = 0.02, weight = 0.05},
{modifier = 0.15, weight = 0.02}
{modifier = 0.0033, weight = 1.1},
{modifier = 0.022, weight = 0.055},
{modifier = 0.165, weight = 0.022}
},
['small_caves'] = {
{modifier = 0.006, weight = 1},
{modifier = 0.04, weight = 0.15},
{modifier = 0.22, weight = 0.05}
{modifier = 0.0066, weight = 1.1},
{modifier = 0.044, weight = 0.165},
{modifier = 0.242, weight = 0.055}
},
['small_caves_2'] = {
{modifier = 0.009, weight = 1},
{modifier = 0.05, weight = 0.25},
{modifier = 0.25, weight = 0.05}
{modifier = 0.0099, weight = 1.1},
{modifier = 0.055, weight = 0.275},
{modifier = 0.275, weight = 0.055}
},
['forest_location'] = {
{modifier = 0.006, weight = 1},
{modifier = 0.01, weight = 0.25},
{modifier = 0.05, weight = 0.15},
{modifier = 0.1, weight = 0.05}
{modifier = 0.0066, weight = 1.1},
{modifier = 0.011, weight = 0.275},
{modifier = 0.055, weight = 0.165},
{modifier = 0.11, weight = 0.0825}
},
['forest_density'] = {
{modifier = 0.01, weight = 1},

View File

@ -35,7 +35,7 @@ local reconstruct_all_trains =
local function get_tile_name()
-- local main_tile_name = 'tutorial-grid'
local main_tile_name = 'black-refined-concrete'
local main_tile_name = 'stone-path'
return main_tile_name
end

View File

@ -49,7 +49,7 @@ local function add_random_loot_to_main_market(rarity)
end
end
for k, v in pairs(items) do
for _, v in pairs(items) do
local price = v.price[1][2] + random(1, 15) * rarity
local value = v.price[1][1]
local stack = 1

View File

@ -8,35 +8,47 @@ local random = math.random
local function initial_cargo_boxes()
return {
{name = 'loader', count = 2},
{name = 'loader', count = 1},
{name = 'stone-furnace', count = 2},
{name = 'coal', count = random(32, 64)},
{name = 'coal', count = random(32, 64)},
{name = 'loader', count = 1},
{name = 'iron-ore', count = random(32, 128)},
{name = 'copper-ore', count = random(32, 128)},
{name = 'empty-barrel', count = random(16, 32)},
{name = 'submachine-gun', count = 1},
{name = 'submachine-gun', count = 1},
{name = 'loader', count = 1},
{name = 'submachine-gun', count = 1},
{name = 'submachine-gun', count = 1},
{name = 'stone-furnace', count = 2},
{name = 'submachine-gun', count = 1},
{name = 'submachine-gun', count = 1},
{name = 'loader', count = 1},
{name = 'submachine-gun', count = 1},
{name = 'automation-science-pack', count = random(4, 32)},
{name = 'submachine-gun', count = 1},
{name = 'stone-wall', count = random(4, 32)},
{name = 'shotgun', count = 1},
{name = 'shotgun', count = 1},
{name = 'shotgun', count = 1},
{name = 'stone-wall', count = random(4, 32)},
{name = 'gun-turret', count = 1},
{name = 'gun-turret', count = 1},
{name = 'gun-turret', count = 1},
{name = 'gun-turret', count = 1},
{name = 'stone-wall', count = random(4, 32)},
{name = 'shotgun-shell', count = random(4, 5)},
{name = 'shotgun-shell', count = random(4, 5)},
{name = 'shotgun-shell', count = random(4, 5)},
{name = 'gun-turret', count = 1},
{name = 'land-mine', count = random(6, 18)},
{name = 'grenade', count = random(2, 7)},
{name = 'grenade', count = random(2, 8)},
{name = 'gun-turret', count = 1},
{name = 'grenade', count = random(2, 7)},
{name = 'light-armor', count = random(2, 4)},
{name = 'iron-gear-wheel', count = random(7, 15)},
{name = 'iron-gear-wheel', count = random(7, 15)},
{name = 'gun-turret', count = 1},
{name = 'iron-gear-wheel', count = random(7, 15)},
{name = 'iron-gear-wheel', count = random(7, 15)},
{name = 'iron-plate', count = random(15, 23)},
@ -72,7 +84,7 @@ local set_loco_tiles =
---@diagnostic disable-next-line: count-down-loop
for x = position.x - 5, 1, 3 do
for y = 1, position.y + 5, 2 do
if random(1, 4) == 1 then
if random(1, 3) == 1 then
p[#p + 1] = {x = x, y = y}
end
end
@ -94,10 +106,10 @@ local set_loco_tiles =
if not p[i] then
break
end
local name = 'wooden-chest'
local name = 'crash-site-chest-1'
if random(1, 3) == 1 then
name = 'iron-chest'
name = 'crash-site-chest-2'
end
if surface.can_place_entity({name = name, position = p[i]}) then
local e = surface.create_entity({name = name, position = p[i], force = 'player', create_build_effect_smoke = false})
@ -125,7 +137,7 @@ function Public.locomotive_spawn(surface, position)
rendering.draw_light(
{
sprite = 'utility/light_medium',
scale = 5.5,
scale = 6.5,
intensity = 1,
minimum_darkness = 0,
oriented = true,
@ -168,7 +180,7 @@ function Public.locomotive_spawn(surface, position)
local scale = random(50, 100) * 0.01
rendering.draw_sprite(
{
sprite = 'item/raw-fish',
sprite = 'entity/small-biter',
orientation = random(0, 100) * 0.01,
x_scale = scale,
y_scale = scale,
@ -181,7 +193,7 @@ function Public.locomotive_spawn(surface, position)
)
end
this.locomotive.color = {0, 255, random(60, 255)}
this.locomotive.color = {random(2, 255), random(60, 255), random(60, 255)}
this.locomotive.minable = false
this.locomotive_cargo.minable = false
this.locomotive_cargo.operable = true

View File

@ -52,7 +52,6 @@ local role_to_mention = Discord.role_mentions.mtn_fortress
local floor = math.floor
local remove = table.remove
local random = math.random
RPG.disable_cooldowns_on_spells()
local collapse_kill = {
@ -126,6 +125,8 @@ function Public.reset_map()
Misc.set('creative_are_you_sure', false)
Misc.set('creative_enabled', false)
Event.raise(WD.events.on_game_reset, {})
this.active_surface_index = Public.create_surface()
-- this.soft_reset_counter = Public.get_reset_counter()
@ -264,7 +265,6 @@ function Public.reset_map()
WD.increase_average_unit_group_size(true)
WD.increase_max_active_unit_groups(true)
WD.enable_random_spawn_positions(true)
WD.set_pause_wave_in_ticks(random(18000, 54000))
Public.set_difficulty()
Public.disable_creative()

View File

@ -410,7 +410,7 @@ local testing_callback = {
loot = testing_loot,
weights = testing_weights,
testing = true,
destructible = true
destructible = false
}
}
@ -419,7 +419,7 @@ local science_callback = {
data = {
loot = science_loot,
weights = science_weights,
destructible = true
destructible = false
}
}
@ -428,7 +428,7 @@ local building_callback = {
data = {
loot = ammo_loot,
weights = building_weights,
destructible = true
destructible = false
}
}
@ -437,7 +437,7 @@ local oil_callback = {
data = {
loot = oil_loot,
weights = oil_weights,
destructible = true
destructible = false
}
}
@ -446,7 +446,7 @@ local oil_prod_callback = {
data = {
loot = oil_prod_loot,
weights = oil_prod_weights,
destructible = true
destructible = false
}
}
@ -455,7 +455,7 @@ local resource_callback = {
data = {
loot = resource_loot,
weights = resource_weights,
destructible = true
destructible = false
}
}
@ -464,7 +464,7 @@ local furnace_callback = {
data = {
loot = furnace_loot,
weights = furnace_weights,
destructible = true
destructible = false
}
}

View File

@ -7,6 +7,7 @@ local this = {
traps = {}
}
local Public = {}
local random = math.random
Public.events = {
reset_map = Event.generate_event_name('reset_map'),
@ -25,6 +26,12 @@ Public.zone_settings = {
zone_width = 510
}
Public.valid_enemy_forces = {
['enemy'] = true,
['aggressors'] = true,
['aggressors_frenzy'] = true
}
Public.pickaxe_upgrades = {
'Wood',
'Plastic',
@ -226,6 +233,7 @@ function Public.reset_main_table()
this.check_afk_players = true
this.winter_mode = false
this.sent_to_discord = false
this.random_seed = random(23849829, 1283989182)
this.difficulty = {
multiply = 0.25,
highest = 10,

View File

@ -9,14 +9,21 @@ local ceil = math.ceil
local zone_settings = Public.zone_settings
local worm_level_modifier = 0.19
local base_tile = 'grass-1'
local start_ground_tiles = {
'sand-1',
'dirt-1',
'dirt-2',
'grass-1',
'grass-1',
'grass-2',
'sand-2',
'dirt-3',
'sand-3'
'grass-1',
'grass-4',
'sand-2',
'grass-3',
'grass-4',
'grass-2',
'sand-3',
'grass-4'
}
local wagon_raffle = {
@ -243,7 +250,7 @@ local function place_wagon(data, adjusted_zones)
end
for _, tile in pairs(location) do
tiles[#tiles + 1] = {name = 'nuclear-ground', position = tile.position}
tiles[#tiles + 1] = {name = base_tile, position = tile.position}
if tile.position.y % 1 == 0 and tile.position.x % 1 == 0 then
entities[#entities + 1] = {
name = 'straight-rail',
@ -295,8 +302,8 @@ local function wall(p, data)
local seed = data.seed
local y = data.yv
local small_caves = Public.get_noise('small_caves', p, seed + 204000)
local cave_ponds = Public.get_noise('cave_rivers', p, seed + 120400)
local small_caves = Public.get_noise('small_caves', p, seed + seed)
local cave_ponds = Public.get_noise('cave_rivers', p, seed + seed)
if y > 9 + cave_ponds * 6 and y < 23 + small_caves * 6 then
if small_caves > 0.02 or cave_ponds > 0.02 then
if small_caves > 0.005 then
@ -315,7 +322,7 @@ local function wall(p, data)
entities[#entities + 1] = {name = 'fish', position = p}
end
else
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if random(1, 5) ~= 1 then
entities[#entities + 1] = {name = rock_raffle[random(1, #rock_raffle)], position = p}
@ -329,7 +336,7 @@ local function wall(p, data)
end
end
else
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if
surface.can_place_entity(
@ -485,7 +492,7 @@ local function zone_14(x, y, data, _, adjusted_zones)
local small_caves = Public.get_noise('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 40000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Resource Spots
if smol_areas < -0.71 then
@ -565,7 +572,7 @@ local function zone_13(x, y, data, _, adjusted_zones)
local small_caves = Public.get_noise('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 70000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Resource Spots
if smol_areas < -0.72 then
@ -645,8 +652,8 @@ local function zone_12(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
local noise_1 = Public.get_noise('small_caves', p, seed)
local noise_2 = Public.get_noise('no_rocks_2', p, seed + 20000)
local smol_areas = Public.get_noise('smol_areas', p, seed + 60000)
local noise_2 = Public.get_noise('no_rocks_2', p, seed + seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Resource Spots
if smol_areas < -0.72 then
@ -731,8 +738,8 @@ local function zone_11(x, y, data, _, adjusted_zones)
local treasure = data.treasure
local noise_1 = Public.get_noise('small_caves', p, seed)
local noise_2 = Public.get_noise('no_rocks_2', p, seed + 10000)
local smol_areas = Public.get_noise('smol_areas', p, seed + 50000)
local noise_2 = Public.get_noise('no_rocks_2', p, seed + seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
if noise_1 > 0.7 then
tiles[#tiles + 1] = {name = 'water', position = p}
@ -827,7 +834,7 @@ local function zone_10(x, y, data, _, adjusted_zones)
data.forest_zone = true
local scrapyard = Public.get_noise('scrapyard', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 45000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
if scrapyard < -0.70 or scrapyard > 0.70 then
tiles[#tiles + 1] = {name = 'grass-3', position = p}
@ -943,7 +950,7 @@ local function zone_9(x, y, data, _, adjusted_zones)
local maze_p = {x = floor(p.x - p.x % 10), y = floor(p.y - p.y % 10)}
local maze_noise = Public.get_noise('no_rocks_2', maze_p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 40000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
if maze_noise > -0.35 and maze_noise < 0.35 then
tiles[#tiles + 1] = {name = 'dirt-7', position = p}
@ -1015,7 +1022,7 @@ local function zone_scrap_2(x, y, data, void_or_lab, adjusted_zones)
data.scrap_zone = true
local scrapyard_modified = Public.get_noise('scrapyard_modified', p, seed)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 65030)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + seed)
--Chasms
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
@ -1127,7 +1134,7 @@ local function zone_scrap_2(x, y, data, void_or_lab, adjusted_zones)
entities[#entities + 1] = {name = 'crude-oil', position = p, amount = get_oil_amount(p)}
end
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if random(1, 256) == 1 then
entities[#entities + 1] = {name = 'land-mine', position = p, force = 'enemy'}
end
@ -1144,7 +1151,7 @@ local function zone_scrap_1(x, y, data, void_or_lab, adjusted_zones)
data.scrap_zone = true
local scrapyard = Public.get_noise('scrapyard', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 35000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Chasms
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
@ -1272,9 +1279,9 @@ local function zone_7(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
local cave_rivers_3 = Public.get_noise('cave_rivers_3', p, seed)
local cave_rivers_4 = Public.get_noise('cave_rivers_4', p, seed + 50000)
local cave_rivers_4 = Public.get_noise('cave_rivers_4', p, seed + seed)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 30000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
if cave_rivers_3 > -0.025 and cave_rivers_3 < 0.025 and no_rocks_2 > -0.6 then
tiles[#tiles + 1] = {name = 'water', position = p}
@ -1292,7 +1299,7 @@ local function zone_7(x, y, data, void_or_lab, adjusted_zones)
return
end
local noise_ores = Public.get_noise('no_rocks_2', p, seed + 25000)
local noise_ores = Public.get_noise('no_rocks_2', p, seed + seed)
if cave_rivers_3 > -0.20 and cave_rivers_3 < 0.20 then
tiles[#tiles + 1] = {name = 'grass-' .. floor(cave_rivers_3 * 32) % 3 + 1, position = p}
@ -1391,7 +1398,7 @@ local function zone_forest_2(x, y, data, void_or_lab, adjusted_zones)
local large_caves = Public.get_noise('large_caves', p, seed)
local cave_rivers = Public.get_noise('cave_rivers', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 25000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Chasms
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
@ -1525,7 +1532,7 @@ local function zone_5(x, y, data, void_or_lab, adjusted_zones)
local small_caves = Public.get_noise('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 20000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
if small_caves > -0.24 and small_caves < 0.24 then
tiles[#tiles + 1] = {name = 'dirt-7', position = p}
@ -1619,7 +1626,7 @@ local function zone_4(x, y, data, void_or_lab, adjusted_zones)
local noise_large_caves = Public.get_noise('large_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local small_caves = Public.get_noise('dungeons', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 15000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
if abs(noise_large_caves) > 0.7 then
tiles[#tiles + 1] = {name = 'water', position = p}
@ -1715,7 +1722,7 @@ local function zone_4(x, y, data, void_or_lab, adjusted_zones)
if noise_large_caves > -0.2 and noise_large_caves < 0.2 then
--Main Rock Terrain
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + seed)
if no_rocks_2 > 0.80 or no_rocks_2 < -0.80 then
tiles[#tiles + 1] = {name = 'dirt-' .. floor(no_rocks_2 * 8) % 2 + 5, position = p}
if random(1, 512) == 1 then
@ -1747,12 +1754,12 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local small_caves = Public.get_noise('dungeons', p, seed + 50000)
local small_caves_2 = Public.get_noise('small_caves_2', p, seed + 70000)
local noise_large_caves = Public.get_noise('large_caves', p, seed + 60000)
local small_caves = Public.get_noise('dungeons', p, seed + seed)
local small_caves_2 = Public.get_noise('small_caves_2', p, seed + seed)
local noise_large_caves = Public.get_noise('large_caves', p, seed + seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local cave_miner = Public.get_noise('cave_miner_01', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 60000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Resource Spots
if smol_areas < 0.055 and smol_areas > -0.025 then
@ -1815,7 +1822,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 100000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + seed)
if cave_rivers < 0.024 and cave_rivers > -0.024 then
if noise_cave_ponds > 0.2 then
tiles[#tiles + 1] = {name = 'water-shallow', position = p}
@ -1841,7 +1848,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = Public.get_noise('no_rocks', p, seed + 25000)
local no_rocks = Public.get_noise('no_rocks', p, seed + seed)
--Worm oil Zones
if no_rocks < 0.20 and no_rocks > -0.20 then
if small_caves > 0.35 then
@ -1873,7 +1880,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + seed)
if no_rocks_2 > 0.80 or no_rocks_2 < -0.80 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -1915,7 +1922,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
local small_caves = Public.get_noise('dungeons', p, seed)
local noise_large_caves = Public.get_noise('large_caves', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 15000)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Resource Spots
if smol_areas < 0.055 and smol_areas > -0.025 then
@ -1961,7 +1968,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 100000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + seed)
if cave_rivers < 0.037 and cave_rivers > -0.037 then
if noise_cave_ponds < 0.1 then
tiles[#tiles + 1] = {name = 'water-shallow', position = p}
@ -1989,7 +1996,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = Public.get_noise('no_rocks', p, seed + 25000)
local no_rocks = Public.get_noise('no_rocks', p, seed + seed)
--Worm oil Zones
if no_rocks < 0.20 and no_rocks > -0.20 then
if small_caves > 0.30 then
@ -2021,7 +2028,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + seed)
if no_rocks_2 > 0.80 or no_rocks_2 < -0.80 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -2058,9 +2065,9 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
data.forest_zone = true
local small_caves = Public.get_noise('dungeons', p, seed + 33322)
local small_caves = Public.get_noise('dungeons', p, seed + seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 33333)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
--Resource Spots
if smol_areas < 0.055 and smol_areas > -0.025 then
@ -2112,7 +2119,7 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 200000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + seed)
if cave_rivers < 0.041 and cave_rivers > -0.042 then
if noise_cave_ponds > 0 then
tiles[#tiles + 1] = {name = 'water-shallow', position = p}
@ -2134,7 +2141,7 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = Public.get_noise('no_rocks', p, seed + 30000)
local no_rocks = Public.get_noise('no_rocks', p, seed + seed)
--Worm oil Zones
if p.y < -64 + noise_cave_ponds * 10 then
if no_rocks < 0.11 and no_rocks > -0.11 then
@ -2165,13 +2172,13 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 5000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + seed)
if no_rocks_2 > 0.64 or no_rocks_2 < -0.64 then
local success = place_wagon(data, adjusted_zones)
if success then
return
end
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if random(1, 32) == 1 then
entities[#entities + 1] = {name = 'tree-0' .. random(1, 9), position = p}
end
@ -2294,7 +2301,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 300000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + seed)
if cave_rivers < 0.042 and cave_rivers > -0.042 then
if noise_cave_ponds > 0 then
tiles[#tiles + 1] = {name = 'water-shallow', position = p}
@ -2316,7 +2323,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = Public.get_noise('no_rocks', p, seed + 50000)
local no_rocks = Public.get_noise('no_rocks', p, seed + seed)
--Worm oil Zones
if p.y < -64 + noise_cave_ponds * 10 then
if no_rocks < 0.12 and no_rocks > -0.12 then
@ -2347,13 +2354,13 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + seed)
if no_rocks_2 > 0.66 or no_rocks_2 < -0.66 then
local success = place_wagon(data, adjusted_zones)
if success then
return
end
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if random(1, 32) == 1 then
entities[#entities + 1] = {name = 'tree-0' .. random(1, 9), position = p}
end
@ -2371,7 +2378,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
if random_tiles > 0.095 then
if random_tiles > 0.6 then
if random(1, 100) > 42 then
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
end
else
if random(1, 100) > 42 then
@ -2383,7 +2390,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
if random_tiles < -0.095 then
if random_tiles < -0.6 then
if random(1, 100) > 42 then
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
end
else
if random(1, 100) > 42 then
@ -2405,10 +2412,10 @@ local function starting_zone(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local small_caves = Public.get_noise('dungeons', p, seed + 34883)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed + 28939)
local smol_areas = Public.get_noise('smol_areas', p, seed + 3992)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 1922)
local small_caves = Public.get_noise('dungeons', p, seed + seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed + seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + seed)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + seed)
local cave_rivers = Public.get_noise('cave_rivers', p, seed)
local no_rocks = Public.get_noise('no_rocks', p, seed)
@ -2514,7 +2521,7 @@ local function starting_zone(x, y, data, void_or_lab, adjusted_zones)
if success then
return
end
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if random(1, 18) == 1 then
entities[#entities + 1] = {name = 'tree-0' .. random(1, 9), position = p}
end
@ -2528,7 +2535,7 @@ local function starting_zone(x, y, data, void_or_lab, adjusted_zones)
if random(1, 2048) == 1 then
treasure[#treasure + 1] = {position = p, chest = 'iron-chest'}
end
tiles[#tiles + 1] = {name = 'nuclear-ground', position = p}
tiles[#tiles + 1] = {name = base_tile, position = p}
if random(1, 100) > 25 then
entities[#entities + 1] = {name = rock_raffle[random(1, size_of_rock_raffle)], position = p}
end
@ -2650,8 +2657,8 @@ local function border_chunk(p, data)
entities[#entities + 1] = {name = trees[random(1, #trees)], position = pos}
end
local noise = Public.get_noise('dungeons', pos, data.seed)
local index = floor(noise * 32) % 4 + 1
local noise = Public.get_noise('dungeon_sewer', pos, data.seed)
local index = floor(noise * 32) % 11 + 1
tiles[#tiles + 1] = {name = start_ground_tiles[index], position = pos}
local scrap_mineable_entities, scrap_mineable_entities_index = get_scrap_mineable_entities()
@ -2738,7 +2745,7 @@ function Public.heavy_functions(data)
end
if not data.seed then
data.seed = surface.map_gen_settings.seed
data.seed = Public.get('random_seed')
end
if get_tile.valid and get_tile.name == 'out-of-map' then

View File

@ -240,6 +240,9 @@ end
local function set_boss_healthbar(health, max_health, healthbar_id)
local m = health / max_health
if m < 0 then
return
end
local x_scale = rendering.get_y_scale(healthbar_id) * 15
rendering.set_x_scale(healthbar_id, x_scale * m)
rendering.set_color(healthbar_id, {floor(255 - 255 * m), floor(200 * m), 0})

View File

@ -166,7 +166,7 @@ local function level_up(player)
Public.level_up_effects(player)
end
local function has_health_boost(entity, damage, final_damage_amount, cause)
local function has_health_boost(entity, damage, final_damage_amount, cause, callback_func)
local biter_health_boost = BiterHealthBooster.get('biter_health_boost')
local biter_health_boost_units = BiterHealthBooster.get('biter_health_boost_units')
@ -194,7 +194,9 @@ local function has_health_boost(entity, damage, final_damage_amount, cause)
if health_pool[1] <= 0 then
local entity_number = entity.unit_number
entity.die(entity.force.name, cause)
if not callback_func then
entity.die(entity.force.name, cause)
end
if biter_health_boost_units[entity_number] then
biter_health_boost_units[entity_number] = nil
@ -204,7 +206,9 @@ local function has_health_boost(entity, damage, final_damage_amount, cause)
entity.health = entity.health + final_damage_amount
entity.health = entity.health - damage
if entity.health <= 0 then
entity.die(cause.force.name, cause)
if not callback_func then
entity.die(cause.force.name, cause)
end
end
end
else
@ -212,7 +216,9 @@ local function has_health_boost(entity, damage, final_damage_amount, cause)
entity.health = entity.health + final_damage_amount
entity.health = entity.health - damage
if entity.health <= 0 then
entity.die(cause.force.name, cause)
if not callback_func then
entity.die(cause.force.name, cause)
end
end
end
@ -642,18 +648,18 @@ function Public.log_aoe_punch(callback)
end
--Melee damage modifier
function Public.aoe_punch(character, target, damage, get_health_pool)
function Public.aoe_punch(entity, target, damage, get_health_pool)
if not (target and target.valid) then
return
end
local base_vector = {target.position.x - character.position.x, target.position.y - character.position.y}
local base_vector = {target.position.x - entity.position.x, target.position.y - entity.position.y}
local vector = {base_vector[1], base_vector[2]}
vector[1] = vector[1] * 1000
vector[2] = vector[2] * 1000
character.surface.create_entity({name = 'blood-explosion-huge', position = target.position})
entity.surface.create_entity({name = 'blood-explosion-huge', position = target.position})
if abs(vector[1]) > abs(vector[2]) then
local d = abs(vector[1])
@ -678,8 +684,8 @@ function Public.aoe_punch(character, target, damage, get_health_pool)
local a = 0.20
local cs = character.surface
local cp = character.position
local cs = entity.surface
local cp = entity.position
for i = 1, 16, 1 do
for x = i * -1 * a, i * a, 1 do
@ -690,7 +696,7 @@ function Public.aoe_punch(character, target, damage, get_health_pool)
if e.valid then
if e.health then
if e.destructible and e.minable and e.force.index ~= 3 then
if e.force.index ~= character.force.index then
if e.force.index ~= entity.force.index then
if get_health_pool then
local max_unit_health = floor(get_health_pool * 0.00015)
if max_unit_health <= 0 then
@ -700,15 +706,15 @@ function Public.aoe_punch(character, target, damage, get_health_pool)
max_unit_health = 10
end
local final = floor(damage * max_unit_health)
set_health_boost(e, final, character)
set_health_boost(e, final, entity)
if e.valid and e.health <= 0 and get_health_pool <= 0 then
e.die(e.force.name, character)
e.die(e.force.name, entity)
end
else
if e.valid then
e.health = e.health - damage * 0.05
if e.health <= 0 then
e.die(e.force.name, character)
e.die(e.force.name, entity)
end
end
end