mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-05-13 21:56:29 +02:00
Merge pull request #371 from danielmartin0/develop
Additional minor difficulty adjustments
This commit is contained in:
commit
8586a88cb0
@ -16,7 +16,7 @@ softmod_info_tips_1=Features of the game that are hard to work out alone
|
||||
softmod_info_tips_2=• The captain can steer the boat from the crow's nest by placing 100 rail signals in one of the blue boxes.\n• Resources granted to the ship appear in the captain's cabin.\n• Charging a silo drains power from everything else on its network.\n• The quantity of ore available on an island is independent of the order in which you break rocks.\n• Passive pollution ramps up over time on each island.\n• The strength of attacks is proportional to the number of remaining nests. (The time-based rate of evolution is proportional to nests too, but destroying a nest will immediately jump evolution by most of the amount it 'would have' made had it survived.)\n• Lab productivity increases with each league.\n• item-on-ground entities on the deck are moved to the cabin when the boat moves, for performance reasons.\n• Commands: /ccolor gives you a fun color. /classinfo {classname} gives the description of the named class. To manage your class, use /take {classname} or /giveup.
|
||||
|
||||
softmod_info_updates_1=Significant recent changes
|
||||
softmod_info_updates_2=v1.4.2\n• Disabled 'disband crew' button.\n• Increased amount of fish caught by all fishing classes.\n• Enabled concrete tech.\n• Fixed Mysterious caves island always having the same layout.\n• Fixed issue where power could get disconnected between deck and hold.\n• Added /clear_north_tanks and /clear_south_tanks commands to clear fluid from ship's storage tanks.\n\nv1.4.1\n• Cannon upgrade is now more expensive and appears less often.\n• Bugfixes.\n\nv1.4.0\n• New private runs: Protect your run by a password.\n• New island: Mysterious caves.\n• New technologies now available: Car and nuclear energy.\n• New way to unlock extra holds and power upgrades.\n• Various island related balance changes.
|
||||
softmod_info_updates_2=v1.4.2\n• Disabled 'disband crew' button.\n• Increased amount of fish caught by all fishing classes.\n• Enabled concrete tech.\n• Fixed Mysterious caves island always having the same layout.\n• Fixed issue where power could get disconnected between deck and hold.\n• Added /clear_north_tanks and /clear_south_tanks commands to clear fluid from ship's storage tanks.\n• Difficulty of Hard and Nightmare increased. Resistive roles slightly nerfed.\n\nv1.4.0\n• New private runs: Protect your run by a password.\n• New island: Mysterious caves.\n• New technologies now available: Car and nuclear energy.\n• New way to unlock extra holds and power upgrades.\n• Various island related balance changes.
|
||||
|
||||
softmod_info_credits_1=Credits
|
||||
softmod_info_credits_2=Pirate Ship designed and coded by thesixthroc. Updates from Piratux. Comfy codebase and help from Gerkiz, Hanakocz and Mew @ Comfy Industries (https://getcomfy.eu). Some island structure blueprints contributed by Mattisso.\n\nCome chat with us: https://getcomfy.eu/discord\n\n"Those white gloves. I'll never forget them 'till the day I die." - Dr. John
|
||||
|
@ -137,16 +137,16 @@ function Public.wave_size_rng() -- random variance in attack sizes
|
||||
wave_size_multiplier = 0
|
||||
elseif memory.overworldx > 0 then
|
||||
local rng2 = Math.random(1000)
|
||||
if rng2 <= 900 then
|
||||
if rng2 <= 890 then
|
||||
wave_size_multiplier = 1
|
||||
elseif rng2 <= 975 then
|
||||
elseif rng2 <= 970 then
|
||||
wave_size_multiplier = 1.5
|
||||
elseif rng2 <= 985 then
|
||||
wave_size_multiplier = 2
|
||||
elseif rng2 <= 995 then
|
||||
wave_size_multiplier = 2.5
|
||||
else
|
||||
wave_size_multiplier = 3
|
||||
else
|
||||
wave_size_multiplier = 4
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -6,6 +6,7 @@ local Math = require 'maps.pirates.math'
|
||||
-- local Raffle = require 'maps.pirates.raffle'
|
||||
-- local Memory = require 'maps.pirates.memory'
|
||||
local Common = require 'maps.pirates.common'
|
||||
local CoreData = require 'maps.pirates.coredata'
|
||||
-- local Utils = require 'maps.pirates.utils_local'
|
||||
-- local _inspect = require 'utils.inspect'.inspect
|
||||
|
||||
@ -36,13 +37,13 @@ Public.class_reward_tick_rate_in_seconds = 7
|
||||
Public.poison_damage_multiplier = 1.85
|
||||
Public.every_nth_tree_gives_coins = 6
|
||||
|
||||
Public.samurai_damage_taken_multiplier = 0.26
|
||||
Public.samurai_damage_taken_multiplier = 0.32
|
||||
Public.samurai_damage_dealt_when_not_melee_multiplier = 0.75
|
||||
Public.samurai_damage_dealt_with_melee = 25
|
||||
Public.hatamoto_damage_taken_multiplier = 0.16
|
||||
Public.hatamoto_damage_taken_multiplier = 0.21
|
||||
Public.hatamoto_damage_dealt_when_not_melee_multiplier = 0.75
|
||||
Public.hatamoto_damage_dealt_with_melee = 45
|
||||
Public.iron_leg_damage_taken_multiplier = 0.18
|
||||
Public.iron_leg_damage_taken_multiplier = 0.24
|
||||
Public.iron_leg_iron_ore_required = 3000
|
||||
Public.deckhand_extra_speed = 1.25
|
||||
Public.deckhand_ore_grant_multiplier = 5
|
||||
@ -93,7 +94,7 @@ Public.EEI_stages = { --multipliers
|
||||
|
||||
function Public.scripted_biters_pollution_cost_multiplier()
|
||||
|
||||
return 1.45 / Math.sloped(Common.difficulty_scale(), 1/3) * (1 + 1.2 / ((1 + (Common.overworldx()/40))^(1.5+Common.difficulty_scale()))) -- the complicated factor just makes the early-game easier; in particular the first island, but on easier difficulties the next few islands as well
|
||||
return 1.25 / Math.sloped(Common.difficulty_scale(), 1/2) * (1 + 1.2 / ((1 + (Common.overworldx()/40))^(1.5+Common.difficulty_scale()))) -- the complicated factor just makes the early-game easier; in particular the first island, but on easier difficulties the next few islands as well
|
||||
end
|
||||
|
||||
function Public.cost_to_leave_multiplier()
|
||||
@ -211,7 +212,7 @@ end
|
||||
|
||||
function Public.silo_total_pollution()
|
||||
return (
|
||||
365 * (Common.difficulty_scale()^(1.2)) * Public.crew_scale()^(3/10) * (3.2 + 0.7 * (Common.overworldx()/40)^(1.6)) / Math.sloped(Common.difficulty_scale(), 1/5) --shape of the curve with x is tuned. Final factor of difficulty is to offset a change made to scripted_biters_pollution_cost_multiplier
|
||||
347 * (Common.difficulty_scale()^(1.0)) * Public.crew_scale()^(3/10) * (3.2 + 0.7 * (Common.overworldx()/40)^(1.6)) --shape of the curve with x is tuned.
|
||||
)
|
||||
end
|
||||
|
||||
@ -245,8 +246,8 @@ function Public.boat_passive_pollution_per_minute(time)
|
||||
end
|
||||
|
||||
return boost * (
|
||||
2.73 * (Common.difficulty_scale()^(1.1)) * (Common.overworldx()/40)^(1.8) * (Public.crew_scale())^(52/100)-- There is no _explicit_ T dependence, but it depends almost the same way on the crew_scale as T does.
|
||||
) / Math.sloped(Common.difficulty_scale(), 1/5) --Final factor of difficulty is to offset a change made to scripted_biters_pollution_cost_multiplier
|
||||
2.60 * (Common.difficulty_scale()^(0.8)) * (Common.overworldx()/40)^(1.8) * (Public.crew_scale())^(52/100)-- There is no _explicit_ T dependence, but it depends almost the same way on the crew_scale as T does.
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@ -259,6 +260,15 @@ function Public.base_evolution_leagues(leagues)
|
||||
else
|
||||
evo = (0.0201 * (overworldx/40)) * Math.sloped(Common.difficulty_scale(), 1/5)
|
||||
|
||||
local difficulty_name = CoreData.get_difficulty_option_informal_name_from_value(Common.difficulty_scale())
|
||||
if difficulty_name == 'normal' then
|
||||
evo = evo + 0.01
|
||||
elseif difficulty_name == 'hard' then
|
||||
evo = evo + 0.02
|
||||
elseif difficulty_name == 'nightmare' then
|
||||
evo = evo + 0.04
|
||||
end
|
||||
|
||||
if overworldx > 600 and overworldx < 1000 then
|
||||
evo = evo + (0.0025 * (overworldx - 600)/40)
|
||||
elseif overworldx >= 1000 then
|
||||
|
@ -120,11 +120,11 @@ Public.difficulty_options = {
|
||||
--For the value of Easy difficulty, we are pulled in two directions: We wish to make the game comfy to play for those who haven't played it, but we also wish to represent the game mechanics faithfully so that Normal is not a crazy distance away.
|
||||
{value = 0.5, icon = 'item/firearm-magazine', text = {'pirates.difficulty_easy'}, associated_color = {r = 50, g = 255, b = 50}},
|
||||
|
||||
{value = 0.9, icon = 'item/piercing-rounds-magazine', text = {'pirates.difficulty_normal'}, associated_color = {r = 255, g = 255, b = 50}},
|
||||
{value = 0.95, icon = 'item/piercing-rounds-magazine', text = {'pirates.difficulty_normal'}, associated_color = {r = 255, g = 255, b = 50}},
|
||||
|
||||
{value = 1.4, icon = 'item/uranium-rounds-magazine', text = {'pirates.difficutly_hard'}, associated_color = {r = 255, g = 50, b = 50}},
|
||||
{value = 1.5, icon = 'item/uranium-rounds-magazine', text = {'pirates.difficutly_hard'}, associated_color = {r = 255, g = 50, b = 50}},
|
||||
|
||||
{value = 2.1, icon = 'item/atomic-bomb', text = {'pirates.difficulty_nightmare'}, associated_color = {r = 170, g = 60, b = 60}},
|
||||
{value = 2.2, icon = 'item/atomic-bomb', text = {'pirates.difficulty_nightmare'}, associated_color = {r = 170, g = 60, b = 60}},
|
||||
}
|
||||
function Public.get_difficulty_option_from_value(difficulty_value)
|
||||
-- given a difficulty value, key in to the closesy entry in the above table. (organising things this way allows us to make changes to the 'value' keys in the above table without disrupting e.g. past highscores data)
|
||||
|
@ -315,7 +315,8 @@ function Public.afk_player_tick(player)
|
||||
-- local global_memory = Memory.get_global_memory()
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
if Common.is_captain(player) and #Common.crew_get_nonafk_crew_members() > 0 then
|
||||
if Common.is_captain(player) and #Common.crew_get_nonafk_crew_members() >= 6 then
|
||||
-- in this case, lose captainhood
|
||||
|
||||
local force = memory.force
|
||||
if force and force.valid then
|
||||
|
@ -141,9 +141,9 @@ end
|
||||
|
||||
|
||||
|
||||
function Public.close_position_try_avoiding_entities(args, points_to_avoid, farness_boost_low, farness_boost_high)
|
||||
farness_boost_low = farness_boost_low or 0
|
||||
farness_boost_high = farness_boost_high or 0
|
||||
function Public.close_position_try_avoiding_entities(args, points_to_avoid, farness_low, farness_high)
|
||||
farness_low = farness_low or 0.06
|
||||
farness_high = farness_high or 0.19
|
||||
points_to_avoid = points_to_avoid or {}
|
||||
|
||||
-- local memory = Memory.get_crew_memory()
|
||||
@ -168,7 +168,7 @@ function Public.close_position_try_avoiding_entities(args, points_to_avoid, farn
|
||||
if (not Utils.contains(CoreData.tiles_that_conflict_with_resource_layer, tile.name)) and (not Utils.contains(CoreData.edgemost_tile_names, tile.name)) then
|
||||
local p3 = {x = p2.x + args.static_params.terraingen_coordinates_offset.x, y = p2.y + args.static_params.terraingen_coordinates_offset.y}
|
||||
|
||||
if IslandsCommon.island_farness_1(args)(p3) > 0.06 + farness_boost_low and IslandsCommon.island_farness_1(args)(p3) < 0.19 + farness_boost_high then
|
||||
if IslandsCommon.island_farness_1(args)(p3) > farness_low and IslandsCommon.island_farness_1(args)(p3) < farness_high then
|
||||
local allowed = true
|
||||
if tries < 40 and #surface.find_entities({{p2.x - 8, p2.y - 8}, {p2.x + 8, p2.y + 8}}) > 0 then
|
||||
allowed = false
|
||||
|
@ -169,15 +169,15 @@ function Public.spawn_ores_on_arrival(destination, points_to_avoid)
|
||||
noise_generator = Utils.noise_generator({}, 0),
|
||||
}
|
||||
|
||||
local farness_boost_low, farness_boost_high = 0, 0
|
||||
local farness_low, farness_high = 0.06, 0.25
|
||||
if destination.subtype == enum.MAZE then
|
||||
farness_boost_low = 0.08
|
||||
farness_boost_high = 0.25
|
||||
farness_low = 0.14
|
||||
farness_high = 0.44
|
||||
end
|
||||
|
||||
for _, ore in pairs(ores) do
|
||||
if destination.static_params.abstract_ore_amounts[ore] then
|
||||
local p = Hunt.close_position_try_avoiding_entities(args, points_to_avoid, farness_boost_low, farness_boost_high)
|
||||
local p = Hunt.close_position_try_avoiding_entities(args, points_to_avoid, farness_low, farness_high)
|
||||
if p then
|
||||
points_to_avoid[#points_to_avoid + 1] = {x=p.x, y=p.y, r=11}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user