1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-03-17 20:58:13 +02:00
This commit is contained in:
Piratux 2022-06-02 16:18:53 +03:00
commit 96f1463adb
100 changed files with 1203 additions and 828 deletions

@ -13,13 +13,13 @@ softmod_info_new_players_1=For New Players
softmod_info_new_players_2=Mine coal and other resources and bring them to the ship to keep things going, or try asking the captain for more specific tasks.
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• Logged-out players keep their items with them for a while — except 'important' items that are returned to the crew immediately.\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. Captains also have /tax, /undock, /officer, /plank.
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=Recent changes
softmod_info_updates_2=v1.2.8\n• Poison damage against players buffed\n• Maze treasure buffed\n• Biter waves slightly more concentrated into groups\n\nv1.2.4-v1.2.7\n• String-related hotfixes.\n\nv1.2.3\n• Rework of 'quest buildings' that appear on islands.\n• Fixed stutter when loading certain maps, such as swamp.\n• Various new player-friendly visual renderings.\n• Mod prepared for translation into other languages.\n• Expanded Gourmet's sense of taste.\n\nv1.2\n• Mod portal release.\n• Some rebalancing of Nightmare difficulty.
softmod_info_updates_2=v1.2.11\n• Unlimited time can now be spent at sea between each destination.\n\nv1.2.8\n• Poison damage against players buffed\n• Maze treasure buffed\n• Biter waves slightly more concentrated into groups\n\nv1.2.3\n• Rework of 'quest buildings' that appear on islands.\n• Fixed stutter when loading certain maps, such as swamp.\n• Various new player-friendly visual renderings.\n• Mod prepared for translation into other languages.\n• Expanded Gourmet's sense of taste.\n\nv1.2\n• Mod portal release.\n• Some rebalancing of Nightmare difficulty.
softmod_info_credits_1=Credits
softmod_info_credits_2=Pirate Ship designed and coded by thesixthroc. Comfy codebase and help from Gerkiz, Hanakocz and Mew @ Comfy Industries (https://getcomfy.eu). Some island structure blueprints contributed by Mattisso.\n\nthesixthroc is looking for translators and coders to help with this mod. Come chat with us: https://getcomfy.eu/discord\n\n"Those white gloves. I'll never forget them 'till the day I die." - Dr. John
softmod_info_credits_2=Pirate Ship designed and coded by thesixthroc. 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
softmod_info_credits_2_old=Softmod designed and written by thesixthroc. Comfy codebase help from Gerkiz, Hanakocz and Mew @ Comfy Industries (https://getcomfy.eu). Some island structure blueprints were contributed by Mattisso. Gold sprite by Clint Bellanger. Parrot sprites by @pixelthen.\n\n"Those white gloves. I'll never forget them 'till the day I die." - Dr. John
softmod_info_body_promote=by thesixthroc
@ -28,9 +28,141 @@ softmod_info_body_promote_old2=patreon.com/thesixthroc
softmod_info_body_clicky=Click to dismiss.
separator_1=,
separator_2= and
notify_whisper=[Whisper]
notify_parrot=Parrot:
location_displayname_first_1=Fledgling Vale
location_displayname_horseshoe_1=Shark Keys
location_displayname_horseshoe_2=Little Keys
location_displayname_horseshoe_3=Little Keys
location_displayname_maze_1=Bewildering Maze
location_displayname_radioactive_1=Abandoned Labs
location_displayname_red_desert_1=Sandworm Caldera
location_displayname_standard_1=Isle of Buried Treasure
location_displayname_standard_variant_1=Secluded Dells
location_displayname_swamp_1=Poisonous Fen
location_displayname_walkways_1=Frozen Pools
location_displayname_sea_1=
location_displayname_dock_1=Dock
location_displayname_lobby_1=Starting Dock
parrot_set_sail_advice=Ready to sail to the next island? Click up top!
parrot_hard_praise=Steel chests for steel players! Squawk!
parrot_normal_praise=Iron chests for iron players! Squawk!
parrot_fuel_warning=Fuel is low!
parrot_silo_warning=The silo is attracting biters...
parrot_0=We can wait here for as long as we like.
parrot_night_warning=Did you know that biters deal more damage at night?
parrot_boats_warning=200 leagues? I think we're being chased...
parrot_kraken_warning=400 leagues coming up? What are those pink things I spy...
parrot_radioactive_tip_1=We'll need uranium-235 to push away from this island...
parrot_radioactive_tip_2=The biters don't care if we pollute here, but they evolve fast.
parrot_maze_tip_1=Something seems wrong with our minimap.
parrot_captain_first_time_in_cabin_hint=The captain can buy items in the cabin, such as rail signals to steer the ship.
difficulty_easy=Easy
difficulty_normal=Normal
difficutly_hard=Hard
difficulty_nightmare=Nightmare
notify_difficulty_vote=__1__ voted [color=__2__,__3__,__4__]for difficulty __5__[/color]
notify_difficulty_change=Difficulty [color=__1__,__2__,__3__]changed to __4__[/color]
daynightcycle_static=Static
daynightcycle_slowcyclic=Slow Cyclic
daynightcycle_cyclic=Cyclic
daynightcycle_fastcyclic=Fast Cyclic
daynightcycle_rapidcyclic=Rapid Cyclic
ship_undocked_1=[font=heading-1]Ship undocked[/font] by captain.
ship_undocked_2=[font=heading-1]Ship auto-undocked[/font]. Return to ship.
ship_undocked_3=[font=heading-1]Ship auto-undocked[/font].
ship_set_off_to_next_island=[font=heading-1]Ship set sail[/font] for the next destination.
plank=__1__ planked __2__!
plank_error_invalid_player=Command error: Player is not a crewmember.
plank_error_self=Command error: Can't plank yourself.
tax=The captain taxed __1__.
tax_error_nothing=Tax error: No coins or game-critical items found in crewmates' inventories or cursor stacks.
respawn_speed_bonus_removed=Respawn speed bonus removed.
respawn_speed_bonus_applied=Respawn speed bonus applied.
find_map=__1__ found a map. Treasure location revealed.
find_ghost=__1__ found a ghost.
silo_destroyed=The silo was destroyed.
research_notification=__1__ researched.
destroyed_all_nests=All biter bases destroyed — escape cost removed.
recover_offline_player_items=Offline player's items recovered to cabin.
death_froze=__1__ froze to death.
death_pushed_into_water_by_cannon=__1__ was pushed into water by a cannon.
granted_1=Granted: __1__.
granted_2=Granted: __1__, __2__.
granted_3=Granted: __1__, __2__, __3__.
approaching_destination=Approaching destination __1__, __2__.
loading_destination=Loading destination __1__, __2__.
steer_left=Steering portside...
steer_right=Steering starboard...
error_undock_too_early=Undock error: Can't undock in the first 10 seconds.
error_undock_insufficient_resources=Undock error: Not enough resources stored in the captain's cabin.
error_cabin_full=Sadly, there wasn't space in the cabin for all of your reward.
error_build_undergrounds_on_boat=Build error: Undergrounds can't be built on the boat, due to conflicts with the boat movement code.
error_cant_carry_barrels=Recipe error: Barrels are too heavy to carry back to the ship. Try another way.
error_disembark=Now is no time to disembark.
quest_structure_market_1=Requires __1__x
quest_structure_market_2=(item components will be
quest_structure_market_3=refunded upon completion)
quest_structure_furnace_1=Requires
quest_structure_furnace_2=(the furnace breaks
quest_structure_furnace_3=delivered items down
quest_structure_furnace_4=into components)
market_description_upgrade_power=Upgrade the ship's passive power generators.
market_description_upgrade_hold=Purchase an extra hold.
market_description_upgrade_merchants=Unlock merchant ships on future islands.
market_description_upgrade_rockets=Unlock the sale of rockets at island markets.
market_description_purchase_class=Purchase the class __1__.
market_description_extra_time_at_sea=Relax at sea: Increase the next destination's loading time by 60 seconds.
market_event_sell=__1__ sold __2__ for __3__.
@ -44,89 +176,27 @@ market_error_not_captain_or_officer=Purchase error: You need to be a captain or
market_error_maximum_loading_time=Purchase error: Reached the maximum allowed loading time.
repaired_cannons=[font=heading-1]__1__ repaired the ship's cannons.[/font]
proposal_displayform=__1__ — __2__
run_displayform= __2__
crewmember_displayform=[color=__2__,__3__,__4__]__5__[/color] [color=1,1,1]__6__[/color]
capacity_tooltip=Capacity. Sets the maximum number of crewmembers allowed.
difficulty_tooltip=Difficulty.\n\nHigher difficulties have higher pollution and evo, higher biter damage, lower gold loot, but higher chest loot, along with small effects on the time per island, quest requirements, and silo position.\n\nDifficulty also determines the material the ship is made out of.
mode_tooltip=Mode.
auto_undock_tooltip=The maximum time to stay at this location.\n\nOnce this time is reached, the boat undocks automatically. The captain can choose to leave earlier by pressing this button.
atsea_loading_tooltip=The next destination is loading.
leave_anytime_tooltip=The captain chooses when to undock the ship.\n\nThey can undock by pressing this button.
resources_needed_tooltip_0=At the next destination, these resources will be needed in order to undock.
resources_needed_tooltip_1=At the next destination, these resources will be needed in order to undock early.\n\nFewer resources will be needed the longer you stay, eventually dropping to zero.
resources_needed_tooltip_2=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nCost on arrival: __1__\nLeaving now will spend: __2__
resources_needed_tooltip_3=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin.
resources_needed_tooltip_0_rocketvariant=At the next destination, these resources will be needed in order to undock.\n\nThe silo represents a rocket launch rather than a resource.
resources_needed_tooltip_1_rocketvariant=At the next destination, these resources will be needed in order to undock early.\n\nFewer resources will be needed the longer you stay, eventually dropping to zero.\n\nThe silo represents a rocket launch rather than a resource.
resources_needed_tooltip_2_rocketvariant=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nThe silo represents a rocket launch rather than a resource.\n\nnCost on arrival: __1__\nLeaving now will spend: __2__
resources_needed_tooltip_3_rocketvariant=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin.\n\nThe silo represents a rocket launch rather than a resource.
fuel_tooltip=Stored fuel: __1__.\n\nTo store more, send it to the captain's cabin. If the ship runs out of fuel, the crew loses.
loading_new_game=Loading new game...
choose_chat_color=__1__ chose the color __2__
randomize_chat_color=__1__'s color randomized to __2__
notify_whisper=[Whisper]
notify_parrot=Parrot:
silo_destroyed=The silo was destroyed.
granted_1=Granted: __1__.
granted_2=Granted: __1__, __2__.
granted_3=Granted: __1__, __2__, __3__.
death_froze=__1__ froze to death.
death_pushed_into_water_by_cannon=__1__ was pushed into water by a cannon.
approaching_destination=Approaching destination __1__, __2__.
loading_destination=Loading destination __1__, __2__.
goto_oldest_crew_with_large_capacity=There are multiple crews on this server. You have been placed in the oldest crew with large capacity.
goto_oldest_crew=There are multiple crews on this server. You have been placed in the oldest.
research_notification=__1__ researched.
victory=Victory, on v__1__, __2__, capacity __3__. Playtime: [font=default-large-semibold]__4__[/font] since 1st island. Crewmembers: __5__.
loss_cannon_destroyed=Game over — cannon destroyed.
loss_out_of_fuel=Game over — out of fuel.
loss_silo_destroyed=Game over — silo destroyed.
loss_silo_destroyed_before_necessary_launch=Game over — silo destroyed before a necessary launch.
loss_rest_of_message_long=Playtime: __1__ since 1st island. Crewmembers: __2__
loss_rest_of_message_short=Playtime: __1__ since 1st island.
error_build_undergrounds_on_boat=Build error: Undergrounds can't be built on the boat, due to conflicts with the boat movement code.
error_cant_carry_barrels=Recipe error: Barrels are too heavy to carry back to the ship. Try another way.
error_disembark=Now is no time to disembark.
destroyed_all_nests=All biter bases destroyed — escape cost removed.
recover_offline_player_items=Offline player's items recovered to cabin.
warn_nearly_afk_captain=Note: If you go idle as captain for too long, the role passes to another crewmember.
respawn_speed_bonus_removed=Respawn speed bonus removed.
respawn_speed_bonus_applied=Respawn speed bonus applied.
find_map=__1__ found a map. Treasure location revealed.
find_ghost=__1__ found a ghost.
steer_left=Steering portside...
steer_right=Steering starboard...
upgrade_hold=[font=heading-1]__1__ upgraded the ship's hold.[/font]
upgrade_power=[font=heading-1]__1__ upgraded the ship's power.[/font]
upgrade_merchants=[font=heading-1]__1__ unlocked merchant ships at future islands.[/font]
upgrade_rockets=[font=heading-1]__1__ unlocked the sale of rockets at future quest markets.[/font]
notify_difficulty_vote=__1__ voted [color=__2__,__3__,__4__]for difficulty __5__[/color]
notify_difficulty_change=Difficulty [color=__1__,__2__,__3__]changed to __4__[/color]
upgrade_hold_crowsnest_form=Extra Hold
upgrade_power_crowsnest_form=Power
upgrade_merchants_crowsnest_form=Unlock Merchants
upgrade_rockets_crowsnest_form=Unlock Rockets
hold_connections_label_inactive=inactive
hold_connections_label_to=to -__1__
hold_connections_label_from=from -__1__
surface_label_cabin=Captain's Cabin
surface_label_crowsnest=Crow's Nest
surface_label_hold_nth=Ship's Hold: -__1__
surface_label_hold=Ship's Hold
role_officer=Officer
@ -134,20 +204,6 @@ role_officer_description=Assigned by the captain, officers can use the Captain's
role_captain=Captain
role_captain_description=Has executive power to undock the ship, purchase items, and various other special actions. When the game assigns a captain, it gives priority to those who have been playing the longest as a non-captain.
parrot_hard_praise=Steel chests for steel players! Squawk!
parrot_normal_praise=Iron chests for iron players! Squawk!
parrot_fuel_warning=Fuel is low!
parrot_silo_warning=The silo is attracting biters...
parrot_0=We can wait here for as long as we like.
parrot_night_warning=Did you know that biters deal more damage at night?
parrot_boats_warning=200 leagues? I think we're being chased...
parrot_kraken_warning=400 leagues coming up? What are those pink things I spy...
parrot_radioactive_tip_1=We'll need uranium-235 to push away from this island...
parrot_radioactive_tip_2=The biters don't care if we pollute here, but they evolve fast.
parrot_maze_tip_1=Something seems wrong with our minimap.
parrot_captain_first_time_in_cabin_hint=The captain can buy items in the cabin, such as rail signals to steer the ship.
class_deckhand=Deckhand
class_deckhand_explanation=They move faster and generate ore for the cabin whilst onboard above deck.
class_deckhand_explanation_advanced=Their move __1__x times faster and generate iron/copper ore(with current crew size +__2__ roughly every __3__ seconds) for the cabin whilst onboard above deck.
@ -187,49 +243,13 @@ class_smoldering_explanation=They periodically convert wood into coal, if they h
class_gourmet=Gourmet
class_gourmet_explanation=They generate ore for the cabin by eating fish in fancy locations.
class_explanation=__1__: __2__
class_explanation_upgraded_class=__1__: An upgrade of __2__. __3__
class_purchase=__1__ bought the class __2__. ([font=scenario-message-dialog]__3__[/font])
class_upgrade=__1__ upgraded their class from __2__ to __3__ ([font=scenario-message-dialog]__4__[/font]).
crew_to_spectator=__1__ left the crew to become a spectator.
lobby_to_spectator=__1__ joined as a spectator.
lobby_to_spectator_2=__1__ left the lobby to spectate __2__.
spectator_to_lobby=__1__ stopped spectating and returned to the lobby.
lobby_to_crew=__1__ joined the crew.
lobby_to_crew_2=__1__ left the lobby to join __2__.
crew_leave=__1__ left the crew.
crew_launch=[__1__] Launched.
crew_disband=[__1__] Disbanded after __2__.
proposal_propose=__1__ proposed the run __2__ [Capacity __3__].
proposal_retracted=Proposal __1__ retracted.
proposal_abandoned=Proposal __1__ abandoned.
crew_summon=Crew summoned.
crew_continue_on_freeplay=The run now continues on 'Freeplay'.
crew_disbanded=__1__ disbanded __2__ after __3__.
ship_undocked_1=[font=heading-1]Ship undocked[/font] by captain.
ship_undocked_2=[font=heading-1]Ship auto-undocked[/font]. Return to ship.
ship_undocked_3=[font=heading-1]Ship auto-undocked[/font].
error_undock_too_early=Undock error: Can't undock in the first 10 seconds.
error_undock_insufficient_resources=Undock error: Not enough resources stored in the captain's cabin.
error_cabin_full=Sadly, there wasn't space in the cabin for all of your reward.
plank=__1__ planked __2__!
plank_error_invalid_player=Command error: Player is not a crewmember.
plank_error_self=Command error: Can't plank yourself.
personal_join_string_1=You have joined the crew '__1__' [Capacity __2__].
personal_join_string_2=You have joined the crew '__1__' [Capacity __2__, Difficulty [color=__3__,__4__,__5__] __6__[/color]].
error_class_assign_redundant=Class error: You're already a __1__.
error_class_assign_unavailable_class=Class error: No spare class of that type is available.
class_take_spare=__1__ took the spare class __2__. ([font=scenario-message-dialog]__3__[/font])
class_give_spare=A spare __1__ class with given to __2__. ([font=scenario-message-dialog]__3__[/font])
@ -260,19 +280,98 @@ roles_unmake_officer_error_2=Command error: Player isn't a crewmember.
roles_resign_officer=__1__ resigned from officer status.
roles_notify_looking_for_captain=Looking for a suitable captain...
tax=The captain taxed __1__.
tax_error_nothing=No coins or game-critical found in crewmates' inventories or cursor stacks.
warn_nearly_afk_captain=Note: If you go idle as captain for too long, the role passes to another crewmember.
error_class_assign_redundant=Class error: You're already a __1__.
error_class_assign_unavailable_class=Class error: No spare class of that type is available.
market_description_upgrade_power=Upgrade the ship's passive power generators.
market_description_upgrade_hold=Purchase an extra hold.
market_description_upgrade_merchants=Unlock merchant ships on future islands.
market_description_upgrade_rockets=Unlock the sale of rockets at island markets.
market_description_purchase_class=Purchase the class __1__.
market_description_extra_time_at_sea=Relax at sea for an extra minute: Increase the next destination's loading time by 60 seconds.
personal_join_string_1=You have joined the crew '__1__' [Capacity __2__].
personal_join_string_2=You have joined the crew '__1__' [Capacity __2__, Difficulty [color=__3__,__4__,__5__] __6__[/color]].
goto_oldest_crew_with_large_capacity=There are multiple crews on this server. You have been placed in the oldest crew with large capacity.
goto_oldest_crew=There are multiple crews on this server. You have been placed in the oldest.
choose_chat_color=__1__ chose the color __2__
randomize_chat_color=__1__'s color randomized to __2__
crew_to_spectator=__1__ left the crew to become a spectator.
lobby_to_spectator=__1__ joined as a spectator.
lobby_to_spectator_2=__1__ left the lobby to spectate __2__.
spectator_to_lobby=__1__ stopped spectating and returned to the lobby.
lobby_to_crew=__1__ joined the crew.
lobby_to_crew_2=__1__ left the lobby to join __2__.
crew_leave=__1__ left the crew.
crew_launch=[__1__] Launched.
crew_disband=[__1__] Disbanded after __2__.
proposal_propose=__1__ proposed the run __2__ [Capacity __3__].
proposal_retracted=Proposal __1__ retracted.
proposal_abandoned=Proposal __1__ abandoned.
default_crew_name=NoName
loading_new_game=Loading new game...
crew_summon=Crew summoned.
crew_continue_on_freeplay=The run now continues on 'Freeplay'.
crew_disbanded=__1__ disbanded __2__ after __3__.
victory=Victory, on v__1__, __2__, capacity __3__. Playtime: [font=default-large-semibold]__4__[/font] since 1st island. Crewmembers: __5__.
loss_cannon_destroyed=Game over — cannon destroyed.
loss_out_of_fuel=Game over — out of fuel.
loss_silo_destroyed=Game over — silo destroyed.
loss_silo_destroyed_before_necessary_launch=Game over — silo destroyed before a necessary launch.
loss_rest_of_message_long=Playtime: __1__ since 1st island. Crewmembers: __2__
loss_rest_of_message_short=Playtime: __1__ since 1st island.
highscore_heading_crew=Crew
highscore_heading_captain=Captain
highscore_heading_captain_tooltip=The player who spent the longest as captain between leagues 0 and 1000 (exclusive).
highscore_heading_completion=Completion
highscore_heading_leagues=Leagues
highscore_heading_version=Version
highscore_heading_difficulty=Difficulty
highscore_heading_peak_players=PeakPlayers
proposal_displayform=__1__ — __2__
run_displayform= __2__
crewmember_displayform=[color=__2__,__3__,__4__]__5__[/color] [color=1,1,1]__6__[/color]
capacity_tooltip=Capacity. Sets the maximum number of crewmembers allowed.
difficulty_tooltip=Difficulty.\n\nHigher difficulties have higher pollution and evo, higher biter damage, lower gold loot, but higher chest loot, along with small effects on the time per island, quest requirements, and silo position.\n\nDifficulty also determines the material the ship is made out of.
mode_tooltip=Mode.
auto_undock_tooltip=The maximum time to stay at this location.\n\nOnce this time is reached, the boat undocks automatically. The captain can choose to leave earlier by pressing this button (or typing /undock).
atsea_loading_tooltip=The next destination is loading.
leave_anytime_tooltip=The captain chooses when to undock the ship.\n\nThey can undock by pressing this button.
atsea_waiting_tooltip=The ship pauses after each destination. When the captain is ready, they can click this button to proceed.
resources_needed_tooltip_0=At the next destination, these resources will be needed in order to undock.
resources_needed_tooltip_1=At the next destination, these resources will be needed in order to undock early.\n\nFewer resources will be needed the longer you stay, eventually dropping to zero.
resources_needed_tooltip_2=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nCost on arrival: __1__\nLeaving now will spend: __2__
resources_needed_tooltip_3=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin.
resources_needed_tooltip_0_rocketvariant=At the next destination, these resources will be needed in order to undock.\n\nThe silo represents a rocket launch rather than a resource.
resources_needed_tooltip_1_rocketvariant=At the next destination, these resources will be needed in order to undock early.\n\nFewer resources will be needed the longer you stay, eventually dropping to zero.\n\nThe silo represents a rocket launch rather than a resource.
resources_needed_tooltip_2_rocketvariant=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nThe silo represents a rocket launch rather than a resource.\n\nnCost on arrival: __1__\nLeaving now will spend: __2__
resources_needed_tooltip_3_rocketvariant=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin.\n\nThe silo represents a rocket launch rather than a resource.
fuel_tooltip=Stored fuel: __1__.\n\nTo store more, send it to the captain's cabin. If the ship runs out of fuel, the crew loses.
gui_crew_window_buttons_quit_crew=Quit Crew
gui_crew_window_buttons_quit_crew_tooltip=Return to the lobby.
gui_crew_window_buttons_quit_spectators=Return to Lobby
@ -311,7 +410,7 @@ gui_crew_window_captains_actions_revoke_class_tooltip=Put this player's class ba
gui_crew_window_captains_actions_summon_crew=Summon Crew to Ship
gui_crew_window_captains_actions_summon_crew_tooltip=Teleport crewmembers to the ship.
gui_crew_window_captains_actions_tax=Tax Crew
gui_crew_window_captains_actions_tax_tooltip=For each non-officer in your crew, take a quarter of their doubloons (and other game-critical items). (or use /tax)
gui_crew_window_captains_actions_tax_tooltip=For each non-officer in your crew, take __1__% of their doubloons (and their other game-critical items). (or use /tax)
gui_crew_window_captains_actions_undock_tip=To undock, use the top toolbar.
gui_crew_window_crew_age=Age: __1__
@ -331,6 +430,8 @@ gui_info_updates=Updates
gui_info_tips=Tips
gui_info_credits=Credits
gui_fuel_1=Fuel:
gui_minimap_tooltip=LMB: Zoom in.\nRMB: Zoom out.\nMMB: Scale window.
gui_minimap_outside_view=Outside View
gui_minimap_switch_left=Auto Show Map — On
@ -361,7 +462,7 @@ gui_runs_proposal_maker_propose=Propose
gui_runs_proposal_maker_no_limit=No limit
gui_runs_launch=Launch run
gui_runs_launch_error_1=Gather support from more pirates.
gui_runs_launch_error_1=Gather endorsements from more pirates.
gui_runs_launch_error_2=The number of concurrent runs on the server has reached the cap set by the admins.
gui_runs_launch_error_3=Can't launch; at least one run needs high player capacity.
gui_runs_launch_error_4=No sloops available. Join an existing run instead.
@ -379,6 +480,7 @@ gui_etaframe_board_warning=RETURN TO SHIP
gui_etaframe_board_warning_tooltip=Probably time to board...
gui_etaframe_autoundock=Auto-undock:
gui_etaframe_arriving_in=Arriving in
gui_etaframe_atsea_waiting=Captain — Click here to Sail
gui_etaframe_undock=Undock:
gui_etaframe_anytime=Anytime
gui_etaframe_nest_escape_cost=Next escape cost:
@ -406,40 +508,4 @@ gui_questframe_nodamage=Island Quest: No Damage\n\nLaunch a rocket without the s
gui_crew_tooltip_1=Your Crew\n\nPerform crew actions, such as selecting a class if any are available.
gui_crew_tooltip_2=Your Crew\n\nYou're a free agent, so there's nothing to do here.
gui_progress_tooltip=Progress: __1__ leagues.\n\nTravel __2__ leagues to win the game.
location_displayname_first_1=Fledgling Vale
location_displayname_horseshoe_1=Shark Keys
location_displayname_horseshoe_2=Little Keys
location_displayname_horseshoe_3=Little Keys
location_displayname_maze_1=Bewildering Maze
location_displayname_radioactive_1=Abandoned Labs
location_displayname_red_desert_1=Sandworm Caldera
location_displayname_standard_1=Isle of Buried Treasure
location_displayname_standard_variant_1=Secluded Dells
location_displayname_swamp_1=Poisonous Fen
location_displayname_walkways_1=Frozen Pools
location_displayname_sea_1=
location_displayname_dock_1=Dock
location_displayname_lobby_1=Starting Dock
quest_structure_market_1=Requires __1__x
quest_structure_market_2=(item components will be
quest_structure_market_3=refunded upon completion)
quest_structure_furnace_1=Requires
quest_structure_furnace_2=(the furnace breaks
quest_structure_furnace_3=delivered items down
quest_structure_furnace_4=into components)
highscore_heading_crew=Crew
highscore_heading_captain=Captain
highscore_heading_captain_tooltip=The player who spent the longest as captain between leagues 0 and 1000 (exclusive).
highscore_heading_completion=Completion
highscore_heading_leagues=Leagues
highscore_heading_version=Version
highscore_heading_difficulty=Difficulty
highscore_heading_peak_players=PeakPlayers
gui_progress_tooltip=Progress: __1__ leagues.\n\nTravel __2__ leagues to win the game.

@ -1,266 +1,158 @@
[pirates]
softmod_info_header_before_version_number==== 海盗船 v
softmod_info_header_after_version_number= ===
softmod_info_body_1=新闻和聊天: getcomfy.eu/discord
softmod_info_body_1=最新消息和聊天: getcomfy.eu/discord
softmod_info_game_description_1=游戏介绍
softmod_info_game_description_2=在这个多人游戏场景中启航。收集资源并为船添加燃料,以便尽可能航行更多的里格(距离单位,约为三海里)。 船使用代码魔法移动。每个团队都有一名船长,他执行诸如决定船何时离开等行动。达布隆(货币)可以在整个游戏中不同的市场上花费。\n\n团队越小,游戏进程越慢。\n\n[font=default-bold]获胜条件:[/font] 航行1000里格。\n[font=default-bold]失败条件:[/font] 船耗尽燃料或重炮被摧毁。
softmod_info_game_description_2=在这个多人游戏场景中启航。收集资源并为船添加燃料,以便尽可能航行更多的里格(距离单位,约为三海里)。 船使用代码魔法移动。每个团队都有一名船长,他执行诸如决定船何时出坞等行动。达布隆(通用货币)可以在整个游戏中不同的市场上花费。\n\n团队人数越少,游戏进程越慢。\n\n[font=default-bold]获胜条件:[/font] 航行1000里格。\n[font=default-bold]失败条件:[/font] 船耗尽燃料或重炮被摧毁。
# softmod_info_bugs_1=已知问题
# softmod_info_bugs_2=•
softmod_info_new_players_1=对于新手
softmod_info_new_players_2=开采煤炭和其他资源并将它们带到船上以继续行,或者尝试向船长询问更具体的任务。
softmod_info_new_players_1=对于新手的建议
softmod_info_new_players_2=开采煤炭和其他资源并将它们带到船上以继续行,或者尝试向船长询问更具体的任务。
softmod_info_tips_1=这个游戏模式单人难以完成
softmod_info_tips_2=• 船长可以通过在其中一个蓝色盒子中放置 100 个轨道信号来驾驶船离开乌鸦巢。\n• 授予船的资源会出现在船长的船舱中。\n• 为发射井充电会消耗所在电网中的所有电力。\n• 岛上可用的矿石数量与你打碎岩石的顺序无关。\n• 每个岛上的被动污染随着时间的推移而增加。\n• 攻击的强度与剩余虫巢数成正比。 (基于时间的进化速度也与虫巢成正比,但破坏虫巢会立即使进化值跳跃,比让虫巢活着“本应”产生的要多。)\n• 实验室生产力随着航行里格数增加而提高。\n• 离线的玩家可以将他们的物品随身携带一段时间——除了需要立即归还给团队的“重要”物品。\n• 当船移动时,甲板上的地面实体会被移至船舱,为了更好的性能表现。\n• 命令: /ccolor 选择你的个性化颜色。 /classinfo {classname} 给出了命名类的描述。想要管理你的类,使用 /take {classname} or /giveup. 船长还有以下命令:/tax(课税), /undock(启航), /officer(军官), /plank(跳甲板).
softmod_info_tips_1=这个模式单人难以完成
softmod_info_tips_2=• 船长可以通过在瞭望台的其中一个蓝色箱子中放置 100 个轨道信号来驾驶船舶向左或向右。\n• 授予船的资源会出现在船长室中。\n• 为发射井充电会消耗所在电网中的所有电力。\n• 岛上可用的矿石数量与你打碎岩石的顺序无关。\n• 每个岛上的被动污染随着时间的推移而增加。\n• 攻击的强度与剩余虫巢数成正比。 (基于时间的进化速度也与虫巢成正比,但破坏虫巢会立即使进化值跳跃,比让虫巢活着“本应”产生的还要多。)\n• 实验室产能随着航行里格数增加而提高。\n• 离线的玩家可以将他们的物品随身携带一段时间——除了那些需要立即归还给团队的“重要”物品。\n• 当船移动时,甲板上的落地物品会被移至船舱,为了更好的性能表现。\n• 命令: /ccolor 随意一个有趣的颜色。 /classinfo {classname} 给出指定职业的描述(注意职业名称必须使用中文,例如/classinfo deckhand)。想要管理你的职业,请使用 /take {classname} 成为指定职业或 /giveup放弃当前职业。船长还有以下命令:/tax(向船员征收25%的税), /undock(启航,提前出坞), /officer(任命军官), /plank(让某人跳甲板,离开你的团队)。
softmod_info_updates_1=近期更新
softmod_info_updates_2=v1.2.3\n• 重做岛屿上出现的“任务建筑”。\n• 修复了加载某些地图时出现的卡顿问题,例如沼泽。\n• 各种新的适合玩家的视觉渲染。\n• Mod准备翻译成其他语言。\n• 扩展了美食家的味觉。\n\nv1.2.2\n• 修复了 1.2.1 中引入的崩溃问题。\n• 增加了海妖击杀奖励。\n\nv1.2\n• 模组传送门发布。\n• 梦难度的一些重新平衡。
softmod_info_updates_2=v1.2.3\n• 重做岛屿上出现的“任务建筑”。\n• 修复了加载某些地图时出现的卡顿问题,例如沼泽。\n• 各种新的适合玩家的视觉渲染。\n• 翻译成其他语言的Mod准备。\n• 扩展了美食家的味觉。\n\nv1.2.2\n• 修复了 1.2.1 中引入的崩溃问题。\n• 增加了海妖击杀奖励。\n\nv1.2\n• 模组传送门发布。\n• 梦难度的一些重新平衡。
softmod_info_credits_1=工作人员
softmod_info_credits_2=海盗船由 thesixthroc 设计和编码。 Comfy 代码基础和帮助来自 Gerkiz, Hanakocz 和 Mew @ Comfy Industries (https://getcomfy.eu)。一些由 Mattisso 提供的岛屿结构蓝图。\n\nthesixthroc 正在寻找翻译和编码人员来帮助完成这个 mod。汉化:dwightkung 来和我们聊天: https://getcomfy.eu/discord\n\n"那些白手套。我永远不会忘记它们,直到我死去的那一天。" - Dr. John
softmod_info_credits_2=海盗船由 thesixthroc 设计和编码。 Comfy 代码基础和帮助来自 Gerkiz, Hanakocz 和 Mew @ Comfy Industries (https://getcomfy.eu)。一些由 Mattisso 提供的岛屿结构蓝图。\n\nthesixthroc 正在寻找翻译和编码人员来帮助完成这个 mod。汉化:dwightkung\n\n 欢迎来和我们聊天: https://getcomfy.eu/discord\n\n"那些白手套。我永远不会忘记它们,直到我死去的那一天。" - Dr. John
softmod_info_credits_2_old=Softmod designed and written by thesixthroc. Comfy codebase help from Gerkiz, Hanakocz and Mew @ Comfy Industries (https://getcomfy.eu). Some island structure blueprints were contributed by Mattisso. Gold sprite by Clint Bellanger. Parrot sprites by @pixelthen.\n\n"Those white gloves. I'll never forget them 'till the day I die." - Dr. John
softmod_info_body_promote=by thesixthroc
softmod_info_body_promote=由 thesixthroc 制作
softmod_info_body_promote_old2=patreon.com/thesixthroc
softmod_info_body_clicky=点击关闭。
separator_1=,
separator_2=
market_event_sell=__1__ 以 __2__ 的价格售出 __3__.
market_event_trade=__1__ 用 __2__ 换取 __3__.
market_event_buy=__1__ 以 __2__ 的价格购买 __3__.
extra_time_at_sea=海上加时
market_error_not_captain=购买错误:您需要成为船长或军官才能购买。
market_error_not_captain_or_officer=购买错误:您需要成为船长或军官才能购买。
market_error_maximum_loading_time=P购买错误:已达到最大允许加载时间。
repaired_cannons=[font=heading-1]__1__ 修复了船上的大炮。[/font]
proposal_displayform=__1__ — __2__
run_displayform= __2__
crewmember_displayform=[color=__2__,__3__,__4__]__5__[/color] [color=1,1,1]__6__[/color]
capacity_tooltip=容量。设置允许的最大乘员人数。
difficulty_tooltip=难度。\n\n更高的难度有更高的污染和进化,更多的虫子,更少的金币战利品,但更高的宝箱战利品,并且对每个岛屿的时间、任务要求和发射井位置有些许影响。\n\n难度还决定了造船的材料。
mode_tooltip=模式.
auto_undock_tooltip=在这个位置停留的最长时间。\n\n一旦达到这个时间,船就会自动离岸。船长可以通过按此按钮选择提前离开。
atsea_loading_tooltip=下一个目的地正在加载。
leave_anytime_tooltip=船长选择何时启航。\n\n他们可以通过按此按钮离开船坞。
resources_needed_tooltip_0=在下一个目的地,需要这些资源才能出坞。
resources_needed_tooltip_1=在下一个目的地,需要这些资源才能提前出坞。\n\n您停留的时间越长,所需的资源就越少,最终降至零。
resources_needed_tooltip_2=船长可以通过单击此按钮提前撤离,但前提是船长舱内储存了足够的资源。\n\n到达成本: __1__\n现在离开将花费: __2__
resources_needed_tooltip_3=船长可以通过单击此按钮来提前出坞,但前提是船长舱内储存了足够的资源。
resources_needed_tooltip_0_rocketvariant=下一个目的地,需要这些资源才能出坞。\n\n发射井代表火箭发射而不是资源。
resources_needed_tooltip_1_rocketvariant=在下一个目的地,将需要这些资源以便提前撤离。\n\n您停留的时间越长,所需的资源就越少,最终降至零。\n\n发射井代表火箭发射而不是资源。
resources_needed_tooltip_2_rocketvariant=船长可以通过单击此按钮提前撤离,但前提是船长舱内已储存了足够的资源。\n\n发射井代表火箭发射而不是资源。\n\nn到达成本: __1__\n现在离开将花费: __2__
resources_needed_tooltip_3_rocketvariant=T船长可以通过单击此按钮提前撤离,但前提是船长舱内已储存了足够的资源。\n\n发射井代表火箭发射而不是资源。
fuel_tooltip=储存的燃料: __1__.\n\n要储存更多,请将其送到船长舱。如果船用完燃料,团队就会失败。
loading_new_game=正在加载新游戏...
choose_chat_color=__1__ 选择了颜色 __2__
randomize_chat_color=__1__的颜色随机成了 __2__
notify_whisper=[私信]
notify_parrot=鹦鹉:
silo_destroyed=发射井被摧毁。
location_displayname_first_1=羽翼未丰的山谷
location_displayname_horseshoe_1=鲨鱼钥匙
location_displayname_horseshoe_2=小钥匙
location_displayname_horseshoe_3=小钥匙
location_displayname_maze_1=迷惑迷宫
location_displayname_radioactive_1=废弃实验室
location_displayname_red_desert_1=沙虫火山口
location_displayname_standard_1=埋藏宝藏岛
location_displayname_standard_variant_1=僻静的山谷
location_displayname_swamp_1=剧毒沼泽
location_displayname_walkways_1=冰冻水池
location_displayname_sea_1=
location_displayname_dock_1=码头
location_displayname_lobby_1=初始码头
parrot_hard_praise=钢铁的玩家才配得上钢箱子!嘎嘎!
parrot_normal_praise=铁打的玩家才配得上铁箱子!嘎嘎!
parrot_fuel_warning=燃料不足!
parrot_silo_warning=发射井正在吸引虫群...
parrot_0=我们可以在这里待到天荒地老。
parrot_night_warning=你知道吗?虫子在晚上造成的伤害更大
parrot_boats_warning=唔!200 里格?我想我们正在被虫群追赶...
parrot_kraken_warning=400 里格即将到来?那些粉红色的东西是什么,我发现...
parrot_radioactive_tip_1=我们需要 铀-235 才能离开这个岛...
parrot_radioactive_tip_2=虫子不在乎我们是否污染这里,但污染使它们进化得很快。
parrot_maze_tip_1=我们的小地图似乎有问题。
parrot_captain_first_time_in_cabin_hint=船长可以在船长舱内购买物品,例如用于驾驶船只的铁路信号灯。
difficulty_easy=简单
difficulty_normal=正常
difficutly_hard=困难
difficulty_nightmare=噩梦
notify_difficulty_vote=__1__ 投了 [color=__2__,__3__,__4__] __5__难度[/color]
notify_difficulty_change=难度 [color=__1__,__2__,__3__]更改为 __4__[/color]
daynightcycle_static=静态
daynightcycle_slowcyclic=缓慢循环
daynightcycle_cyclic=正常循环
daynightcycle_fastcyclic=快速循环
daynightcycle_rapidcyclic=极速循环
ship_undocked_1=英明的船长决定[font=heading-1]船舶提前出坞[/font]
ship_undocked_2=[font=heading-1]船舶自动出坞[/font]。速回。
ship_undocked_3=[font=heading-1]船舶自动出坞[/font]。
plank=跳甲板 (放逐为观众)
plank_error_invalid_player=命令错误:玩家不是船员。
plank_error_self=命令错误:不能让自己跳甲板。
tax=征税
tax_error_nothing=在队友的物品栏或光标堆栈中找不到硬币或游戏关键物品。
respawn_speed_bonus_removed=重生速度加成失效。
respawn_speed_bonus_applied=重生速度加成生效。
find_map=__1__ 找到了一张地图。宝藏位置已揭晓!
find_ghost=__1__ 发现了一个幽灵!
silo_destroyed=游戏结束 — 发射井被摧毁
research_notification=__1__ 研究完成。
destroyed_all_nests=所有的虫巢被摧毁——逃生费用已移除。
recover_offline_player_items=离线玩家的物品已被回收到船舱。
death_froze=__1__ 被冻死了。
death_pushed_into_water_by_cannon=__1__ 被重炮推入了水中。
granted_1=赠予: __1__.
granted_2=赠予: __1__, __2__.
granted_3=赠予: __1__, __2__, __3__.
death_froze=__1__ 被冻死了。
death_pushed_into_water_by_cannon=__1__ 被重炮推入了水中。
approaching_destination=接近目的地 __1__, __2__.
loading_destination=加载目的地 __1__, __2__.
goto_oldest_crew_with_large_capacity=这台服务器上有多个团队。您已被安置在容量最大,创建最早的团队中。
goto_oldest_crew=这台服务器上有多个团队。您已被安置在创建最早的团队中。
research_notification=__1__ 研究完成。
victory=胜利, 在 v__1__, __2__, 容量 __3__. 游戏时间: [font=default-large-semibold]__4__[/font] 从第一个岛开始。 船员: __5__.
loss_cannon_destroyed=游戏结束 — 重炮被摧毁。
loss_out_of_fuel=游戏结束 — 燃料耗尽
loss_silo_destroyed=游戏结束 — 发射井被摧毁
loss_silo_destroyed_before_necessary_launch=游戏结束 — 发射井在必要的发射前被摧毁。
loss_rest_of_message_long=游戏时间: __1__ 自从第一个岛开始。船员: __2__
loss_rest_of_message_short=游戏时间: __1__ 自从第一个岛开始。
error_build_undergrounds_on_boat=建造错误:由于与船移动代码冲突,无法在船上建造地下。
error_cant_carry_barrels=配方错误:桶太重,无法运回船上。尝试另一种方式。
error_disembark=现在不是下船的时间。
destroyed_all_nests=所有的虫巢被摧毁——逃生费用被移除。
recover_offline_player_items=离线玩家的物品被回收到机舱。
warn_nearly_afk_captain=注意:如果您作为船长闲置的时间过长,该职业会转移给其他船员。
respawn_speed_bonus_removed=重生速度加成结束。
respawn_speed_bonus_applied=重生速度加成生效。
find_map=__1__ 找到了一张地图。宝藏位置已揭晓。
find_ghost=__1__ 发现了一个幽灵。
steer_left=左舷转向...
steer_right=转向右舷...
upgrade_hold=[font=heading-1]__1__ 升级了船舱.[/font]
upgrade_power=[font=heading-1]__1__ 升级了船的动力。[/font]
upgrade_merchants=[font=heading-1]__1__ 解锁未来岛屿上的商船。[/font]
upgrade_rockets=[font=heading-1]__1__ 解锁了未来任务市场的火箭销售。[/font]
notify_difficulty_vote=__1__ 投了 [color=__2__,__3__,__4__]难度 __5__[/color]
notify_difficulty_change=难度 [color=__1__,__2__,__3__]更改为 __4__[/color]
steer_right=右舷转向...
role_officer=军官
role_officer_description=由船长任命,军官可以使用船长的商店并访问特权宝箱。
role_captain=船长
role_captain_description=拥有驶出船坞、购买物品和其他各种特殊行动的执行权。游戏在指定队长时,会优先考虑那些作为非队长出场时间最长的人。
parrot_hard_praise=钢铁玩家的钢铁箱子!嘎嘎!
parrot_normal_praise=铁玩家的铁箱子!嘎嘎!
parrot_fuel_warning=燃料不足!
parrot_silo_warning=发射井正在吸引虫群...
parrot_0=我们可以在这里待到天荒地老。
parrot_night_warning=你知道虫子在晚上造成的伤害更大吗?
parrot_boats_warning=200 里格?我想我们正在被追赶...
parrot_kraken_warning=400 里格即将到来?那些粉红色的东西是什么我发现...
parrot_radioactive_tip_1=我们需要 铀-235 才能离开这个岛...
parrot_radioactive_tip_2=虫子不在乎我们是否污染这里,但污染使它们进化得很快。
parrot_maze_tip_1=我们的小地图似乎有问题。
parrot_captain_first_time_in_cabin_hint=船长可以在船舱内购买物品,例如用于驾驶船只的铁路信号灯。
class_deckhand=水手
class_deckhand_explanation=他们在甲板上的时候移动得更快并且为船舱生成矿石。
class_fisherman=渔夫
class_fisherman_explanation=他们钓鱼的距离更远。
class_scout=侦察兵
class_scout_explanation=它们速度更快,但脆弱且造成的伤害更小。
class_samurai=武士
class_samurai_explanation=他们很强壮,而且*没有装备武器*在近战中打得很好,但在其他方面表现不佳。
class_merchant=商人
class_merchant_explanation=他们每个里格产生 50 达布隆。
class_shoresman=海岸人
class_shoresman_explanation=它们移动得稍微快一些,并且不在船时为船舱生成矿石。
class_boatswain=水手长
class_boatswain_explanation=它们在甲板下时移动更快并为船舱生成矿石。
class_prospector=勘探者
class_prospector_explanation=他们在手工开采时会发现更多资源。
class_lumberjack=伐木工人
class_lumberjack_explanation=他们在砍树时会找到更多的资源。
class_master_angler=钓鱼大师
class_master_angler_explanation=他们钓鱼的距离更远,捕获的也更多。
class_wood_lord=森林之王
class_wood_lord_explanation=他们在砍树时会发现更多的资源。
class_chief_excavator=首席挖掘机
class_chief_excavator_explanation=他们在手工开采时发现了更多的资源。
class_hatamoto=旗本
class_hatamoto_explanation=他们非常强悍,而且*没有装备武器*近战打得很好,但其他方面就很差。
class_iron_leg=铁腿
class_iron_leg_explanation=它们在携带 3000 铁矿石时非常强韧。
class_quartermaster=军需官
class_quartermaster_explanation=附近的船员获得+10%的物理攻击加成并为船舱生成矿石。
class_dredger=挖泥手
class_dredger_explanation=他们在钓鱼时会发现令人惊奇的物品。
class_smoldering=闷烧
class_smoldering_explanation=如果他们的煤炭少于 50,他们会定期将木材转化为煤炭。
class_gourmet=美食家
class_gourmet_explanation=他们通过在奇特的地方吃鱼来为小屋生成矿石。
class_explanation=__1__: __2__
class_explanation_upgraded_class=__1__: 的升级 __2__. __3__
class_purchase=__1__ 购买了职业 __2__. ([font=scenario-message-dialog]__3__[/font])
class_upgrade=__1__ 将他们的职业从 __2__ 升级到了 __3__ ([font=scenario-message-dialog]__4__[/font]).
crew_to_spectator=__1__ 离开团队成为观众。
lobby_to_spectator=__1__ 作为旁观者加入。
lobby_to_spectator_2=__1__ 离开了大厅观看 __2__.
spectator_to_lobby=__1__ 停止观看并返回大厅。
lobby_to_crew=__1__ 加入团队
lobby_to_crew_2=__1__ 离开大厅加入 __2__.
crew_leave=__1__离开了团队。
crew_launch=[__1__] 发射
crew_disband=[__1__] 在 __2__后解散。
proposal_propose=__1__ 提议运行 __2__ [Capacity __3__]。
proposal_retracted=提案 __1__ 撤回
proposal_abandoned=提案 __1__ 废除
crew_summon=船员召唤。
crew_continue_on_freeplay=现在继续在“Freeplay”上运行。
crew_disbanded=__1__ 在 __3__ 后解散 __2__ 。
ship_undocked_1=[font=heading-1]船舶出坞[/font] 由船长决定
ship_undocked_2=[font=heading-1]船舶自动出坞[/font]。速回。
ship_undocked_3=[font=heading-1]船舶自动出坞[/font]。
error_undock_too_early=出坞错误:前 10 秒内无法出坞。
error_undock_insufficient_resources=出坞错误: 船长舱没有足够的资源存储。
error_cabin_full=很遗憾,舱内没有空间来盛放您所有的奖励。
error_cabin_full=很遗憾,船长舱内没有空间来盛放您所有的奖励。
plank=__1__ 命令 __2__跳甲板!
plank_error_invalid_player=命令错误:玩家不是船员
plank_error_self=命令错误:不能让自己跳甲板
error_build_undergrounds_on_boat=建造错误:由于与船移动代码冲突,无法在船上建造地下建筑。
error_cant_carry_barrels=配方错误:桶太重,无法运回船上。请尝试另一种方式。
error_disembark=现在不是下船的时候。
personal_join_string_1=你已加入团队 '__1__' [容量 __2__].
personal_join_string_2=你已加入团队 '__1__' [容量 __2__, 难度 [color=__3__,__4__,__5__] __6__[/color]].
error_class_assign_redundant=职业错误: 你已经是 __1__了。
error_class_assign_unavailable_class=职业错误:没有空闲职位
class_take_spare=__1__ 获得了空闲职业 __2__. ([font=scenario-message-dialog]__3__[/font])
class_give_spare=一个空闲的 __1__ 职业授予 __2__。 ([font=scenario-message-dialog]__3__[/font])
class_give_up=__1__ 放弃了 __2__。
class_becomes_spare=一个 __1__ 职业 现在空闲。
class_give_up_error_no_class=职业错误:你没有任何职业可以放弃。
class_revoke=__1__ 撤销了 __2__ 从 __3__.
class_purchase_error_prerequisite_class=职业购买错误: 你需要成为 __1__ 才能购买。
roles_confirm_captain=__1__ 接受了船长的职业。
roles_confirm_captain_error_1=命令错误:您不是船长。
roles_confirm_captain_error_2=命令错误:你不是临时的,所以你不需要接受。
roles_renounce_captain=__1__ 放弃他们的船长头衔。
roles_renounce_captain_error_1=命令错误:但你是唯一的船员......
roles_pass_captainhood=__1__ 已将他们的船长头衔授予 __2__.
roles_lose_captainhood_by_afk=__1__ 由于挂机被取消了队长身份。
roles_ask_player_about_captainhood_variant_1=__1__, 你想成为船长吗?如果接受就说/ok
roles_ask_player_about_captainhood_variant_2=__1__, 船长?如果是就说/ok
roles_ask_player_about_captainhood_variant_3=__1__,轮到你当队长了?如果接受就说/ok
quest_structure_market_1=需要__1__x
quest_structure_market_2=(物品将在
quest_structure_market_3=完成后返还)
roles_make_officer=__1__ 任命 __2__ 为军官
roles_make_officer_error_1=命令错误:玩家无效。
roles_make_officer_error_2=命令错误:不能将自己任命为军官。
roles_make_officer_error_3=命令错误:玩家不是船员。
roles_unmake_officer=__1__ 取消了 __2__ 的军官身份。
roles_unmake_officer_error_1=命令错误:玩家不是军官。
roles_unmake_officer_error_2=命令错误:玩家不是船员。
roles_resign_officer=__1__ 辞去了军官。
roles_notify_looking_for_captain=正在寻找合适的船长...
quest_structure_furnace_1=需要
quest_structure_furnace_2=(熔炉可以将
quest_structure_furnace_3=已交付的物品
quest_structure_furnace_4=拆分成原始材料)
tax=船长征税 __1__。
tax_error_nothing=在队友的物品栏或光标堆栈中找不到硬币或游戏关键。
market_description_upgrade_power=升级船舶的被动发电机。
@ -271,52 +163,251 @@ market_description_purchase_class=购买职业 __1__。
market_description_extra_time_at_sea=在海上多放松一分钟:将下一个目的地的加载时间增加 60 秒。
market_event_sell=__1__ 以 __3__ 的价格售出 __2__.
market_event_trade=__1__ 用 __2__ 换取 __3__.
market_event_buy=__1__ 以 __3__ 的价格购买 __2__.
extra_time_at_sea=在海上多放松一分钟:将下一个目的地的加载时间增加 60 秒。
market_error_not_captain=购买错误:您需要成为船长或军官才能购买。
market_error_not_captain_or_officer=购买错误:您需要成为船长或军官才能购买。
market_error_maximum_loading_time=P购买错误:已达到最大允许加载时间。
repaired_cannons=[font=heading-1]__1__ 修复了船上的大炮。[/font]
upgrade_hold=购买额外的船舱。
upgrade_power=升级船舶的被动发电机。
upgrade_merchants=解锁未来岛屿上的商船。
upgrade_rockets=在岛屿市场解锁火箭销售。
hold_connections_label_inactive=未激活
hold_connections_label_to=到 -__1__
hold_connections_label_from=从 -__1__
surface_label_cabin=船长舱
surface_label_crowsnest=瞭望台
surface_label_hold_nth=下层船舱: -__1__
surface_label_hold=下层船舱
role_officer=军官
role_officer_description=由船长任命,军官可以使用船长的商店并访问特权宝箱。
role_captain=船长
role_captain_description=拥有提前驶出船坞、购买物品和其他各种特殊行动的执行权。游戏在指定队长时,会优先考虑那些作为非队长出场时间最长的人。
class_deckhand=水手
class_deckhand_explanation=Deckhand,在甲板上的时候移动得较快并且为船舱生成矿石。
class_fisherman=渔夫
class_fisherman_explanation=Fisherman,捕鱼的距离较远。
class_scout=侦察兵
class_scout_explanation=Scout,速度较快,但身体脆弱且伤害低。
class_samurai=武士
class_samurai_explanation=Samurai,比较强壮,而且*没有装备武器*在近战中打得很好,但在其他方面表现不佳。
class_merchant=商人
class_merchant_explanation=Merchant,每个里格产生 50 达布隆。
class_shoresman=海岸人
class_shoresman_explanation=Shoresman,移动得稍微快一些,并且不在船上时为船舱生成矿石。
class_boatswain=水手长
class_boatswain_explanation=Boatswain,在甲板下面时移动较快并为船舱生成矿石。
class_prospector=勘探者
class_prospector_explanation=Prospector,在手工开采时会发现较多资源。
class_lumberjack=伐木工人
class_lumberjack_explanation=Lumberjack,在砍树时会找到较多的资源。
class_master_angler=钓鱼大师
class_master_angler_explanation=Master Angler,钓鱼的距离非常远,捕获的量也非常多。
class_wood_lord=森林之王
class_wood_lord_explanation=Lord of the Woods,在砍树时会发现非常多的资源。
class_chief_excavator=首席挖掘手
class_chief_excavator_explanation=Chief Excavator,在手工开采时发现了非常多的资源。
class_hatamoto=旗本武士
class_hatamoto_explanation=Hatamoto,非常强悍,而且*没有装备武器*近战打得很好,但其他方面就很差。
class_iron_leg=铁腿
class_iron_leg_explanation=Iron Leg,在携带 3000 铁矿石时非常强韧。
class_quartermaster=军需官
class_quartermaster_explanation=Quartermaster,为附近的船员提供+10%的物理攻击加成并为船舱生成矿石。
class_dredger=挖泥手
class_dredger_explanation=Dredger,在钓鱼时会发现令人惊奇的物品。
class_smoldering=闷烧师
class_smoldering_explanation=Smoldering,煤炭少于50时,会定期将木材转化为煤炭。
class_gourmet=美食家
class_gourmet_explanation=Gourmet,通过在奇特的地方吃鱼来为小屋生成矿石。
class_explanation=__1__: __2__
class_explanation_upgraded_class=__1__: __2__的升级。 __3__
class_purchase=__1__ 购买了职业 __2__. ([font=scenario-message-dialog]__3__[/font])
class_upgrade=__1__ 将他们的职业从 __2__ 升级到了 __3__ ([font=scenario-message-dialog]__4__[/font]).
class_take_spare=__1__ 选择了空闲职业 __2__. ([font=scenario-message-dialog]__3__[/font])
class_give_spare=一个空闲的 __1__ 职业被授予 __2__。 ([font=scenario-message-dialog]__3__[/font])
class_give_up=__1__ 放弃了 __2__。
class_becomes_spare=一个 __1__ 职业 现在空闲。
class_give_up_error_no_class=职业错误:你没有任何职业可以放弃。
class_revoke=__1__ 从 __3__ 撤销了 __2__ 。
class_purchase_error_prerequisite_class=职业购买错误: 你需要成为 __1__ 才能购买。
roles_confirm_captain=__1__ 接受了船长的角色。
roles_confirm_captain_error_1=命令错误:你不是船长。
roles_confirm_captain_error_2=命令错误:你不是临时的,所以你不需要接受。
roles_renounce_captain=__1__ 放弃了船长头衔。
roles_renounce_captain_error_1=命令错误:但你是唯一的船员......
roles_pass_captainhood=__1__ 已将船长头衔授予 __2__.
roles_lose_captainhood_by_afk=__1__ 由于挂机被取消了船长身份。
roles_ask_player_about_captainhood_variant_1=__1__, 你想成为船长吗?如果接受请说/ok
roles_ask_player_about_captainhood_variant_2=__1__, 船长?船长便宜卖了 如果接受请说/ok
roles_ask_player_about_captainhood_variant_3=__1__,轮到你当船长了 如果接受请说/ok
roles_make_officer=__1__ 任命 __2__ 为军官
roles_make_officer_error_1=命令错误:玩家无效。
roles_make_officer_error_2=命令错误:不能将自己任命为军官。
roles_make_officer_error_3=命令错误:玩家不是船员。
roles_unmake_officer=__1__ 取消了 __2__ 的军官身份。
roles_unmake_officer_error_1=命令错误:玩家不是军官。
roles_unmake_officer_error_2=命令错误:玩家不是船员。
roles_resign_officer=__1__ 辞去了军官职务。
roles_notify_looking_for_captain=正在物色合适的船长...
warn_nearly_afk_captain=注意:如果您作为船长闲置的时间过长,该职业会传递给其他船员。
error_class_assign_redundant=职业错误: 你已经是 __1__了。
error_class_assign_unavailable_class=职业错误:没有空闲职业
personal_join_string_1=你已加入团队 '__1__' [容量 __2__].
personal_join_string_2=你已加入团队 '__1__' [容量 __2__, 难度 [color=__3__,__4__,__5__] __6__[/color]].
goto_oldest_crew_with_large_capacity=这台服务器上有多个团队。您已被安置在容量最大,创建最早的团队中。
goto_oldest_crew=这台服务器上有多个团队。您已被安置在创建最早的团队中。
choose_chat_color=__1__ 选择了颜色 __2__
randomize_chat_color=__1__的颜色随机成了 __2__
crew_to_spectator=__1__ 离开团队成为观众。
lobby_to_spectator=__1__ 作为观众加入。
lobby_to_spectator_2=__1__ 离开了大厅去观战 __2__.
spectator_to_lobby=__1__ 停止观战并返回大厅。
lobby_to_crew=__1__ 加入团队
lobby_to_crew_2=__1__ 离开大厅加入 __2__.
crew_leave=__1__离开了团队。
crew_launch=[__1__] 发射
crew_disband=[__1__] 在 __2__后解散。
proposal_propose=__1__ 提议建立 __2__ [Capacity __3__]。
proposal_retracted=提案 __1__ 已撤回
proposal_abandoned=提案 __1__ 已废除
loading_new_game=正在加载新游戏...
crew_summon=召唤船员。
crew_continue_on_freeplay=现在继续在“标准模式”上运行。
crew_disbanded=__1__ 在 __3__ 后解散 __2__ 。
victory=胜利, 在 v__1__, __2__, 容量 __3__. 游戏时间: [font=default-large-semibold]__4__[/font] 从第一个岛开始。 船员: __5__.
loss_cannon_destroyed=游戏结束 — 重炮被摧毁。
loss_out_of_fuel=游戏结束 — 燃料耗尽
loss_silo_destroyed=游戏结束 — 发射井被摧毁
loss_silo_destroyed_before_necessary_launch=游戏结束 — 发射井在必要的发射前被摧毁。
loss_rest_of_message_long=游戏时间: __1__ 自从第一个岛开始。船员: __2__
loss_rest_of_message_short=游戏时间: __1__ 自从第一个岛开始。
highscore_heading_crew=团队
highscore_heading_captain=船长
highscore_heading_captain_tooltip=在 0 到 1000 里格(不包括)之间担任船长时间最长的玩家。
highscore_heading_completion=完成
highscore_heading_leagues=里格数
highscore_heading_version=版本
highscore_heading_difficulty=难度
highscore_heading_peak_players=巅峰玩家
proposal_displayform=__1__ — __2__
run_displayform= __2__
crewmember_displayform=[color=__2__,__3__,__4__]__5__[/color] [color=1,1,1]__6__[/color]
capacity_tooltip=容量。设置允许的最大乘员人数。
difficulty_tooltip=难度。\n\n更高的难度有更高的污染和进化,更多的虫子,更少的金币战利品,但更高的宝箱战利品,并且对每个岛屿的时间、任务要求和发射井位置有些许影响。\n\n难度还决定了造船所用的材料。
mode_tooltip=模式.
auto_undock_tooltip=在这个位置停留的最长时间。\n\n一旦达到这个时间,船就会自动离岸。船长也可以通过按此按钮选择提前出坞。
atsea_loading_tooltip=下一个目的地正在加载。
leave_anytime_tooltip=船长选择何时启航。\n\n可以通过按此按钮离开船坞。
resources_needed_tooltip_0=在下一个目的地,需要这些资源才能出坞。
resources_needed_tooltip_1=在下一个目的地,需要这些资源才能提前出坞。\n\n您停留的时间越长,所需的资源就越少,最终降至零。
resources_needed_tooltip_2=船长可以通过单击此按钮提前撤离,但前提是船长舱内储存了足够的资源。\n\n到达成本: __1__\n现在离开将花费: __2__
resources_needed_tooltip_3=船长可以通过单击此按钮来提前撤离,但前提是船长舱内储存了足够的资源。
resources_needed_tooltip_0_rocketvariant=下一个目的地,需要这些资源才能出坞。\n\n发射井代表火箭发射而不是资源。
resources_needed_tooltip_1_rocketvariant=在下一个目的地,将需要这些资源才能提前撤离。\n\n您停留的时间越长,所需的资源就越少,最终降至零。\n\n发射井代表火箭发射而不是资源。
resources_needed_tooltip_2_rocketvariant=船长可以通过单击此按钮提前撤离,但前提是船长舱内已储存了足够的资源。\n\n发射井代表火箭发射而不是资源。\n\nn到达成本: __1__\n现在离开将花费: __2__
resources_needed_tooltip_3_rocketvariant=T船长可以通过单击此按钮提前撤离,但前提是船长舱内已储存了足够的资源。\n\n发射井代表火箭发射而不是资源。
fuel_tooltip=储存的燃料: __1__.\n\n要储存更多,请将其送到船长舱。如果船用完燃料,团队就会失败。
gui_crew_window_buttons_quit_crew=退出团队
gui_crew_window_buttons_quit_crew_tooltip=回到大厅
gui_crew_window_buttons_quit_crew_tooltip=回到那个大厅
gui_crew_window_buttons_quit_spectators=回到大厅
gui_crew_window_buttons_join_crew=加入团队
gui_crew_window_buttons_join_spectators=观战
gui_crew_window_buttons_join_spectators_tooltip=您在执行此操作后的短时间内将无法重新加入船员。
gui_crew_window_crewmembers=船员
gui_crew_window_crewmembers=船员
gui_crew_window_crewmembers_give_up_class=放弃职业
gui_crew_window_crewmembers_give_up_class_tooltip=放弃职业
gui_crew_window_crewmembers_resign_as_officer=辞去军官职务
gui_crew_window_crewmembers_resign_as_officer_tooltip=放弃军官职位
gui_crew_window_crewmembers_resign_as_officer_tooltip=放弃军官职
gui_crew_window_spectators=观众
gui_crew_window_vote_for_difficulty=难度投票
gui_crew_window_spare_classes=空闲职业
gui_crew_window_assign_class_button=授予职业: __1__
gui_crew_window_assign_class_button_tooltip=为 __1__.\n\n 职业描述: __2__
gui_crew_window_selfassign_class_button=成为职业: __1__
gui_crew_window_selfassign_class_button_tooltip=授予自己空闲职业 __1__.\n\n 职业描述: __2__
gui_crew_window_assign_class_button_tooltip=任命此玩家为 __1__。\n\n 职业描述: __2__
gui_crew_window_selfassign_class_button=选择职业: __1__
gui_crew_window_selfassign_class_button_tooltip=授予自己空闲职业 __1__.\n\n 职业描述: __2__
gui_crew_window_captains_actions=船长的行动
gui_crew_window_captains_actions_disband_crew=解散团队
gui_crew_window_captains_actions_disband_crew_tooltip=结束本次航行。点击后会再次提示。
gui_crew_window_captains_actions_disband_crew_check=你确定?
gui_crew_window_captains_actions_disband_crew_check_tooltip=再次点击解散团队
gui_crew_window_captains_actions_renounce_title=放弃船长身份
gui_crew_window_captains_actions_renounce_title=放弃船长头衔
gui_crew_window_captains_actions_renounce_title_tooltip=你将不再是船长,这个角色将被传递,直到有船员接任。
gui_crew_window_captains_actions_pass_title=将船长传给
gui_crew_window_captains_actions_pass_title_tooltip=让选中的船员成为船长。
gui_crew_window_captains_actions_pass_title_tooltip=船员成为船长。
gui_crew_window_captains_actions_plank=跳甲板 (放逐为观众)
gui_crew_window_captains_actions_plank_tooltip=玩家将被送回大厅,暂时不能加入你的队伍。 (或使用 /plank {player})
gui_crew_window_captains_actions_plank_tooltip=玩家将被送回大厅,暂时不能加入你的队伍。 (或使用 /plank {玩家的名字})
gui_crew_window_captains_actions_make_officer=任命军官
gui_crew_window_captains_actions_make_officer_tooltip=任命此玩家为军官 (或使用/officer {player})
gui_crew_window_captains_actions_make_officer_tooltip=任命此玩家为军官 (或使用/officer {玩家的名字})
gui_crew_window_captains_actions_unmake_officer=解除军官
gui_crew_window_captains_actions_unmake_officer_tooltip=解除此玩家军官职务 或使用 /officer {player})
gui_crew_window_captains_actions_unmake_officer_tooltip=解除此玩家军官职务 或使用 /officer {玩家的名字})
gui_crew_window_captains_actions_revoke_class=撤销职业
gui_crew_window_captains_actions_revoke_class_tooltip=将此玩家的职业放回备用池中。
gui_crew_window_captains_actions_summon_crew=召唤船员上船
gui_crew_window_captains_actions_summon_crew_tooltip=召唤船员上船
gui_crew_window_captains_actions_summon_crew_tooltip=将船员传送回船上
gui_crew_window_captains_actions_tax=征税
gui_crew_window_captains_actions_tax_tooltip=对于您船员中的每个非军官,拿走四分之一的达布隆(和其他游戏关键物品)。 (或使用 /tax)
gui_crew_window_captains_actions_undock_tip=要提前出坞,请使用顶部工具栏。
gui_crew_window_captains_actions_tax_tooltip=对于团队中的每个非军官,征收四分之一的达布隆(和其他游戏关键物品)。 (或使用 /tax)
gui_crew_window_captains_actions_undock_tip=要提前出坞,请使用顶部工具栏。
gui_crew_window_crew_age=寿命: __1__
gui_crew_window_crew_age=时长: __1__
gui_crew_window_crew_capacity_and_difficulty=__1__, 容量 __2__.
gui_crew_window_crew_count=船员 (__1__)
gui_evo_tooltip_1=本地进化值: __1__
gui_evo_tooltip_1=本地虫族进化值: __1__
gui_evo_tooltip_2=里格数: __1__
gui_evo_tooltip_3=海妖: __1__
gui_evo_tooltip_4=时间: __1__
@ -324,7 +415,7 @@ gui_evo_tooltip_5=发射井: __1__
gui_evo_tooltip_6=虫巢: __1__
gui_evo_tooltip_7=沙虫: __1__
gui_info_info=信息
gui_info_info=简介
gui_info_updates=更新
gui_info_tips=提示
gui_info_credits=工作人员
@ -335,32 +426,33 @@ gui_minimap_switch_left=自动显示地图 — 开启
gui_minimap_switch_right=关闭
gui_progress=进度
gui_progress_distance_travelled=航行里程:
gui_progress_distance_travelled=航行里程:
gui_progress_leagues=__1__ 里格
gui_progress_current_location=当前位置: __1__
gui_progress_time_of_day=一天中的时间: __1__
gui_progress_time_of_day=时刻: __1__
gui_runs_play=开始游戏
gui_runs_ongoing_runs=正在进行的队伍
gui_runs_ongoing_runs_helpful_tip=想要加入一个团队,首先在下表选择它
gui_runs_ongoing_runs_spectate=观战
gui_runs_ongoing_runs_join_crew=加入团队
gui_runs_ongoing_runs_return_to_lobby=返回大厅
gui_runs_ongoing_runs_hop_on_board=跳上船。
gui_runs_proposals=提案
gui_runs_proposals_endorse_proposal=批准提案
gui_runs_proposals_retract_endorsement=撤回代言
gui_runs_proposals_retract_endorsement=撤回支持
gui_runs_proposals_abandon_proposal=放弃提案
gui_runs_proposal_maker_run_name=名称
gui_runs_proposal_maker_run_name=队名称
gui_runs_proposal_maker_run_name_2=名称
gui_runs_proposal_maker_capacity=容量
gui_runs_proposal_maker_capacity_disabled=此容量设置目前不可用。
gui_runs_proposal_maker_propose=
gui_runs_proposal_maker_propose=
gui_runs_proposal_maker_no_limit=无限制
gui_runs_launch=启航
gui_runs_launch_error_1=聚集更多的海盗。
gui_runs_launch_error_2=服务器上的并发运行数已达到管理员设置的上限。
gui_runs_launch_error_3=无法启动;至少一个队伍需要容量。
gui_runs_launch_error_3=无法启动;至少要有一个队伍需要高容量。
gui_runs_launch_error_4=没有可用的单桅帆船。改为加入现有的队伍。
gui_runs_wait_to_join=等待加入... __1__
@ -368,7 +460,7 @@ gui_runs_wait_to_join=等待加入... __1__
gui_info_main_tooltip=关于海盗船的提示与更新
gui_crews=团队
gui_crews_main_tooltip=查看正在进行的团队,或创建自己的
gui_crews_main_tooltip=查看正在进行的团队,或创建自己的
gui_minimap_main_tooltip=查看外部世界。
@ -382,61 +474,25 @@ gui_etaframe_nest_escape_cost=下一个逃生成本:
gui_etaframe_to_escape_store=想要逃跑,存储
gui_etaframe_or_store=或存储
gui_etaframe_rocket_requirement_tooltip=发射火箭
gui_etaframe_undock_are_you_sure=出坞 你确定吗?
gui_etaframe_undock_are_you_sure=出坞—你确定吗?
gui_etaframe_launched=发射:
gui_etaframe_launched_tooltip=这个岛的火箭发射了,这里是奖励。
gui_etaframe_launching=火箭正在发射...
gui_etaframe_charge=充电:
gui_etaframe_charge_tooltip=火箭发射井充电: __1__/__2__ GJ\n\n充满电以发射火箭,获得达布隆和燃料。
gui_etaframe_charge_tooltip=火箭发射井充电: __1__/__2__ GJ\n\n充满电以发射火箭,同时获得达布隆和燃料。
gui_questframe=岛屿任务:
gui_questframe_fail=失败
gui_questframe_ok=OK
gui_questframe_complete_tooltip=这个岛的任务完成了,这里是奖励。
gui_questframe_time=岛屿任务:\n\n在倒计时完成之前发射火箭以获得奖励。
gui_questframe_worms=海岛任务:沙虫\n\n杀死足够多的虫以获得奖励。
gui_questframe_find=海岛任务:蠕虫\n\n杀死足够多的蠕虫以获得奖励。
gui_questframe_resourceflow=海岛任务:资源\n\n达到特定物品的生产率以获得奖励。
gui_questframe_time=岛屿任务:时\n\n在倒计时完成之前发射火箭以获得奖励。
gui_questframe_worms=海岛任务:沙虫\n\n杀死足够多的虫以获得奖励。
gui_questframe_find=海岛任务:幽灵\n\n找到幽灵以获得奖励。
gui_questframe_resourceflow=海岛任务:资源滚滚\n\n达到特定物品的生产率以获得奖励。
gui_questframe_resourcecount=海岛任务:物品生产\n\n只需在地图上的任何地方完成这些物品的生产即可获得奖励。
gui_questframe_nodamage=岛屿任务:无伤\n\n发射火箭,发射井不受到任何伤害。
gui_questframe_nodamage=岛屿任务:无伤\n\n发射火箭,并且发射井不受到任何伤害。
gui_crew_tooltip_1=你的船员\n\n执行船员操作,例如选择可用的职业。
gui_crew_tooltip_2=你的船员\n\n你是自由人,所以这里没什么可做的
gui_crew_tooltip_1=你的团队\n\n执行船员操作,例如选择可用的职业。
gui_crew_tooltip_2=你的团队\n\n你是自由人,所以什么也做不了
gui_progress_tooltip=进度: __1__ 里格\n\n航行 __2__ 里格取得胜利
location_displayname_first_1=羽翼未丰的山谷
location_displayname_horseshoe_1=鲨鱼钥匙
location_displayname_horseshoe_2=小钥匙
location_displayname_horseshoe_3=小钥匙
location_displayname_maze_1=迷惑迷宫
location_displayname_radioactive_1=废弃实验室
location_displayname_red_desert_1=沙虫火山口
location_displayname_standard_1=埋藏宝藏岛
location_displayname_standard_variant_1=僻静的戴尔
location_displayname_swamp_1=毒沼泽
location_displayname_walkways_1=冰冻水池
location_displayname_sea_1=
location_displayname_dock_1=码头
location_displayname_lobby_1=初始码头
quest_structure_market_1=需要__1__x
quest_structure_market_2=(物品组件将是
quest_structure_market_3=完成后退款)
quest_structure_furnace_1=需要
quest_structure_furnace_2=(熔炉可以将
quest_structure_furnace_3=已交付物品
quest_structure_furnace_4=拆分成组件)
highscore_heading_crew=团队
highscore_heading_captain=船长
highscore_heading_captain_tooltip=在 0 到 1000 里格(不包括)之间担任船长时间最长的玩家。
highscore_heading_completion=完成
highscore_heading_leagues=里格数
highscore_heading_version=版本
highscore_heading_difficulty=难度
highscore_heading_peak_players=巅峰玩家

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Balance = require 'maps.pirates.balance'
@ -125,10 +127,14 @@ function Public.eat_up_fraction_of_all_pollution(surface, fraction_of_global_pol
end
function Public.wave_size_rng() -- random variance in attack sizes
local memory = Memory.get_crew_memory()
local wave_percentage_chance = Math.clamp(0, 70, 20 + 10 * memory.floating_pollution/1400) --trying this out
local wave_size_multiplier = 1
local memory = Memory.get_crew_memory()
local rng1 = Math.random(100)
if rng1 <= 68 then
if rng1 > wave_percentage_chance then
wave_size_multiplier = 0
elseif memory.overworldx > 0 then
local rng2 = Math.random(1000)
@ -295,7 +301,7 @@ function Public.create_mail_delivery_biters() --these travel cross-map between b
local spawners = surface.find_entities_filtered{name = 'biter-spawner', force = enemy_force_name}
local try_how_many_groups = Math.min(Math.max(0, (#spawners - 8) / 100), 4)
local try_how_many_groups = Math.clamp(0, 4, (#spawners - 8) / 100)
for i = 1, try_how_many_groups do
if Math.random(2) == 1 then

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Balance = require 'maps.pirates.balance'
@ -287,9 +289,9 @@ local function damage_to_players_changes(event)
-- damage_multiplier = damage_multiplier * 1.10
elseif class and class == Classes.enum.SAMURAI then
damage_multiplier = damage_multiplier * (1 - Balance.samurai_resistance)
elseif class and class == Classes.enum.HATAMOTO then --lethal damage needs to be unaffected
elseif class and class == Classes.enum.HATAMOTO then
damage_multiplier = damage_multiplier * (1 - Balance.hatamoto_resistance)
elseif class and class == Classes.enum.IRON_LEG then --lethal damage needs to be unaffected
elseif class and 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 * (1 - Balance.iron_leg_resistance)
end
@ -664,9 +666,9 @@ end
local function event_pre_player_mined_item(event)
-- figure out which crew this is about:
local crew_id = nil
if event.player_index and game.players[event.player_index].valid then crew_id = tonumber(string.sub(game.players[event.player_index].force.name, -3, -1)) or nil end
Memory.set_working_id(crew_id)
-- local crew_id = nil
-- if event.player_index and game.players[event.player_index].valid then crew_id = tonumber(string.sub(game.players[event.player_index].force.name, -3, -1)) or nil end
-- Memory.set_working_id(crew_id)
-- local memory = Memory.get_crew_memory()
-- if memory.planet[1].type.id == 11 then --rocky planet
@ -678,6 +680,10 @@ local function event_pre_player_mined_item(event)
-- end
end
Public.every_nth_tree_gives_coins = 6
local function event_on_player_mined_entity(event)
if not event.player_index then return end
local player = game.players[event.player_index]
@ -695,8 +701,6 @@ local function event_on_player_mined_entity(event)
return
end
local every_nth_tree_gives_coins = 6
if entity.type == 'tree' then
if not event.buffer then return end
local available = destination.dynamic_data.wood_remaining
@ -713,22 +717,18 @@ local function event_on_player_mined_entity(event)
local give = {}
if memory.classes_table and memory.classes_table[event.player_index] then
if memory.classes_table[event.player_index] == Classes.enum.LUMBERJACK then
give[#give + 1] = {name = 'wood', count = 4}
if Math.random(every_nth_tree_gives_coins) == 1 then
local a = 20
give[#give + 1] = {name = 'coin', count = a}
memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
end
elseif memory.classes_table[event.player_index] == Classes.enum.WOOD_LORD then
give[#give + 1] = {name = 'wood', count = 1}
give[#give + 1] = {name = 'iron-ore', count = 1}
give[#give + 1] = {name = 'copper-ore', count = 1}
give[#give + 1] = {name = 'coal', count = 1}
if Math.random(every_nth_tree_gives_coins) == 1 then
local a = 12
give[#give + 1] = {name = 'coin', count = a}
memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
end
Classes.lumberjack_bonus_items(give)
-- elseif memory.classes_table[event.player_index] == Classes.enum.WOOD_LORD then
-- give[#give + 1] = {name = 'wood', count = 1}
-- give[#give + 1] = {name = 'iron-ore', count = 1}
-- give[#give + 1] = {name = 'copper-ore', count = 1}
-- give[#give + 1] = {name = 'coal', count = 1}
-- if Math.random(every_nth_tree_gives_coins) == 1 then
-- local a = 12
-- give[#give + 1] = {name = 'coin', count = a}
-- memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
-- end
end
end
@ -740,29 +740,26 @@ local function event_on_player_mined_entity(event)
local baseamount = 4
--minimum 1 wood
local amount = Math.max(Math.ceil(Math.min(available, baseamount * available/starting)),1)
local amount = Math.clamp(1, Math.ceil(available), Math.ceil(baseamount * available/starting))
destination.dynamic_data.wood_remaining = destination.dynamic_data.wood_remaining - amount
if memory.classes_table and memory.classes_table[event.player_index] and memory.classes_table[event.player_index] == Classes.enum.LUMBERJACK then
give[#give + 1] = {name = 'wood', count = amount + 3}
if Math.random(every_nth_tree_gives_coins) == 1 then
local a = 12
give[#give + 1] = {name = 'coin', count = a}
memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
end
elseif memory.classes_table and memory.classes_table[event.player_index] and memory.classes_table[event.player_index] == Classes.enum.WOOD_LORD then
give[#give + 1] = {name = 'wood', count = amount + 3}
give[#give + 1] = {name = 'iron-ore', count = 1}
give[#give + 1] = {name = 'copper-ore', count = 1}
give[#give + 1] = {name = 'coal', count = 1}
if Math.random(every_nth_tree_gives_coins) == 1 then
local a = 12
give[#give + 1] = {name = 'coin', count = a}
memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
end
give[#give + 1] = {name = 'wood', count = amount}
Classes.lumberjack_bonus_items(give)
-- elseif memory.classes_table and memory.classes_table[event.player_index] and memory.classes_table[event.player_index] == Classes.enum.WOOD_LORD then
-- give[#give + 1] = {name = 'wood', count = amount + 3}
-- give[#give + 1] = {name = 'iron-ore', count = 1}
-- give[#give + 1] = {name = 'copper-ore', count = 1}
-- give[#give + 1] = {name = 'coal', count = 1}
-- if Math.random(every_nth_tree_gives_coins) == 1 then
-- local a = 12
-- give[#give + 1] = {name = 'coin', count = a}
-- memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
-- end
else
give[#give + 1] = {name = 'wood', count = amount}
if Math.random(every_nth_tree_gives_coins) == 1 then --tuned
if Math.random(Public.every_nth_tree_gives_coins) == 1 then --tuned
local a = 5
give[#give + 1] = {name = 'coin', count = a}
memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
@ -795,7 +792,7 @@ local function event_on_player_mined_entity(event)
local give = {}
if memory.overworldx > 0 then
if memory.overworldx > 0 then --no coins on first map, else the optimal strategy is to handmine everything there
if memory.classes_table and memory.classes_table[event.player_index] and memory.classes_table[event.player_index] == Classes.enum.PROSPECTOR then
local a = 3
give[#give + 1] = {name = 'coin', count = a}
@ -913,11 +910,11 @@ local function base_kill_rewards(event)
if entity_name == 'small-worm-turret' then
iron_amount = 5
coin_amount = 60
coin_amount = 50
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 = 100
coin_amount = 90
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
@ -925,11 +922,11 @@ local function base_kill_rewards(event)
memory.playtesting_stats.coins_gained_by_nests_and_worms = memory.playtesting_stats.coins_gained_by_nests_and_worms + coin_amount
elseif entity_name == 'big-worm-turret' then
iron_amount = 30
coin_amount = 160
coin_amount = 140
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 = 280
coin_amount = 260
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
@ -1203,6 +1200,10 @@ local function event_on_player_joined_game(event)
player.print('Support Pirate Ship scenario design at ko-fi.com/thesixthroc', {r=1, g=0.4, b=0.9})
end
if _DEBUG then
game.print('Debug mode on. Use /go to get started, /1 /4 /32 etc to change game speed.')
end
local crew_to_put_back_in = nil
for _, mem in pairs(global_memory.crew_memories) do
if mem.id and mem.crewstatus and mem.crewstatus == Crew.enum.ADVENTURING and mem.temporarily_logged_off_characters[player.index] then
@ -1633,7 +1634,6 @@ local function event_on_rocket_launched(event)
local a = Balance.rocket_launch_coin_reward
Common.give_items_to_crew({{name = 'coin', count = a}})
memory.playtesting_stats.coins_gained_by_rocket_launches = memory.playtesting_stats.coins_gained_by_rocket_launches + a
end
local force = memory.force
@ -1649,6 +1649,11 @@ local function event_on_rocket_launched(event)
destination.dynamic_data.quest_progress = destination.dynamic_data.rocketsilohp
Quest.try_resolve_quest()
end
if destination.dynamic_data.rocketsilos and destination.dynamic_data.rocketsilos[1] and destination.dynamic_data.rocketsilos[1].valid then
destination.dynamic_data.rocketsilos[1].die()
destination.dynamic_data.rocketsilos = nil
end
end
@ -1790,7 +1795,7 @@ local function event_on_player_respawned(event)
local boat = memory.boat
if player.surface == game.surfaces[Common.current_destination().surface_name] then
if boat and boat.state == Boats.enum_state.ATSEA_SAILING then
if boat and boat.state == Boats.enum_state.ATSEA_SAILING or boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL or boat.state == Boats.enum_state.ATSEA_LOADING_MAP then
-- assuming sea is always default:
local seasurface = game.surfaces[memory.sea_name]
player.teleport(memory.spawnpoint, seasurface)

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
--luacheck: ignore
--luacheck ignores because tickinterval arguments are a code templating choice...
@ -1024,7 +1026,7 @@ function Public.silo_update(tickinterval)
if memory.overworldx >= 0 and dynamic_data.rocketsiloenergyconsumed >= 0.25 * dynamic_data.rocketsiloenergyneeded and (not dynamic_data.parrot_silo_warned) then
dynamic_data.parrot_silo_warned = true
local spawnerscount = Common.spawner_count(surface)
local spawnerscount = Common.spawner_count(game.surfaces[destination.surface_name])
if spawnerscount > 0 then
Common.parrot_speak(memory.force, {'pirates.parrot_silo_warning'})
end
@ -1133,7 +1135,7 @@ end
-- Delay.move_tasks_to_buffer()
-- end
function Public.Kraken_Destroyed_Backup_check(tickinterval) -- a server became bugged when the kraken spawner entity disappeared but the kraken_die had not fired, and I'm not sure why, so this is a backup checker for that case
function Public.Kraken_Destroyed_Backup_check(tickinterval) -- a server became stuck when the kraken spawner entity disappeared but the kraken_die had not fired, and I'm not sure why, so this is a backup checker for that case
local memory = Memory.get_crew_memory()
local boat = memory.boat
@ -1160,7 +1162,6 @@ function Public.Kraken_Destroyed_Backup_check(tickinterval) -- a server became b
end
end
end
end
end
end

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
local Math = require 'maps.pirates.math'
@ -41,7 +43,7 @@ function Public.cost_to_leave_multiplier()
return Math.sloped(Common.difficulty_scale(), 8/10)
end
Public.rocket_launch_coin_reward = 6000
Public.rocket_launch_coin_reward = 5000
function Public.crew_scale()
local ret = Common.activecrewcount()/10
@ -359,8 +361,12 @@ function Public.apply_crew_buffs_per_x(force)
force.laboratory_productivity_bonus = Math.max(0, 7/100 * (Common.overworldx()/40) - (10*(Common.difficulty_scale()) - 5)) --difficulty causes lab productivity boosts to start later
end
function Public.class_cost()
return 10000
function Public.class_cost(at_dock)
if at_dock then
return 10000
else
return 6000
end
-- return Math.ceil(10000 / (Public.crew_scale()*10/4)^(1/6))
end
@ -391,7 +397,7 @@ function Public.sandworm_evo_increase_per_spawn()
end
function Public.kraken_kill_reward_items()
return {{name = 'sulfuric-acid-barrel', count = 5}, {name = 'coin', count = 1000}}
return {{name = 'sulfuric-acid-barrel', count = 5}, {name = 'coin', count = 800}}
end
function Public.kraken_kill_reward_fuel()
return 200
@ -529,7 +535,7 @@ function Public.starting_items_crew_upstairs()
{['grenade'] = 3},
{['shotgun'] = 2, ['shotgun-shell'] = 36},
-- {['raw-fish'] = 5},
{['coin'] = 2000},
{['coin'] = 1000},
}
end
@ -541,7 +547,7 @@ function Public.starting_items_crew_downstairs()
{['inserter'] = Math.random(120,140)},
{['storage-tank'] = 2},
{['medium-electric-pole'] = Math.random(15,21)},
{['coin'] = 2000},
{['coin'] = 1000},
{['solar-panel'] = 3},
}
end

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'
@ -38,10 +40,10 @@ Public.List = {
}
Public.crowsnest_display_form = {
[enum.EXTRA_HOLD] = 'Extra Hold',
[enum.MORE_POWER] = 'Power',
[enum.UNLOCK_MERCHANTS] = 'Unlock Merchants',
[enum.ROCKETS_FOR_SALE] = 'Unlock Rockets',
[enum.EXTRA_HOLD] = {'pirates.upgrade_hold_crowsnest_form'},
[enum.MORE_POWER] = {'pirates.upgrade_power_crowsnest_form'},
[enum.UNLOCK_MERCHANTS] = {'pirates.upgrade_merchants_crowsnest_form'},
[enum.ROCKETS_FOR_SALE] = {'pirates.upgrade_rockets_crowsnest_form'},
}
-- WARNING: The dock market pulls from these values, but the Crowsnest caption pulls data from main_shop_data_1. So don't change one without the other

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
--luacheck: ignore
--luacheck ignores because mass requires is a code templating choice...

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Math = require 'maps.pirates.math'
local Raffle = require 'maps.pirates.raffle'
@ -15,7 +17,6 @@ local _inspect = require 'utils.inspect'.inspect
local Public = {}
--@TODO: decide on snakecase vs camelcase
-- Public.active_crews_cap = 1
Public.activeCrewsCap = 2
Public.minimumCapacitySliderValue = 1
@ -38,6 +39,8 @@ Public.structure_ensure_chunk_radius = 2
Public.allow_barreling_off_ship = true
Public.coin_tax_percentage = 10
Public.fraction_of_map_loaded_at_sea = 1
Public.map_loading_ticks_atsea = 68 * 60
Public.map_loading_ticks_atsea_maze = 80 * 60
@ -88,7 +91,7 @@ function Public.capacity() return Memory.get_crew_memory().capacity end
-- function Public.mode() return Memory.get_crew_memory().mode end
function Public.overworldx() return Memory.get_crew_memory().overworldx end
function Public.game_completion_progress() return Public.overworldx()/CoreData.victory_x end
function Public.game_completion_progress_capped() return Math.min(Public.overworldx()/CoreData.victory_x, 1) end
function Public.game_completion_progress_capped() return Math.clamp(0, 1, Public.overworldx()/CoreData.victory_x) end
function Public.capacity_scale()
local capacity = Public.capacity()
if not capacity then --e.g. for EE wattage on boats not owned by a crew
@ -146,11 +149,13 @@ end
function Public.notify_force_error(force, message, color_override)
color_override = color_override or CoreData.colors.notify_error
force.print({"", '>> ', message}, color_override)
force.play_sound{path = "utility/cannot_build"}
end
function Public.notify_player_error(player, message, color_override)
color_override = color_override or CoreData.colors.notify_error
player.print({"", '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
player.play_sound{path = "utility/cannot_build"}
end
function Public.notify_player_expected(player, message, color_override)
@ -166,7 +171,8 @@ end
function Public.parrot_speak(force, message)
force.print({"", {'pirates.notify_parrot'}, ' ', message}, CoreData.colors.parrot)
Server.to_discord_embed_raw({"", {'pirates.notify_parrot'}, ' ', message}, true)
local memory = Memory.get_crew_memory()
Server.to_discord_embed_raw({"", '[' .. memory.name .. ']', {'pirates.notify_parrot'}, ' ', message}, true)
end
@ -219,6 +225,9 @@ end
-- {20, 0, 1, false, 'flying-robot-frame', 20, 35},
-- }
--@TODO: Replace this old function with the newer code in raffle.lua
function Public.raffle_from_processed_loot_data(processed_loot_data, how_many, game_completion_progress)
local ret = {}
@ -405,6 +414,7 @@ end
-- -- return Math.floor(surplus_evo*3*1000)/1000
-- end
function Public.set_biter_surplus_evo_modifiers()
local memory = Memory.get_crew_memory()
local enemy_force = memory.enemy_force
@ -787,8 +797,7 @@ function Public.spawner_count(surface)
local memory = Memory.get_crew_memory()
local spawners = surface.find_entities_filtered({type = 'unit-spawner', force = memory.enemy_force_name})
local spawnerscount = #spawners or 0
return spawnerscount
return #spawners or 0
end
@ -988,7 +997,7 @@ function Public.add_tiles_from_blueprint(tilesTable, bp_string, tile_name, offse
end
function Public.tile_positions_from_blueprint(bp_string, offset)
-- May '22 change: There seems to be a base game bug(?) which causes the tiles to be offset. We now correct for that.
-- May '22 change: There seems to be a base game bug(?) which causes the tiles to be offset. We now correct for that (with ` - (max_x - min_x)/2` and ` - (max_y - min_y)/2`).
local bp_entity = game.surfaces['nauvis'].create_entity{name = 'item-on-ground', position = {x = 158.5, y = 158.5}, stack = 'blueprint'}
bp_entity.stack.import_stack(bp_string)
@ -1033,6 +1042,7 @@ function Public.tile_positions_from_blueprint(bp_string, offset)
end
function Public.tile_positions_from_blueprint_arrayform(bp_string, offset)
-- does not include the above May '22 fix yet, so may give different results
local bp_entity = game.surfaces['nauvis'].create_entity{name = 'item-on-ground', position = {x = 158.5, y = 158.5}, stack = 'blueprint'}
bp_entity.stack.import_stack(bp_string)

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Math = require 'maps.pirates.math'
local _inspect = require 'utils.inspect'.inspect
@ -5,7 +7,7 @@ local _inspect = require 'utils.inspect'.inspect
local Public = {}
Public.scenario_id_name = 'pirates'
Public.version_string = '1.2.8' --will now try to stick to major.minor.patch versioning, to match factorio mod portal
Public.version_string = '1.2.11' --major.minor.patch versioning, to match factorio mod portal
Public.blueprint_library_allowed = true
Public.blueprint_importing_allowed = true
@ -107,25 +109,41 @@ Public.capacity_options = {
{value = 999, icon = 'virtual-signal/signal-white', text = 'Inf.', text2 = '', text3 = 'Inf'},
-- {value = 64, icon = 'item/storage-tank', text = '64'},
}
Public.difficulty_options = {
-- The difficulty values we currently offer
--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.6, icon = 'item/firearm-magazine', text = 'Easy', associated_color = {r = 50, g = 255, b = 50}},
{value = 1.0, icon = 'item/piercing-rounds-magazine', text = 'Normal', associated_color = {r = 255, g = 255, b = 50}},
{value = 1.4, icon = 'item/uranium-rounds-magazine', text = 'Hard', associated_color = {r = 255, g = 50, b = 50}},
{value = 2.1, icon = 'item/atomic-bomb', text = 'Nightmare', associated_color = {r = 120, g = 35, b = 35}},
{value = 0.6, icon = 'item/firearm-magazine', text = {'pirates.difficulty_easy'}, associated_color = {r = 50, g = 255, b = 50}},
{value = 1.0, 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 = 2.1, icon = 'item/atomic-bomb', text = {'pirates.difficulty_nightmare'}, associated_color = {r = 170, g = 60, b = 60}},
}
function Public.get_difficulty_name_from_value(difficulty_value)
-- Functions will reference this when given a difficulty value and want to present a difficulty name to the player; just make it consistent with the above
if difficulty_value <= 0.7 then
return 'Easy'
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)
if difficulty_value <= 0.8 then
return 1
elseif difficulty_value < 1.2 then
return 'Normal'
elseif difficulty_value <= 2 then
return 'Hard'
return 2
elseif difficulty_value <= 1.75 then
return 3
else
return 'Nightmare'
return 4
end
end
function Public.get_difficulty_option_informal_name_from_value(difficulty_value)
-- given a difficulty value, provide a simple named description of the difficulty. for internal use
if difficulty_value <= 0.8 then
return 'easy'
elseif difficulty_value < 1.2 then
return 'normal'
elseif difficulty_value <= 1.75 then
return 'hard'
else
return 'nightmare'
end
end
@ -135,11 +153,11 @@ end
-- }
Public.daynightcycle_types = {
{displayname = 'Static', 0},
{displayname = 'Slow Cyclic', ticksperday = 100000},
{displayname = 'Cyclic', ticksperday = 80000},
{displayname = 'Fast Cyclic', ticksperday = 60000},
{displayname = 'Rapid Cyclic', ticksperday = 40000},
{displayname = {'pirates.daynightcycle_static'}, 0},
{displayname = {'pirates.daynightcycle_slowcyclic'}, ticksperday = 100000},
{displayname = {'pirates.daynightcycle_cyclic'}, ticksperday = 80000},
{displayname = {'pirates.daynightcycle_fastcyclic'}, ticksperday = 60000},
{displayname = {'pirates.daynightcycle_rapidcyclic'}, ticksperday = 40000},
}
Public.ore_types = {

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Balance = require 'maps.pirates.balance'
local _inspect = require 'utils.inspect'.inspect
@ -32,13 +34,16 @@ Public.enum = enum
function Public.difficulty_vote(player_index, difficulty_id)
local memory = Memory.get_crew_memory()
if not (memory.difficulty_votes) then memory.difficulty_votes = {} end
local player = game.players[player_index]
if not (player and player.valid) then return end
if memory.difficulty_votes[player_index] and memory.difficulty_votes[player_index] == difficulty_id then
return nil
else
log(_inspect(CoreData.difficulty_options))
local option = CoreData.difficulty_options[difficulty_id]
if not option then return end
@ -77,10 +82,11 @@ function Public.update_difficulty()
local color = CoreData.difficulty_options[modal_id].associated_color
local message1 = {'pirates.notify_difficulty_change', color.r, color.g, color.b, CoreData.difficulty_options[modal_id].text}
Common.notify_force(memory.force, message1)
local message2 = 'Difficulty changed to ' .. CoreData.difficulty_options[modal_id].text .. '.'
Server.to_discord_embed_raw(CoreData.comfy_emojis.kewl .. '[' .. memory.name .. '] ' .. message2)
-- local message2 = 'Difficulty changed to ' .. CoreData.difficulty_options[modal_id].text .. '.'
Server.to_discord_embed_raw({'', CoreData.comfy_emojis.kewl .. '[' .. memory.name .. '] ', message1}, true)
memory.difficulty_option = modal_id
memory.difficulty = CoreData.difficulty_options[modal_id].value
@ -151,7 +157,7 @@ function Public.try_win()
memory.game_won = true
-- memory.crew_disband_tick = game.tick + 1200
Server.to_discord_embed_raw(CoreData.comfy_emojis.goldenobese .. '[' .. memory.name .. '] Victory, on v' .. CoreData.version_string .. ', ' .. CoreData.difficulty_options[memory.difficulty_option].text .. ', capacity ' .. CoreData.capacity_options[memory.capacity_option].text3 .. '. Playtime: ' .. speedrun_time_str .. ' since 1st island. Crewmembers: ' .. Public.get_crewmembers_printable_string())
Server.to_discord_embed_raw({'', CoreData.comfy_emojis.goldenobese .. '[' .. memory.name .. '] Victory, on v' .. CoreData.version_string .. ', ', CoreData.difficulty_options[memory.difficulty_option].text, ', capacity ' .. CoreData.capacity_options[memory.capacity_option].text3 .. '. Playtime: ' .. speedrun_time_str .. ' since 1st island. Crewmembers: ' .. Public.get_crewmembers_printable_string()}, true)
Common.notify_game({'','[' .. memory.name .. '] ',{'pirates.victory',CoreData.version_string, CoreData.difficulty_options[memory.difficulty_option].text, CoreData.capacity_options[memory.capacity_option].text3, speedrun_time_str, Public.get_crewmembers_printable_string()}}, CoreData.colors.notify_victory)
@ -875,7 +881,7 @@ function Public.reset_crew_and_enemy_force(id)
crew_force.technologies['automobilism'].enabled = false
crew_force.technologies['toolbelt'].enabled = false --trying this. we don't actually want players to carry things manually, and in fact in a resource-tight scenario that's problematic
crew_force.technologies['toolbelt'].enabled = false --trying this. we don't actually want players to carry too many things manually, and in fact in a resource-tight scenario that's problematic
-- note: many of these recipes are overwritten after tech researched!!!!!!! like pistol. check elsewhere in code

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Event = require 'utils.event'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Math = require 'maps.pirates.math'
-- local Memory = require 'maps.pirates.memory'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Common = require 'maps.pirates.common'
@ -68,7 +70,7 @@ function Public.new_window(player, name)
flow.style.maximal_width = 270
flow.style.minimal_height = 80
flow.style.natural_height = 80
flow.style.maximal_height = 700
flow.style.maximal_height = 760
flow.style.padding = 10
return flow
@ -405,7 +407,7 @@ function Public.player_and_crew_state_bools(player)
local destination = Common.current_destination()
local dynamic_data = destination.dynamic_data --assumes this always exists
local in_crowsnest_bool, in_hold_bool, in_cabin_bool, onmap_bool, eta_bool, approaching_bool, retreating_bool, atsea_sailing_bool, landed_bool, quest_bool, silo_bool, charged_bool, launched_bool, captain_bool, atsea_loading_bool, character_on_deck_bool, on_deck_standing_near_loco_bool, on_deck_standing_near_cabin_bool, on_deck_standing_near_crowsnest_bool, cost_bool, cost_includes_rocket_launch_bool, approaching_dock_bool, leaving_dock_bool, leave_anytime_bool
local in_crowsnest_bool, in_hold_bool, in_cabin_bool, onmap_bool, eta_bool, approaching_bool, retreating_bool, atsea_sailing_bool, landed_bool, quest_bool, silo_bool, charged_bool, launched_bool, captain_bool, atsea_loading_bool, atsea_waiting_bool, character_on_deck_bool, on_deck_standing_near_loco_bool, on_deck_standing_near_cabin_bool, on_deck_standing_near_crowsnest_bool, cost_bool, cost_includes_rocket_launch_bool, approaching_dock_bool, leaving_dock_bool, leave_anytime_bool
captain_bool = Common.is_captain(player)
@ -423,13 +425,14 @@ function Public.player_and_crew_state_bools(player)
retreating_bool = memory.boat and memory.boat.state == Boats.enum_state.RETREATING and onmap_bool
-- approaching_bool = memory.boat and memory.boat.state == Boats.enum_state.APPROACHING
atsea_sailing_bool = memory.boat and memory.boat.state == Boats.enum_state.ATSEA_SAILING
atsea_waiting_bool = memory.boat and memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL
landed_bool = memory.boat and memory.boat.state == Boats.enum_state.LANDED
quest_bool = (dynamic_data.quest_type ~= nil) and onmap_bool
charged_bool = dynamic_data.silocharged
silo_bool = dynamic_data.rocketsilos and onmap_bool and ((dynamic_data.rocketsilos[1] and dynamic_data.rocketsilos[1].valid) or charged_bool)
launched_bool = dynamic_data.rocketlaunched
cost_bool = destination.static_params.base_cost_to_undock and (not atsea_sailing_bool) and (not retreating_bool)
cost_bool = destination.static_params.base_cost_to_undock and (not atsea_sailing_bool) and (not atsea_waiting_bool) and (not retreating_bool)
cost_includes_rocket_launch_bool = cost_bool and destination.static_params.base_cost_to_undock['launch_rocket']
leave_anytime_bool = (landed_bool and not (eta_bool or cost_bool))
@ -463,6 +466,7 @@ function Public.player_and_crew_state_bools(player)
approaching_bool = approaching_bool,
retreating_bool = retreating_bool,
atsea_sailing_bool = atsea_sailing_bool,
atsea_waiting_bool = atsea_waiting_bool,
-- landed_bool = landed_bool,
quest_bool = quest_bool,
silo_bool = silo_bool,

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Common = require 'maps.pirates.common'
@ -336,7 +338,7 @@ function Public.toggle_window(player)
flow3.style.minimal_width = 95
flow3.style.font = 'default-bold'
flow3.style.font_color = {r=0.10, g=0.10, b=0.10}
flow3.tooltip = {'pirates.gui_crew_window_captains_actions_tax_tooltip'}
flow3.tooltip = {'pirates.gui_crew_window_captains_actions_tax_tooltip', Common.coin_tax_percentage}
flow2 = flow.add({
@ -574,7 +576,7 @@ function Public.click(event)
end
if string.sub(eventname, 1, 18) and string.sub(eventname, 1, 18) == 'difficulty_option_' then
Crew.difficulty_vote(player.index, string.sub(eventname, 19, -1))
Crew.difficulty_vote(player.index, tonumber(string.sub(eventname, 19, -1)))
return
end

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Common = require 'maps.pirates.common'
local Balance = require 'maps.pirates.balance'
@ -79,7 +81,7 @@ function Public.full_update(player)
local types = {'leagues', 'kraken', 'time', 'silo', 'nests', 'sandwurms'}
if memory.boat and memory.boat.state and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
if memory.boat and memory.boat.state and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
evolution_leagues = evo - (memory.kraken_evo or 0)
local krakens = false
if memory.active_sea_enemies and memory.active_sea_enemies.krakens then

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Common = require 'maps.pirates.common'

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -154,7 +155,7 @@ local function create_gui(player)
})
flow3.style.font = 'default-large-semibold'
flow3.style.font_color = GuiCommon.bold_font_color
flow3.caption = 'Fuel:'
flow3.caption = {'pirates.gui_fuel_1'}
flow3 = flow2.add({
name = 'fuel_label_1',
@ -516,7 +517,7 @@ function Public.process_etaframe_update(player, flow1, bools)
local flow2
if bools.cost_bool or bools.atsea_loading_bool or bools.eta_bool or bools.retreating_bool or bools.leave_anytime_bool then
if bools.cost_bool or bools.atsea_loading_bool or bools.atsea_waiting_bool or bools.eta_bool or bools.retreating_bool or bools.leave_anytime_bool then
flow1.visible = true
local tooltip = ''
@ -563,6 +564,15 @@ function Public.process_etaframe_update(player, flow1, bools)
flow2.etaframe_label_1.caption = {'pirates.gui_etaframe_arriving_in'}
flow2.etaframe_label_2.caption = Utils.standard_string_form_of_time_in_seconds(eta_ticks / 60)
elseif bools.atsea_waiting_bool then
flow2.etaframe_label_1.visible = true
flow2.etaframe_label_2.visible = false
tooltip = {'pirates.atsea_waiting_tooltip'}
flow2.etaframe_label_1.caption = {'pirates.gui_etaframe_atsea_waiting'}
elseif bools.leave_anytime_bool then
flow2.etaframe_label_1.visible = true
flow2.etaframe_label_2.visible = true
@ -658,7 +668,7 @@ function Public.process_etaframe_update(player, flow1, bools)
flow1.etaframe_piratebutton.tooltip = tooltip
flow2.tooltip = tooltip
if bools.captain_bool and (not bools.retreating_bool) and (bools.leave_anytime_bool or bools.eta_bool or (bools.cost_bool and (not bools.atsea_loading_bool))) then
if bools.captain_bool and (not bools.retreating_bool) and (bools.leave_anytime_bool or bools.atsea_waiting_bool or bools.eta_bool or (bools.cost_bool and (not bools.atsea_loading_bool))) then
flow1.etaframe_piratebutton.mouse_button_filter = {'left'}
if memory.undock_shortcut_are_you_sure_data and memory.undock_shortcut_are_you_sure_data[player.index] and memory.undock_shortcut_are_you_sure_data[player.index] > game.tick - 60 * 4 then
flow2.etaframe_label_1.visible = true
@ -937,7 +947,7 @@ function Public.update_gui(player)
flow2.fuel_label_1.caption = Utils.bignumber_abbrevform(memory.stored_fuel or 0) .. '[item=coal]'
flow2.fuel_label_2.caption = Utils.negative_rate_abbrevform(memory.fuel_depletion_rate_memoized or 0)
local color_scale = Math.max(Math.min((- (memory.fuel_depletion_rate_memoized or 0))/30, 1),0)
local color_scale = Math.clamp(0, 1, (- (memory.fuel_depletion_rate_memoized or 0))/30)
flow2.fuel_label_2.style.font_color = {
r = GuiCommon.fuel_color_1.r * (1-color_scale) + GuiCommon.fuel_color_2.r * color_scale,
g = GuiCommon.fuel_color_1.g * (1-color_scale) + GuiCommon.fuel_color_2.g * color_scale,
@ -1069,7 +1079,7 @@ function Public.update_gui(player)
if flow1 then
-- if not bools.eta_bool and not bools.retreating_bool and not bools.quest_bool and not bools.silo_bool and not bools.atsea_loading_bool and not bools.leave_anytime_bool and not bools.cost_bool and not bools.approaching_dock_bool and not bools.leaving_dock_bool then
if not bools.eta_bool and not bools.retreating_bool and not bools.quest_bool and not bools.silo_bool and not bools.atsea_loading_bool and not bools.leave_anytime_bool and not bools.cost_bool and not bools.approaching_dock_bool and not bools.leaving_dock_bool and not bools.atsea_sailing_bool then
if not (bools.eta_bool or bools.retreating_bool or bools.quest_bool or bools.silo_bool or bools.atsea_loading_bool or bools.leave_anytime_bool or bools.cost_bool or bools.approaching_dock_bool or bools.leaving_dock_bool or bools.atsea_sailing_bool or bools.atsea_waiting_bool) then
flow1.visible = true
else
flow1.visible = false
@ -1080,7 +1090,7 @@ function Public.update_gui(player)
flow1 = pirates_flow.minimap_piratebutton_frame
if flow1 then
if bools.in_hold_bool then
if bools.in_hold_bool or bools.in_cabin_bool then
flow1.visible = true
else
flow1.visible = false
@ -1127,7 +1137,7 @@ function Public.update_gui(player)
flow1.style.minimal_height = 384
flow1.style.minimal_width = 384
flow1.position = {x=memory.overworldx,y=memory.overworldy}
elseif bools.in_cabin_bool or bools.in_crowsnest_bool then
elseif bools.in_crowsnest_bool then
flow1.visible = true
flow1.surface_index = game.surfaces[memory.boat.surface_name].index
flow1.zoom = 0.09
@ -1158,19 +1168,27 @@ local function on_gui_click(event)
Memory.set_working_id(crew_id)
local memory = Memory.get_crew_memory()
if event.element.name and event.element.name == 'etaframe_piratebutton' and (memory.boat.state == Boats.enum_state.DOCKED or memory.boat.state == Boats.enum_state.LANDED) then
if Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN then
if (not memory.undock_shortcut_are_you_sure_data) then memory.undock_shortcut_are_you_sure_data = {} end
if memory.undock_shortcut_are_you_sure_data[player.index] and memory.undock_shortcut_are_you_sure_data[player.index] > game.tick - 60 * 4 then
if memory.boat.state == Boats.enum_state.DOCKED then
Progression.undock_from_dock(true)
elseif memory.boat.state == Boats.enum_state.LANDED then
Progression.try_retreat_from_island(player, true)
if event.element.name and event.element.name == 'etaframe_piratebutton' then
if (memory.boat.state == Boats.enum_state.DOCKED or memory.boat.state == Boats.enum_state.LANDED) then
if Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN then
if (not memory.undock_shortcut_are_you_sure_data) then memory.undock_shortcut_are_you_sure_data = {} end
if memory.undock_shortcut_are_you_sure_data[player.index] and memory.undock_shortcut_are_you_sure_data[player.index] > game.tick - 60 * 4 then
if memory.boat.state == Boats.enum_state.DOCKED then
Progression.undock_from_dock(true)
elseif memory.boat.state == Boats.enum_state.LANDED then
Progression.try_retreat_from_island(player, true)
end
else
memory.undock_shortcut_are_you_sure_data[player.index] = game.tick
end
else
memory.undock_shortcut_are_you_sure_data[player.index] = game.tick
end
elseif memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL then
if Roles.player_privilege_level(player) >= Roles.privilege_levels.CAPTAIN then
Progression.at_sea_begin_to_set_sail()
end
end
elseif string.sub(event.element.name, -13, -1) and string.sub(event.element.name, -13, -1) == '_piratebutton' then
local name = string.sub(event.element.name, 1, -14)
if Public[name] then

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
-- local Common = require 'maps.pirates.common'
@ -226,7 +228,7 @@ function Public.full_update(player)
elseif flow2.selected_tab_index == 2 then
flow2.style.height = 520
elseif flow2.selected_tab_index == 3 then
flow2.style.height = 620
flow2.style.height = 580
elseif flow2.selected_tab_index == 4 then
flow2.style.height = 360
end

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Common = require 'maps.pirates.common'
@ -201,8 +203,8 @@ function Public.click(event)
elseif size == 440 then
size = 560
elseif size == 560 then
size = 700
elseif size == 700 then
size = 660
elseif size == 660 then
size = 280
else
size = 340
@ -227,14 +229,14 @@ local function on_player_changed_surface(event)
local window = player.gui.screen[window_name .. '_piratewindow']
local from_hold_bool = string.sub(game.surfaces[event.surface_index].name, 9, 12) == 'Hold'
local to_hold_bool = string.sub(player.surface.name, 9, 12) == 'Hold'
local from_hold_or_cabin_bool = string.sub(game.surfaces[event.surface_index].name, 9, 12) == 'Hold' or string.sub(game.surfaces[event.surface_index].name, 9, 13) == 'Cabin'
local to_hold_or_cabin_bool = string.sub(player.surface.name, 9, 12) == 'Hold' or string.sub(player.surface.name, 9, 13) == 'Cabin'
if from_hold_bool and (not to_hold_bool) then
if from_hold_or_cabin_bool and (not to_hold_or_cabin_bool) then
if window then
Public.toggle_window(player)
end
elseif to_hold_bool and (not from_hold_bool) then
elseif to_hold_or_cabin_bool and (not from_hold_or_cabin_bool) then
local global_memory = Memory.get_global_memory()
local gui_memory = global_memory.player_gui_memories[player.index]

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Common = require 'maps.pirates.common'

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Common = require 'maps.pirates.common'
@ -499,7 +500,7 @@ function Public.full_update(player)
elseif mem.crewplayerindices then
count = #mem.crewplayerindices
end
wrappedmemories[#wrappedmemories + 1] = {'pirates.run_displayform', mem.id, mem.name .. ', ' .. CoreData.difficulty_options[mem.difficulty_option].text .. ', [item=light-armor]' .. count .. CoreData.capacity_options[mem.capacity_option].text2 .. ', [item=rail] ' .. (mem.overworldx or 0)}
wrappedmemories[#wrappedmemories + 1] = {'pirates.run_displayform', mem.id, {'', mem.name .. ', ', CoreData.difficulty_options[mem.difficulty_option].text, ', [item=light-armor]' .. count .. CoreData.capacity_options[mem.capacity_option].text2 .. ', [item=rail] ' .. (mem.overworldx or 0)}}
-- wrappedmemories[#wrappedmemories + 1] = {'pirates.run_displayform', mem.id, mem.name, Utils.spritepath_to_richtext(CoreData.difficulty_options[mem.difficulty_option].icon), count, CoreData.capacity_options[mem.capacity_option].text2, ' [item=rail] ', mem.overworldx or 0}
end
GuiCommon.update_listbox(flow.ongoing_runs.body.ongoing_runs_listbox, wrappedmemories)
@ -586,7 +587,7 @@ function Public.click(event)
-- local difficulty_option = flow.proposals.body.proposal_maker.body.options.difficulty.difficulty.slider.slider_value
-- local mode_option = flow.proposals.body.proposal_maker.body.options.mode.mode.switch.switch_state
if (not proposal_name) or (proposal_name == '') then proposal_name = 'NoName' end
if (not proposal_name) or (proposal_name == '') then proposal_name = {'pirates.default_crew_name'} end
-- make name unique
-- local unique, changed = true, false

@ -1,4 +1,7 @@
-- Adapted from mountain_fortress_v3 highscores.lua
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- == This code is mostly a fork of the file from Mountain Fortress
local Event = require 'utils.event'
local Global = require 'utils.global'
@ -22,8 +25,6 @@ local score_key_debug = 'pirate_ship_scores_debug'
local score_key_modded = 'pirate_ship_scores_modded'
-- == This code is mostly a fork of the file from Mountain Fortress
local Public = {}
local insert = table.insert
@ -496,7 +497,7 @@ local function score_gui(data)
local n = entry.completion_time > 0 and Utils.time_mediumform(entry.completion_time or 0) or 'N/A'
local l = entry.leagues_travelled > 0 and entry.leagues_travelled or '?'
local v = entry.version and entry.version or '?'
local d = entry.difficulty > 0 and CoreData.get_difficulty_name_from_value(entry.difficulty) or '?'
local d = entry.difficulty > 0 and CoreData.difficulty_options[CoreData.get_difficulty_option_from_value(entry.difficulty)].text or '?'
local c = entry.max_players > 0 and entry.max_players or '?'
local line = {
{caption = entry.name, color = special_color},
@ -504,7 +505,7 @@ local function score_gui(data)
{caption = tostring(n)},
{caption = tostring(l)},
{caption = tostring(v)},
{caption = tostring(d)},
{caption = d},
{caption = tostring(c)},
}
local default_color = {r = 0.9, g = 0.9, b = 0.9}

@ -1,3 +1,4 @@
-- by mewmew
-- modified by Gerkiz

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Math = require 'maps.pirates.math'
-- local Memory = require 'maps.pirates.memory'
@ -212,7 +214,7 @@ function Public.wooden_chest_loot()
local num = 1
return Public.chest_loot(num,
Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * Common.game_completion_progress())) --enforce 0 to 1
Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * Common.game_completion_progress())
)
end
@ -220,7 +222,7 @@ function Public.iron_chest_loot()
local num = 2
local loot = Public.chest_loot(num,
Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * (5/100 + Common.game_completion_progress())) ) --enforce 0 to 1
Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * (5/100 + Common.game_completion_progress()))
) --reward higher difficulties with better loot
loot[#loot + 1] = {name = 'coin', count = Math.random(500,1500)}
@ -231,7 +233,7 @@ function Public.covered_wooden_chest_loot()
local num = 2
local loot = Public.chest_loot(num,
Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * (18/100 + Common.game_completion_progress()) )) --enforce 0 to 1
Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * (18/100 + Common.game_completion_progress()))
) --reward higher difficulties with better loot
return loot
@ -248,7 +250,7 @@ end
function Public.covered_wooden_chest_loot_2()
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.chest_loot_data_raw), 2,
Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * (10/100 + Common.game_completion_progress()))))
Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * (10/100 + Common.game_completion_progress())))
end
function Public.stone_furnace_loot()
@ -263,7 +265,7 @@ function Public.storage_tank_fluid_loot(force_type)
ret = {name = 'crude-oil', amount = Math.random(3000, 12500)}
elseif force_type == 'petroleum-gas' then
ret = {name = 'petroleum-gas', amount = Math.random(1500, 7500)}
elseif rng < 6 then
elseif rng <= 6 then
ret = {name = 'crude-oil', amount = Math.random(1500, 4500)}
elseif rng == 7 then
ret = {name = 'light-oil', amount = Math.random(1500, 3500)}
@ -321,7 +323,7 @@ function Public.maze_camp_loot()
if Math.random(10) <= 7 then
return {Public.random_plates()}
else
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.chest_loot_data_raw), 1, Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * (15/100 + Common.game_completion_progress()))))
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.chest_loot_data_raw), 1, Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * (15/100 + Common.game_completion_progress())))
end
end
@ -337,7 +339,7 @@ Public.maze_lab_loot_data_raw = {
}
function Public.maze_lab_loot()
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.maze_lab_loot_data_raw), 1, Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * (Common.game_completion_progress()))))
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.maze_lab_loot_data_raw), 1, Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * (Common.game_completion_progress())))
end
Public.maze_treasure_data_raw = {
@ -407,7 +409,7 @@ function Public.maze_treasure_loot()
if Math.random(5) == 1 then
return {Public.random_plates(8)}
else
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.maze_treasure_data_raw), 1, Math.max(0,Math.min(1, Math.sloped(Common.difficulty_scale(),1/2) * (Common.game_completion_progress()))))
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.maze_treasure_data_raw), 1, Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * (Common.game_completion_progress())))
end
end
@ -456,7 +458,7 @@ Public.dredger_loot_raw = {
}
function Public.dredger_loot()
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.dredger_loot_raw), 1, Math.max(0,Math.min(1, Common.game_completion_progress())))
return Common.raffle_from_processed_loot_data(Common.processed_loot_data(Public.dredger_loot_raw), 1, Math.clamp(0, 1, Common.game_completion_progress()))
end
return Public

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
--[[
Pirate Ship is maintained by thesixthroc and hosted by Comfy.
@ -129,10 +130,6 @@ local function on_init()
-- Delay.global_add(Delay.global_enum.PLACE_LOBBY_JETTY_AND_BOATS)
Task.set_timeout_in_ticks(2, jetty_delayed, {})
if _DEBUG then
game.print('Debug mode on. Use /go to get started (sometimes crashes)')
end
end
local event = require 'utils.event'
@ -147,55 +144,114 @@ local function crew_tick()
local destination = Common.current_destination()
local tick = game.tick
PiratesApiOnTick.boat_movement_tick(5) --arguments are tick intervals
-- PiratesApiOnTick.parrot_tick(5)
if tick % 10 == 0 then
PiratesApiOnTick.prevent_disembark(10)
PiratesApiOnTick.prevent_unbarreling_off_ship(10)
end
if memory.age and memory.overworldx and memory.overworldx > 0 then
memory.age = memory.age + 5
end
if memory.real_age then
memory.real_age = memory.real_age + 5
end
if tick % 60 == 0 then
PiratesApiOnTick.captain_warn_afk(60)
end
if tick % Common.loading_interval == 0 then
PiratesApiOnTick.loading_update(Common.loading_interval)
end
PiratesApiOnTick.boat_movement_tick(5) --arguments are tick intervals
-- PiratesApiOnTick.parrot_tick(5)
if tick % 5 == 0 then
PiratesApiOnTick.quest_progress_tick(5)
end
if tick % 5 == 0 then
PiratesApiOnTick.strobe_player_colors(5)
end
PiratesApiOnTick.quest_progress_tick(5)
PiratesApiOnTick.strobe_player_colors(5)
if tick % 10 == 0 then
PiratesApiOnTick.prevent_disembark(10)
PiratesApiOnTick.prevent_unbarreling_off_ship(10)
PiratesApiOnTick.shop_ratelimit_tick(10)
end
if tick % 30 == 0 then
PiratesApiOnTick.silo_update(30)
end
if tick % 60 == 0 then
PiratesApiOnTick.ship_deplete_fuel(60)
end
if tick % 10 == 0 then
PiratesApiOnTick.pick_up_tick(10)
end
QuestStructures.tick_quest_structure_entry_price_check(10)
PiratesApiOnTick.update_boat_stored_resources(10)
if tick % 60 == 0 then
if memory.boat and memory.boat.state == Structures.Boats.enum_state.ATSEA_SAILING then
PiratesApiOnTick.crowsnest_natural_move(120)
if tick % 30 == 0 then
PiratesApiOnTick.silo_update(30)
PiratesApiOnTick.buried_treasure_check(30)
ClassPiratesApiOnTick.update_character_properties(30)
ClassPiratesApiOnTick.class_update_auxiliary_data(30)
ClassPiratesApiOnTick.class_renderings(30)
if tick % 60 == 0 then
PiratesApiOnTick.captain_warn_afk(60)
PiratesApiOnTick.ship_deplete_fuel(60)
if memory.boat and memory.boat.state == Structures.Boats.enum_state.ATSEA_SAILING then
PiratesApiOnTick.crowsnest_natural_move(60)
end
PiratesApiOnTick.slower_boat_tick(60)
PiratesApiOnTick.raft_raids(60)
PiratesApiOnTick.place_cached_structures(60)
if destination.dynamic_data.timer then
destination.dynamic_data.timer = destination.dynamic_data.timer + 1
end
if memory.captain_acceptance_timer then
memory.captain_acceptance_timer = memory.captain_acceptance_timer - 1
if memory.captain_acceptance_timer == 0 then
Roles.assign_captain_based_on_priorities()
end
end
if memory.captain_accrued_time_data and memory.playerindex_captain and memory.overworldx and memory.overworldx > 0 and memory.overworldx < CoreData.victory_x then --only count time in the 'main game'
local player = game.players[memory.playerindex_captain]
if player and player.name then
if (not memory.captain_accrued_time_data[player.name]) then memory.captain_accrued_time_data[player.name] = 0 end
memory.captain_accrued_time_data[player.name] = memory.captain_accrued_time_data[player.name] + 1
end
end
if destination.dynamic_data.time_remaining and destination.dynamic_data.time_remaining > 0 then
destination.dynamic_data.time_remaining = destination.dynamic_data.time_remaining - 1
if destination.dynamic_data.time_remaining == 0 then
if memory.boat and memory.boat.surface_name then
local surface_name_decoded = Surfaces.SurfacesCommon.decode_surface_name(memory.boat.surface_name)
local type = surface_name_decoded.type
if type == Surfaces.enum.ISLAND then
Progression.retreat_from_island(false)
elseif type == Surfaces.enum.DOCK then
Progression.undock_from_dock(false)
end
end
end
end
if tick % 120 == 0 then
Ai.Tick_actions(120)
if tick % 240 == 0 then
PiratesApiOnTick.check_all_spawners_dead(240)
if memory.max_players_recorded then
local count_now = #Common.crew_get_crew_members()
if count_now and count_now > memory.max_players_recorded then
memory.max_players_recorded = count_now
end
end
PiratesApiOnTick.Kraken_Destroyed_Backup_check(240)
PiratesApiOnTick.LOS_tick(240)
end
end
if tick % 300 == 0 then
PiratesApiOnTick.periodic_free_resources(300)
PiratesApiOnTick.update_recentcrewmember_list(300)
if tick % 1800 == 0 then
PiratesApiOnTick.transfer_pollution(1800)
if tick % 3600 == 0 then
PiratesApiOnTick.prune_offline_characters_list(3600)
end
end
end
if tick % 420 == 0 then
ClassPiratesApiOnTick.class_rewards_tick(420)
end
end
end
end
@ -211,123 +267,10 @@ local function crew_tick()
end
end
if tick % 60 == 0 then
PiratesApiOnTick.slower_boat_tick(60)
if tick % Common.loading_interval == 0 then
PiratesApiOnTick.loading_update(Common.loading_interval)
end
if tick % 10 == 0 then
PiratesApiOnTick.update_boat_stored_resources(10)
end
if tick % 10 == 0 then
QuestStructures.tick_quest_structure_entry_price_check(10)
end
if tick % 30 == 0 then
PiratesApiOnTick.buried_treasure_check(30)
end
if tick % 60 == 0 then
PiratesApiOnTick.raft_raids(60)
end
if tick % 60 == 0 then
PiratesApiOnTick.place_cached_structures(60)
end
if tick % 240 == 0 then
PiratesApiOnTick.check_all_spawners_dead(240)
end
if tick % 60 == 0 then
if destination.dynamic_data.timer then
destination.dynamic_data.timer = destination.dynamic_data.timer + 1
end
if memory.captain_acceptance_timer then
memory.captain_acceptance_timer = memory.captain_acceptance_timer - 1
if memory.captain_acceptance_timer == 0 then
Roles.assign_captain_based_on_priorities()
end
end
if memory.captain_accrued_time_data and memory.playerindex_captain and memory.overworldx and memory.overworldx > 0 and memory.overworldx < CoreData.victory_x then --only count time in the 'main game'
local player = game.players[memory.playerindex_captain]
if player and player.name then
if (not memory.captain_accrued_time_data[player.name]) then memory.captain_accrued_time_data[player.name] = 0 end
memory.captain_accrued_time_data[player.name] = memory.captain_accrued_time_data[player.name] + 1
end
end
if destination.dynamic_data.time_remaining and destination.dynamic_data.time_remaining > 0 then
destination.dynamic_data.time_remaining = destination.dynamic_data.time_remaining - 1
if destination.dynamic_data.time_remaining == 0 then
if memory.boat and memory.boat.surface_name then
local surface_name_decoded = Surfaces.SurfacesCommon.decode_surface_name(memory.boat.surface_name)
local type = surface_name_decoded.type
if type == Surfaces.enum.ISLAND then
Progression.retreat_from_island(false)
elseif type == Surfaces.enum.DOCK then
Progression.undock_from_dock(false)
end
end
end
end
end
if tick % 240 == 0 then
if memory.max_players_recorded then
local count_now = #Common.crew_get_crew_members()
if count_now and count_now > memory.max_players_recorded then
memory.max_players_recorded = count_now
end
end
end
if tick % 240 == 0 then
PiratesApiOnTick.Kraken_Destroyed_Backup_check(240)
end
if tick % 300 == 0 then
PiratesApiOnTick.periodic_free_resources(300)
end
if tick % 30 == 0 then
ClassPiratesApiOnTick.update_character_properties(30)
ClassPiratesApiOnTick.class_update_auxiliary_data(30)
ClassPiratesApiOnTick.class_renderings(30)
end
if tick % 120 == 0 then
Ai.Tick_actions(120)
end
if tick % 240 == 0 then
PiratesApiOnTick.LOS_tick(240)
end
if tick % (60 * Balance.class_reward_tick_rate_in_seconds) == 0 then
ClassPiratesApiOnTick.class_rewards_tick(60 * Balance.class_reward_tick_rate_in_seconds)
end
if tick % 300 == 0 then
PiratesApiOnTick.update_recentcrewmember_list(300)
end
if tick % 1800 == 0 then
PiratesApiOnTick.transfer_pollution(1800)
end
if tick % 3600 == 0 then
PiratesApiOnTick.prune_offline_characters_list(3600)
end
-- if tick % (60*60*60) == 0 then
-- Parrot.parrot_say_tip()
-- end
if memory.crew_disband_tick then
if memory.crew_disband_tick < tick then
memory.crew_disband_tick = nil

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
@ -20,7 +22,6 @@ Public.round = math.round
--- SCALING CURVES ---
function Public.sloped(x, slope)
@ -39,6 +40,12 @@ end
-- exponent -1.2 -> {5.28, 2.30, 1.41, 1.00, 0.61, 0.27, 0.14}
function Public.clamp(min, max, number)
return Public.min(max, Public.max(min, number))
end
function Public.sgn(number)
return number > 0 and 1 or (number == 0 and 0 or -1)
end
@ -48,9 +55,9 @@ function Public.length(vec)
end
function Public.slopefromto(x, from, to)
return Public.max(0,Public.min(1,
(x - from) / (to - from)
))
return Public.clamp(0, 1,
(x - from) / (to - from)
)
end
function Public.distance(vec1, vec2)

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Global = require 'utils.global'
-- local CoreData = require 'maps.pirates.coredata'

@ -1,6 +1,7 @@
local Public = {}
-- no longer using the below code
Public.encoding = [[!#$%&'()*+'-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ/^_`abcdefghijklmnopqrstuvwxyz{}|~]]
Public.encoding_length = 91
Public.enc = {}

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Balance = require 'maps.pirates.balance'
-- local Memory = require 'maps.pirates.memory'

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
@ -423,14 +424,14 @@ function Public.generate_overworld_destination(p)
local x = Crowsnest.platformrightmostedge + dest.overworld_position.x
local y = dest.overworld_position.y
if dest.static_params.upgrade_for_sale then
local display_form = Upgrades.crowsnest_display_form[dest.static_params.upgrade_for_sale]
local display_form = {'', Upgrades.crowsnest_display_form[dest.static_params.upgrade_for_sale], ':'}
if not dest.dynamic_data.crowsnest_renderings then
dest.dynamic_data.crowsnest_renderings = {}
end
dest.dynamic_data.crowsnest_renderings.base_text_rendering = rendering.draw_text{
text = display_form .. ':',
text = display_form,
surface = surface,
target = {x = x + 5.5, y = y + 2.5},
color = CoreData.colors.renderingtext_green,
@ -538,7 +539,7 @@ function Public.ensure_lane_generated_up_to(lane_yvalue, x)
for _, dest in pairs(memory.destinations) do
if dest.static_params.upgrade_for_sale and dest.dynamic_data.crowsnest_renderings then
if rendering.is_valid(dest.dynamic_data.crowsnest_renderings.base_text_rendering) then
rendering.set_text(dest.dynamic_data.crowsnest_renderings.base_text_rendering, Upgrades.crowsnest_display_form[dest.static_params.upgrade_for_sale] .. ':')
rendering.set_text(dest.dynamic_data.crowsnest_renderings.base_text_rendering, {'', Upgrades.crowsnest_display_form[dest.static_params.upgrade_for_sale], ':'})
end
for rendering_name, r in pairs(dest.dynamic_data.crowsnest_renderings) do
if type(r) == 'table' and r.text_rendering and rendering.is_valid(r.text_rendering) then

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Math = require 'maps.pirates.math'
-- local Memory = require 'maps.pirates.memory'

File diff suppressed because one or more lines are too long

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
@ -519,6 +521,43 @@ function Public.undock_from_dock(manual)
end
function Public.at_sea_begin_to_set_sail()
local memory = Memory.get_crew_memory()
local boat = memory.boat
boat.state = Boats.enum_state.ATSEA_SAILING
script.raise_event(CustomEvents.enum['update_crew_fuel_gui'], {})
Crew.summon_crew()
local force = memory.force
if not (force and force.valid) then return end
Common.notify_force(force, {'pirates.ship_set_off_to_next_island'})
end
local parrot_set_sail_advice =
Token.register(
function(data)
local crew_id = data.crew_id
Memory.set_working_id(crew_id)
local memory = Memory.get_crew_memory()
if not (memory.id and memory.id > 0) then return end --check if crew disbanded
if memory.game_lost then return end
if memory.boat and memory.boat.state and memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL then
Common.parrot_speak(memory.force, {'pirates.parrot_set_sail_advice'})
end
end
)
function Public.go_from_currentdestination_to_sea()
local memory = Memory.get_crew_memory()
@ -538,23 +577,25 @@ function Public.go_from_currentdestination_to_sea()
if memory.overworldx == 0 and memory.boat then
local difficulty_name = CoreData.get_difficulty_name_from_value(memory.difficulty)
if difficulty_name == CoreData.difficulty_options[#CoreData.difficulty_options].text then
local difficulty_name = CoreData.get_difficulty_option_informal_name_from_value(memory.difficulty)
if difficulty_name == 'nightmare' then
Boats.upgrade_chests(boat, 'steel-chest')
Hold.upgrade_chests(1, 'steel-chest')
Crowsnest.upgrade_chests('steel-chest')
Common.parrot_speak(memory.force, {'pirates.parrot_hard_praise'})
elseif difficulty_name ~= CoreData.difficulty_options[1].text then
elseif difficulty_name ~= 'easy' then
Boats.upgrade_chests(boat, 'iron-chest')
Hold.upgrade_chests(1, 'iron-chest')
Crowsnest.upgrade_chests('iron-chest')
Common.parrot_speak(memory.force, {'pirates.parrot_normal_praise'})
Task.set_timeout_in_ticks(60 * 10, parrot_set_sail_advice, {crew_id = memory.id})
end
end
memory.boat.state = Boats.enum_state.ATSEA_SAILING
memory.boat.state = Boats.enum_state.ATSEA_WAITING_TO_SAIL
memory.boat.speed = 0
memory.boat.position = new_boatposition
memory.boat.surface_name = seaname

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'
@ -210,10 +211,10 @@ function Public.initialise_worms_quest()
if Common.difficulty_scale() < 1 then needed = Math.max(1, needed - 3) end
if Common.difficulty_scale() > 1 then needed = Math.max(1, needed + 2) end
local difficulty_name = CoreData.get_difficulty_name_from_value(Common.difficulty_scale())
if difficulty_name == CoreData.difficulty_options[1].text then
local difficulty_name = CoreData.get_difficulty_option_informal_name_from_value(Common.difficulty_scale())
if difficulty_name == 'easy' then
needed = Math.max(1, needed - 3)
elseif difficulty_name ~= CoreData.difficulty_options[2].text then
elseif difficulty_name ~= 'normal' then
needed = Math.max(1, needed + 2)
end

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Math = require 'maps.pirates.math'
local Public = {}

@ -1,3 +1,4 @@
-- data:extend(
-- {
-- {

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Balance = require 'maps.pirates.balance'
local _inspect = require 'utils.inspect'.inspect
@ -92,8 +94,8 @@ Public.class_unlocks = {
Public.class_purchase_requirement = {
[enum.MASTER_ANGLER] = enum.FISHERMAN,
-- [enum.WOOD_LORD] = enum.LUMBERJACK,
-- [enum.CHIEF_EXCAVATOR] = enum.PROSPECTOR,
[enum.WOOD_LORD] = enum.LUMBERJACK,
[enum.CHIEF_EXCAVATOR] = enum.PROSPECTOR,
[enum.HATAMOTO] = enum.SAMURAI,
[enum.DREDGER] = enum.MASTER_ANGLER,
}
@ -110,10 +112,10 @@ function Public.initial_class_pool()
enum.SAMURAI,
-- enum.MERCHANT, --not interesting, breaks coin economy
enum.BOATSWAIN,
enum.PROSPECTOR,
-- enum.PROSPECTOR, --lumberjack is just more fun
enum.LUMBERJACK,
enum.IRON_LEG,
-- enum.SMOLDERING,
-- enum.SMOLDERING, --tedious
enum.GOURMET,
}
end
@ -262,7 +264,7 @@ 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.max(0.2, Math.min(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
@ -274,6 +276,24 @@ local function class_on_player_used_capsule(event)
end
end
function Public.lumberjack_bonus_items(give_table)
local memory = Memory.get_crew_memory()
if Math.random(Public.every_nth_tree_gives_coins) == 1 then
local a = 12
give_table[#give_table + 1] = {name = 'coin', count = a}
memory.playtesting_stats.coins_gained_by_trees_and_rocks = memory.playtesting_stats.coins_gained_by_trees_and_rocks + a
elseif Math.random(2) == 1 then
if Math.random(5) == 1 then
give_table[#give_table + 1] = {name = 'copper-ore', count = 1}
else
give_table[#give_table + 1] = {name = 'iron-ore', count = 1}
end
end
end
local event = require 'utils.event'
event.add(defines.events.on_player_used_capsule, class_on_player_used_capsule)

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Session = require 'utils.datastore.session_data'
local Antigrief = require 'utils.antigrief'
@ -421,7 +422,7 @@ function Public.captain_tax(captain_index)
if inv and inv.valid then
for _, i in pairs(items_to_req) do
local amount = inv.get_item_count(i)
if i == 'coin' then amount = Math.floor(amount/10) end
if i == 'coin' then amount = Math.floor(amount/100*Common.coin_tax_percentage) end
if amount and amount > 0 then
inv.remove{name=i, count=amount}
captain_inv.insert{name=i, count=amount}

@ -36,7 +36,7 @@ function Public.class_update_auxiliary_data(tickinterval)
local inv = player.character.get_inventory(defines.inventory.character_main)
if inv and inv.valid then
local count = inv.get_item_count('iron-ore')
if count and count >= 3000 then
if count and count >= Balance.iron_leg_iron_ore_required then
check = true
end
end
@ -208,7 +208,7 @@ function Public.update_character_properties(tickinterval)
local speed_boost = Balance.base_extra_character_speed
if memory.speed_boost_characters and memory.speed_boost_characters[player_index] then
speed_boost = speed_boost + 0.85
speed_boost = speed_boost + Balance.respawn_speed_boost
else
if memory.classes_table and memory.classes_table[player_index] then
local class = memory.classes_table[player_index]
@ -282,11 +282,11 @@ function Public.class_rewards_tick(tickinterval)
local hold_bool = surfacedata.type == Surfaces.enum.HOLD
if class == Classes.enum.DECKHAND and on_ship_bool and (not hold_bool) then
Classes.class_ore_grant(player, 2)
Classes.class_ore_grant(player, Balance.deckhand_ore_grant_multiplier)
elseif class == Classes.enum.BOATSWAIN and hold_bool then
Classes.class_ore_grant(player, 4)
Classes.class_ore_grant(player, Balance.boatswain_ore_grant_multiplier)
elseif class == Classes.enum.SHORESMAN and (not on_ship_bool) then
Classes.class_ore_grant(player, 2)
Classes.class_ore_grant(player, Balance.shoresman_ore_grant_multiplier)
elseif class == Classes.enum.QUARTERMASTER then
local nearby_players = #player.surface.find_entities_filtered{position = player.position, radius = Balance.quartermaster_range, name = 'character'}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'
@ -46,11 +48,13 @@ Public.offers_default = {
{price = {{'coin', 720}}, offer = {type = 'give-item', item = 'gate', count = 10}},
{price = {{'coin', 120}}, offer = {type = 'give-item', item = 'storage-tank', count = 4}},
{price = {{'coin', 240}}, offer = {type = 'give-item', item = 'big-electric-pole', count = 8}},
{price = {{'coin', 240}}, offer = {type = 'give-item', item = 'steel-furnace', count = 4}},
{price = {{'coin', 360}}, offer = {type = 'give-item', item = 'stack-inserter', count = 3}},
{price = {{'coin', 900}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 9}},
{price = {{'coin', 960}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}},
{price = {{'coin', 1800}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 5}},
{price = {{'coin', 960}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}},
{price = {{'coin', 1800}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 6}},
{price = {{'coin', 1800}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 6}},
{price = {{'coin', 1800}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 6}},
{price = {{'coin', 1800}}, offer = {type = 'give-item', item = 'flying-robot-frame', count = 1}},
}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'
@ -183,7 +185,7 @@ function Public.create_dock_markets(surface, p)
-- new class offerings:
if destination.static_params.class_for_sale then
e.add_market_item{price={{'coin', Balance.class_cost()}}, offer={type="nothing", effect_description = {'pirates.market_description_purchase_class', Classes.display_form(destination.static_params.class_for_sale)}}}
e.add_market_item{price={{'coin', Balance.class_cost(true)}}, offer={type="nothing", effect_description = {'pirates.market_description_purchase_class', Classes.display_form(destination.static_params.class_for_sale)}}}
-- destination.dynamic_data.market_class_offer_rendering = rendering.draw_text{
-- text = 'Class available: ' .. Classes.display_form(destination.static_params.class_for_sale),

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Roles = require 'maps.pirates.roles.roles'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -25,12 +27,13 @@ Public[enum.RAFTLARGE] = require 'maps.pirates.structures.boats.raft_large.raft_
Public[enum.MERCHANT] = require 'maps.pirates.structures.boats.merchant_1.merchant_1'
Public.enum = enum
local enum_state = {
ATSEA_SAILING = 'at_sea',
APPROACHING = 'approaching',
LANDED = 'landed',
RETREATING = 'retreating',
LEAVING_DOCK = 'leaving',
ATSEA_SAILING = 'at_sea',
ATSEA_LOADING_MAP = 'waiting_for_load',
ATSEA_WAITING_TO_SAIL = 'waiting_for_sail',
DOCKED = 'docked',
}
Public.enum_state = enum_state

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Data = require 'maps.pirates.structures.boats.merchant_1.data'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Data = require 'maps.pirates.structures.boats.raft.data'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Data = require 'maps.pirates.structures.boats.raft_large.data'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Data = require 'maps.pirates.structures.boats.sloop.data'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
-- local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Data = require 'maps.pirates.structures.island_structures.mattisso.data'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
local CoreData = require 'maps.pirates.coredata'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Data = require 'maps.pirates.structures.island_structures.roc.data'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
Public.step1 = {

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -93,7 +95,7 @@ function Public.create_step2_entities()
end
if destination.static_params.class_for_sale then
quest_structure_data.market.add_market_item{price={{'coin', Balance.class_cost()}}, offer={type="nothing", effect_description = {'pirates.market_description_purchase_class', Classes.display_form(destination.static_params.class_for_sale)}}}
quest_structure_data.market.add_market_item{price={{'coin', Balance.class_cost(false)}}, offer={type="nothing", effect_description = {'pirates.market_description_purchase_class', Classes.display_form(destination.static_params.class_for_sale)}}}
-- destination.dynamic_data.market_class_offer_rendering = rendering.draw_text{
-- text = 'Class available: ' .. Classes.display_form(destination.static_params.class_for_sale),
@ -259,7 +261,7 @@ Public.entry_price_data_raw = {-- choose things which make interesting minifacto
}
function Public.entry_price()
local lambda = Math.max(Math.min(Math.sloped(Common.difficulty_scale(),1/2) * Common.game_completion_progress(), 1), 0)
local lambda = Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * Common.game_completion_progress())
local item = Raffle.LambdaRaffle(Public.entry_price_data_raw, lambda)

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
Public.step1 = {

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -83,7 +85,7 @@ function Public.create_step2_entities()
end
if destination.static_params.class_for_sale then
quest_structure_data.market.add_market_item{price={{'coin', Balance.class_cost()}}, offer={type="nothing", effect_description = {'pirates.market_description_purchase_class', Classes.display_form(destination.static_params.class_for_sale)}}}
quest_structure_data.market.add_market_item{price={{'coin', Balance.class_cost(false)}}, offer={type="nothing", effect_description = {'pirates.market_description_purchase_class', Classes.display_form(destination.static_params.class_for_sale)}}}
-- destination.dynamic_data.market_class_offer_rendering = rendering.draw_text{
-- text = 'Class available: ' .. Classes.display_form(destination.static_params.class_for_sale),
@ -221,7 +223,7 @@ Public.entry_price_data_raw = {
maxLambda = 1,
shape = false,
base_amount = 250,
raw_materials = {}
raw_materials = {{name = 'stone', count = 1250}}
},
['advanced-circuit'] = {
overallWeight = 1,
@ -258,7 +260,7 @@ Public.entry_price_data_raw = {
}
function Public.entry_price()
local lambda = Math.max(Math.min(Math.sloped(Common.difficulty_scale(),1/2) * Common.game_completion_progress(), 1), 0)
local lambda = Math.clamp(0, 1, Math.sloped(Common.difficulty_scale(),1/2) * Common.game_completion_progress())
local item = Raffle.LambdaRaffle(Public.entry_price_data_raw, lambda)

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Public = {}
Public.covered1 = {

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -7,6 +9,7 @@ local Loot = require 'maps.pirates.loot'
-- local Utils = require 'maps.pirates.utils_local'
local _inspect = require 'utils.inspect'.inspect
--@add stuff from new quest structures to this file?
local Public = {}
local enum = {
BOATS = 'Boats',

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Math = require 'maps.pirates.math'
@ -97,7 +99,7 @@ Public.Data.surfacename_rendering_pos = {x = -0.5, y = -15}
Public.cabin_shop_data = {
{
price = {{'coin', 400}, {'coal', 20}},
price = {{'coin', 400}, {'coal', 20}, {'iron-plate', 10}},--should be inefficient on resources to merely buy arty to shoot nests
offer = {type='give-item', item = 'artillery-shell', count = 5},
},
{
@ -108,10 +110,11 @@ Public.cabin_shop_data = {
price = {{'coin', 2000}, {'stone-brick', 30}},
offer = {type='give-item', item = 'uranium-238', count = 10},
},
{
price = {{'coin', 25}},
offer = {type='nothing', effect_description={'pirates.market_description_extra_time_at_sea'}},
},
--disabled now that we can wait after any destination:
-- {
-- price = {{'coin', 25}},
-- offer = {type='nothing', effect_description={'pirates.market_description_extra_time_at_sea'}},
-- },
}
function Public.get_cabin_surface_name()
@ -264,7 +267,7 @@ function Public.create_cabin_surface()
end
rendering.draw_text{
text = 'Captain\'s Cabin',
text = {'pirates.surface_label_cabin'},
surface = surface,
target = Public.Data.surfacename_rendering_pos,
color = CoreData.colors.renderingtext_yellow,

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
-- local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
-- local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Balance = require 'maps.pirates.balance'
@ -250,7 +252,7 @@ function Public.create_crowsnest_surface()
-- end
memory.crowsnest_surfacename_rendering = rendering.draw_text{
text = 'Crow\'s Nest',
text = {'pirates.surface_label_crowsnest'},
surface = surface,
target = Public.Data.surfacename_rendering_pos,
color = CoreData.colors.renderingtext_yellow,

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
-- local Math = require 'maps.pirates.math'
@ -171,7 +173,7 @@ function Public.create_hold_surface(nth)
scale = 1,
font = 'default-game',
alignment = alignment,
text = 'inactive',
text = {'pirates.hold_connections_label_inactive'},
}
end
@ -209,10 +211,10 @@ function Public.create_hold_surface(nth)
end
if subtype == enum.SECONDARY then
local difficulty_name = CoreData.get_difficulty_name_from_value(memory.difficulty)
if difficulty_name == CoreData.difficulty_options[#CoreData.difficulty_options].text then
local difficulty_name = CoreData.get_difficulty_option_informal_name_from_value(memory.difficulty)
if difficulty_name == 'nightmare' then
Public.upgrade_chests(nth, 'steel-chest')
elseif difficulty_name ~= CoreData.difficulty_options[1].text then
elseif difficulty_name ~= 'easy' then
Public.upgrade_chests(nth, 'iron-chest')
end
@ -221,7 +223,7 @@ function Public.create_hold_surface(nth)
if nth==1 then
memory.shiphold_rendering_1 = rendering.draw_text{
text = 'Ship\'s Hold',
text = {'pirates.surface_label_hold'},
surface = surface,
target = Public.Data.surfacename_rendering_pos,
color = CoreData.colors.renderingtext_yellow,
@ -232,11 +234,11 @@ function Public.create_hold_surface(nth)
else
if nth==2 then
if memory.shiphold_rendering_1 then
rendering.set_text(memory.shiphold_rendering_1, 'Ship\'s Hold: -1')
rendering.set_text(memory.shiphold_rendering_1, {'pirates.surface_label_hold_nth', -1})
end
end
rendering.draw_text{
text = 'Ship\'s Hold: -' .. nth,
text = {'pirates.surface_label_hold_nth', nth},
surface = surface,
target = Public.Data.surfacename_rendering_pos,
color = CoreData.colors.renderingtext_yellow,
@ -339,10 +341,10 @@ function Public.nth_hold_connect_linked_belts(nth) --assumes both are in standar
b1.connect_linked_belts(b2)
end
rendering.set_text(boat.hold_helper_renderings[nth][3], 'from -' .. nth-1)
rendering.set_text(boat.hold_helper_renderings[nth-1][3], 'to -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][4], 'from -' .. nth-1)
rendering.set_text(boat.hold_helper_renderings[nth-1][4], 'to -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][3], {'pirates.hold_connections_label_from', nth-1})
rendering.set_text(boat.hold_helper_renderings[nth-1][3], {'pirates.hold_connections_label_to', nth})
rendering.set_text(boat.hold_helper_renderings[nth][4], {'pirates.hold_connections_label_from', nth-1})
rendering.set_text(boat.hold_helper_renderings[nth-1][4], {'pirates.hold_connections_label_to', nth})
else
connections = {
{5,5},
@ -356,10 +358,10 @@ function Public.nth_hold_connect_linked_belts(nth) --assumes both are in standar
b1.connect_linked_belts(b2)
end
rendering.set_text(boat.hold_helper_renderings[nth][3], 'from -' .. nth-1)
rendering.set_text(boat.hold_helper_renderings[nth-1][3], 'to -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][4], 'from -' .. nth-1)
rendering.set_text(boat.hold_helper_renderings[nth-1][4], 'to -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][3], {'pirates.hold_connections_label_from', nth-1})
rendering.set_text(boat.hold_helper_renderings[nth-1][3], {'pirates.hold_connections_label_to', nth})
rendering.set_text(boat.hold_helper_renderings[nth][4], {'pirates.hold_connections_label_from', nth-1})
rendering.set_text(boat.hold_helper_renderings[nth-1][4], {'pirates.hold_connections_label_to', nth})
end
connections = {
{1,9},
@ -373,10 +375,10 @@ function Public.nth_hold_connect_linked_belts(nth) --assumes both are in standar
b1.connect_linked_belts(b2)
end
rendering.set_text(boat.hold_helper_renderings[nth][1], 'to -' .. 1)
rendering.set_text(boat.hold_helper_renderings[1][1], 'from -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][2], 'to -' .. 1)
rendering.set_text(boat.hold_helper_renderings[1][2], 'from -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][1], {'pirates.hold_connections_label_to', 1})
rendering.set_text(boat.hold_helper_renderings[1][1], {'pirates.hold_connections_label_from', nth})
rendering.set_text(boat.hold_helper_renderings[nth][2], {'pirates.hold_connections_label_to', 1})
rendering.set_text(boat.hold_helper_renderings[1][2], {'pirates.hold_connections_label_from', nth})
else
connections = {
{1,1},
@ -390,10 +392,10 @@ function Public.nth_hold_connect_linked_belts(nth) --assumes both are in standar
b1.connect_linked_belts(b2)
end
rendering.set_text(boat.hold_helper_renderings[nth][1], 'from -' .. nth-1)
rendering.set_text(boat.hold_helper_renderings[nth-1][1], 'to -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][2], 'from -' .. nth-1)
rendering.set_text(boat.hold_helper_renderings[nth-1][2], 'to -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][1], {'pirates.hold_connections_label_from', nth-1})
rendering.set_text(boat.hold_helper_renderings[nth-1][1], {'pirates.hold_connections_label_to', nth})
rendering.set_text(boat.hold_helper_renderings[nth][2], {'pirates.hold_connections_label_from', nth-1})
rendering.set_text(boat.hold_helper_renderings[nth-1][2], {'pirates.hold_connections_label_to', nth})
connections = {
{5,9},
@ -407,10 +409,10 @@ function Public.nth_hold_connect_linked_belts(nth) --assumes both are in standar
b1.connect_linked_belts(b2)
end
rendering.set_text(boat.hold_helper_renderings[nth][3], 'to -' .. 1)
rendering.set_text(boat.hold_helper_renderings[1][1], 'from -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][4], 'to -' .. 1)
rendering.set_text(boat.hold_helper_renderings[1][2], 'from -' .. nth)
rendering.set_text(boat.hold_helper_renderings[nth][3], {'pirates.hold_connections_label_to', 1})
rendering.set_text(boat.hold_helper_renderings[1][1], {'pirates.hold_connections_label_from', nth})
rendering.set_text(boat.hold_helper_renderings[nth][4], {'pirates.hold_connections_label_to', 1})
rendering.set_text(boat.hold_helper_renderings[1][2], {'pirates.hold_connections_label_from', nth})
end
end
end

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -143,7 +145,9 @@ function Public.spawn_quest_structure(destination, points_to_avoid)
for i = 1, 1 do
p = Hunt.mid_farness_position_1(args, points_to_avoid)
QuestStructures.initialise_cached_quest_structure(p, QuestStructures.choose_quest_structure_type())
if p then
QuestStructures.initialise_cached_quest_structure(p, QuestStructures.choose_quest_structure_type())
end
end
return p

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
local CoreData = require 'maps.pirates.coredata'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
-- local Common = require 'maps.pirates.common'
-- local Utils = require 'maps.pirates.utils_local'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,4 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Memory = require 'maps.pirates.memory'
local Math = require 'maps.pirates.math'
@ -169,14 +171,14 @@ function Public.destination_on_collide(destination)
local playercount = Common.activecrewcount()
local max_evo
local difficulty_name = CoreData.get_difficulty_name_from_value(Common.difficulty_scale())
if difficulty_name == CoreData.difficulty_options[1].text then
local difficulty_name = CoreData.get_difficulty_option_informal_name_from_value(Common.difficulty_scale())
if difficulty_name == 'easy' then
if memory.overworldx/40 < 20 then
max_evo = 0.9 - (20 - memory.overworldx/40) * 1/100
else
max_evo = 0.91 + (memory.overworldx/40 - 20) * 0.25/100
end
elseif difficulty_name == CoreData.difficulty_options[2].text then
elseif difficulty_name == 'normal' then
if memory.overworldx/40 < 15 then
max_evo = 0.9 - (15 - memory.overworldx/40) * 0.5/100
else
@ -346,7 +348,9 @@ function Public.destination_on_arrival(destination)
destination.static_params.class_for_sale = class_for_sale
local covered = Islands.spawn_quest_structure(destination, points_to_avoid)
points_to_avoid[#points_to_avoid + 1] = {x = covered.x, y = covered.y, r = 25}
if covered then
points_to_avoid[#points_to_avoid + 1] = {x = covered.x, y = covered.y, r = 25}
end
end
Islands.spawn_treasure_maps(destination, points_to_avoid)
@ -779,7 +783,7 @@ function Public.player_exit_crows_nest(player, player_relative_pos)
local memory = Memory.get_crew_memory()
local surface
if memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
if memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
surface = game.surfaces[SurfacesCommon.encode_surface_name(memory.id, 0, Public.enum.SEA, Public.Sea.enum.DEFAULT)]
else
surface = game.surfaces[Common.current_destination().surface_name]
@ -818,7 +822,7 @@ function Public.player_exit_hold(player, relative_pos)
local memory = Memory.get_crew_memory()
local surface
if memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
if memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
surface = game.surfaces[SurfacesCommon.encode_surface_name(memory.id, 0, Public.enum.SEA, Public.Sea.enum.DEFAULT)]
else
surface = game.surfaces[Common.current_destination().surface_name]
@ -856,7 +860,7 @@ function Public.player_exit_cabin(player, relative_pos)
local memory = Memory.get_crew_memory()
local surface
if memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
if memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_WAITING_TO_SAIL or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then
surface = game.surfaces[SurfacesCommon.encode_surface_name(memory.id, 0, Public.enum.SEA, Public.Sea.enum.DEFAULT)]
else
surface = game.surfaces[Common.current_destination().surface_name]

@ -1,3 +1,5 @@
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
local Math = require 'maps.pirates.math'
-- local _inspect = require 'utils.inspect'.inspect