1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-16 02:47:48 +02:00

Merge pull request #347 from ComfyFactory/mtn_v3

Refactor and fixes
This commit is contained in:
Gerkiz 2022-10-26 00:27:42 +02:00 committed by GitHub
commit c42591effd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
40 changed files with 858 additions and 733 deletions

View File

@ -1,9 +1,5 @@
local Event = require 'utils.event'
local Difficulty = require 'modules.difficulty_vote_by_amount'
local Public = {}
Public.events = {breached_wall = Event.generate_event_name('breached_wall')}
local Public = require 'maps.mountain_fortress_v3.table'
function Public.init_enemy_weapon_damage()
local data = {
@ -34,7 +30,7 @@ function Public.init_enemy_weapon_damage()
end
end
local function enemy_weapon_damage()
function Public.enemy_weapon_damage()
local e = game.forces.enemy
local data = {
@ -59,6 +55,4 @@ local function enemy_weapon_damage()
end
end
Event.add(Public.events.breached_wall, enemy_weapon_damage)
return Public

View File

@ -1,4 +1,5 @@
local Global = require 'utils.global'
local Public = require 'maps.mountain_fortress_v3.table'
local this = {
market_settings = {
@ -143,8 +144,6 @@ Global.register(
end
)
local Public = {}
local random = math.random
local floor = math.floor
@ -329,35 +328,4 @@ function Public.shuffle_prices()
end
end
function Public.get(key)
if key then
return this[key]
else
return this
end
end
function Public.set(key, value)
if key and (value or value == false) then
this[key] = value
return this[key]
elseif key then
return this[key]
else
return this
end
end
function Public.remove(key, sub_key)
if key and sub_key then
if this[key] and this[key][sub_key] then
this[key][sub_key] = nil
end
elseif key then
if this[key] then
this[key] = nil
end
end
end
return Public

View File

@ -1,4 +1,5 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local RPG = require 'modules.rpg.main'
local BiterHealthBooster = require 'modules.biter_health_booster_v2'
local insert = table.insert
@ -137,3 +138,5 @@ local function on_entity_died(event)
end
Event.add(defines.events.on_entity_died, on_entity_died)
return Public

View File

@ -1,40 +1,37 @@
local Collapse = require 'modules.collapse'
local Balance = require 'maps.mountain_fortress_v3.balance'
local RPG = require 'modules.rpg.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local Alert = require 'utils.alert'
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Collapse = require 'modules.collapse'
local RPG = require 'modules.rpg.main'
local Alert = require 'utils.alert'
local Task = require 'utils.task'
local Token = require 'utils.token'
local Color = require 'utils.color_presets'
local BasicMarkets = require 'maps.mountain_fortress_v3.basic_markets'
local raise_event = script.raise_event
local floor = math.floor
local abs = math.abs
local random = math.random
local sub = string.sub
local sqrt = math.sqrt
local zone_settings = WPT.zone_settings
local zone_settings = Public.zone_settings
local clear_breach_text_and_render = function()
local beam1 = WPT.get('zone1_beam1')
local beam1 = Public.get('zone1_beam1')
if beam1 and beam1.valid then
beam1.destroy()
end
local beam2 = WPT.get('zone1_beam2')
local beam2 = Public.get('zone1_beam2')
if beam2 and beam2.valid then
beam2.destroy()
end
local zone1_text1 = WPT.get('zone1_text1')
local zone1_text1 = Public.get('zone1_text1')
if zone1_text1 then
rendering.set_text(zone1_text1, 'Collapse has started!')
end
local zone1_text2 = WPT.get('zone1_text2')
local zone1_text2 = Public.get('zone1_text2')
if zone1_text2 then
rendering.set_text(zone1_text2, 'Collapse has started!')
end
local zone1_text3 = WPT.get('zone1_text3')
local zone1_text3 = Public.get('zone1_text3')
if zone1_text3 then
rendering.set_text(zone1_text3, 'Collapse has started!')
end
@ -70,7 +67,7 @@ local first_player_to_zone =
local breached_wall = data.breached_wall
local message = ({'breached_wall.first_to_reach', player.name, breached_wall})
Alert.alert_all_players(10, message)
BasicMarkets.shuffle_prices()
Public.shuffle_prices()
end
)
@ -94,19 +91,19 @@ local spidertron_too_far =
local check_distance_between_player_and_locomotive = function(player)
local surface = player.surface
local position = player.position
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
local gap_between_locomotive = WPT.get('gap_between_locomotive')
local gap_between_locomotive = Public.get('gap_between_locomotive')
if not gap_between_locomotive.highest_pos then
gap_between_locomotive.highest_pos = locomotive.position
end
gap_between_locomotive.highest_pos = locomotive.position
gap_between_locomotive = WPT.get('gap_between_locomotive')
gap_between_locomotive = Public.get('gap_between_locomotive')
local c_y = position.y
local t_y = gap_between_locomotive.highest_pos.y
@ -127,7 +124,7 @@ end
local compare_player_pos = function(player)
local p = player.position
local index = player.index
local adjusted_zones = WPT.get('adjusted_zones')
local adjusted_zones = Public.get('adjusted_zones')
if not adjusted_zones.size then
return
end
@ -166,14 +163,14 @@ local compare_player_and_train = function(player, entity)
end
local position = player.position
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
local gap_between_zones = WPT.get('gap_between_zones')
local gap_between_zones = Public.get('gap_between_zones')
gap_between_zones.highest_pos = locomotive.position
gap_between_zones = WPT.get('gap_between_zones')
gap_between_zones = Public.get('gap_between_zones')
local c_y = position.y
local t_y = gap_between_zones.highest_pos.y
@ -207,13 +204,13 @@ local function distance(player)
local index = player.index
local bonus = RPG.get_value_from_player(index, 'bonus')
local rpg_extra = RPG.get('rpg_extra')
local breached_wall = WPT.get('breached_wall')
local bonus_xp_on_join = WPT.get('bonus_xp_on_join')
local enable_arties = WPT.get('enable_arties')
local breached_wall = Public.get('breached_wall')
local bonus_xp_on_join = Public.get('bonus_xp_on_join')
local enable_arties = Public.get('enable_arties')
local p = player.position
local validate_spider = WPT.get('validate_spider')
local validate_spider = Public.get('validate_spider')
if validate_spider[index] then
local e = validate_spider[index]
if not (e and e.valid) then
@ -236,16 +233,16 @@ local function distance(player)
local max_times = location >= max
if max_times then
if breach_max_times then
local placed_trains_in_zone = WPT.get('placed_trains_in_zone')
local biters = WPT.get('biters')
local placed_trains_in_zone = Public.get('placed_trains_in_zone')
local biters = Public.get('biters')
rpg_extra.breached_walls = rpg_extra.breached_walls + 1
rpg_extra.reward_new_players = bonus_xp_on_join * rpg_extra.breached_walls
WPT.set('breached_wall', breached_wall + 1)
Public.set('breached_wall', breached_wall + 1)
biters.amount = 0
placed_trains_in_zone.randomized = false
raise_event(Balance.events.breached_wall, {})
if WPT.get('breached_wall') == WPT.get('spidertron_unlocked_at_zone') then
local main_market_items = WPT.get('main_market_items')
Public.enemy_weapon_damage()
if Public.get('breached_wall') == Public.get('spidertron_unlocked_at_zone') then
local main_market_items = Public.get('main_market_items')
if not main_market_items['spidertron'] then
local rng = random(70000, 120000)
main_market_items['spidertron'] = {
@ -297,6 +294,9 @@ local function on_player_changed_position(event)
if not player or not player.valid then
return
end
if player.controller_type == defines.controllers.spectator then
return
end
local surface_name = player.surface.name
local map_name = 'mtn_v3'
@ -322,7 +322,7 @@ local function on_player_driving_changed_state(event)
if not (entity and entity.valid) then
return
end
local s = WPT.get('validate_spider')
local s = Public.get('validate_spider')
if entity.name == 'spidertron' then
if not s[player.index] then
s[player.index] = entity
@ -336,3 +336,5 @@ end
Event.add(defines.events.on_player_changed_position, on_player_changed_position)
Event.add(defines.events.on_player_driving_changed_state, on_player_driving_changed_state)
return Public

View File

@ -1,8 +1,8 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Global = require 'utils.global'
local BiterHealthBooster = require 'modules.biter_health_booster_v2'
local WD = require 'modules.wave_defense.table'
local WPT = require 'maps.mountain_fortress_v3.table'
local this = {}
@ -13,7 +13,6 @@ Global.register(
end
)
local Public = {}
local round = math.round
local floor = math.floor
local random = math.random
@ -66,7 +65,7 @@ local function spawn_biters(data)
local position = data.position
local h = floor(abs(position.y))
local max_biters = WPT.get('biters')
local max_biters = Public.get('biters')
if max_biters.amount >= max_biters.limit then
return false
@ -116,7 +115,7 @@ end
local function spawn_worms(data)
local modified_unit_health = WD.get('modified_unit_health')
local modified_boss_unit_health = WD.get('modified_boss_unit_health')
local max_biters = WPT.get('biters')
local max_biters = Public.get('biters')
if max_biters.amount >= max_biters.limit then
return
@ -237,7 +236,7 @@ local function on_tick()
this[t] = nil
end
function Public.reset()
function Public.reset_buried_biters()
for k, _ in pairs(this) do
this[k] = nil
end

View File

@ -1,7 +1,7 @@
local Color = require 'utils.color_presets'
local Public = require 'maps.mountain_fortress_v3.table'
local Task = require 'utils.task'
local Server = require 'utils.server'
local WPT = require 'maps.mountain_fortress_v3.table'
local Collapse = require 'modules.collapse'
local WD = require 'modules.wave_defense.table'
@ -23,8 +23,7 @@ commands.add_command(
end
end
local this = WPT.get()
local reset_map = require 'maps.mountain_fortress_v3.main'.reset_map
local this = Public.get()
local param = cmd.parameter
if param == 'restart' or param == 'shutdown' or param == 'reset' or param == 'restartnow' then
@ -87,7 +86,7 @@ commands.add_command(
else
game.print(mapkeeper .. ' server, has reset the game!', {r = 0.98, g = 0.66, b = 0.22})
end
reset_map()
Public.reset_map()
p('[WARNING] Game has been reset!')
return
end
@ -135,7 +134,7 @@ commands.add_command(
return
end
local this = WPT.get()
local this = Public.get()
local tbl = WD.get()
if not this.disable_biters_are_you_sure then
@ -170,7 +169,7 @@ commands.add_command(
return
end
local this = WPT.get()
local this = Public.get()
if not this.orbital_strikes_are_you_sure then
this.orbital_strikes_are_you_sure = true
@ -240,3 +239,5 @@ if _DEBUG then
end
)
end
return Public

View File

@ -0,0 +1,32 @@
local Public = require 'maps.mountain_fortress_v3.table'
Public.balance = require 'maps.mountain_fortress_v3.balance'
Public.basic_markets = require 'maps.mountain_fortress_v3.basic_markets'
Public.biters_yield_coins = require 'maps.mountain_fortress_v3.biters_yield_coins'
Public.breached_wall = require 'maps.mountain_fortress_v3.breached_wall'
Public.buried_enemies = require 'maps.mountain_fortress_v3.buried_enemies'
Public.commands = require 'maps.mountain_fortress_v3.commands'
Public.entities = require 'maps.mountain_fortress_v3.entities'
Public.functions = require 'maps.mountain_fortress_v3.functions'
Public.terrain = require 'maps.mountain_fortress_v3.terrain'
Public.generate = require 'maps.mountain_fortress_v3.generate'
Public.get_perlin = require 'maps.mountain_fortress_v3.get_perlin'
Public.gui = require 'maps.mountain_fortress_v3.gui'
-- Public.highscore = require 'maps.mountain_fortress_v3.highscore'
Public.locomotive = require 'maps.mountain_fortress_v3.locomotive'
Public.loot = require 'maps.mountain_fortress_v3.loot'
Public.mining = require 'maps.mountain_fortress_v3.mining'
Public.mystical_chest = require 'maps.mountain_fortress_v3.mystical_chest'
Public.resource_generator = require 'maps.mountain_fortress_v3.resource_generator'
Public.rocks_yield_ore_veins = require 'maps.mountain_fortress_v3.rocks_yield_ore_veins'
Public.soft_reset = require 'maps.mountain_fortress_v3.soft_reset'
Public.surface = require 'maps.mountain_fortress_v3.surface'
Public.traps = require 'maps.mountain_fortress_v3.traps'
Public.defense_system = require 'maps.mountain_fortress_v3.locomotive.defense_system'
Public.friendly_pet = require 'maps.mountain_fortress_v3.locomotive.friendly_pet'
Public.linked_chests = require 'maps.mountain_fortress_v3.locomotive.linked_chests'
Public.market = require 'maps.mountain_fortress_v3.locomotive.market'
Public.permission_groups = require 'maps.mountain_fortress_v3.locomotive.permission_groups'
Public.spawn_locomotive = require 'maps.mountain_fortress_v3.locomotive.spawn_locomotive'
return Public

View File

@ -1,39 +1,26 @@
require 'modules.rocks_broken_paint_tiles'
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Server = require 'utils.server'
local BuriedEnemies = require 'maps.mountain_fortress_v3.buried_enemies'
local Loot = require 'maps.mountain_fortress_v3.loot'
local RPG = require 'modules.rpg.main'
local Callbacks = require 'maps.mountain_fortress_v3.functions'
local Mining = require 'maps.mountain_fortress_v3.mining'
local Traps = require 'maps.mountain_fortress_v3.traps'
local Locomotive = require 'maps.mountain_fortress_v3.locomotive'
local DefenseSystem = require 'maps.mountain_fortress_v3.locomotive.defense_system'
local Collapse = require 'modules.collapse'
local Alert = require 'utils.alert'
local Task = require 'utils.task'
local Score = require 'utils.gui.score'
local Token = require 'utils.token'
-- local HS = require 'maps.mountain_fortress_v3.highscore'
local Discord = require 'utils.discord'
local Core = require 'utils.core'
local Diff = require 'modules.difficulty_vote_by_amount'
local format_number = require 'util'.format_number
local RPG_Progression = require 'utils.datastore.rpg_data'
-- tables
local WPT = require 'maps.mountain_fortress_v3.table'
local WD = require 'modules.wave_defense.table'
local zone_settings = WPT.zone_settings
-- module
local Public = {}
local zone_settings = Public.zone_settings
local random = math.random
local floor = math.floor
local abs = math.abs
local round = math.round
local raise_event = script.raise_event
-- Use these settings for live
local send_ping_to_channel = Discord.channel_names.mtn_channel
@ -98,20 +85,20 @@ local reset_game =
function(data)
local this = data.this
if this.soft_reset then
-- HS.set_scores()
-- Public.set_scores()
this.game_reset_tick = nil
raise_event(WPT.events.reset_map, {})
Public.reset_map()
return
end
if this.restart then
-- HS.set_scores()
-- Public.set_scores()
local message = ({'entity.reset_game'})
Server.to_discord_bold(message, true)
Server.start_scenario('Mountain_Fortress_v3')
return
end
if this.shutdown then
-- HS.set_scores()
-- Public.set_scores()
local message = ({'entity.shutdown_game'})
Server.to_discord_bold(message, true)
Server.stop_scenario()
@ -141,7 +128,7 @@ end
local function on_entity_removed(data)
local entity = data.entity
local upgrades = WPT.get('upgrades')
local upgrades = Public.get('upgrades')
local built = {
['land-mine'] = upgrades.landmine.built,
@ -164,11 +151,11 @@ local function on_entity_removed(data)
end
local function check_health()
local locomotive_health = WPT.get('locomotive_health')
local locomotive_max_health = WPT.get('locomotive_max_health')
local carriages = WPT.get('carriages')
local locomotive_health = Public.get('locomotive_health')
local locomotive_max_health = Public.get('locomotive_max_health')
local carriages = Public.get('carriages')
if locomotive_health <= 0 then
WPT.set('locomotive_health', 0)
Public.set('locomotive_health', 0)
end
local m = locomotive_health / locomotive_max_health
if carriages then
@ -188,7 +175,7 @@ local function check_health()
end
local function check_health_final_damage(final_damage_amount)
local carriages = WPT.get('carriages')
local carriages = Public.get('carriages')
if carriages then
for i = 1, #carriages do
local entity = carriages[i]
@ -205,17 +192,17 @@ local function set_train_final_health(final_damage_amount, repair)
return
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not (locomotive and locomotive.valid) then
return
end
local locomotive_health = WPT.get('locomotive_health')
local locomotive_max_health = WPT.get('locomotive_max_health')
local locomotive_health = Public.get('locomotive_health')
local locomotive_max_health = Public.get('locomotive_max_health')
if not repair then
local poison_deployed = WPT.get('poison_deployed')
local robotics_deployed = WPT.get('robotics_deployed')
local poison_deployed = Public.get('poison_deployed')
local robotics_deployed = Public.get('robotics_deployed')
local lower_high = locomotive_max_health * 0.4
local higher_high = locomotive_max_health * 0.5
@ -224,12 +211,12 @@ local function set_train_final_health(final_damage_amount, repair)
if locomotive_health >= lower_high and locomotive_health <= higher_high then
if not poison_deployed then
local carriages = WPT.get('carriages')
local carriages = Public.get('carriages')
if carriages then
for i = 1, #carriages do
local entity = carriages[i]
DefenseSystem.enable_poison_defense(entity.position)
Public.enable_poison_defense(entity.position)
end
end
@ -238,16 +225,16 @@ local function set_train_final_health(final_damage_amount, repair)
}
local msg = ({'entity.train_taking_damage'})
Alert.alert_all_players_location(p, msg)
WPT.set().poison_deployed = true
Public.set().poison_deployed = true
end
elseif locomotive_health >= lower_low and locomotive_health <= higher_low then
if not robotics_deployed then
local carriages = WPT.get('carriages')
local carriages = Public.get('carriages')
if carriages then
for i = 1, #carriages do
local entity = carriages[i]
DefenseSystem.enable_robotic_defense(entity.position)
Public.enable_robotic_defense(entity.position)
end
end
local p = {
@ -255,17 +242,17 @@ local function set_train_final_health(final_damage_amount, repair)
}
local msg = ({'entity.train_taking_damage'})
Alert.alert_all_players_location(p, msg)
WPT.set().robotics_deployed = true
Public.set().robotics_deployed = true
end
elseif locomotive_health >= locomotive_max_health then
WPT.set().poison_deployed = false
Public.set().poison_deployed = false
end
end
if locomotive_health <= 0 or locomotive.health <= 5 then
locomotive.destructible = false
locomotive.health = 1
WPT.set('game_lost', true)
Public.set('game_lost', true)
Public.loco_died()
end
@ -274,15 +261,15 @@ local function set_train_final_health(final_damage_amount, repair)
return
end
WPT.set('locomotive_health', floor(locomotive_health - final_damage_amount))
Public.set('locomotive_health', floor(locomotive_health - final_damage_amount))
if locomotive_health > locomotive_max_health then
WPT.set('locomotive_health', locomotive_max_health)
Public.set('locomotive_health', locomotive_max_health)
end
locomotive_health = WPT.get('locomotive_health')
locomotive_health = Public.get('locomotive_health')
check_health()
local health_text = WPT.get('health_text')
local health_text = Public.get('health_text')
rendering.set_text(health_text, 'HP: ' .. round(locomotive_health) .. ' / ' .. round(locomotive_max_health))
end
@ -297,7 +284,7 @@ local function protect_entities(data)
return
end
local check_heavy_damage = WPT.get('check_heavy_damage')
local check_heavy_damage = Public.get('check_heavy_damage')
if check_heavy_damage then
if entity.type == 'simple-entity' and dmg >= 500 then
@ -321,7 +308,7 @@ local function protect_entities(data)
return false
end
local carriages_numbers = WPT.get('carriages_numbers')
local carriages_numbers = Public.get('carriages_numbers')
if is_protected(entity) then
if (cause and cause.valid) then
if cause.force.index == 2 then
@ -360,12 +347,12 @@ local function hidden_treasure(player, entity)
if magic >= 50 then
local msg = rare_treasure_chest_messages[random(1, #rare_treasure_chest_messages)]
Alert.alert_player(player, 5, msg)
Loot.add_rare(entity.surface, entity.position, 'wooden-chest', magic)
Public.add_loot_rare(entity.surface, entity.position, 'wooden-chest', magic)
return
end
local msg = treasure_chest_messages[random(1, #treasure_chest_messages)]
Alert.alert_player(player, 5, msg, nil, nil, 0.3)
Loot.add(entity.surface, entity.position, chests[random(1, size_chests)])
Public.add_loot(entity.surface, entity.position, chests[random(1, size_chests)])
end
local function biters_chew_rocks_faster(data)
@ -400,10 +387,10 @@ local function angry_tree(entity, cause, player)
return
end
if random(1, 6) == 1 then
BuriedEnemies.buried_biter(entity.surface, entity.position)
Public.buried_biter(entity.surface, entity.position)
end
if random(1, 8) == 1 then
BuriedEnemies.buried_worm(entity.surface, entity.position)
Public.buried_worm(entity.surface, entity.position)
end
if random(1, 32) ~= 1 then
return
@ -420,8 +407,8 @@ local function angry_tree(entity, cause, player)
if player then
local forest_zone = RPG.get_value_from_player(player.index, 'forest_zone')
if forest_zone and random(1, 32) == 1 then
local cbl = Callbacks.refill_turret_callback
local data = {callback_data = Callbacks.piercing_rounds_magazine_ammo}
local cbl = Public.refill_turret_callback
local data = {callback_data = Public.piercing_rounds_magazine_ammo}
local e =
entity.surface.create_entity(
{
@ -430,8 +417,8 @@ local function angry_tree(entity, cause, player)
force = 'enemy'
}
)
if e.can_insert(Callbacks.piercing_rounds_magazine_ammo) then
e.insert(Callbacks.piercing_rounds_magazine_ammo)
if e.can_insert(Public.piercing_rounds_magazine_ammo) then
e.insert(Public.piercing_rounds_magazine_ammo)
end
local callback = Token.get(cbl)
callback(e, data)
@ -453,8 +440,8 @@ local function angry_tree(entity, cause, player)
end
local function give_coin(player)
local coin_amount = WPT.get('coin_amount')
local coin_override = WPT.get('coin_override')
local coin_amount = Public.get('coin_amount')
local coin_override = Public.get('coin_override')
local forest_zone = RPG.get_value_from_player(player.index, 'forest_zone')
if forest_zone then
@ -504,12 +491,12 @@ local mining_events = {
},
{
function(entity)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
BuriedEnemies.buried_biter(entity.surface, entity.position)
Public.buried_biter(entity.surface, entity.position)
entity.destroy()
end,
4096,
@ -517,12 +504,12 @@ local mining_events = {
},
{
function(entity)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
BuriedEnemies.buried_biter(entity.surface, entity.position)
Public.buried_biter(entity.surface, entity.position)
entity.destroy()
end,
512,
@ -530,12 +517,12 @@ local mining_events = {
},
{
function(entity)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
BuriedEnemies.buried_worm(entity.surface, entity.position)
Public.buried_worm(entity.surface, entity.position)
entity.destroy()
end,
2048,
@ -543,12 +530,12 @@ local mining_events = {
},
{
function(entity)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
Traps(entity.surface, entity.position)
Public.tick_tack_trap(entity.surface, entity.position)
entity.destroy()
end,
2048,
@ -556,7 +543,7 @@ local mining_events = {
},
{
function(entity, index)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
@ -629,7 +616,7 @@ local mining_events = {
},
{
function(entity, index)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
@ -649,7 +636,7 @@ local mining_events = {
},
{
function(entity, index)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
@ -678,7 +665,7 @@ local mining_events = {
},
{
function(entity)
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
@ -744,11 +731,11 @@ local function on_player_mined_entity(event)
return
end
local mined_scrap = WPT.get('mined_scrap')
local mined_scrap = Public.get('mined_scrap')
if entity.type == 'simple-entity' or entity.type == 'simple-entity-with-owner' or entity.type == 'tree' then
WPT.set().mined_scrap = mined_scrap + 1
Mining.on_player_mined_entity(event)
Public.set().mined_scrap = mined_scrap + 1
Public.on_player_mined_entity(event)
if entity.type == 'tree' then
if random(1, 3) == 1 then
give_coin(player)
@ -912,7 +899,7 @@ local function on_entity_damaged(event)
local wave_number = WD.get_wave()
local boss_wave_warning = WD.get_alert_boss_wave()
local munch_time = WPT.get('munch_time')
local munch_time = Public.get('munch_time')
local data = {
cause = cause,
@ -945,7 +932,7 @@ local function on_player_repaired_entity(event)
return
end
local entity = event.entity
local carriages_numbers = WPT.get('carriages_numbers')
local carriages_numbers = Public.get('carriages_numbers')
if carriages_numbers[entity.unit_number] then
local player = game.get_player(event.player_index)
@ -998,20 +985,20 @@ local function on_entity_died(event)
return
end
local biters_killed = WPT.get('biters_killed')
local biters = WPT.get('biters')
local biters_killed = Public.get('biters_killed')
local biters = Public.get('biters')
if entity.type == 'unit' or entity.type == 'unit-spawner' then
WPT.set().biters_killed = biters_killed + 1
Public.set().biters_killed = biters_killed + 1
biters.amount = biters.amount - 1
if biters.amount <= 0 then
biters.amount = 0
end
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
return
end
if random(1, 512) == 1 then
Traps(entity.surface, entity.position)
Public.tick_tack_trap(entity.surface, entity.position)
return
end
end
@ -1033,7 +1020,7 @@ local function on_entity_died(event)
return
end
end
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
return
end
angry_tree(entity, cause, player)
@ -1041,22 +1028,22 @@ local function on_entity_died(event)
end
if entity.type == 'simple-entity' then
if Locomotive.is_around_train(entity) then
if Public.is_around_train(entity) then
entity.destroy()
return
end
if random(1, 32) == 1 then
BuriedEnemies.buried_biter(entity.surface, entity.position)
Public.buried_biter(entity.surface, entity.position)
entity.destroy()
return
end
if random(1, 64) == 1 then
BuriedEnemies.buried_worm(entity.surface, entity.position)
Public.buried_worm(entity.surface, entity.position)
entity.destroy()
return
end
if random(1, 512) == 1 then
Traps(entity.surface, entity.position)
Public.tick_tack_trap(entity.surface, entity.position)
return
end
entity.destroy()
@ -1159,7 +1146,7 @@ local function show_mvps(player)
miners_label_text.style.font = 'default-bold'
miners_label_text.style.font_color = {r = 0.33, g = 0.66, b = 0.9}
local sent_to_discord = WPT.get('sent_to_discord')
local sent_to_discord = Public.get('sent_to_discord')
if not sent_to_discord then
local message = {
@ -1199,12 +1186,12 @@ local function show_mvps(player)
end
local time_played = Core.format_time(game.ticks_played)
local total_players = #game.players
local pickaxe_upgrades = WPT.pickaxe_upgrades
local upgrades = WPT.get('upgrades')
local pickaxe_upgrades = Public.pickaxe_upgrades
local upgrades = Public.get('upgrades')
local pick_tier = pickaxe_upgrades[upgrades.pickaxe_tier]
local server_name_matches = Server.check_server_name('Mtn Fortress')
if WPT.get('prestige_system_enabled') then
if Public.get('prestige_system_enabled') then
RPG_Progression.save_all_players()
end
local date = Server.get_start_time()
@ -1270,7 +1257,7 @@ local function show_mvps(player)
Server.to_discord_embed_parsed(text)
end
WPT.set('sent_to_discord', true)
Public.set('sent_to_discord', true)
end
end
end
@ -1284,19 +1271,20 @@ function Public.unstuck_player(index)
end
player.teleport(position, surface)
end
function Public.loco_died(invalid_locomotive)
local game_lost = WPT.get('game_lost')
local game_lost = Public.get('game_lost')
if not game_lost then
return
end
local announced_message = WPT.get('announced_message')
local announced_message = Public.get('announced_message')
if announced_message then
return
end
local active_surface_index = WPT.get('active_surface_index')
local locomotive = WPT.get('locomotive')
local active_surface_index = Public.get('active_surface_index')
local locomotive = Public.get('locomotive')
local surface = game.surfaces[active_surface_index]
local wave_defense_table = WD.get_table()
if wave_defense_table.game_lost and not invalid_locomotive then
@ -1310,7 +1298,7 @@ function Public.loco_died(invalid_locomotive)
end
if not locomotive.valid then
local this = WPT.get()
local this = Public.get()
local data = {}
if this.locomotive and this.locomotive.valid then
@ -1351,7 +1339,7 @@ function Public.loco_died(invalid_locomotive)
return
end
local this = WPT.get()
local this = Public.get()
this.locomotive_health = 0
this.locomotive.color = {0.49, 0, 255, 1}
@ -1430,7 +1418,7 @@ local function on_built_entity(event)
return
end
local upgrades = WPT.get('upgrades')
local upgrades = Public.get('upgrades')
local upg = upgrades
local surface = entity.surface
@ -1526,7 +1514,7 @@ local function on_robot_built_entity(event)
return
end
local upgrades = WPT.get('upgrades')
local upgrades = Public.get('upgrades')
local upg = upgrades
local surface = entity.surface

View File

@ -1,12 +1,12 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Server = require 'utils.server'
local Token = require 'utils.token'
local Task = require 'utils.task'
local Color = require 'utils.color_presets'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local Event = require 'utils.event'
local Global = require 'utils.global'
local Alert = require 'utils.alert'
local WPT = require 'maps.mountain_fortress_v3.table'
local WD = require 'modules.wave_defense.table'
local RPG = require 'modules.rpg.main'
local Collapse = require 'modules.collapse'
@ -16,7 +16,9 @@ local math2d = require 'math2d'
local Misc = require 'utils.commands.misc'
local Core = require 'utils.core'
local Beams = require 'modules.render_beam'
local zone_settings = WPT.zone_settings
local BottomFrame = require 'utils.gui.bottom_frame'
local zone_settings = Public.zone_settings
local this = {
power_sources = {index = 1},
@ -69,8 +71,6 @@ Global.register(
end
)
local Public = {}
local random = math.random
local floor = math.floor
local round = math.round
@ -100,7 +100,7 @@ local artillery_target_entities = {
}
local function debug_str(msg)
local debug = WPT.get('debug')
local debug = Public.get('debug')
if not debug then
return
end
@ -296,7 +296,7 @@ local artillery_target_callback =
)
local function difficulty_and_adjust_prices()
local fixed_prices = WPT.get('marked_fixed_prices')
local fixed_prices = Public.get('marked_fixed_prices')
local difficulty_index = Difficulty.get('index')
for index, price in pairs(fixed_prices) do
@ -310,7 +310,7 @@ end
local function do_beams_away()
local wave_number = WD.get_wave()
local orbital_strikes = WPT.get('orbital_strikes')
local orbital_strikes = Public.get('orbital_strikes')
if not orbital_strikes.enabled then
return
end
@ -327,7 +327,7 @@ local function do_beams_away()
end
if wave_number % wave_nth == 0 then
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local surface = game.get_surface(active_surface_index)
if not orbital_strikes[wave_number] then
@ -751,7 +751,7 @@ end
local function calc_players()
local players = game.connected_players
local check_afk_players = WPT.get('check_afk_players')
local check_afk_players = Public.get('check_afk_players')
if not check_afk_players then
return #players
end
@ -849,7 +849,7 @@ local boost_movement_speed_on_respawn =
)
function Public.set_difficulty()
local game_lost = WPT.get('game_lost')
local game_lost = Public.get('game_lost')
if game_lost then
return
end
@ -858,13 +858,13 @@ function Public.set_difficulty()
return
end
local wave_defense_table = WD.get_table()
local check_if_threat_below_zero = WPT.get('check_if_threat_below_zero')
local collapse_amount = WPT.get('collapse_amount')
local collapse_speed = WPT.get('collapse_speed')
local difficulty = WPT.get('difficulty')
local mining_bonus_till_wave = WPT.get('mining_bonus_till_wave')
local mining_bonus = WPT.get('mining_bonus')
local disable_mining_boost = WPT.get('disable_mining_boost')
local check_if_threat_below_zero = Public.get('check_if_threat_below_zero')
local collapse_amount = Public.get('collapse_amount')
local collapse_speed = Public.get('collapse_speed')
local difficulty = Public.get('difficulty')
local mining_bonus_till_wave = Public.get('mining_bonus_till_wave')
local mining_bonus = Public.get('mining_bonus')
local disable_mining_boost = Public.get('disable_mining_boost')
local wave_number = WD.get_wave()
local player_count = calc_players()
@ -971,17 +971,17 @@ function Public.set_difficulty()
mining_bonus = 0 -- back to 0% with more than 11 players
end
force.manual_mining_speed_modifier = force.manual_mining_speed_modifier + mining_bonus
WPT.set('mining_bonus', mining_bonus) -- Setting mining_bonus globally so it remembers how much to reduce
Public.set('mining_bonus', mining_bonus) -- Setting mining_bonus globally so it remembers how much to reduce
else
force.manual_mining_speed_modifier = force.manual_mining_speed_modifier - mining_bonus
WPT.set('disable_mining_boost', true)
Public.set('disable_mining_boost', true)
end
end
end
function Public.render_direction(surface)
local counter = WPT.get('soft_reset_counter')
local winter_mode = WPT.get('winter_mode')
local counter = Public.get('soft_reset_counter')
local winter_mode = Public.get('winter_mode')
local text = 'Welcome to Mountain Fortress v3!'
if winter_mode then
text = 'Welcome to Wintery Mountain Fortress v3!'
@ -1081,12 +1081,12 @@ function Public.render_direction(surface)
end
function Public.boost_difficulty()
local difficulty_set = WPT.get('difficulty_set')
local difficulty_set = Public.get('difficulty_set')
if difficulty_set then
return
end
local breached_wall = WPT.get('breached_wall')
local breached_wall = Public.get('breached_wall')
local difficulty = Difficulty.get()
if not difficulty then
@ -1102,51 +1102,51 @@ function Public.boost_difficulty()
local message = ({'main.diff_set', name})
local data = {
position = WPT.get('locomotive').position
position = Public.get('locomotive').position
}
Alert.alert_all_players_location(data, message)
local force = game.forces.player
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local surface = game.get_surface(active_surface_index)
if index == 1 then
force.manual_mining_speed_modifier = force.manual_mining_speed_modifier + 0.5
force.character_running_speed_modifier = 0.15
force.manual_crafting_speed_modifier = 0.15
WPT.set('coin_amount', 1)
WPT.set('upgrades').flame_turret.limit = 12
WPT.set('upgrades').landmine.limit = 50
WPT.set('locomotive_health', 10000)
WPT.set('locomotive_max_health', 10000)
WPT.set('bonus_xp_on_join', 500)
Public.set('coin_amount', 1)
Public.set('upgrades').flame_turret.limit = 12
Public.set('upgrades').landmine.limit = 50
Public.set('locomotive_health', 10000)
Public.set('locomotive_max_health', 10000)
Public.set('bonus_xp_on_join', 500)
WD.set('next_wave', game.tick + 3600 * 15)
WPT.set('spidertron_unlocked_at_zone', 10)
Public.set('spidertron_unlocked_at_zone', 10)
WD.set_normal_unit_current_health(1.0)
WD.set_unit_health_increment_per_wave(0.15)
WD.set_boss_unit_current_health(2)
WD.set_boss_health_increment_per_wave(1.5)
WD.set('death_mode', false)
WPT.set('difficulty_set', true)
Public.set('difficulty_set', true)
elseif index == 2 then
force.manual_mining_speed_modifier = force.manual_mining_speed_modifier + 0.25
force.character_running_speed_modifier = 0.1
force.manual_crafting_speed_modifier = 0.1
WPT.set('coin_amount', 2)
WPT.set('upgrades').flame_turret.limit = 10
WPT.set('upgrades').landmine.limit = 50
WPT.set('locomotive_health', 7000)
WPT.set('locomotive_max_health', 7000)
WPT.set('bonus_xp_on_join', 300)
Public.set('coin_amount', 2)
Public.set('upgrades').flame_turret.limit = 10
Public.set('upgrades').landmine.limit = 50
Public.set('locomotive_health', 7000)
Public.set('locomotive_max_health', 7000)
Public.set('bonus_xp_on_join', 300)
WD.set('next_wave', game.tick + 3600 * 8)
WPT.set('spidertron_unlocked_at_zone', 8)
Public.set('spidertron_unlocked_at_zone', 8)
WD.set_normal_unit_current_health(1.4)
WD.set_unit_health_increment_per_wave(0.3)
WD.set_boss_unit_current_health(3)
WD.set_boss_health_increment_per_wave(3)
WD.set('death_mode', false)
WPT.set('difficulty_set', true)
Public.set('difficulty_set', true)
local damage_warning = ({'main.damage_mode_warning'})
Alert.alert_all_players_location(data, damage_warning)
Core.iter_players(
@ -1160,12 +1160,12 @@ function Public.boost_difficulty()
end
end
)
local upgrades = WPT.get('upgrades')
if WPT.get('circle') then
rendering.destroy(WPT.get('circle'))
local upgrades = Public.get('upgrades')
if Public.get('circle') then
rendering.destroy(Public.get('circle'))
end
local locomotive = WPT.get('locomotive')
WPT.set(
local locomotive = Public.get('locomotive')
Public.set(
'circle',
rendering.draw_circle {
surface = active_surface_index,
@ -1180,20 +1180,20 @@ function Public.boost_difficulty()
elseif index == 3 then
force.character_running_speed_modifier = 0
force.manual_crafting_speed_modifier = 0
WPT.set('coin_amount', 4)
WPT.set('upgrades').flame_turret.limit = 3
WPT.set('upgrades').landmine.limit = 10
WPT.set('locomotive_health', 5000)
WPT.set('locomotive_max_health', 5000)
WPT.set('bonus_xp_on_join', 50)
Public.set('coin_amount', 4)
Public.set('upgrades').flame_turret.limit = 3
Public.set('upgrades').landmine.limit = 10
Public.set('locomotive_health', 5000)
Public.set('locomotive_max_health', 5000)
Public.set('bonus_xp_on_join', 50)
WD.set('next_wave', game.tick + 3600 * 5)
WPT.set('spidertron_unlocked_at_zone', 6)
Public.set('spidertron_unlocked_at_zone', 6)
WD.set_normal_unit_current_health(1.6)
WD.set_unit_health_increment_per_wave(0.5)
WD.set_boss_unit_current_health(4)
WD.set_boss_health_increment_per_wave(6)
WD.set('death_mode', true)
WPT.set('difficulty_set', true)
Public.set('difficulty_set', true)
Core.iter_players(
function(player)
local pos = surface.find_non_colliding_position('character', game.forces.player.get_spawn_position(surface), 3, 0, 5)
@ -1205,14 +1205,14 @@ function Public.boost_difficulty()
end
end
)
local upgrades = WPT.get('upgrades')
local upgrades = Public.get('upgrades')
upgrades.locomotive_aura_radius = upgrades.locomotive_aura_radius + 20
upgrades.aura_upgrades_max = upgrades.aura_upgrades_max - 4
if WPT.get('circle') then
rendering.destroy(WPT.get('circle'))
if Public.get('circle') then
rendering.destroy(Public.get('circle'))
end
local locomotive = WPT.get('locomotive')
WPT.set(
local locomotive = Public.get('locomotive')
Public.set(
'circle',
rendering.draw_circle {
surface = active_surface_index,
@ -1233,7 +1233,7 @@ end
function Public.set_spawn_position()
local collapse_pos = Collapse.get_position()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
@ -1259,17 +1259,17 @@ function Public.set_spawn_position()
::retry::
local y_value_position = WPT.get('y_value_position')
local locomotive_positions = WPT.get('locomotive_pos')
local y_value_position = Public.get('y_value_position')
local locomotive_positions = Public.get('locomotive_pos')
local total_pos = #locomotive_positions.tbl
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local surface = game.surfaces[active_surface_index]
if not (surface and surface.valid) then
return
end
local spawn_near_collapse = WPT.get('spawn_near_collapse')
local spawn_near_collapse = Public.get('spawn_near_collapse')
if spawn_near_collapse.active then
local collapse_position = surface.find_non_colliding_position('rocket-silo', collapse_pos, 64, 2)
@ -1344,8 +1344,8 @@ function Public.set_spawn_position()
end
function Public.on_player_joined_game(event)
local active_surface_index = WPT.get('active_surface_index')
local players = WPT.get('players')
local active_surface_index = Public.get('active_surface_index')
local players = Public.get('players')
local player = game.players[event.player_index]
local surface = game.surfaces[active_surface_index]
@ -1359,7 +1359,7 @@ function Public.on_player_joined_game(event)
end
local message = ({'main.greeting', player.name})
Alert.alert_player(player, 15, message)
if WPT.get('death_mode') then
if Public.get('death_mode') then
local death_message = ({'main.death_mode_warning'})
Alert.alert_player(player, 15, death_message)
end
@ -1389,7 +1389,7 @@ function Public.on_player_joined_game(event)
end
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
@ -1432,11 +1432,19 @@ function Public.on_player_respawned(event)
end
function Public.on_player_changed_position(event)
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
if not active_surface_index then
return
end
local player = game.players[event.player_index]
if not player or not player.valid then
return
end
if player.controller_type == defines.controllers.spectator then
return
end
local map_name = 'mtn_v3'
if string.sub(player.surface.name, 0, #map_name) ~= map_name then
@ -1447,7 +1455,7 @@ function Public.on_player_changed_position(event)
local surface = game.surfaces[active_surface_index]
local p = {x = player.position.x, y = player.position.y}
local config_tile = WPT.get('void_or_tile')
local config_tile = Public.get('void_or_tile')
if config_tile == 'lab-dark-2' then
local get_tile = surface.get_tile(p)
if get_tile.valid and get_tile.name == 'lab-dark-2' then
@ -1529,7 +1537,7 @@ function Public.on_research_finished(event)
local technology_prototypes = game.technology_prototypes
if WPT.get('print_tech_to_discord') and force.name == 'player' then
if Public.get('print_tech_to_discord') and force.name == 'player' then
Server.to_discord_bold({'functions.researched_complete', technology_prototypes[research_name].localised_name}, true)
end
@ -1548,7 +1556,7 @@ function Public.on_research_finished(event)
if not force_name then
return
end
local flamethrower_damage = WPT.get('flamethrower_damage')
local flamethrower_damage = Public.get('flamethrower_damage')
flamethrower_damage[force_name] = -0.85
if research.name == 'military' then
game.forces[force_name].set_turret_attack_modifier('flamethrower-turret', flamethrower_damage[force_name])
@ -1562,6 +1570,89 @@ function Public.on_research_finished(event)
end
end
function Public.set_player_to_god(player)
if player.character and player.character.valid then
return false
end
if not player.character and player.controller_type ~= defines.controllers.spectator then
player.print('[color=blue][Spectate][/color] It seems that you are not in the realm of the living.', Color.warning)
return false
end
local spectate = Public.get('spectate')
if spectate[player.index] and spectate[player.index].delay and spectate[player.index].delay > game.tick then
local cooldown = floor((spectate[player.index].delay - game.tick) / 60) + 1 .. ' seconds!'
player.print('[color=blue][Spectate][/color] Retry again in ' .. cooldown, Color.warning)
return false
end
spectate[player.index] = nil
player.set_controller({type = defines.controllers.god})
player.create_character()
local active_surface_index = Public.get('active_surface_index')
local surface = game.get_surface(active_surface_index)
if not surface or not surface.valid then
return false
end
local pos = surface.find_non_colliding_position('character', game.forces.player.get_spawn_position(surface), 3, 0, 5)
if pos then
player.teleport(pos, surface)
else
pos = game.forces.player.get_spawn_position(surface)
player.teleport(pos, surface)
end
Event.raise(
BottomFrame.events.bottom_quickbar_respawn_raise,
{
player_index = player.index
}
)
player.tag = ''
game.print('[color=blue][Spectate][/color] ' .. player.name .. ' is no longer spectating!')
Server.to_discord_bold(table.concat {'*** ', '[Spectate] ' .. player.name .. ' is no longer spectating!', ' ***'})
return true
end
function Public.set_player_to_spectator(player)
if player.in_combat then
player.print('[color=blue][Spectate][/color] You are in combat. Try again soon.', Color.warning)
return false
end
local spectate = Public.get('spectate')
if not spectate[player.index] then
spectate[player.index] = {
verify = false
}
player.print('[color=blue][Spectate][/color] Please click the spectate button again if you really want to this.', Color.warning)
return false
end
if player.character and player.character.valid then
player.character.die()
end
player.character = nil
player.spectator = true
player.tag = '[Spectator]'
player.set_controller({type = defines.controllers.spectator})
game.print('[color=blue][Spectate][/color] ' .. player.name .. ' is now spectating.')
Server.to_discord_bold(table.concat {'*** ', '[Spectate] ' .. player.name .. ' is now spectating.', ' ***'})
if spectate[player.index] and not spectate[player.index].delay then
spectate[player.index].verify = true
spectate[player.index].delay = game.tick + 18000
end
return true
end
Public.firearm_magazine_ammo = {name = 'firearm-magazine', count = 200}
Public.piercing_rounds_magazine_ammo = {name = 'piercing-rounds-magazine', count = 200}
Public.uranium_rounds_magazine_ammo = {name = 'uranium-rounds-magazine', count = 200}
@ -1569,7 +1660,7 @@ Public.light_oil_ammo = {name = 'light-oil', amount = 100}
Public.artillery_shell_ammo = {name = 'artillery-shell', count = 15}
Public.laser_turrent_power_source = {buffer_size = 2400000, power_production = 40000}
function Public.reset_table()
function Public.reset_func_table()
this.power_sources = {index = 1}
this.refill_turrets = {index = 1}
this.magic_crafters = {index = 1}

View File

@ -1,15 +1,10 @@
local Market = require 'maps.mountain_fortress_v3.basic_markets'
local WPT = require 'maps.mountain_fortress_v3.table'
local Loot = require 'maps.mountain_fortress_v3.loot'
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Task = require 'utils.task'
local Token = require 'utils.token'
local Event = require 'utils.event'
local Terrain = require 'maps.mountain_fortress_v3.terrain'
local WD = require 'modules.wave_defense.table'
local BiterHealthBooster = require 'modules.biter_health_booster_v2'
local Public = {}
local random = math.random
local abs = math.abs
local ceil = math.ceil
@ -18,7 +13,8 @@ local queue_task = Task.queue_task
local tiles_per_call = 8
local total_calls = ceil(1024 / tiles_per_call)
local regen_decoratives = false
local generate_map = Terrain.heavy_functions
local generate_map = Public.heavy_functions
local winter_mode = false
local wintery_type = {
['simple-entity'] = true,
@ -211,7 +207,7 @@ local function do_place_treasure(data)
if random(1, 6) == 1 then
e.chest = 'iron-chest'
end
Loot.add(surface, e.position, e.chest)
Public.add_loot(surface, e.position, e.chest)
end
end
@ -231,7 +227,7 @@ local function do_place_markets(data)
limit = 1
} == 0
then
local market = Market.mountain_market(surface, pos, abs(pos.y) * 0.004)
local market = Public.mountain_market(surface, pos, abs(pos.y) * 0.004)
market.destructible = false
end
end
@ -618,11 +614,12 @@ local do_chunk = Public.do_chunk
local schedule_chunk = Public.schedule_chunk
local function on_chunk(event)
local force_chunk = WPT.get('force_chunk')
local stop_chunk = WPT.get('stop_chunk')
local force_chunk = Public.get('force_chunk')
local stop_chunk = Public.get('stop_chunk')
if stop_chunk then
return
end
if force_chunk then
do_chunk(event)
else

View File

@ -1,3 +1,4 @@
local Public = require 'maps.mountain_fortress_v3.table'
local simplex_noise = require 'utils.simplex_noise'.d2
--add or use noise templates from here
@ -125,7 +126,7 @@ local noises = {
}
--returns a float number between -1 and 1
local function get_noise(name, pos, seed)
function Public.get_noise(name, pos, seed)
local noise = 0
local d = 0
for i = 1, #noises[name] do
@ -138,4 +139,4 @@ local function get_noise(name, pos, seed)
return noise
end
return get_noise
return Public

View File

@ -1,6 +1,6 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local RPG = require 'modules.rpg.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local IC_Gui = require 'maps.mountain_fortress_v3.ic.gui'
local IC_Minimap = require 'maps.mountain_fortress_v3.ic.minimap'
local Difficulty = require 'modules.difficulty_vote_by_amount'
@ -9,10 +9,8 @@ local SpamProtection = require 'utils.spam_protection'
local format_number = require 'util'.format_number
local Public = {}
Public.events = {reset_map = Event.generate_event_name('reset_map')}
local main_button_name = Gui.uid_name()
local spectate_button_name = Gui.uid_name()
local main_frame_name = Gui.uid_name()
local floor = math.floor
@ -57,6 +55,22 @@ local function create_button(player)
b.style.maximal_height = 38
end
local function spectate_button(player)
if player.gui.top[spectate_button_name] then
return
end
local b =
player.gui.top.add {
type = 'sprite-button',
name = spectate_button_name,
sprite = 'utility/ghost_time_to_live_modifier_icon',
tooltip = 'Spectate!\nThis will kill your character.'
}
b.style.maximal_height = 38
end
local function create_main_frame(player)
local label
local line
@ -142,6 +156,22 @@ local function create_main_frame(player)
label.style.right_padding = 4
end
local function hide_all_gui(player)
for _, child in pairs(player.gui.top.children) do
if child.name ~= spectate_button_name then
child.visible = false
end
end
end
local function show_all_gui(player)
for _, child in pairs(player.gui.top.children) do
if child.name ~= spectate_button_name then
child.visible = true
end
end
end
local function on_player_joined_game(event)
local player = game.players[event.player_index]
if not player then
@ -151,6 +181,10 @@ local function on_player_joined_game(event)
if not player.gui.top[main_button_name] then
create_button(player)
end
if not player.gui.top[spectate_button_name] then
spectate_button(player)
end
end
local function on_gui_click(event)
@ -171,7 +205,7 @@ local function on_gui_click(event)
return
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not validate_entity(locomotive) then
return
end
@ -249,11 +283,12 @@ local function on_player_changed_surface(event)
local rpg_button = RPG.draw_main_frame_name
local rpg_frame = RPG.main_frame_name
local rpg_settings = RPG.settings_frame_name
local main = WPT.get('locomotive')
local icw_locomotive = WPT.get('icw_locomotive')
local main = Public.get('locomotive')
local icw_locomotive = Public.get('icw_locomotive')
local wagon_surface = icw_locomotive.surface
local info = player.gui.top[main_button_name]
local wd = player.gui.top['wave_defense']
local spectate = player.gui.top[spectate_button_name]
local rpg_b = player.gui.top[rpg_button]
local rpg_f = player.gui.screen[rpg_frame]
local rpg_s = player.gui.screen[rpg_settings]
@ -299,6 +334,9 @@ local function on_player_changed_surface(event)
if wd and not wd.visible then
wd.visible = true
end
if spectate and not spectate.visible then
spectate.visible = true
end
if charging and not charging.visible then
charging.visible = true
end
@ -311,6 +349,9 @@ local function on_player_changed_surface(event)
if wd then
wd.visible = false
end
if spectate then
spectate.visible = false
end
if rpg_b then
rpg_b.visible = false
end
@ -356,6 +397,7 @@ local function enable_guis(event)
local rpg_button = RPG.draw_main_frame_name
local info = player.gui.top[main_button_name]
local wd = player.gui.top['wave_defense']
local spectate = player.gui.top[spectate_button_name]
local rpg_b = player.gui.top[rpg_button]
local diff = player.gui.top[Difficulty.top_button_name]
local charging = player.gui.top['charging_station']
@ -382,6 +424,9 @@ local function enable_guis(event)
if wd and not wd.visible then
wd.visible = true
end
if spectate and not spectate.visible then
spectate.visible = true
end
if charging and not charging.visible then
charging.visible = true
end
@ -407,9 +452,9 @@ function Public.update_gui(player)
local gui = player.gui.top[main_frame_name]
local rpg_extra = RPG.get('rpg_extra')
local mined_scrap = WPT.get('mined_scrap')
local biters_killed = WPT.get('biters_killed')
local upgrades = WPT.get('upgrades')
local mined_scrap = Public.get('mined_scrap')
local biters_killed = Public.get('biters_killed')
local upgrades = Public.get('upgrades')
if rpg_extra.global_pool == 0 then
gui.global_pool.caption = 'XP: 0'
@ -422,7 +467,7 @@ function Public.update_gui(player)
gui.scrap_mined.caption = ' [img=entity.tree-01][img=entity.rock-huge]: ' .. format_number(mined_scrap, true)
gui.scrap_mined.tooltip = ({'gui.amount_harvested'})
local pickaxe_upgrades = WPT.pickaxe_upgrades
local pickaxe_upgrades = Public.pickaxe_upgrades
local pick_tier = pickaxe_upgrades[upgrades.pickaxe_tier]
local speed = math.round((player.force.manual_mining_speed_modifier + player.character_mining_speed_modifier + 1) * 100)
local train_upgrade_contribution = upgrades.train_upgrade_contribution
@ -454,4 +499,31 @@ Event.add(defines.events.on_player_changed_surface, on_player_changed_surface)
Event.add(defines.events.on_gui_click, on_gui_click)
Event.add(Public.events.reset_map, enable_guis)
Gui.on_click(
spectate_button_name,
function(event)
local is_spamming = SpamProtection.is_spamming(event.player, nil, 'Mtn v3 Spectate Button')
if is_spamming then
return
end
local player = event.player
if not player or not player.valid then
return
end
if player.character and player.character.valid then
local success = Public.set_player_to_spectator(player)
if success then
hide_all_gui(player)
end
else
local success = Public.set_player_to_god(player)
if success then
show_all_gui(player)
end
end
end
)
return Public

View File

@ -1,10 +1,10 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Global = require 'utils.global'
local Server = require 'utils.server'
local Token = require 'utils.token'
local Gui = require 'utils.gui'
local Score = require 'utils.gui.score'
local WPT = require 'maps.mountain_fortress_v3.table'
local WD = require 'modules.wave_defense.table'
local Core = require 'utils.core'
local SpamProtection = require 'utils.spam_protection'
@ -15,7 +15,6 @@ local score_key = 'mountain_fortress_v3_scores'
local set_data = Server.set_data
local try_get_data = Server.try_get_data
local Public = {}
local insert = table.insert
local random = math.random
local this = {
@ -291,7 +290,7 @@ end
local function write_additional_stats(key, difficulty)
local player = game.forces.player
local new_breached_zone = WPT.get('breached_wall')
local new_breached_zone = Public.get('breached_wall')
local new_wave_number = WD.get('wave_number')
local new_biters_killed = get_total_biter_killcount(player)
local new_rockets_launched = player.rockets_launched

View File

@ -10,7 +10,6 @@ local Event = require 'utils.event'
local Public = {}
local main_tile_name = 'black-refined-concrete'
local raise_event = script.raise_event
local round = math.round
local floor = math.floor
@ -140,7 +139,7 @@ local function get_entity_from_player_surface(cars, player)
end
local function get_owner_car_surface(cars, player, target)
for k, car in pairs(cars) do
for _, car in pairs(cars) do
if car.owner == player.index then
local surface_index = car.surface
local surface = game.surfaces[surface_index]
@ -173,7 +172,7 @@ end
local function get_player_entity(player)
local cars = IC.get('cars')
for k, car in pairs(cars) do
for _, car in pairs(cars) do
if car.owner == player.index and type(car.entity) == 'boolean' then
return car.name, true
elseif car.owner == player.index then
@ -187,7 +186,7 @@ local function get_owner_car_name(player)
local cars = IC.get('cars')
local saved_surfaces = IC.get('saved_surfaces')
local index = saved_surfaces[player.index]
for k, car in pairs(cars) do
for _, car in pairs(cars) do
if not index then
return false
end
@ -819,6 +818,10 @@ function Public.kill_car(entity)
local renders = IC.get('renders')
if not owner then
return
end
if renders[owner.index] then
rendering.destroy(renders[owner.index])
renders[owner.index] = nil
@ -892,6 +895,10 @@ function Public.kill_car_but_save_surface(entity)
end
end
if not owner then
return
end
local renders = IC.get('renders')
if renders[owner.index] then
@ -1246,7 +1253,7 @@ function Public.use_door_with_entity(player, door)
local surface_index = car.surface
local surface = game.surfaces[surface_index]
if validate_entity(car.entity) and car.owner == player.index then
raise_event(
Event.raise(
IC.events.used_car_door,
{
player = player,
@ -1277,7 +1284,7 @@ function Public.use_door_with_entity(player, door)
player_data.surface = surface.index
else
if validate_entity(car.entity) and car.owner == player.index then
raise_event(
Event.raise(
IC.events.used_car_door,
{
player = player,

View File

@ -31,7 +31,6 @@ local auto_upgrade_name = Gui.uid_name()
local kick_player_name = Gui.uid_name()
local destroy_surface_name = Gui.uid_name()
local raise_event = script.raise_event
local add_toolbar
local remove_toolbar
@ -869,7 +868,7 @@ Gui.on_click(
if player_list.players[name] then
player.print('[IC] ' .. name .. ' was removed from your vehicle.', Color.info)
decrement(player_list.players, name)
raise_event(
Event.raise(
ICT.events.on_player_kicked_from_surface,
{
player = player,

View File

@ -199,52 +199,6 @@ local function input_filtered(wagon_inventory, chest, chest_inventory, free_slot
end
end
local remove_lights_token =
Token.register(
function(data)
local id = data.id
if id then
rendering.destroy(id)
end
end
)
function Public.glimpse_of_lights()
local surface = WPT.get('loco_surface')
if not surface or not surface.valid then
return
end
local icw = ICW.get()
local hazardous_debris = icw.hazardous_debris
if not hazardous_debris then
return
end
local text = rendering.draw_text
local position = fallout_debris[random(1, size_of_debris)]
local p = {x = position[1], y = position[2]}
local get_tile = surface.get_tile(p)
if get_tile.valid and get_tile.name == 'out-of-map' then
local id =
text {
text = '',
surface = surface,
target = position,
color = {r = 1, g = 1, b = 0},
orientation = random(0, 100) * 0.01,
scale = 0.4,
font = 'heading-1',
alignment = 'center',
scale_with_zoom = false
}
Task.set_timeout_in_ticks(300, remove_lights_token, {id = id})
end
end
function Public.hazardous_debris()
local surface = WPT.get('loco_surface')
if not surface or not surface.valid then

View File

@ -96,7 +96,6 @@ local function on_tick()
if tick % 10 == 0 then
Functions.item_transfer()
Functions.hazardous_debris()
-- Functions.glimpse_of_lights()
end
if tick % 240 == 0 then
Functions.update_minimap()

View File

@ -12,7 +12,7 @@ local Public = {}
function Public.reset()
if this.surfaces then
for k, surface in pairs(this.surfaces) do
for _, surface in pairs(this.surfaces) do
if surface and surface.valid then
game.delete_surface(surface)
end

View File

@ -1,17 +1,12 @@
local Event = require 'utils.event'
local Market = require 'maps.mountain_fortress_v3.basic_markets'
local LocomotiveMarket = require 'maps.mountain_fortress_v3.locomotive.market'
local Public = require 'maps.mountain_fortress_v3.table'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local ICFunctions = require 'maps.mountain_fortress_v3.ic.functions'
local Session = require 'utils.datastore.session_data'
local Difficulty = require 'modules.difficulty_vote_by_amount'
local RPG = require 'modules.rpg.main'
local Gui = require 'utils.gui'
local Alert = require 'utils.alert'
local PermissionGroups = require 'maps.mountain_fortress_v3.locomotive.permission_groups'
local Public = {}
local rpg_main_frame = RPG.main_frame_name
local random = math.random
@ -40,8 +35,8 @@ local non_valid_vehicles = {
}
local function add_random_loot_to_main_market(rarity)
local main_market_items = WPT.get('main_market_items')
local items = Market.get_random_item(rarity, true, false)
local main_market_items = Public.get('main_market_items')
local items = Public.get_random_item(rarity, true, false)
if not items then
return false
end
@ -118,7 +113,7 @@ local function hurt_players_outside_of_aura()
if not Diff then
return
end
local difficulty_set = WPT.get('difficulty_set')
local difficulty_set = Public.get('difficulty_set')
if not difficulty_set then
return
end
@ -129,14 +124,14 @@ local function hurt_players_outside_of_aura()
death_mode = true
end
local loco_surface = WPT.get('loco_surface')
local loco_surface = Public.get('loco_surface')
if not (loco_surface and loco_surface.valid) then
return
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
local loco = locomotive.position
local upgrades = WPT.get('upgrades')
local upgrades = Public.get('upgrades')
local players = game.connected_players
for i = 1, #players do
@ -207,12 +202,12 @@ end
local function give_passive_xp(data)
local xp_floating_text_color = {r = 188, g = 201, b = 63}
local visuals_delay = 1800
local loco_surface = WPT.get('loco_surface')
local loco_surface = Public.get('loco_surface')
if not (loco_surface and loco_surface.valid) then
return
end
local upgrades = WPT.get('upgrades')
local locomotive = WPT.get('locomotive')
local upgrades = Public.get('upgrades')
local locomotive = Public.get('locomotive')
local rpg = data.rpg
local loco = locomotive.position
@ -225,12 +220,12 @@ local function give_passive_xp(data)
if player.afk_time < 200 and not RPG.get_last_spell_cast(player) then
if inside or player.surface.index == loco_surface.index then
if player.surface.index == loco_surface.index then
PermissionGroups.add_player_to_permission_group(player, 'limited')
Public.add_player_to_permission_group(player, 'limited')
elseif ICFunctions.get_player_surface(player) then
PermissionGroups.add_player_to_permission_group(player, 'limited')
Public.add_player_to_permission_group(player, 'limited')
goto pre_exit
else
PermissionGroups.add_player_to_permission_group(player, 'near_locomotive')
Public.add_player_to_permission_group(player, 'near_locomotive')
end
local pos = player.position
@ -254,11 +249,11 @@ local function give_passive_xp(data)
end
end
else
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local surface = game.surfaces[active_surface_index]
if surface and surface.valid then
if player.surface.index == surface.index then
PermissionGroups.add_player_to_permission_group(player, 'main_surface')
Public.add_player_to_permission_group(player, 'main_surface')
end
end
end
@ -268,7 +263,7 @@ local function give_passive_xp(data)
end
local function fish_tag()
local locomotive_cargo = WPT.get('locomotive_cargo')
local locomotive_cargo = Public.get('locomotive_cargo')
if not (locomotive_cargo and locomotive_cargo.valid) then
return
end
@ -276,7 +271,7 @@ local function fish_tag()
return
end
local locomotive_tag = WPT.get('locomotive_tag')
local locomotive_tag = Public.get('locomotive_tag')
if locomotive_tag then
if locomotive_tag.valid then
@ -286,7 +281,7 @@ local function fish_tag()
locomotive_tag.destroy()
end
end
WPT.set(
Public.set(
'locomotive_tag',
locomotive_cargo.force.add_chart_tag(
locomotive_cargo.surface,
@ -300,7 +295,7 @@ local function fish_tag()
end
local function set_player_spawn()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive then
return
end
@ -316,7 +311,7 @@ local function set_player_spawn()
end
local function refill_fish()
local locomotive_cargo = WPT.get('locomotive_cargo')
local locomotive_cargo = Public.get('locomotive_cargo')
if not locomotive_cargo then
return
end
@ -327,7 +322,7 @@ local function refill_fish()
end
local function set_carriages()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
@ -345,8 +340,8 @@ local function set_carriages()
end
end
WPT.set('carriages_numbers', t)
WPT.set('carriages', locomotive.train.carriages)
Public.set('carriages_numbers', t)
Public.set('carriages', locomotive.train.carriages)
end
local function get_driver_action(entity)
@ -388,17 +383,17 @@ local function get_driver_action(entity)
end
local function set_locomotive_health()
local locomotive_health = WPT.get('locomotive_health')
local locomotive_max_health = WPT.get('locomotive_max_health')
local locomotive = WPT.get('locomotive')
local locomotive_health = Public.get('locomotive_health')
local locomotive_max_health = Public.get('locomotive_max_health')
local locomotive = Public.get('locomotive')
local function check_health()
local m = locomotive_health / locomotive_max_health
if locomotive_health > locomotive_max_health then
WPT.set('locomotive_health', locomotive_max_health)
Public.set('locomotive_health', locomotive_max_health)
end
rendering.set_text(WPT.get('health_text'), 'HP: ' .. round(locomotive_health) .. ' / ' .. round(locomotive_max_health))
local carriages = WPT.get('carriages')
rendering.set_text(Public.get('health_text'), 'HP: ' .. round(locomotive_health) .. ' / ' .. round(locomotive_max_health))
local carriages = Public.get('carriages')
if carriages then
for i = 1, #carriages do
local entity = carriages[i]
@ -424,7 +419,7 @@ local function set_locomotive_health()
end
local function validate_index()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive then
return
end
@ -433,12 +428,12 @@ local function validate_index()
end
local icw_table = ICW.get_table()
local icw_locomotive = WPT.get('icw_locomotive')
local icw_locomotive = Public.get('icw_locomotive')
local loco_surface = icw_locomotive.surface
local unit_surface = locomotive.unit_number
local locomotive_surface = game.surfaces[icw_table.wagons[unit_surface].surface.index]
if loco_surface.valid then
WPT.set('loco_surface', locomotive_surface)
Public.set('loco_surface', locomotive_surface)
end
end
@ -459,21 +454,21 @@ local function on_research_finished(event)
Alert.alert_all_players(15, message, nil, 'achievement/tech-maniac', 0.1)
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
local market_announce = WPT.get('market_announce')
local market_announce = Public.get('market_announce')
if market_announce > game.tick then
return
end
local breached_wall = WPT.get('breached_wall')
local breached_wall = Public.get('breached_wall')
add_random_loot_to_main_market(breached_wall)
local message = ({'locomotive.new_items_at_market'})
Alert.alert_all_players(5, message, nil, 'achievement/tech-maniac', 0.1)
LocomotiveMarket.refresh_gui()
Public.refresh_gui()
end
local function on_player_changed_surface(event)
@ -482,7 +477,7 @@ local function on_player_changed_surface(event)
return
end
local active_surface = WPT.get('active_surface_index')
local active_surface = Public.get('active_surface_index')
local surface = game.surfaces[active_surface]
if not surface or not surface.valid then
return
@ -511,14 +506,14 @@ local function on_player_changed_surface(event)
end
end
local locomotive_surface = WPT.get('loco_surface')
local locomotive_surface = Public.get('loco_surface')
if locomotive_surface and locomotive_surface.valid and player.surface.index == locomotive_surface.index then
return PermissionGroups.add_player_to_permission_group(player, 'limited')
return Public.add_player_to_permission_group(player, 'limited')
elseif ICFunctions.get_player_surface(player) then
return PermissionGroups.add_player_to_permission_group(player, 'limited')
return Public.add_player_to_permission_group(player, 'limited')
elseif player.surface.index == surface.index then
return PermissionGroups.add_player_to_permission_group(player, 'main_surface')
return Public.add_player_to_permission_group(player, 'main_surface')
end
end
@ -537,7 +532,7 @@ local function on_player_driving_changed_state(event)
return
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
@ -553,11 +548,11 @@ end
function Public.boost_players_around_train()
local rpg = RPG.get('rpg_t')
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
if not active_surface_index then
return
end
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not (locomotive and locomotive.valid) then
return
end
@ -575,8 +570,8 @@ function Public.boost_players_around_train()
end
function Public.is_around_train(entity)
local locomotive = WPT.get('locomotive')
local active_surface_index = WPT.get('active_surface_index')
local locomotive = Public.get('locomotive')
local active_surface_index = Public.get('active_surface_index')
if not active_surface_index then
return false
@ -593,7 +588,7 @@ function Public.is_around_train(entity)
end
local surface = game.surfaces[active_surface_index]
local upgrades = WPT.get('upgrades')
local upgrades = Public.get('upgrades')
local data = {
locomotive = locomotive,
@ -607,15 +602,15 @@ function Public.is_around_train(entity)
end
function Public.render_train_hp()
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local surface = game.surfaces[active_surface_index]
local locomotive_health = WPT.get('locomotive_health')
local locomotive_max_health = WPT.get('locomotive_max_health')
local locomotive = WPT.get('locomotive')
local upgrades = WPT.get('upgrades')
local locomotive_health = Public.get('locomotive_health')
local locomotive_max_health = Public.get('locomotive_max_health')
local locomotive = Public.get('locomotive')
local upgrades = Public.get('upgrades')
WPT.set(
Public.set(
'health_text',
rendering.draw_text {
text = 'HP: ' .. locomotive_health .. ' / ' .. locomotive_max_health,
@ -630,7 +625,7 @@ function Public.render_train_hp()
}
)
WPT.set(
Public.set(
'caption',
rendering.draw_text {
text = 'Comfy Choo Choo',
@ -645,7 +640,7 @@ function Public.render_train_hp()
}
)
WPT.set(
Public.set(
'circle',
rendering.draw_circle {
surface = surface,
@ -659,18 +654,18 @@ function Public.render_train_hp()
end
function Public.transfer_pollution()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local active_surface = game.surfaces[active_surface_index]
if not active_surface or not active_surface.valid then
return
end
local icw_locomotive = WPT.get('icw_locomotive')
local icw_locomotive = Public.get('icw_locomotive')
local surface = icw_locomotive.surface
if not surface or not surface.valid then
return

View File

@ -1,14 +1,12 @@
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local random = math.random
local rad = math.rad
local sin = math.sin
local cos = math.cos
local Public = {}
local function create_defense_system(position, name, target)
local active_surface_index = WPT.get('active_surface_index')
local active_surface_index = Public.get('active_surface_index')
local surface = game.surfaces[active_surface_index]
local random_angles = {
@ -78,7 +76,7 @@ local function create_defense_system(position, name, target)
end
function Public.enable_poison_defense(pos)
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive then
return
end
@ -90,7 +88,7 @@ function Public.enable_poison_defense(pos)
end
function Public.enable_robotic_defense(pos)
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive then
return
end

View File

@ -1,15 +1,13 @@
local Event = require 'utils.event'
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local random = math.random
local Public = {}
local function shoo(event)
local icw_locomotive = WPT.get('icw_locomotive')
local icw_locomotive = Public.get('icw_locomotive')
local loco_surface = icw_locomotive.surface
if not loco_surface.valid then
if not loco_surface or not loco_surface.valid then
return
end
@ -21,7 +19,7 @@ local function shoo(event)
end
end
local locomotive_biter = WPT.get('locomotive_biter')
local locomotive_biter = Public.get('locomotive_biter')
local surface = player.surface
local message = event.message
message = string.lower(message)
@ -49,7 +47,7 @@ local function shoo(event)
}
surface.create_entity(explosion)
locomotive_biter.destroy()
WPT.set().locomotive_biter = nil
Public.set().locomotive_biter = nil
end
return
end
@ -57,7 +55,7 @@ local function shoo(event)
end
function Public.spawn_biter()
local this = WPT.get()
local this = Public.get()
local loco_surface = this.icw_locomotive.surface
if not loco_surface.valid then

View File

@ -1,8 +1,6 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = {}
local function contains_positions(area)
local function inside(pos)
@ -52,9 +50,9 @@ local function on_built_entity(event)
return
end
local outside_chests = WPT.get('outside_chests')
local chests_linked_to = WPT.get('chests_linked_to')
local upgrades = WPT.get('upgrades')
local outside_chests = Public.get('outside_chests')
local chests_linked_to = Public.get('chests_linked_to')
local upgrades = Public.get('upgrades')
local chest_created
local increased = false
@ -124,8 +122,8 @@ local function on_player_and_robot_mined_entity(event)
return
end
local outside_chests = WPT.get('outside_chests')
local chests_linked_to = WPT.get('chests_linked_to')
local outside_chests = Public.get('outside_chests')
local chests_linked_to = Public.get('chests_linked_to')
if outside_chests[entity.unit_number] then
for k, data in pairs(chests_linked_to) do
@ -144,8 +142,8 @@ local function on_player_and_robot_mined_entity(event)
end
local function divide_contents()
local outside_chests = WPT.get('outside_chests')
local chests_linked_to = WPT.get('chests_linked_to')
local outside_chests = Public.get('outside_chests')
local chests_linked_to = Public.get('chests_linked_to')
local target_chest
if not next(outside_chests) then

View File

@ -1,7 +1,6 @@
local Event = require 'utils.event'
local Generate = require 'maps.mountain_fortress_v3.generate'
local Public = require 'maps.mountain_fortress_v3.table'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local WD = require 'modules.wave_defense.table'
local Session = require 'utils.datastore.session_data'
local Difficulty = require 'modules.difficulty_vote_by_amount'
@ -11,12 +10,9 @@ local Server = require 'utils.server'
local Alert = require 'utils.alert'
local Math2D = require 'math2d'
local SpamProtection = require 'utils.spam_protection'
local MysticalChest = require 'maps.mountain_fortress_v3.mystical_chest'
local FriendlyPet = require 'maps.mountain_fortress_v3.locomotive.friendly_pet'
local format_number = require 'util'.format_number
local Public = {}
local concat = table.concat
local main_frame_name = Gui.uid_name()
@ -45,11 +41,11 @@ local function add_space(frame)
end
local function get_items()
local market_limits = WPT.get('market_limits')
local main_market_items = WPT.get('main_market_items')
local flame_turret = WPT.get('upgrades').flame_turret.bought
local upgrades = WPT.get('upgrades')
local fixed_prices = WPT.get('marked_fixed_prices')
local market_limits = Public.get('market_limits')
local main_market_items = Public.get('main_market_items')
local flame_turret = Public.get('upgrades').flame_turret.bought
local upgrades = Public.get('upgrades')
local fixed_prices = Public.get('marked_fixed_prices')
local chests_outside_cost = round(fixed_prices.chests_outside_cost * (1 + upgrades.chests_outside_upgrades))
local health_cost = round(fixed_prices.health_cost * (1 + upgrades.health_upgrades))
@ -62,7 +58,7 @@ local function get_items()
local land_mine_cost = round(fixed_prices.land_mine_cost * (1 + upgrades.landmine.bought))
local car_health_upgrade_pool = fixed_prices.car_health_upgrade_pool_cost
local pickaxe_upgrades = WPT.pickaxe_upgrades
local pickaxe_upgrades = Public.pickaxe_upgrades
local offer = pickaxe_upgrades[upgrades.pickaxe_tier]
@ -493,7 +489,7 @@ local function validate_player(player)
end
local function close_market_gui(player)
local players = WPT.get('players')
local players = Public.get('players')
local element = player.gui.screen
local data = players[player.index].data
@ -512,7 +508,7 @@ local function redraw_market_items(gui, player, search_text)
if not validate_player(player) then
return
end
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -630,7 +626,7 @@ local function redraw_market_items(gui, player, search_text)
enabled = data.enabled
}
)
if WPT.get('trusted_only_car_tanks') then
if Public.get('trusted_only_car_tanks') then
local trustedPlayer = Session.get_trusted_player(player)
if not trustedPlayer then
if item == 'tank' then
@ -683,7 +679,7 @@ end
local function slider_changed(event)
local player = game.players[event.player_index]
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -726,7 +722,7 @@ local function text_changed(event)
return
end
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -771,7 +767,7 @@ local function text_changed(event)
end
local function gui_opened(event)
local market = WPT.get('market')
local market = Public.get('market')
if not event.gui_type == defines.gui_type.entity then
return
@ -795,7 +791,7 @@ local function gui_opened(event)
local inventory = player.get_main_inventory()
local player_item_count = inventory.get_item_count('coin')
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -889,7 +885,7 @@ local function gui_opened(event)
end
local function gui_click(event)
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -941,13 +937,13 @@ local function gui_click(event)
local cost = (item.price * slider_value)
local item_count = item.stack * slider_value
local this = WPT.get()
local this = Public.get()
if name == 'upgrade_pickaxe' then
player.remove_item({name = item.value, count = item.price})
this.upgrades.pickaxe_tier = this.upgrades.pickaxe_tier + item.stack
local pickaxe_upgrades = WPT.pickaxe_upgrades
local pickaxe_upgrades = Public.pickaxe_upgrades
local offer = pickaxe_upgrades[this.upgrades.pickaxe_tier]
local message = ({
@ -1122,7 +1118,7 @@ local function gui_click(event)
}
)
MysticalChest.init_price_check(this.locomotive, this.mystical_chest)
Public.init_price_check(this.locomotive, this.mystical_chest)
redraw_market_items(data.item_frame, player, data.search_text)
redraw_coins_left(data.coins_left, player)
@ -1274,7 +1270,7 @@ end
local function gui_closed(event)
local player = game.players[event.player_index]
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -1291,7 +1287,7 @@ local function gui_closed(event)
end
local function on_player_changed_position(event)
local players = WPT.get('players')
local players = Public.get('players')
if not players then
return
end
@ -1301,7 +1297,7 @@ local function on_player_changed_position(event)
end
local data = players[player.index].data
local market = WPT.get('market')
local market = Public.get('market')
if not (market and market.valid) then
return
@ -1325,7 +1321,7 @@ end
local function create_market(data, rebuild)
local surface = data.surface
local this = WPT.get()
local this = Public.get()
if not this.locomotive then
return
@ -1398,7 +1394,7 @@ local function create_market(data, rebuild)
this.mystical_chest.entity.minable = false
this.mystical_chest.entity.destructible = false
if not this.mystical_chest.price then
MysticalChest.add_mystical_chest()
Public.add_mystical_chest()
end
rendering.draw_text {
text = 'Mystical chest',
@ -1411,7 +1407,7 @@ local function create_market(data, rebuild)
}
end
Generate.wintery(this.market, 5.5)
Public.wintery(this.market, 5.5)
rendering.draw_text {
text = 'Market',
@ -1425,7 +1421,7 @@ local function create_market(data, rebuild)
this.market.destructible = false
FriendlyPet.spawn_biter()
Public.spawn_biter()
for x = center_position.x - 5, center_position.x + 5, 1 do
for y = center_position.y - 5, center_position.y + 5, 1 do
@ -1446,7 +1442,7 @@ local function create_market(data, rebuild)
end
local function place_market()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive then
return
end
@ -1458,7 +1454,7 @@ local function place_market()
local icw_table = ICW.get_table()
local unit_surface = locomotive.unit_number
local surface = game.surfaces[icw_table.wagons[unit_surface].surface.index]
local market = WPT.get('market')
local market = Public.get('market')
local data = {
surface = surface
@ -1488,7 +1484,7 @@ function Public.refresh_gui()
local gui = player.gui
local screen = gui.screen
local player_data = WPT.get('players')
local player_data = Public.get('players')
if not players then
return
end

View File

@ -1,4 +1,4 @@
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local Session = require 'utils.datastore.session_data'
local Jailed = require 'utils.datastore.jail_data'
@ -6,17 +6,23 @@ local Antigrief = require 'utils.antigrief'
local required_playtime = 5184000 -- 24 hours
local Public = {}
function Public.add_player_to_permission_group(player, group, forced)
local jailed = Jailed.get_jailed_table()
local enable_permission_group_disconnect = WPT.get('disconnect_wagon')
local enable_permission_group_disconnect = Public.get('disconnect_wagon')
local session = Session.get_session_table()
local AG = Antigrief.get()
local allow_decon = WPT.get('allow_decon')
local allow_decon_main_surface = WPT.get('allow_decon_main_surface')
if not AG then
return
end
local allow_decon = Public.get('allow_decon')
local allow_decon_main_surface = Public.get('allow_decon_main_surface')
local default_group = game.permissions.get_group('Default')
if not default_group then
return
end
default_group.set_allows_action(defines.input_action.activate_cut, false)
if allow_decon_main_surface then
default_group.set_allows_action(defines.input_action.deconstruct, true)
@ -26,6 +32,9 @@ function Public.add_player_to_permission_group(player, group, forced)
if not game.permissions.get_group('limited') then
local limited_group = game.permissions.create_group('limited')
if not limited_group then
return
end
limited_group.set_allows_action(defines.input_action.cancel_craft, false)
limited_group.set_allows_action(defines.input_action.drop_item, false)
if allow_decon then
@ -38,6 +47,9 @@ function Public.add_player_to_permission_group(player, group, forced)
if not game.permissions.get_group('near_locomotive') then
local near_locomotive_group = game.permissions.create_group('near_locomotive')
if not near_locomotive_group then
return
end
near_locomotive_group.set_allows_action(defines.input_action.cancel_craft, false)
near_locomotive_group.set_allows_action(defines.input_action.drop_item, false)
if allow_decon_main_surface then
@ -50,6 +62,9 @@ function Public.add_player_to_permission_group(player, group, forced)
if not game.permissions.get_group('main_surface') then
local main_surface_group = game.permissions.create_group('main_surface')
if not main_surface_group then
return
end
if allow_decon_main_surface then
main_surface_group.set_allows_action(defines.input_action.deconstruct, true)
else
@ -60,6 +75,9 @@ function Public.add_player_to_permission_group(player, group, forced)
if not game.permissions.get_group('not_trusted') then
local not_trusted = game.permissions.create_group('not_trusted')
if not not_trusted then
return
end
not_trusted.set_allows_action(defines.input_action.cancel_craft, false)
not_trusted.set_allows_action(defines.input_action.edit_permission_group, false)
not_trusted.set_allows_action(defines.input_action.import_permissions_string, false)
@ -149,18 +167,33 @@ function Public.add_player_to_permission_group(player, group, forced)
if playtime < required_playtime then
local not_trusted = game.permissions.get_group('not_trusted')
if not not_trusted then
return
end
if not player.admin then
not_trusted.add_player(player)
end
else
if group == 'limited' then
local limited_group = game.permissions.get_group('limited')
if not limited_group then
return
end
limited_group.add_player(player)
elseif group == 'main_surface' then
local main_surface_group = game.permissions.get_group('main_surface')
if not main_surface_group then
return
end
main_surface_group.add_player(player)
elseif group == 'near_locomotive' then
local near_locomotive_group = game.permissions.get_group('near_locomotive')
if not near_locomotive_group then
return
end
near_locomotive_group.add_player(player)
elseif group == 'default' then
default_group.add_player(player)

View File

@ -1,12 +1,9 @@
local Generate = require 'maps.mountain_fortress_v3.generate'
local Public = require 'maps.mountain_fortress_v3.table'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local Task = require 'utils.task'
local Token = require 'utils.token'
local MapFunctions = require 'tools.map_functions'
local Public = {}
local random = math.random
local function initial_cargo_boxes()
@ -113,7 +110,7 @@ local set_loco_tiles =
)
function Public.locomotive_spawn(surface, position)
local this = WPT.get()
local this = Public.get()
for y = -6, 6, 2 do
surface.create_entity({name = 'straight-rail', position = {position.x, position.y + y}, force = 'player', direction = 0})
end
@ -123,7 +120,7 @@ function Public.locomotive_spawn(surface, position)
this.locomotive_cargo = surface.create_entity({name = 'cargo-wagon', position = {position.x, position.y + 3}, force = 'player'})
this.locomotive_cargo.get_inventory(defines.inventory.cargo_wagon).insert({name = 'raw-fish', count = 8})
local winter_mode_locomotive = Generate.wintery(this.locomotive, 5.5)
local winter_mode_locomotive = Public.wintery(this.locomotive, 5.5)
if not winter_mode_locomotive then
rendering.draw_light(
{
@ -141,7 +138,7 @@ function Public.locomotive_spawn(surface, position)
)
end
local winter_mode_cargo = Generate.wintery(this.locomotive_cargo, 5.5)
local winter_mode_cargo = Public.wintery(this.locomotive_cargo, 5.5)
if not winter_mode_cargo then
rendering.draw_light(
@ -165,7 +162,7 @@ function Public.locomotive_spawn(surface, position)
position = position
}
Task.set_timeout_in_ticks(100, set_loco_tiles, data)
Task.set_timeout_in_ticks(150, set_loco_tiles, data)
for y = -1, 0, 0.05 do
local scale = random(50, 100) * 0.01
@ -190,6 +187,10 @@ function Public.locomotive_spawn(surface, position)
this.locomotive_cargo.operable = true
local locomotive = ICW.register_wagon(this.locomotive)
if not locomotive then
return
end
ICW.register_wagon(this.locomotive_cargo)
this.icw_locomotive = locomotive

View File

@ -1,6 +1,5 @@
local LootRaffle = require 'functions.loot_raffle'
local Public = {}
local Public = require 'maps.mountain_fortress_v3.table'
local random = math.random
local abs = math.abs
local floor = math.floor
@ -27,7 +26,7 @@ function Public.get_distance(position)
return difficulty
end
function Public.add(surface, position, chest)
function Public.add_loot(surface, position, chest)
local budget = 48 + abs(position.y) * 1.75
budget = budget * random(25, 175) * 0.01
@ -79,7 +78,7 @@ function Public.add(surface, position, chest)
end
end
function Public.add_rare(surface, position, chest, magic)
function Public.add_loot_rare(surface, position, chest, magic)
local budget = magic * 48 + abs(position.y) * 1.75
budget = budget * random(25, 175) * 0.01

View File

@ -5,30 +5,20 @@ Mountain Fortress v3 is maintained by Gerkiz and hosted by Comfy.
Want to host it? Ask Gerkiz#0001 at discord!
]]
local Functions = require 'maps.mountain_fortress_v3.functions'
local BuriedEnemies = require 'maps.mountain_fortress_v3.buried_enemies'
-- local HS = require 'maps.mountain_fortress_v3.highscore'
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.core'
local Discord = require 'utils.discord'
local IC = require 'maps.mountain_fortress_v3.ic.table'
local ICMinimap = require 'maps.mountain_fortress_v3.ic.minimap'
local Autostash = require 'modules.autostash'
local Group = require 'utils.gui.group'
local PL = require 'utils.gui.player_list'
local CS = require 'maps.mountain_fortress_v3.surface'
local Server = require 'utils.server'
local Explosives = require 'modules.explosives'
local Balance = require 'maps.mountain_fortress_v3.balance'
local Entities = require 'maps.mountain_fortress_v3.entities'
local Gui_mf = require 'maps.mountain_fortress_v3.gui'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local WD = require 'modules.wave_defense.table'
local Map = require 'modules.map_info'
local RPG = require 'modules.rpg.main'
local Event = require 'utils.event'
local WPT = require 'maps.mountain_fortress_v3.table'
local Locomotive = require 'maps.mountain_fortress_v3.locomotive'
local SpawnLocomotive = require 'maps.mountain_fortress_v3.locomotive.spawn_locomotive'
local Score = require 'utils.gui.score'
local Poll = require 'utils.gui.poll'
local Collapse = require 'modules.collapse'
@ -45,16 +35,6 @@ local JailData = require 'utils.datastore.jail_data'
local RPG_Progression = require 'utils.datastore.rpg_data'
local OfflinePlayers = require 'modules.clear_vacant_players'
require 'maps.mountain_fortress_v3.locomotive.market'
require 'maps.mountain_fortress_v3.locomotive.linked_chests'
require 'maps.mountain_fortress_v3.rocks_yield_ore_veins'
require 'maps.mountain_fortress_v3.generate'
require 'maps.mountain_fortress_v3.commands'
require 'maps.mountain_fortress_v3.breached_wall'
require 'maps.mountain_fortress_v3.ic.main'
require 'maps.mountain_fortress_v3.biters_yield_coins'
require 'modules.shotgun_buff'
require 'modules.no_deconstruction_of_neutral_entities'
require 'modules.spawners_contain_biters'
@ -69,9 +49,6 @@ local role_to_mention = Discord.role_mentions.mtn_fortress
-- local send_ping_to_channel = Discord.channel_names.bot_quarters
-- local role_to_mention = Discord.role_mentions.test_role
local Public = {}
local raise_event = script.raise_event
local floor = math.floor
local remove = table.remove
RPG.disable_cooldowns_on_spells()
@ -142,27 +119,27 @@ local announce_new_map =
)
function Public.reset_map()
local this = WPT.get()
local this = Public.get()
local wave_defense_table = WD.get_table()
Misc.set('creative_are_you_sure', false)
Misc.set('creative_enabled', false)
this.active_surface_index = CS.create_surface()
-- this.soft_reset_counter = CS.get_reset_counter()
this.active_surface_index = Public.create_surface()
-- this.soft_reset_counter = Public.get_reset_counter()
Autostash.insert_into_furnace(true)
Autostash.insert_into_wagon(true)
Autostash.bottom_button(true)
BottomFrame.reset()
BottomFrame.activate_custom_buttons(true)
BuriedEnemies.reset()
Public.reset_buried_biters()
Poll.reset()
ICW.reset()
IC.reset()
IC.allowed_surface(game.surfaces[this.active_surface_index].name)
Functions.reset_table()
Public.reset_func_table()
game.reset_time_played()
WPT.reset_table()
Public.reset_main_table()
OfflinePlayers.set_active_surface_index(this.active_surface_index)
OfflinePlayers.set_offline_players_enabled(true)
@ -185,14 +162,14 @@ function Public.reset_map()
RPG_Progression.toggle_module(false)
RPG_Progression.set_dataset('mtn_v3_rpg_prestige')
if WPT.get('prestige_system_enabled') then
if Public.get('prestige_system_enabled') then
RPG_Progression.restore_xp_on_reset()
end
Group.reset_groups()
Group.alphanumeric_only(false)
Functions.disable_tech()
Public.disable_tech()
init_protectors_force()
init_bonus_drill_force()
@ -219,7 +196,7 @@ function Public.reset_map()
BiterHealthBooster.enable_boss_loot(false)
BiterHealthBooster.enable_randomize_stun_and_slowdown_sticker(true)
Balance.init_enemy_weapon_damage()
Public.init_enemy_weapon_damage()
AntiGrief.whitelist_types('tree', true)
AntiGrief.enable_capsule_warning(false)
@ -245,7 +222,7 @@ function Public.reset_map()
player.gui.left['mvps'].destroy()
end
ICMinimap.kill_minimap(player)
raise_event(Gui_mf.events.reset_map, {player_index = player.index})
Event.raise(Public.events.reset_map, {player_index = player.index})
end
Difficulty.reset_difficulty_poll({closing_timeout = game.tick + 36000})
@ -265,9 +242,9 @@ function Public.reset_map()
this.locomotive_health = 10000
this.locomotive_max_health = 10000
SpawnLocomotive.locomotive_spawn(surface, {x = -18, y = 25})
Locomotive.render_train_hp()
Functions.render_direction(surface)
Public.locomotive_spawn(surface, {x = -18, y = 25})
Public.render_train_hp()
Public.render_direction(surface)
WD.reset_wave_defense()
wave_defense_table.surface_index = this.active_surface_index
@ -284,8 +261,8 @@ function Public.reset_map()
WD.increase_damage_per_wave(true)
WD.increase_health_per_wave(true)
Functions.set_difficulty()
Functions.disable_creative()
Public.set_difficulty()
Public.disable_creative()
if not surface.is_chunk_generated({-20, 22}) then
surface.request_to_generate_chunks({-20, 22}, 0.1)
@ -296,9 +273,9 @@ function Public.reset_map()
Task.set_queue_speed(16)
-- HS.get_scores()
-- Public.get_scores()
this.chunk_load_tick = game.tick + 200
this.chunk_load_tick = game.tick + 400
this.force_chunk = true
this.market_announce = game.tick + 1200
this.game_lost = false
@ -307,10 +284,10 @@ function Public.reset_map()
end
local is_locomotive_valid = function()
local locomotive = WPT.get('locomotive')
if not locomotive.valid then
WPT.set('game_lost', true)
Entities.loco_died(true)
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
Public.set('game_lost', true)
Public.loco_died(true)
end
end
@ -326,13 +303,13 @@ local is_player_valid = function()
end
local has_the_game_ended = function()
local game_reset_tick = WPT.get('game_reset_tick')
local game_reset_tick = Public.get('game_reset_tick')
if game_reset_tick then
if game_reset_tick < 0 then
return
end
local this = WPT.get()
local this = Public.get()
this.game_reset_tick = this.game_reset_tick - 30
if this.game_reset_tick % 1800 == 0 then
@ -353,14 +330,14 @@ local has_the_game_ended = function()
if this.soft_reset and this.game_reset_tick == 0 then
this.game_reset_tick = nil
-- HS.set_scores(diff_name)
-- Public.set_scores(diff_name)
Public.reset_map()
return
end
if this.restart and this.game_reset_tick == 0 then
if not this.announced_message then
-- HS.set_scores(diff_name)
-- Public.set_scores(diff_name)
game.print(({'entity.notify_restart'}), {r = 0.22, g = 0.88, b = 0.22})
local message = 'Soft-reset is disabled! Server will restart from scenario to load new changes.'
Server.to_discord_bold(table.concat {'*** ', message, ' ***'})
@ -371,7 +348,7 @@ local has_the_game_ended = function()
end
if this.shutdown and this.game_reset_tick == 0 then
if not this.announced_message then
-- HS.set_scores(diff_name)
-- Public.set_scores(diff_name)
game.print(({'entity.notify_shutdown'}), {r = 0.22, g = 0.88, b = 0.22})
local message = 'Soft-reset is disabled! Server will shutdown. Most likely because of updates.'
Server.to_discord_bold(table.concat {'*** ', message, ' ***'})
@ -385,12 +362,12 @@ local has_the_game_ended = function()
end
local chunk_load = function()
local chunk_load_tick = WPT.get('chunk_load_tick')
local chunk_load_tick = Public.get('chunk_load_tick')
local tick = game.tick
if chunk_load_tick then
if chunk_load_tick < tick then
WPT.set('force_chunk', false)
WPT.remove('chunk_load_tick')
Public.set('force_chunk', false)
Public.remove('chunk_load_tick')
Task.set_queue_speed(8)
end
end
@ -409,12 +386,12 @@ local collapse_message =
)
local lock_locomotive_positions = function()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive or not locomotive.valid then
return
end
local locomotive_positions = WPT.get('locomotive_pos')
local locomotive_positions = Public.get('locomotive_pos')
local success = is_position_near_tbl(locomotive.position, locomotive_positions.tbl)
local p = locomotive.position
if not success then
@ -429,7 +406,7 @@ end
local compare_collapse_and_train = function()
local collapse_pos = Collapse.get_position()
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not (locomotive and locomotive.valid) then
return
end
@ -437,10 +414,10 @@ local compare_collapse_and_train = function()
local c_y = collapse_pos.y
local t_y = locomotive.position.y
local gap_between_zones = WPT.get('gap_between_zones')
local gap_between_zones = Public.get('gap_between_zones')
if c_y - t_y <= gap_between_zones.gap then
Functions.set_difficulty()
Public.set_difficulty()
else
Collapse.set_speed(1)
Collapse.set_amount(4)
@ -448,7 +425,7 @@ local compare_collapse_and_train = function()
end
local collapse_after_wave_200 = function()
local collapse_grace = WPT.get('collapse_grace')
local collapse_grace = Public.get('collapse_grace')
if not collapse_grace then
return
end
@ -469,13 +446,13 @@ local collapse_after_wave_200 = function()
end
local handle_changes = function()
WPT.set('restart', true)
WPT.set('soft_reset', false)
Public.set('restart', true)
Public.set('soft_reset', false)
print('Received new changes from backend.')
end
local on_tick = function()
local update_gui = Gui_mf.update_gui
local update_gui = Public.update_gui
local tick = game.tick
local players = game.connected_players
@ -493,14 +470,14 @@ local on_tick = function()
if tick % 250 == 0 then
compare_collapse_and_train()
Functions.set_spawn_position()
Functions.boost_difficulty()
Public.set_spawn_position()
Public.boost_difficulty()
end
if tick % 1000 == 0 then
collapse_after_wave_200()
Functions.set_difficulty()
Functions.is_creativity_mode_on()
Public.set_difficulty()
Public.is_creativity_mode_on()
end
end
@ -543,6 +520,5 @@ Event.add(Server.events.on_changes_detected, handle_changes)
Event.on_nth_tick(10, on_tick)
Event.on_init(on_init)
Event.add(WPT.events.reset_map, Public.reset_map)
return Public

View File

@ -1,11 +1,9 @@
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local RPG = require 'modules.rpg.main'
local Event = require 'utils.event'
local Ai = require 'modules.ai'
require 'modules.check_fullness'
local Public = {events = {on_entity_mined = Event.generate_event_name('on_entity_mined')}}
local random = math.random
local floor = math.floor
local sqrt = math.sqrt
@ -219,7 +217,7 @@ local size_of_scrap_raffle = #scrap_raffle
local function get_amount(data)
local entity = data.entity
local mining_utils = WPT.get('mining_utils')
local mining_utils = Public.get('mining_utils')
local t_modifier = mining_utils.type_modifier
local rocks_yield_ore_distance_modifier = mining_utils.rocks_yield_ore_distance_modifier
local rocks_yield_ore_base_amount = mining_utils.rocks_yield_ore_base_amount
@ -286,7 +284,7 @@ end
local function randomness(data)
local entity = data.entity
local player = data.player
local spill_items_to_surface = WPT.get('spill_items_to_surface')
local spill_items_to_surface = Public.get('spill_items_to_surface')
local harvest
local harvest_amount
@ -351,7 +349,7 @@ end
local function randomness_scrap(data)
local entity = data.entity
local player = data.player
local spill_items_to_surface = WPT.get('spill_items_to_surface')
local spill_items_to_surface = Public.get('spill_items_to_surface')
local harvest = scrap_raffle[random(1, size_of_scrap_raffle)]
local amount_bonus = game.forces.player.mining_drill_productivity_bonus * 2

View File

@ -1,11 +1,10 @@
local Color = require 'utils.color_presets'
local Event = require 'utils.event'
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local RPG = require 'modules.rpg.main'
local Alert = require 'utils.alert'
local Task = require 'utils.task'
local Token = require 'utils.token'
local Public = {}
local shuffle = table.shuffle_table
local random = math.random
@ -267,7 +266,7 @@ end
local restore_mining_speed_token =
Token.register(
function()
local mc_rewards = WPT.get('mc_rewards')
local mc_rewards = Public.get('mc_rewards')
local force = game.forces.player
if mc_rewards.temp_boosts.mining then
force.manual_mining_speed_modifier = force.manual_mining_speed_modifier - 0.5
@ -281,7 +280,7 @@ local restore_mining_speed_token =
local restore_movement_speed_token =
Token.register(
function()
local mc_rewards = WPT.get('mc_rewards')
local mc_rewards = Public.get('mc_rewards')
local force = game.forces.player
if mc_rewards.temp_boosts.movement then
force.character_running_speed_modifier = force.character_running_speed_modifier - 0.2
@ -333,7 +332,7 @@ local mc_random_rewards = {
color = {r = 0.00, g = 0.25, b = 0.00},
tooltip = 'Selecting this will grant the team a bonus movement speed for 15 minutes!',
func = (function(player)
local mc_rewards = WPT.get('mc_rewards')
local mc_rewards = Public.get('mc_rewards')
local force = game.forces.player
if mc_rewards.temp_boosts.movement then
return false, '[Rewards] Movement bonus is already applied. Please choose another reward.'
@ -355,7 +354,7 @@ local mc_random_rewards = {
color = {r = 0.00, g = 0.00, b = 0.25},
tooltip = 'Selecting this will grant the team a bonus mining speed for 15 minutes!',
func = (function(player)
local mc_rewards = WPT.get('mc_rewards')
local mc_rewards = Public.get('mc_rewards')
local force = game.forces.player
if mc_rewards.temp_boosts.mining then
return false, '[Rewards] Mining bonus is already applied. Please choose another reward.'
@ -376,8 +375,8 @@ local mc_random_rewards = {
color = {r = 0.00, g = 0.00, b = 0.25},
tooltip = 'Selecting this will heal the main locomotive to full health!',
func = (function(player)
local locomotive_max_health = WPT.get('locomotive_max_health')
WPT.set('locomotive_health', locomotive_max_health)
local locomotive_max_health = Public.get('locomotive_max_health')
Public.set('locomotive_health', locomotive_max_health)
local message = ({'locomotive.locomotive_health', player.name})
Alert.alert_all_players(15, message, nil, 'achievement/tech-maniac')
return true
@ -397,7 +396,7 @@ local function mystical_chest_reward(player)
frame = frame.add {type = 'frame', name = 'reward_system_1', direction = 'vertical', style = 'inside_shallow_frame'}
frame.style.padding = 4
local mc_rewards = WPT.get('mc_rewards')
local mc_rewards = Public.get('mc_rewards')
mc_rewards.current = {}
for i = 1, 3 do
@ -437,7 +436,7 @@ local function container_opened(event)
return
end
local mystical_chest = WPT.get('mystical_chest')
local mystical_chest = Public.get('mystical_chest')
if not mystical_chest then
return
end
@ -480,7 +479,7 @@ local function on_gui_click(event)
end
local i = tonumber(element.name)
local mc_rewards = WPT.get('mc_rewards')
local mc_rewards = Public.get('mc_rewards')
local current = mc_rewards.current
local player = game.get_player(element.player_index)
@ -566,7 +565,7 @@ function Public.roll(budget, max_slots, blacklist)
end
function Public.add_mystical_chest(player)
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if not locomotive then
return
end
@ -574,7 +573,7 @@ function Public.add_mystical_chest(player)
return
end
local mystical_chest = WPT.get('mystical_chest')
local mystical_chest = Public.get('mystical_chest')
if not (mystical_chest.entity and mystical_chest.entity.valid) then
return
end

View File

@ -1,3 +1,4 @@
local Public = require 'maps.mountain_fortress_v3.table'
local Functions = require 'maps.mountain_fortress_v3.functions'
local random = math.random
@ -604,7 +605,7 @@ if testing then
}
end
local function spawn_random_buildings(entities, p, depth)
function Public.spawn_random_buildings(entities, p, depth)
local randomizer = random(1, #buildings)
local low = random(1, 2)
local medium = random(2, 3)
@ -650,4 +651,4 @@ local function spawn_random_buildings(entities, p, depth)
end
end
return spawn_random_buildings
return Public

View File

@ -1,4 +1,5 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Global = require 'utils.global'
local random = math.random
@ -181,3 +182,5 @@ end
Event.on_init(on_init)
Event.add(defines.events.on_player_mined_entity, on_player_mined_entity)
return Public

View File

@ -1,11 +1,21 @@
local Server = require 'utils.server'
local Session = require 'utils.datastore.session_data'
local Modifers = require 'utils.player_modifiers'
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local mapkeeper = '[color=blue]Mapkeeper:[/color]'
local Public = {}
local function show_all_gui(player)
for _, child in pairs(player.gui.top.children) do
child.visible = true
end
end
local function clear_spec_tag(player)
if player.tag == '[Spectator]' then
player.tag = ''
end
end
local function reset_forces(new_surface, old_surface)
for _, f in pairs(game.forces) do
@ -52,6 +62,8 @@ local function equip_players(player_starting_items, data)
for item, amount in pairs(player_starting_items) do
player.insert({name = item, count = amount})
end
show_all_gui(player)
clear_spec_tag(player)
else
data.players[player.index] = nil
Session.clear_player(player)
@ -61,7 +73,7 @@ local function equip_players(player_starting_items, data)
end
function Public.soft_reset_map(old_surface, map_gen_settings, player_starting_items)
local this = WPT.get()
local this = Public.get()
if not this.soft_reset_counter then
this.soft_reset_counter = 0
@ -72,7 +84,7 @@ function Public.soft_reset_map(old_surface, map_gen_settings, player_starting_it
this.soft_reset_counter = this.soft_reset_counter + 1
local new_surface = game.create_surface(this.original_surface_name .. '_' .. tostring(this.soft_reset_counter), map_gen_settings)
new_surface.request_to_generate_chunks({0, 0}, 0.5)
new_surface.request_to_generate_chunks({0, 0}, 0.1)
new_surface.force_generate_chunk_requests()
reset_forces(new_surface, old_surface)

View File

@ -1,10 +1,7 @@
local Global = require 'utils.global'
local surface_name = 'mtn_v3'
local WPT = require 'maps.mountain_fortress_v3.table'
local Reset = require 'maps.mountain_fortress_v3.soft_reset'
local zone_settings = WPT.zone_settings
local Public = {}
local Public = require 'maps.mountain_fortress_v3.table'
local zone_settings = Public.zone_settings
local this = {
active_surface_index = nil,
@ -59,10 +56,10 @@ function Public.create_surface()
if not this.active_surface_index then
this.active_surface_index = game.create_surface(surface_name, map_gen_settings).index
else
this.active_surface_index = Reset.soft_reset_map(game.surfaces[this.active_surface_index], map_gen_settings, starting_items).index
this.active_surface_index = Public.soft_reset_map(game.surfaces[this.active_surface_index], map_gen_settings, starting_items).index
end
-- this.soft_reset_counter = Reset.get_reset_counter()
-- this.soft_reset_counter = Public.get_reset_counter()
if not this.cleared_nauvis then
local mgs = game.surfaces['nauvis'].map_gen_settings
@ -91,12 +88,4 @@ function Public.get_reset_counter()
return this.soft_reset_counter
end
function Public.get(key)
if key then
return this[key]
else
return this
end
end
return Public

View File

@ -8,7 +8,10 @@ local this = {
}
local Public = {}
Public.events = {reset_map = Event.generate_event_name('reset_map')}
Public.events = {
reset_map = Event.generate_event_name('reset_map'),
on_entity_mined = Event.generate_event_name('on_entity_mined')
}
Global.register(
this,
@ -84,7 +87,7 @@ Public.pickaxe_upgrades = {
'Luminite'
}
function Public.reset_table()
function Public.reset_main_table()
-- @start
-- these 3 are in case of stop/start/reloading the instance.
this.soft_reset = true
@ -174,6 +177,7 @@ function Public.reset_table()
this.bonus_xp_on_join = 250
this.main_market_items = {}
this.spill_items_to_surface = false
this.spectate = {}
this.outside_chests = {}
this.chests_linked_to = {}
this.placed_trains_in_zone = {
@ -289,6 +293,6 @@ function Public.remove(key, sub_key)
end
end
Event.on_init(Public.reset_table)
Event.on_init(Public.reset_main_table)
return Public

View File

@ -1,17 +1,13 @@
local Event = require 'utils.event'
local Public = require 'maps.mountain_fortress_v3.table'
local Biters = require 'modules.wave_defense.biter_rolls'
local Functions = require 'maps.mountain_fortress_v3.functions'
local Generate_resources = require 'maps.mountain_fortress_v3.resource_generator'
local WPT = require 'maps.mountain_fortress_v3.table'
local get_perlin = require 'maps.mountain_fortress_v3.get_perlin'
local Public = {}
local random = math.random
local abs = math.abs
local floor = math.floor
local ceil = math.ceil
local zone_settings = WPT.zone_settings
local zone_settings = Public.zone_settings
local worm_level_modifier = 0.19
local start_ground_tiles = {
@ -97,12 +93,12 @@ local trees = {
}
local callback = {
[1] = {callback = Functions.refill_turret_callback, data = Functions.firearm_magazine_ammo},
[2] = {callback = Functions.refill_turret_callback, data = Functions.piercing_rounds_magazine_ammo},
[3] = {callback = Functions.refill_turret_callback, data = Functions.uranium_rounds_magazine_ammo},
[4] = {callback = Functions.refill_turret_callback, data = Functions.uranium_rounds_magazine_ammo},
[5] = {callback = Functions.refill_liquid_turret_callback, data = Functions.light_oil_ammo},
[6] = {callback = Functions.refill_artillery_turret_callback, data = Functions.artillery_shell_ammo}
[1] = {callback = Public.refill_turret_callback, data = Public.firearm_magazine_ammo},
[2] = {callback = Public.refill_turret_callback, data = Public.piercing_rounds_magazine_ammo},
[3] = {callback = Public.refill_turret_callback, data = Public.uranium_rounds_magazine_ammo},
[4] = {callback = Public.refill_turret_callback, data = Public.uranium_rounds_magazine_ammo},
[5] = {callback = Public.refill_liquid_turret_callback, data = Public.light_oil_ammo},
[6] = {callback = Public.refill_artillery_turret_callback, data = Public.artillery_shell_ammo}
}
local turret_list = {
@ -162,11 +158,11 @@ local function is_position_near(area, table_to_check)
end
local function place_wagon(data, adjusted_zones)
local placed_trains_in_zone = WPT.get('placed_trains_in_zone')
local placed_trains_in_zone = Public.get('placed_trains_in_zone')
if not placed_trains_in_zone.randomized then
placed_trains_in_zone.limit = random(1, 2)
placed_trains_in_zone.randomized = true
placed_trains_in_zone = WPT.get('placed_trains_in_zone')
placed_trains_in_zone = Public.get('placed_trains_in_zone')
end
if not data.new_zone then
@ -205,11 +201,11 @@ local function place_wagon(data, adjusted_zones)
local top_y = data.top_y
local position = {x = data.x, y = top_y + random(4, 12) * 2}
local wagon_mineable = {
callback = Functions.disable_minable_and_ICW_callback
callback = Public.disable_minable_and_ICW_callback
}
local rail_mineable = {
callback = Functions.disable_destructible_callback
callback = Public.disable_destructible_callback
}
local radius = 300
@ -282,15 +278,15 @@ local function wall(p, data)
local entities = data.entities
local surface = data.surface
local treasure = data.treasure
local stone_wall = {callback = Functions.disable_minable_callback}
local enable_arties = WPT.get('enable_arties')
local alert_zone_1 = WPT.get('alert_zone_1')
local stone_wall = {callback = Public.disable_minable_callback}
local enable_arties = Public.get('enable_arties')
local alert_zone_1 = Public.get('alert_zone_1')
local seed = data.seed
local y = data.yv
local small_caves = get_perlin('small_caves', p, seed + 204000)
local cave_ponds = get_perlin('cave_rivers', p, seed + 120400)
local small_caves = Public.get_noise('small_caves', p, seed + 204000)
local cave_ponds = Public.get_noise('cave_rivers', p, seed + 120400)
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
@ -353,10 +349,10 @@ local function wall(p, data)
if not alert_zone_1 and data.y >= -zone_settings.zone_depth then
local x_min = -zone_settings.zone_width / 2
local x_max = zone_settings.zone_width / 2
WPT.set('zone1_beam1', surface.create_entity({name = 'electric-beam', position = {x_min, p.y}, source = {x_min, p.y}, target = {x_max, p.y}}))
WPT.set('zone1_beam2', surface.create_entity({name = 'electric-beam', position = {x_min, p.y}, source = {x_min, p.y}, target = {x_max, p.y}}))
WPT.set('alert_zone_1', true)
WPT.set(
Public.set('zone1_beam1', surface.create_entity({name = 'electric-beam', position = {x_min, p.y}, source = {x_min, p.y}, target = {x_max, p.y}}))
Public.set('zone1_beam2', surface.create_entity({name = 'electric-beam', position = {x_min, p.y}, source = {x_min, p.y}, target = {x_max, p.y}}))
Public.set('alert_zone_1', true)
Public.set(
'zone1_text1',
rendering.draw_text {
text = 'Breaching the far side wall will start collapse.',
@ -369,7 +365,7 @@ local function wall(p, data)
scale_with_zoom = false
}
)
WPT.set(
Public.set(
'zone1_text2',
rendering.draw_text {
text = 'Breaching the far side wall will start collapse',
@ -382,7 +378,7 @@ local function wall(p, data)
scale_with_zoom = false
}
)
WPT.set(
Public.set(
'zone1_text3',
rendering.draw_text {
text = 'Breaching the far side wall will start collapse',
@ -477,14 +473,14 @@ local function zone_14(x, y, data, _, adjusted_zones)
local treasure = data.treasure
data.forest_zone = true
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 40000)
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)
--Resource Spots
if smol_areas < -0.71 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -557,14 +553,14 @@ local function zone_13(x, y, data, _, adjusted_zones)
local buildings = data.buildings
local treasure = data.treasure
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 70000)
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)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -638,14 +634,14 @@ local function zone_12(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local noise_1 = get_perlin('small_caves', p, seed)
local noise_2 = get_perlin('no_rocks_2', p, seed + 20000)
local smol_areas = get_perlin('smol_areas', p, seed + 60000)
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)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -724,9 +720,9 @@ local function zone_11(x, y, data, _, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local noise_1 = get_perlin('small_caves', p, seed)
local noise_2 = get_perlin('no_rocks_2', p, seed + 10000)
local smol_areas = get_perlin('smol_areas', p, seed + 50000)
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)
if noise_1 > 0.7 then
tiles[#tiles + 1] = {name = 'water', position = p}
@ -739,7 +735,7 @@ local function zone_11(x, y, data, _, adjusted_zones)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -783,7 +779,7 @@ local function zone_11(x, y, data, _, adjusted_zones)
return
end
local noise_forest_location = get_perlin('forest_location', p, seed)
local noise_forest_location = Public.get_noise('forest_location', p, seed)
if noise_forest_location > 0.095 then
if noise_forest_location > 0.6 then
if random(1, 100) > 42 then
@ -820,8 +816,8 @@ local function zone_10(x, y, data, _, adjusted_zones)
local treasure = data.treasure
data.forest_zone = true
local scrapyard = get_perlin('scrapyard', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 45000)
local scrapyard = Public.get_noise('scrapyard', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 45000)
if scrapyard < -0.70 or scrapyard > 0.70 then
tiles[#tiles + 1] = {name = 'grass-3', position = p}
@ -838,7 +834,7 @@ local function zone_10(x, y, data, _, adjusted_zones)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -875,7 +871,7 @@ local function zone_10(x, y, data, _, adjusted_zones)
tiles[#tiles + 1] = {name = 'water-shallow', position = p}
return
end
local noise_forest_location = get_perlin('forest_location', p, seed)
local noise_forest_location = Public.get_noise('forest_location', p, seed)
if scrapyard > -0.15 and scrapyard < 0.15 then
if noise_forest_location > 0.095 then
if random(1, 256) == 1 then
@ -936,12 +932,12 @@ local function zone_9(x, y, data, _, adjusted_zones)
local treasure = data.treasure
local maze_p = {x = floor(p.x - p.x % 10), y = floor(p.y - p.y % 10)}
local maze_noise = get_perlin('no_rocks_2', maze_p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 40000)
local maze_noise = Public.get_noise('no_rocks_2', maze_p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 40000)
if maze_noise > -0.35 and maze_noise < 0.35 then
tiles[#tiles + 1] = {name = 'dirt-7', position = p}
local no_rocks_2 = get_perlin('no_rocks_2', p, seed)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed)
if random(1, 2) == 1 and no_rocks_2 > -0.5 then
entities[#entities + 1] = {name = rock_raffle[random(1, size_of_rock_raffle)], position = p}
end
@ -980,7 +976,7 @@ local function zone_9(x, y, data, _, adjusted_zones)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -1008,12 +1004,12 @@ local function zone_scrap_2(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
data.scrap_zone = true
local scrapyard_modified = get_perlin('scrapyard_modified', p, seed)
local cave_rivers = get_perlin('cave_rivers', p, seed + 65030)
local scrapyard_modified = Public.get_noise('scrapyard_modified', p, seed)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 65030)
--Chasms
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local small_caves = Public.get_noise('small_caves', p, seed)
if noise_cave_ponds < 0.15 and noise_cave_ponds > -0.15 then
if small_caves > 0.35 then
tiles[#tiles + 1] = {name = void_or_lab, position = p}
@ -1087,7 +1083,7 @@ local function zone_scrap_2(x, y, data, void_or_lab, adjusted_zones)
return
end
local cave_ponds = get_perlin('cave_ponds', p, seed)
local cave_ponds = Public.get_noise('cave_ponds', p, seed)
if cave_ponds < -0.6 and scrapyard_modified > -0.2 and scrapyard_modified < 0.2 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 128) == 1 then
@ -1099,11 +1095,11 @@ local function zone_scrap_2(x, y, data, void_or_lab, adjusted_zones)
--Resource Spots
if cave_rivers < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
local large_caves = get_perlin('large_caves', p, seed)
local large_caves = Public.get_noise('large_caves', p, seed)
if scrapyard_modified > -0.15 and scrapyard_modified < 0.15 then
if floor(large_caves * 10) % 4 < 3 then
tiles[#tiles + 1] = {name = 'dirt-7', position = p}
@ -1137,12 +1133,12 @@ local function zone_scrap_1(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
data.scrap_zone = true
local scrapyard = get_perlin('scrapyard', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 35000)
local scrapyard = Public.get_noise('scrapyard', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 35000)
--Chasms
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local small_caves = Public.get_noise('small_caves', p, seed)
if noise_cave_ponds < 0.15 and noise_cave_ponds > -0.15 then
if small_caves > 0.35 then
tiles[#tiles + 1] = {name = void_or_lab, position = p}
@ -1216,7 +1212,7 @@ local function zone_scrap_1(x, y, data, void_or_lab, adjusted_zones)
return
end
local cave_ponds = get_perlin('cave_ponds', p, seed)
local cave_ponds = Public.get_noise('cave_ponds', p, seed)
if cave_ponds < -0.6 and scrapyard > -0.2 and scrapyard < 0.2 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 128) == 1 then
@ -1228,11 +1224,11 @@ local function zone_scrap_1(x, y, data, void_or_lab, adjusted_zones)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
local large_caves = get_perlin('large_caves', p, seed)
local large_caves = Public.get_noise('large_caves', p, seed)
if scrapyard > -0.15 and scrapyard < 0.15 then
if floor(large_caves * 10) % 4 < 3 then
tiles[#tiles + 1] = {name = 'dirt-7', position = p}
@ -1265,10 +1261,10 @@ local function zone_7(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local cave_rivers_3 = get_perlin('cave_rivers_3', p, seed)
local cave_rivers_4 = get_perlin('cave_rivers_4', p, seed + 50000)
local no_rocks_2 = get_perlin('no_rocks_2', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 30000)
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 no_rocks_2 = Public.get_noise('no_rocks_2', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 30000)
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}
@ -1286,7 +1282,7 @@ local function zone_7(x, y, data, void_or_lab, adjusted_zones)
return
end
local noise_ores = get_perlin('no_rocks_2', p, seed + 25000)
local noise_ores = Public.get_noise('no_rocks_2', p, seed + 25000)
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}
@ -1342,8 +1338,8 @@ local function zone_7(x, y, data, void_or_lab, adjusted_zones)
end
--Chasms
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local small_caves = Public.get_noise('small_caves', p, seed)
if noise_cave_ponds < 0.25 and noise_cave_ponds > -0.25 then
if small_caves > 0.55 then
tiles[#tiles + 1] = {name = void_or_lab, position = p}
@ -1360,7 +1356,7 @@ local function zone_7(x, y, data, void_or_lab, adjusted_zones)
--Resource Spots
if smol_areas < -0.72 then
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
end
@ -1383,13 +1379,13 @@ local function zone_forest_2(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
data.forest_zone = true
local large_caves = get_perlin('large_caves', p, seed)
local cave_rivers = get_perlin('cave_rivers', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 25000)
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)
--Chasms
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local small_caves = Public.get_noise('small_caves', p, seed)
if noise_cave_ponds < 0.45 and noise_cave_ponds > -0.45 then
if small_caves > 0.45 then
tiles[#tiles + 1] = {name = void_or_lab, position = p}
@ -1414,7 +1410,7 @@ local function zone_forest_2(x, y, data, void_or_lab, adjusted_zones)
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -1428,7 +1424,7 @@ local function zone_forest_2(x, y, data, void_or_lab, adjusted_zones)
return
end
local noise_forest_location = get_perlin('forest_location', p, seed)
local noise_forest_location = Public.get_noise('forest_location', p, seed)
if cave_rivers > -0.1 and cave_rivers < 0.1 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -1517,9 +1513,9 @@ local function zone_5(x, y, data, void_or_lab, adjusted_zones)
local buildings = data.buildings
local treasure = data.treasure
local small_caves = get_perlin('small_caves', p, seed)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 20000)
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)
if small_caves > -0.24 and small_caves < 0.24 then
tiles[#tiles + 1] = {name = 'dirt-7', position = p}
@ -1556,7 +1552,7 @@ local function zone_5(x, y, data, void_or_lab, adjusted_zones)
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -1610,10 +1606,10 @@ local function zone_4(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local noise_large_caves = get_perlin('large_caves', p, seed)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local small_caves = get_perlin('dungeons', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 15000)
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)
if abs(noise_large_caves) > 0.7 then
tiles[#tiles + 1] = {name = 'water', position = p}
@ -1692,7 +1688,7 @@ local function zone_4(x, y, data, void_or_lab, adjusted_zones)
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -1709,7 +1705,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 = get_perlin('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
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
@ -1741,18 +1737,18 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local small_caves = get_perlin('dungeons', p, seed + 50000)
local small_caves_2 = get_perlin('small_caves_2', p, seed + 70000)
local noise_large_caves = get_perlin('large_caves', p, seed + 60000)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local cave_miner = get_perlin('cave_miner_01', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 60000)
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 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)
--Resource Spots
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -1809,7 +1805,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = get_perlin('cave_rivers', p, seed + 100000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 100000)
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}
@ -1819,7 +1815,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
return
end
end
local cave_rivers_2 = get_perlin('cave_rivers_2', p, seed)
local cave_rivers_2 = Public.get_noise('cave_rivers_2', p, seed)
if cave_rivers_2 < 0.024 and cave_rivers_2 > -0.024 then
if noise_cave_ponds < 0.4 then
tiles[#tiles + 1] = {name = 'water-shallow', position = p}
@ -1835,7 +1831,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = get_perlin('no_rocks', p, seed + 25000)
local no_rocks = Public.get_noise('no_rocks', p, seed + 25000)
--Worm oil Zones
if no_rocks < 0.20 and no_rocks > -0.20 then
if small_caves > 0.35 then
@ -1867,7 +1863,7 @@ local function zone_3(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = get_perlin('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
if no_rocks_2 > 0.80 or no_rocks_2 < -0.80 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -1907,15 +1903,15 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local small_caves = get_perlin('dungeons', p, seed)
local noise_large_caves = get_perlin('large_caves', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 15000)
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)
--Resource Spots
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -1930,7 +1926,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
end
if noise_large_caves > -0.75 and noise_large_caves < 0.75 then
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
--Chasms
if noise_cave_ponds < 0.15 and noise_cave_ponds > -0.15 then
@ -1955,7 +1951,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = get_perlin('cave_rivers', p, seed + 100000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 100000)
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}
@ -1983,7 +1979,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = get_perlin('no_rocks', p, seed + 25000)
local no_rocks = Public.get_noise('no_rocks', p, seed + 25000)
--Worm oil Zones
if no_rocks < 0.20 and no_rocks > -0.20 then
if small_caves > 0.30 then
@ -2015,7 +2011,7 @@ local function zone_2(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = get_perlin('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
if no_rocks_2 > 0.80 or no_rocks_2 < -0.80 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -2052,15 +2048,15 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
local treasure = data.treasure
data.forest_zone = true
local small_caves = get_perlin('dungeons', p, seed + 33322)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed + 33333)
local small_caves = Public.get_noise('dungeons', p, seed + 33322)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed + 33333)
--Resource Spots
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -2106,7 +2102,7 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = get_perlin('cave_rivers', p, seed + 200000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 200000)
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}
@ -2128,7 +2124,7 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = get_perlin('no_rocks', p, seed + 30000)
local no_rocks = Public.get_noise('no_rocks', p, seed + 30000)
--Worm oil Zones
if p.y < -64 + noise_cave_ponds * 10 then
if no_rocks < 0.11 and no_rocks > -0.11 then
@ -2159,7 +2155,7 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = get_perlin('no_rocks_2', p, seed + 5000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 5000)
if no_rocks_2 > 0.64 or no_rocks_2 < -0.64 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -2180,7 +2176,7 @@ local function zone_forest_1(x, y, data, void_or_lab, adjusted_zones)
treasure[#treasure + 1] = {position = p, chest = 'iron-chest'}
end
tiles[#tiles + 1] = {name = 'landfill', position = p}
local noise_forest_location = get_perlin('forest_location', p, seed)
local noise_forest_location = Public.get_noise('forest_location', p, seed)
if noise_forest_location > 0.095 then
if random(1, 256) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -2235,14 +2231,14 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local small_caves = get_perlin('dungeons', p, seed)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed)
local smol_areas = get_perlin('smol_areas', p, seed)
local small_caves = Public.get_noise('dungeons', p, seed)
local noise_cave_ponds = Public.get_noise('cave_ponds', p, seed)
local smol_areas = Public.get_noise('smol_areas', p, seed)
if smol_areas < 0.055 and smol_areas > -0.025 then
tiles[#tiles + 1] = {name = 'deepwater-green', position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 32) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -2288,7 +2284,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
end
--Rivers
local cave_rivers = get_perlin('cave_rivers', p, seed + 300000)
local cave_rivers = Public.get_noise('cave_rivers', p, seed + 300000)
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}
@ -2310,7 +2306,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
return
end
local no_rocks = get_perlin('no_rocks', p, seed + 50000)
local no_rocks = Public.get_noise('no_rocks', p, seed + 50000)
--Worm oil Zones
if p.y < -64 + noise_cave_ponds * 10 then
if no_rocks < 0.12 and no_rocks > -0.12 then
@ -2341,7 +2337,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
end
--Main Rock Terrain
local no_rocks_2 = get_perlin('no_rocks_2', p, seed + 75000)
local no_rocks_2 = Public.get_noise('no_rocks_2', p, seed + 75000)
if no_rocks_2 > 0.66 or no_rocks_2 < -0.66 then
local success = place_wagon(data, adjusted_zones)
if success then
@ -2361,7 +2357,7 @@ local function zone_1(x, y, data, void_or_lab, adjusted_zones)
if random(1, 2048) == 1 then
treasure[#treasure + 1] = {position = p, chest = 'iron-chest'}
end
local random_tiles = get_perlin('forest_location', p, seed)
local random_tiles = Public.get_noise('forest_location', p, seed)
if random_tiles > 0.095 then
if random_tiles > 0.6 then
if random(1, 100) > 42 then
@ -2399,17 +2395,17 @@ local function starting_zone(x, y, data, void_or_lab, adjusted_zones)
local markets = data.markets
local treasure = data.treasure
local small_caves = get_perlin('dungeons', p, seed + 34883)
local noise_cave_ponds = get_perlin('cave_ponds', p, seed + 28939)
local smol_areas = get_perlin('smol_areas', p, seed + 3992)
local no_rocks_2 = get_perlin('no_rocks_2', p, seed + 1922)
local cave_rivers = get_perlin('cave_rivers', p, seed)
local no_rocks = get_perlin('no_rocks', p, seed)
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 cave_rivers = Public.get_noise('cave_rivers', p, seed)
local no_rocks = Public.get_noise('no_rocks', p, seed)
if smol_areas < 0.055 and smol_areas > -0.025 then
entities[#entities + 1] = {name = rock_raffle[random(1, size_of_rock_raffle)], position = p}
if random(1, 32) == 1 then
Generate_resources(buildings, p, zone_settings.zone_depth)
Public.spawn_random_buildings(buildings, p, zone_settings.zone_depth)
end
if random(1, 128) == 1 then
Biters.wave_defense_set_worm_raffle(abs(p.y) * worm_level_modifier)
@ -2625,7 +2621,7 @@ local function process_bits(p, data, adjusted_zones)
adjusted_zones.scrap[index] = true
end
local void_or_tile = WPT.get('void_or_tile')
local void_or_tile = Public.get('void_or_tile')
local x = p.x
local y = p.y
@ -2644,7 +2640,7 @@ local function border_chunk(p, data)
entities[#entities + 1] = {name = trees[random(1, #trees)], position = pos}
end
local noise = get_perlin('dungeons', pos, data.seed)
local noise = Public.get_noise('dungeons', pos, data.seed)
local index = floor(noise * 32) % 4 + 1
tiles[#tiles + 1] = {name = start_ground_tiles[index], position = pos}
@ -2680,10 +2676,10 @@ local function biter_chunk(p, data)
tile_positions[#tile_positions + 1] = p
local disable_spawners = {
callback = Functions.deactivate_callback
callback = Public.deactivate_callback
}
local disable_worms = {
callback = Functions.active_not_destructible_callback
callback = Public.active_not_destructible_callback
}
if random(1, 128) == 1 then
@ -2722,7 +2718,7 @@ function Public.heavy_functions(data)
local p = data.position
local get_tile = surface.get_tile(p)
local adjusted_zones = WPT.get('adjusted_zones')
local adjusted_zones = Public.get('adjusted_zones')
init_terrain(adjusted_zones)
local map_name = 'mtn_v3'
@ -2740,7 +2736,7 @@ function Public.heavy_functions(data)
end
if top_y % zone_settings.zone_depth == 0 and top_y < 0 then
WPT.set('left_top', data.left_top)
Public.set('left_top', data.left_top)
return wall(p, data)
end
@ -2780,7 +2776,7 @@ Event.add(
return
end
local winter_mode = WPT.get('winter_mode')
local winter_mode = Public.get('winter_mode')
if winter_mode then
rendering.draw_sprite(
{
@ -2796,7 +2792,7 @@ Event.add(
end
if left_top.y == -128 and left_top.x == -128 then
local locomotive = WPT.get('locomotive')
local locomotive = Public.get('locomotive')
if locomotive and locomotive.valid then
local position = locomotive.position
for _, entity in pairs(surface.find_entities_filtered({area = {{position.x - 5, position.y - 6}, {position.x + 5, position.y + 10}}, type = 'simple-entity'})) do

View File

@ -1,5 +1,5 @@
local Event = require 'utils.event'
local WPT = require 'maps.mountain_fortress_v3.table'
local Public = require 'maps.mountain_fortress_v3.table'
local random = math.random
@ -85,7 +85,7 @@ local function create_kaboom(surface, position, name)
)
end
local function tick_tack_trap(surface, position)
function Public.tick_tack_trap(surface, position)
if not surface then
return
end
@ -101,7 +101,7 @@ local function tick_tack_trap(surface, position)
if not position.y then
return
end
local traps = WPT.get('traps')
local traps = Public.get('traps')
local tick_tack_count = random(5, 9)
for t = 60, tick_tack_count * 60, 60 do
if not traps[game.tick + t] then
@ -130,7 +130,7 @@ local function tick_tack_trap(surface, position)
end
local function on_tick()
local traps = WPT.get('traps')
local traps = Public.get('traps')
if not traps[game.tick] then
return
end
@ -148,4 +148,4 @@ end
Event.add(defines.events.on_tick, on_tick)
return tick_tack_trap
return Public

View File

@ -45,10 +45,11 @@ local remove = table.remove
local speed = 0.06
--- Draws a new render.
---@return integer
---@return table
function Public:new_render()
local surface = game.get_surface(self.surface_id)
self.render_id = rendering.draw_sprite {target = self.position, sprite = self.sprite, surface = surface}
return self
end
--- Sets a new target for a given render.

View File

@ -1164,7 +1164,7 @@ function Public.damage_entity_threshold(value)
end
--- Returns the table.
---@param key string
---@param key string|nil
function Public.get(key)
if key then
return this[key]

View File

@ -654,6 +654,10 @@ function Public.call_existing_tab(player, name)
if not frame then
return
end
if not inside_frame then
return
end
local tabbed_pane = inside_frame.tabbed_pane
for key, v in pairs(tabbed_pane.tabs) do
if v.tab.caption == name then

View File

@ -19,7 +19,10 @@ Global.register(
local Public = {}
Public.events = {bottom_quickbar_button_name = Event.generate_event_name('bottom_quickbar_button_name')}
Public.events = {
bottom_quickbar_button_name = Event.generate_event_name('bottom_quickbar_button_name'),
bottom_quickbar_respawn_raise = Event.generate_event_name('bottom_quickbar_respawn_raise')
}
local main_frame_name = Gui.uid_name()
local clear_corpse_button_name = Gui.uid_name()
@ -325,4 +328,19 @@ Public.main_frame_name = main_frame_name
Public.set_location = set_location
Gui.screen_to_bypass(main_frame_name)
Event.add(
Public.events.bottom_quickbar_respawn_raise,
function(event)
if not event or not event.player_index then
return
end
if this.activate_custom_buttons then
local player = game.get_player(event.player_index)
local data = Public.get_player_data(player)
set_location(player, data.state)
end
end
)
return Public