diff --git a/locale/en/pirates.cfg b/locale/en/pirates.cfg index f9df01f6..8ec1ae2f 100644 --- a/locale/en/pirates.cfg +++ b/locale/en/pirates.cfg @@ -275,10 +275,10 @@ class_smoldering_explanation_advanced=They periodically convert wood into coal, class_gourmet=Gourmet # class_gourmet_explanation=They generate ore for the cabin by eating fish in fancy locations. class_gourmet_explanation_advanced=They generate ore for the cabin by eating fish in fancy locations. -class_chief=Chief -class_chief_explanation_advanced=They cook meat of defeated enemies and turn it into something tasty. -class_roc_eater=Roc Eater -class_roc_eater_explanation_advanced=When eating fish, if they have stone furnaces in their inventory, they will eat those instead.\nIn addition, they receive __1__% less damage. +class_chef=Chef +class_chef_explanation_advanced=They cook meat of defeated enemies and turn it into something tasty. +class_rock_eater=Rock Eater +class_rock_eater_explanation_advanced=When eating fish, if they have stone furnaces in their inventory, they will eat those instead.\nIn addition, they receive __1__% less damage. class_soldier=Soldier class_soldier_explanation_advanced=When eating fish, they have __1__% chance to summon defender to protect them. class_veteran=Veteran diff --git a/maps/pirates/ai.lua b/maps/pirates/ai.lua index 9abaa371..85706454 100644 --- a/maps/pirates/ai.lua +++ b/maps/pirates/ai.lua @@ -129,7 +129,7 @@ end function Public.wave_size_rng() -- random variance in attack sizes local memory = Memory.get_crew_memory() - local wave_percentage_chance = Math.clamp(0, 36, 11 + 8 * memory.floating_pollution/1500) + local wave_percentage_chance = Math.clamp(0, 48, 11 + 9 * memory.floating_pollution/1500) local wave_size_multiplier = 1 local rng1 = Math.random(100) @@ -788,7 +788,7 @@ function Public.revenge_group(surface, p, target, type, bonus_evo, amount_multip if name == 'small-spitter' then count = 7 elseif name == 'medium-spitter' then - count = 5 + count = 4 elseif name == 'big-spitter' then count = 3 elseif name == 'behemoth-spitter' then diff --git a/maps/pirates/api_events.lua b/maps/pirates/api_events.lua index bc2745cf..454df000 100644 --- a/maps/pirates/api_events.lua +++ b/maps/pirates/api_events.lua @@ -335,8 +335,8 @@ local function damage_to_players_changes(event) damage_multiplier = damage_multiplier * Balance.samurai_damage_taken_multiplier elseif class == Classes.enum.HATAMOTO then damage_multiplier = damage_multiplier * Balance.hatamoto_damage_taken_multiplier - elseif class == Classes.enum.ROC_EATER then - damage_multiplier = damage_multiplier * Balance.roc_eater_damage_taken_multiplier + elseif class == Classes.enum.ROCK_EATER then + damage_multiplier = damage_multiplier * Balance.rock_eater_damage_taken_multiplier elseif class == Classes.enum.IRON_LEG then if memory.class_auxiliary_data[player_index] and memory.class_auxiliary_data[player_index].iron_leg_active then damage_multiplier = damage_multiplier * Balance.iron_leg_damage_taken_multiplier @@ -997,12 +997,12 @@ local function base_kill_rewards(event) class = memory.classes_table[revenge_target.player.index] end - local class_is_chief = (class and class == Classes.enum.CHIEF) and true or false + local class_is_chef = (class and class == Classes.enum.CHEF) and true or false - -- no worm loot in the maze except for chiefs: + -- no worm loot in the maze except for chefs: local maze = (destination.subtype and destination.subtype == Islands.enum.MAZE) - if maze and not (entity_name == 'biter-spawner' or entity_name == 'spitter-spawner') and not (class_is_chief) then return end + if maze and not (entity_name == 'biter-spawner' or entity_name == 'spitter-spawner') and not (class_is_chef) then return end local iron_amount local coin_amount @@ -1011,12 +1011,12 @@ local function base_kill_rewards(event) if entity_name == 'small-worm-turret' then iron_amount = 5 coin_amount = 50 - fish_amount = 1 * Balance.chief_fish_received_for_worm_kill + fish_amount = 1 * Balance.chef_fish_received_for_worm_kill memory.playtesting_stats.coins_gained_by_nests_and_worms = memory.playtesting_stats.coins_gained_by_nests_and_worms + coin_amount elseif entity_name == 'medium-worm-turret' then iron_amount = 20 coin_amount = 90 - fish_amount = 1 * Balance.chief_fish_received_for_worm_kill + fish_amount = 2 * Balance.chef_fish_received_for_worm_kill memory.playtesting_stats.coins_gained_by_nests_and_worms = memory.playtesting_stats.coins_gained_by_nests_and_worms + coin_amount elseif entity_name == 'biter-spawner' or entity_name == 'spitter-spawner' then iron_amount = 30 @@ -1026,12 +1026,12 @@ local function base_kill_rewards(event) elseif entity_name == 'big-worm-turret' then iron_amount = 30 coin_amount = 140 - fish_amount = 2 * Balance.chief_fish_received_for_worm_kill + fish_amount = 2 * Balance.chef_fish_received_for_worm_kill memory.playtesting_stats.coins_gained_by_nests_and_worms = memory.playtesting_stats.coins_gained_by_nests_and_worms + coin_amount elseif entity_name == 'behemoth-worm-turret' then iron_amount = 50 coin_amount = 260 - fish_amount = 3 * Balance.chief_fish_received_for_worm_kill + fish_amount = 3 * Balance.chef_fish_received_for_worm_kill memory.playtesting_stats.coins_gained_by_nests_and_worms = memory.playtesting_stats.coins_gained_by_nests_and_worms + coin_amount elseif memory.overworldx > 0 then --avoid coin farming on first island if entity_name == 'small-biter' then @@ -1039,35 +1039,35 @@ local function base_kill_rewards(event) -- coin_amount = 1 -- end coin_amount = 1 - fish_amount = 1 * Balance.chief_fish_received_for_biter_kill + fish_amount = 0 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'small-spitter' then coin_amount = 1 - fish_amount = 1 * Balance.chief_fish_received_for_biter_kill + fish_amount = 0 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'medium-biter' then coin_amount = 2 - fish_amount = 1 * Balance.chief_fish_received_for_biter_kill + fish_amount = 1 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'medium-spitter' then coin_amount = 2 - fish_amount = 1 * Balance.chief_fish_received_for_biter_kill + fish_amount = 1 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'big-biter' then coin_amount = 4 - fish_amount = 2 * Balance.chief_fish_received_for_biter_kill + fish_amount = 2 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'big-spitter' then coin_amount = 4 - fish_amount = 2 * Balance.chief_fish_received_for_biter_kill + fish_amount = 2 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'behemoth-biter' then coin_amount = 8 - fish_amount = 3 * Balance.chief_fish_received_for_biter_kill + fish_amount = 3 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount elseif entity_name == 'behemoth-spitter' then coin_amount = 8 - fish_amount = 3 * Balance.chief_fish_received_for_biter_kill + fish_amount = 3 * Balance.chef_fish_received_for_biter_kill memory.playtesting_stats.coins_gained_by_biters = memory.playtesting_stats.coins_gained_by_biters + coin_amount end end @@ -1082,7 +1082,7 @@ local function base_kill_rewards(event) stack[#stack + 1] = {name = 'coin', count = coin_amount} end - if class_is_chief and fish_amount and fish_amount > 0 then + if class_is_chef and fish_amount and fish_amount > 0 then stack[#stack + 1] = {name = 'raw-fish', count = fish_amount} end diff --git a/maps/pirates/balance.lua b/maps/pirates/balance.lua index 3e40814b..b93f560e 100644 --- a/maps/pirates/balance.lua +++ b/maps/pirates/balance.lua @@ -67,10 +67,10 @@ Public.rocket_launch_coin_reward = 5000 Public.dredger_reach_bonus = 16 Public.dredger_fish_bonus = 2 Public.gourmet_ore_scaling_enabled = false - Public.chief_fish_received_for_biter_kill = 1 - Public.chief_fish_received_for_worm_kill = 3 - Public.roc_eater_damage_taken_multiplier = 0.8 - Public.roc_eater_required_stone_furnace_to_heal_count = 1 + Public.chef_fish_received_for_biter_kill = 1 + Public.chef_fish_received_for_worm_kill = 3 + Public.rock_eater_damage_taken_multiplier = 0.8 + Public.rock_eater_required_stone_furnace_to_heal_count = 1 Public.soldier_defender_summon_chance = 0.2 Public.veteran_destroyer_summon_chance = 0.2 Public.veteran_on_hit_slow_chance = 0.1 @@ -157,12 +157,12 @@ function Public.max_time_on_island_formula() --always >0 --tuned end -Public.rockets_needed_x = 40*21 +Public.rockets_needed_x = 40*20 function Public.max_time_on_island() local x = Common.overworldx() - if x == 0 or (x >= Public.rockets_needed_x and x ~= 40*22) then + if x == 0 or (x >= Public.rockets_needed_x and x ~= 40*21) then -- if Common.overworldx() == 0 or ((Common.overworldx()/40) > 20 and (Common.overworldx()/40) < 25) then return -1 else diff --git a/maps/pirates/crew.lua b/maps/pirates/crew.lua index 398df2ff..70dc0a76 100644 --- a/maps/pirates/crew.lua +++ b/maps/pirates/crew.lua @@ -126,7 +126,7 @@ function Public.try_lose(loss_reason) -- if (not memory.game_lost) and (not memory.game_won) then memory.game_lost = true memory.crew_disband_tick_message = game.tick + 60*10 - memory.crew_disband_tick = game.tick + 60*35 + memory.crew_disband_tick = game.tick + 60*40 local playtimetext = Utils.time_longform((memory.age or 0)/60) diff --git a/maps/pirates/gui/evo.lua b/maps/pirates/gui/evo.lua index 90f0b981..d6ee26ca 100644 --- a/maps/pirates/gui/evo.lua +++ b/maps/pirates/gui/evo.lua @@ -152,6 +152,8 @@ function Public.full_update(player) button.sprite = 'entity/big-biter' elseif evolution_total >= 0.4 then button.sprite = 'entity/medium-spitter' + elseif evolution_total >= 0.25 then + button.sprite = 'entity/small-spitter' elseif evolution_total >= 0.2 then button.sprite = 'entity/medium-biter' else diff --git a/maps/pirates/gui/gui.lua b/maps/pirates/gui/gui.lua index 2bc42a55..2f7adbf6 100644 --- a/maps/pirates/gui/gui.lua +++ b/maps/pirates/gui/gui.lua @@ -607,7 +607,8 @@ function Public.process_etaframe_update(player, flow1, bools) -- local caption if bools.atsea_loading_bool then - if memory.overworldx >= Balance.rockets_needed_x then --bools.eta_bool is not helpful yet + -- @TODO: Fix magic numbers here + if memory.overworldx >= Balance.rockets_needed_x and (not memory.overworldx == 21 * 40) then --bools.eta_bool is not helpful yet flow2.etaframe_label_3.caption = {'pirates.gui_etaframe_nest_escape_cost'} if bools.cost_includes_rocket_launch_bool then tooltip = {'pirates.resources_needed_tooltip_0_rocketvariant'} diff --git a/maps/pirates/main.lua b/maps/pirates/main.lua index 61c1a05e..44f9ea49 100644 --- a/maps/pirates/main.lua +++ b/maps/pirates/main.lua @@ -279,7 +279,7 @@ local function crew_tick() if memory.crew_disband_tick_message < tick then memory.crew_disband_tick_message = nil - local message1 = {'pirates.crew_disband_tick_message', 25} + local message1 = {'pirates.crew_disband_tick_message', 30} Common.notify_force(memory.force, message1) diff --git a/maps/pirates/overworld.lua b/maps/pirates/overworld.lua index 6618a193..49c41c23 100644 --- a/maps/pirates/overworld.lua +++ b/maps/pirates/overworld.lua @@ -70,9 +70,9 @@ local destinationScheme = { [17] = {B, B, B}, [18] = {C, C, C}, --first showing of robot frame cost [19] = {DOCK, B, B}, - [20] = {NIL, NIL, NIL}, - [21] = {WALKWAYS, WALKWAYS, WALKWAYS}, --rocket launch cost begins - [22] = {SWAMP, RED_DESERT, STANDARD_VARIANT}, -- uniquely, this has a rocket launch cost, but still has an auto-undock timer + [20] = {WALKWAYS, WALKWAYS, WALKWAYS}, --rocket launch cost begins + [21] = {SWAMP, RED_DESERT, STANDARD_VARIANT}, -- uniquely, this has a rocket launch cost, but still has an auto-undock timer + [22] = {NIL, NIL, NIL}, [23] = {C, C, C}, [24] = {MAZE, MAZE, MAZE}, -- current 'boss map' [25] = {NIL, NIL, NIL}, @@ -197,14 +197,14 @@ function Public.generate_destination_base_cost_to_undock(p, subtype) end elseif macro_p.x == 18 then --a super small amount of flying-robot-frame on a relatively early level so that they see they need lubricant base_cost_to_undock = base_cost_2b - elseif macro_p.x <= 20 then + elseif macro_p.x <= 19 then if macro_p.x % 3 == 0 then base_cost_to_undock = nil else base_cost_to_undock = base_cost_2 end - -- after this point, mandatory. except for 22 - elseif macro_p.x == 22 then + -- after this point, mandatory to pay. except for 21 + elseif macro_p.x == 21 then base_cost_to_undock = base_cost_2 elseif macro_p.x <= 23 then base_cost_to_undock = base_cost_3 @@ -450,6 +450,8 @@ function Public.generate_overworld_destination(p) kraken_count = 0 elseif macro_p.x == 10 then kraken_count = 1 + elseif macro_p.x == 22 then + kraken_count = 1 end -- if _DEBUG then diff --git a/maps/pirates/roles/classes.lua b/maps/pirates/roles/classes.lua index 45689575..27951e74 100644 --- a/maps/pirates/roles/classes.lua +++ b/maps/pirates/roles/classes.lua @@ -31,8 +31,8 @@ local enum = { DREDGER = 'dredger', SMOLDERING = 'smoldering', GOURMET = 'gourmet', - CHIEF = 'chief', - ROC_EATER = 'roc_eater', + CHEF = 'chef', + ROCK_EATER = 'rock_eater', SOLDIER = 'soldier', VETERAN = 'veteran', } @@ -64,8 +64,8 @@ Public.eng_form = { [enum.DREDGER] = 'Dredger', [enum.SMOLDERING] = 'Smoldering', [enum.GOURMET] = 'Gourmet', - [enum.CHIEF] = 'Chief', - [enum.ROC_EATER] = 'Roc Eater', + [enum.CHEF] = 'Chef', + [enum.ROCK_EATER] = 'Rock Eater', [enum.SOLDIER] = 'Soldier', [enum.VETERAN] = 'Veteran', } @@ -128,8 +128,8 @@ function Public.explanation(class, add_is_class_obtainable) local received_damage = Public.percentage_points_difference_from_100_percent(Balance.iron_leg_damage_taken_multiplier) local iron_ore_required = Balance.iron_leg_iron_ore_required full_explanation = {'', {explanation, received_damage, iron_ore_required}} - elseif class == enum.ROC_EATER then - local received_damage = Public.percentage_points_difference_from_100_percent(Balance.roc_eater_damage_taken_multiplier) + elseif class == enum.ROCK_EATER then + local received_damage = Public.percentage_points_difference_from_100_percent(Balance.rock_eater_damage_taken_multiplier) full_explanation = {'', {explanation, received_damage}} elseif class == enum.SOLDIER then local chance = Balance.soldier_defender_summon_chance * 100 @@ -203,8 +203,8 @@ function Public.initial_class_pool() enum.IRON_LEG, -- enum.SMOLDERING, --tedious enum.GOURMET, - enum.CHIEF, - enum.ROC_EATER, + enum.CHEF, + enum.ROCK_EATER, enum.SOLDIER, } end @@ -377,16 +377,16 @@ local function class_on_player_used_capsule(event) if multiplier > 0 then local timescale = 60*30 * Math.max((Balance.game_slowness_scale())^(2/3),0.8) if memory.gourmet_recency_tick then - multiplier = multiplier *Math.clamp(0.2, 5, (1/5)^((memory.gourmet_recency_tick - game.tick)/(60*300))) + multiplier = multiplier * Math.clamp(0.2, 5, (1/5)^((memory.gourmet_recency_tick - game.tick)/(60*300))) memory.gourmet_recency_tick = Math.max(memory.gourmet_recency_tick, game.tick - timescale*10) + timescale else multiplier = multiplier * 5 memory.gourmet_recency_tick = game.tick - timescale*10 + timescale end - Public.class_ore_grant(player, 10 * multiplier, Balance.gourmet_ore_scaling_enabled) + Public.class_ore_grant(player, 15 * multiplier, Balance.gourmet_ore_scaling_enabled) end - elseif class == Public.enum.ROC_EATER then - local required_count = Balance.roc_eater_required_stone_furnace_to_heal_count + elseif class == Public.enum.ROCK_EATER then + local required_count = Balance.rock_eater_required_stone_furnace_to_heal_count if player.get_item_count('stone-furnace') >= required_count then player.remove_item({name='stone-furnace', count=required_count}) player.insert({name='raw-fish', count=1}) diff --git a/maps/pirates/surfaces/cabin.lua b/maps/pirates/surfaces/cabin.lua index da56857f..6e2131f1 100644 --- a/maps/pirates/surfaces/cabin.lua +++ b/maps/pirates/surfaces/cabin.lua @@ -99,7 +99,7 @@ Public.Data.surfacename_rendering_pos = {x = -0.5, y = -15} Public.cabin_shop_data = { { - price = {{'coin', 400}, {'coal', 20}, {'iron-plate', 30}},--should be inefficient on resources to merely buy arty to shoot nests + price = {{'coin', 400}, {'coal', 10}, {'iron-plate', 20}},--should be inefficient on resources to merely buy arty to shoot nests offer = {type='give-item', item = 'artillery-shell', count = 5}, }, { diff --git a/maps/pirates/surfaces/islands/swamp/data.lua b/maps/pirates/surfaces/islands/swamp/data.lua index b0f0bc48..253aa263 100644 --- a/maps/pirates/surfaces/islands/swamp/data.lua +++ b/maps/pirates/surfaces/islands/swamp/data.lua @@ -12,7 +12,7 @@ Public.display_names = {{'pirates.location_displayname_swamp_1'}} Public.terraingen_frame_width = 400 Public.terraingen_frame_height = 400 Public.static_params_default = { - starting_time_of_day = 0.28, + starting_time_of_day = 0.26, daynightcycletype = 1, brightness_visual_weights = {0, 0, 0}, default_decoratives = true,