From 6efbdc6ad13d9735253da161aa18238313ee4b90 Mon Sep 17 00:00:00 2001 From: Sense101 <67970865+Sense101@users.noreply.github.com> Date: Thu, 24 Jun 2021 17:39:50 +0100 Subject: [PATCH 01/11] Fix for cheating puzzles by quickly switching belts (#1226) * added the new splitter * Update base-en.yaml * adjusted how acceptor works to fix macro * fixed a minor bug * applied changes to the puzzle-editor-review script * minor cleanups --- src/js/core/config.js | 4 +-- src/js/game/components/goal_acceptor.js | 21 +++++++++----- src/js/game/hud/parts/puzzle_editor_review.js | 4 +-- src/js/game/systems/goal_acceptor.js | 22 +++++++------- src/js/game/systems/item_processor.js | 29 ++++++++++--------- 5 files changed, 45 insertions(+), 35 deletions(-) diff --git a/src/js/core/config.js b/src/js/core/config.js index b4f36af5..a4793384 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -72,8 +72,8 @@ export const globalConfig = { readerAnalyzeIntervalSeconds: 10, - goalAcceptorMinimumDurationSeconds: 5, - goalAcceptorsPerProducer: 4.5, + goalAcceptorItemsRequired: 10, + goalAcceptorsPerProducer: 5, puzzleModeSpeed: 3, puzzleMinBoundsSize: 2, puzzleMaxBoundsSize: 20, diff --git a/src/js/game/components/goal_acceptor.js b/src/js/game/components/goal_acceptor.js index 87c55501..485f385b 100644 --- a/src/js/game/components/goal_acceptor.js +++ b/src/js/game/components/goal_acceptor.js @@ -31,19 +31,26 @@ export class GoalAcceptorComponent extends Component { clear() { // the last items we delivered - /** @type {{ item: BaseItem; time: number; }[]} */ - this.deliveryHistory = []; + /** @type {{ item: BaseItem; time: number; }} */ + this.lastDelivery = null; + + this.currentDeliveredItems = 0; // Used for animations this.displayPercentage = 0; } - getRequiredDeliveryHistorySize() { + // clears items but doesn't instantly reset the progress bar + clearItems() { + this.lastDelivery = null; + + this.currentDeliveredItems = 0; + } + + getRequiredSecondsPerItem() { return ( - (globalConfig.puzzleModeSpeed * - globalConfig.goalAcceptorMinimumDurationSeconds * - globalConfig.beltSpeedItemsPerSecond) / - globalConfig.goalAcceptorsPerProducer + globalConfig.goalAcceptorsPerProducer / + (globalConfig.puzzleModeSpeed * globalConfig.beltSpeedItemsPerSecond) ); } } diff --git a/src/js/game/hud/parts/puzzle_editor_review.js b/src/js/game/hud/parts/puzzle_editor_review.js index 68f5360c..727006d6 100644 --- a/src/js/game/hud/parts/puzzle_editor_review.js +++ b/src/js/game/hud/parts/puzzle_editor_review.js @@ -216,8 +216,8 @@ export class HUDPuzzleEditorReview extends BaseHUDPart { if (!goalComp.item) { return T.puzzleMenu.validation.goalAcceptorNoItem; } - const required = goalComp.getRequiredDeliveryHistorySize(); - if (goalComp.deliveryHistory.length < required) { + const required = globalConfig.goalAcceptorItemsRequired; + if (goalComp.currentDeliveredItems < required) { return T.puzzleMenu.validation.goalAcceptorRateNotMet; } } diff --git a/src/js/game/systems/goal_acceptor.js b/src/js/game/systems/goal_acceptor.js index ff3f08f3..f7ac16a6 100644 --- a/src/js/game/systems/goal_acceptor.js +++ b/src/js/game/systems/goal_acceptor.js @@ -24,13 +24,15 @@ export class GoalAcceptorSystem extends GameSystemWithFilter { const entity = this.allEntities[i]; const goalComp = entity.components.GoalAcceptor; - // filter the ones which are no longer active, or which are not the same - goalComp.deliveryHistory = goalComp.deliveryHistory.filter( - d => - now - d.time < globalConfig.goalAcceptorMinimumDurationSeconds && d.item === goalComp.item - ); + if (!goalComp.lastDelivery) { + continue; + } - if (goalComp.deliveryHistory.length < goalComp.getRequiredDeliveryHistorySize()) { + if (now - goalComp.lastDelivery.time > goalComp.getRequiredSecondsPerItem()) { + goalComp.clearItems(); + } + + if (goalComp.currentDeliveredItems < globalConfig.goalAcceptorItemsRequired) { allAccepted = false; } } @@ -64,8 +66,8 @@ export class GoalAcceptorSystem extends GameSystemWithFilter { const staticComp = contents[i].components.StaticMapEntity; const item = goalComp.item; - const requiredItemsForSuccess = goalComp.getRequiredDeliveryHistorySize(); - const percentage = clamp(goalComp.deliveryHistory.length / requiredItemsForSuccess, 0, 1); + const requiredItemsForSuccess = globalConfig.goalAcceptorItemsRequired; + const percentage = clamp(goalComp.currentDeliveredItems / requiredItemsForSuccess, 0, 1); const center = staticComp.getTileSpaceBounds().getCenter().toWorldSpace(); if (item) { @@ -78,7 +80,7 @@ export class GoalAcceptorSystem extends GameSystemWithFilter { ); } - const isValid = item && goalComp.deliveryHistory.length >= requiredItemsForSuccess; + const isValid = item && goalComp.currentDeliveredItems >= requiredItemsForSuccess; parameters.context.translate(center.x, center.y); parameters.context.rotate((staticComp.rotation / 180) * Math.PI); @@ -90,7 +92,7 @@ export class GoalAcceptorSystem extends GameSystemWithFilter { // progress arc - goalComp.displayPercentage = lerp(goalComp.displayPercentage, percentage, 0.3); + goalComp.displayPercentage = lerp(goalComp.displayPercentage, percentage, 0.2); const startAngle = Math.PI * 0.595; const maxAngle = Math.PI * 1.82; diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index e06d4a21..3794473f 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -1,3 +1,4 @@ +import { globalConfig } from "../../core/config"; import { BaseItem } from "../base_item"; import { enumColorMixingResults, enumColors } from "../colors"; import { @@ -572,23 +573,23 @@ export class ItemProcessorSystem extends GameSystemWithFilter { const item = payload.items[0].item; const now = this.root.time.now(); + if (goalComp.item && !item.equals(goalComp.item)) { + goalComp.clearItems(); + } else { + goalComp.currentDeliveredItems = Math.min( + goalComp.currentDeliveredItems + 1, + globalConfig.goalAcceptorItemsRequired + ); + } + if (this.root.gameMode.getIsEditor()) { // while playing in editor, assign the item goalComp.item = payload.items[0].item; - goalComp.deliveryHistory.push({ - item, - time: now, - }); - } else { - // otherwise, make sure it is the same, otherwise reset - if (item.equals(goalComp.item)) { - goalComp.deliveryHistory.push({ - item, - time: now, - }); - } else { - goalComp.deliveryHistory = []; - } } + + goalComp.lastDelivery = { + item, + time: now, + }; } } From 1c23549b392acd8447f8ec31e03e6226b07a59c0 Mon Sep 17 00:00:00 2001 From: Sense101 <67970865+Sense101@users.noreply.github.com> Date: Thu, 24 Jun 2021 17:41:37 +0100 Subject: [PATCH 02/11] Added a button to clear all non fixed buildings in both modes (#1229) * added the new splitter * Update base-en.yaml * added clear buildings button to both game modes * Minor cleanups and added translation for new button --- .../ingame_hud/puzzle_editor_settings.scss | 9 +++++ src/css/ingame_hud/puzzle_play_settings.scss | 2 +- .../game/hud/parts/puzzle_editor_settings.js | 34 +++++++++++++++++-- src/js/game/hud/parts/puzzle_play_settings.js | 31 +++++++++++++++-- translations/base-en.yaml | 1 + 5 files changed, 70 insertions(+), 7 deletions(-) diff --git a/src/css/ingame_hud/puzzle_editor_settings.scss b/src/css/ingame_hud/puzzle_editor_settings.scss index 70d16123..9d093c42 100644 --- a/src/css/ingame_hud/puzzle_editor_settings.scss +++ b/src/css/ingame_hud/puzzle_editor_settings.scss @@ -57,6 +57,15 @@ } } } + + > .buildingsButton { + display: grid; + align-items: center; + @include S(margin-top, 4px); + > button { + @include SuperSmallText; + } + } } } } diff --git a/src/css/ingame_hud/puzzle_play_settings.scss b/src/css/ingame_hud/puzzle_play_settings.scss index 13e25c61..b53d0829 100644 --- a/src/css/ingame_hud/puzzle_play_settings.scss +++ b/src/css/ingame_hud/puzzle_play_settings.scss @@ -13,7 +13,7 @@ > .section { display: grid; - @include S(grid-gap, 10px); + @include S(grid-gap, 5px); grid-auto-flow: row; > button { diff --git a/src/js/game/hud/parts/puzzle_editor_settings.js b/src/js/game/hud/parts/puzzle_editor_settings.js index cf283a9b..bcd2c85c 100644 --- a/src/js/game/hud/parts/puzzle_editor_settings.js +++ b/src/js/game/hud/parts/puzzle_editor_settings.js @@ -9,6 +9,8 @@ import { makeDiv } from "../../../core/utils"; import { T } from "../../../translations"; import { StaticMapEntityComponent } from "../../components/static_map_entity"; import { BaseHUDPart } from "../base_hud_part"; +import { gMetaBuildingRegistry } from "../../../core/global_registries"; +import { MetaBlockBuilding } from "../../buildings/block"; const logger = createLogger("puzzle-editor"); @@ -43,8 +45,13 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart {
- +
+ +
+ +
+ ` ); @@ -53,14 +60,35 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart { bind(".zoneHeight .minus", () => this.modifyZone(0, -1)); bind(".zoneHeight .plus", () => this.modifyZone(0, 1)); bind("button.trim", this.trim); - bind("button.clear", this.clear); + bind("button.clearItems", this.clearItems); + bind("button.clearBuildings", this.clearBuildings); } } - clear() { + clearItems() { this.root.logic.clearAllBeltsAndItems(); } + clearBuildings() { + for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) { + const staticComp = entity.components.StaticMapEntity; + const signalComp = entity.components.ConstantSignal; + const goalComp = entity.components.GoalAcceptor; + + if ( + signalComp || + goalComp || + staticComp.getMetaBuilding().id === gMetaBuildingRegistry.findByClass(MetaBlockBuilding).id + ) { + continue; + } + + this.root.map.removeStaticEntity(entity); + this.root.entityMgr.destroyEntity(entity); + } + this.root.entityMgr.processDestroyList(); + } + trim() { // Now, find the center const buildings = this.root.entityMgr.entities.slice(); diff --git a/src/js/game/hud/parts/puzzle_play_settings.js b/src/js/game/hud/parts/puzzle_play_settings.js index 168c3de2..88034f72 100644 --- a/src/js/game/hud/parts/puzzle_play_settings.js +++ b/src/js/game/hud/parts/puzzle_play_settings.js @@ -1,6 +1,9 @@ +import { gMetaBuildingRegistry } from "../../../core/global_registries"; import { createLogger } from "../../../core/logging"; import { makeDiv } from "../../../core/utils"; import { T } from "../../../translations"; +import { MetaBlockBuilding } from "../../buildings/block"; +import { StaticMapEntityComponent } from "../../components/static_map_entity"; import { BaseHUDPart } from "../base_hud_part"; const logger = createLogger("puzzle-play"); @@ -17,19 +20,41 @@ export class HUDPuzzlePlaySettings extends BaseHUDPart { null, ["section"], ` - + + ` ); - bind("button.clear", this.clear); + bind("button.clearItems", this.clearItems); + bind("button.clearBuildings", this.clearBuildings); } } - clear() { + clearItems() { this.root.logic.clearAllBeltsAndItems(); } + clearBuildings() { + for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) { + const staticComp = entity.components.StaticMapEntity; + const signalComp = entity.components.ConstantSignal; + const goalComp = entity.components.GoalAcceptor; + + if ( + signalComp || + goalComp || + staticComp.getMetaBuilding().id === gMetaBuildingRegistry.findByClass(MetaBlockBuilding).id + ) { + continue; + } + + this.root.map.removeStaticEntity(entity); + this.root.entityMgr.destroyEntity(entity); + } + this.root.entityMgr.processDestroyList(); + } + initialize() { this.visible = true; } diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 80a6deb1..bf5a1890 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -632,6 +632,7 @@ ingame: zoneHeight: Height trimZone: Trim clearItems: Clear Items + clearBuildings: Clear Buildings share: Share report: Report From f7cc313ff4ccda53237cb05eb79440c312e754ff Mon Sep 17 00:00:00 2001 From: Sense101 <67970865+Sense101@users.noreply.github.com> Date: Thu, 24 Jun 2021 17:45:48 +0100 Subject: [PATCH 03/11] Add back copy/paste in puzzle mode. (#1230) * added the new splitter * Update base-en.yaml * added the new splitter Update changelog and update translation regarding 20 upgrade tiers, closes #907 * Update base-en.yaml * Added back copy/paste in puzzle mode * fixed rotating non-rotatable buildings as blueprints and made blocker non-rotatable --- src/js/game/blueprint.js | 7 +++++-- src/js/game/game_mode.js | 4 ++-- src/js/game/hud/parts/blueprint_placer.js | 14 +++++++++----- src/js/game/hud/parts/mass_selector.js | 15 +++++++++++++++ src/js/game/meta_building.js | 5 ++--- src/js/game/modes/puzzle.js | 8 ++++++-- 6 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/js/game/blueprint.js b/src/js/game/blueprint.js index 3e7cdaa6..a2aa7186 100644 --- a/src/js/game/blueprint.js +++ b/src/js/game/blueprint.js @@ -101,8 +101,11 @@ export class Blueprint { const entity = this.entities[i]; const staticComp = entity.components.StaticMapEntity; - staticComp.rotation = (staticComp.rotation + 90) % 360; - staticComp.originalRotation = (staticComp.originalRotation + 90) % 360; + if (staticComp.getMetaBuilding().getIsRotateable()) { + staticComp.rotation = (staticComp.rotation + 90) % 360; + staticComp.originalRotation = (staticComp.originalRotation + 90) % 360; + } + staticComp.origin = staticComp.origin.rotateFastMultipleOf90(90); } } diff --git a/src/js/game/game_mode.js b/src/js/game/game_mode.js index 5eca211a..bb60d8a6 100644 --- a/src/js/game/game_mode.js +++ b/src/js/game/game_mode.js @@ -166,8 +166,8 @@ export class GameMode extends BasicSerializableObject { } /** @returns {boolean} */ - getSupportsCopyPaste() { - return true; + getHasFreeCopyPaste() { + return false; } /** @returns {boolean} */ diff --git a/src/js/game/hud/parts/blueprint_placer.js b/src/js/game/hud/parts/blueprint_placer.js index 54e2e3b7..e006d24a 100644 --- a/src/js/game/hud/parts/blueprint_placer.js +++ b/src/js/game/hud/parts/blueprint_placer.js @@ -27,6 +27,8 @@ export class HUDBlueprintPlacer extends BaseHUDPart { } initialize() { + this.isCopyPasteFree = this.root.gameMode.getHasFreeCopyPaste(); + this.root.hud.signals.buildingsSelectedForCopy.add(this.createBlueprintFromBuildings, this); /** @type {TypedTrackedState} */ @@ -82,7 +84,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart { update() { const currentBlueprint = this.currentBlueprint.get(); - this.domAttach.update(currentBlueprint && currentBlueprint.getCost() > 0); + this.domAttach.update(!this.isCopyPasteFree && currentBlueprint && currentBlueprint.getCost() > 0); this.trackedCanAfford.set(currentBlueprint && currentBlueprint.canAfford(this.root)); } @@ -114,7 +116,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart { return; } - if (!blueprint.canAfford(this.root)) { + if (!this.isCopyPasteFree && !blueprint.canAfford(this.root)) { this.root.soundProxy.playUiError(); return; } @@ -122,8 +124,10 @@ export class HUDBlueprintPlacer extends BaseHUDPart { const worldPos = this.root.camera.screenToWorld(pos); const tile = worldPos.toTileSpace(); if (blueprint.tryPlace(this.root, tile)) { - const cost = blueprint.getCost(); - this.root.hubGoals.takeShapeByKey(this.root.gameMode.getBlueprintShapeKey(), cost); + if (!this.isCopyPasteFree) { + const cost = blueprint.getCost(); + this.root.hubGoals.takeShapeByKey(this.root.gameMode.getBlueprintShapeKey(), cost); + } this.root.soundProxy.playUi(SOUNDS.placeBuilding); } return STOP_PROPAGATION; @@ -131,7 +135,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart { } /** - * Mose move handler + * Mouse move handler */ onMouseMove() { // Prevent movement while blueprint is selected diff --git a/src/js/game/hud/parts/mass_selector.js b/src/js/game/hud/parts/mass_selector.js index ab933da3..b8283d55 100644 --- a/src/js/game/hud/parts/mass_selector.js +++ b/src/js/game/hud/parts/mass_selector.js @@ -1,5 +1,6 @@ import { globalConfig } from "../../../core/config"; import { DrawParameters } from "../../../core/draw_parameters"; +import { gMetaBuildingRegistry } from "../../../core/global_registries"; import { createLogger } from "../../../core/logging"; import { STOP_PROPAGATION } from "../../../core/signal"; import { formatBigNumberFull } from "../../../core/utils"; @@ -7,6 +8,8 @@ import { Vector } from "../../../core/vector"; import { ACHIEVEMENTS } from "../../../platform/achievement_provider"; import { T } from "../../../translations"; import { Blueprint } from "../../blueprint"; +import { MetaBlockBuilding } from "../../buildings/block"; +import { MetaConstantProducerBuilding } from "../../buildings/constant_producer"; import { enumMouseButton } from "../../camera"; import { Component } from "../../component"; import { Entity } from "../../entity"; @@ -260,7 +263,14 @@ export class HUDMassSelector extends BaseHUDPart { for (let x = realTileStart.x; x <= realTileEnd.x; ++x) { for (let y = realTileStart.y; y <= realTileEnd.y; ++y) { const contents = this.root.map.getLayerContentXY(x, y, this.root.currentLayer); + if (contents && this.root.logic.canDeleteBuilding(contents)) { + const staticComp = contents.components.StaticMapEntity; + + if (!staticComp.getMetaBuilding().getIsRemovable(this.root)) { + continue; + } + this.selectedUids.add(contents.uid); } } @@ -320,6 +330,11 @@ export class HUDMassSelector extends BaseHUDPart { renderedUids.add(uid); const staticComp = contents.components.StaticMapEntity; + + if (!staticComp.getMetaBuilding().getIsRemovable(this.root)) { + continue; + } + const bounds = staticComp.getTileSpaceBounds(); parameters.context.beginRoundedRect( bounds.x * globalConfig.tileSize + boundsBorder, diff --git a/src/js/game/meta_building.js b/src/js/game/meta_building.js index f3df0b62..7bfbce25 100644 --- a/src/js/game/meta_building.js +++ b/src/js/game/meta_building.js @@ -158,10 +158,9 @@ export class MetaBuilding { /** * Returns whether this building is rotateable - * @param {string} variant * @returns {boolean} */ - getIsRotateable(variant) { + getIsRotateable() { return true; } @@ -243,7 +242,7 @@ export class MetaBuilding { * @return {{ rotation: number, rotationVariant: number, connectedEntities?: Array }} */ computeOptimalDirectionAndRotationVariantAtTile({ root, tile, rotation, variant, layer }) { - if (!this.getIsRotateable(variant)) { + if (!this.getIsRotateable()) { return { rotation: 0, rotationVariant: 0, diff --git a/src/js/game/modes/puzzle.js b/src/js/game/modes/puzzle.js index 4bf3b1e6..75a47ee2 100644 --- a/src/js/game/modes/puzzle.js +++ b/src/js/game/modes/puzzle.js @@ -7,6 +7,8 @@ import { types } from "../../savegame/serialization"; import { enumGameModeTypes, GameMode } from "../game_mode"; import { HUDPuzzleBackToMenu } from "../hud/parts/puzzle_back_to_menu"; import { HUDPuzzleDLCLogo } from "../hud/parts/puzzle_dlc_logo"; +import { HUDBlueprintPlacer } from "../hud/parts/blueprint_placer"; +import { HUDMassSelector } from "../hud/parts/mass_selector"; export class PuzzleGameMode extends GameMode { static getType() { @@ -30,6 +32,8 @@ export class PuzzleGameMode extends GameMode { this.additionalHudParts = { puzzleBackToMenu: HUDPuzzleBackToMenu, puzzleDlcLogo: HUDPuzzleDLCLogo, + blueprintPlacer: HUDBlueprintPlacer, + massSelector: HUDMassSelector, }; this.zoneWidth = data.zoneWidth || 8; @@ -79,8 +83,8 @@ export class PuzzleGameMode extends GameMode { return false; } - getSupportsCopyPaste() { - return false; + getHasFreeCopyPaste() { + return true; } throughputDoesNotMatter() { From 9703187105237598a5da0c60102bc256d08c810c Mon Sep 17 00:00:00 2001 From: tobspr Date: Thu, 24 Jun 2021 18:46:47 +0200 Subject: [PATCH 04/11] Start changelog for 1.4.2 --- src/js/changelog.js | 9 +++++++++ version | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 84774291..e80806ed 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -1,4 +1,13 @@ export const CHANGELOG = [ + { + version: "1.4.2", + date: "24.06.2021", + entries: [ + "Puzzle DLC: Goal acceptors now reset after getting no items for a while (This should prevent being able to 'cheat' puzzles) (by Sense101)", + "Puzzle DLC: Added button to clear all buildings (by Sense101)", + "Puzzle DLC: Allow copy-paste in puzzle mode (by Sense101)", + ], + }, { version: "1.4.1", date: "22.06.2021", diff --git a/version b/version index 13175fdc..c9929e36 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.4.1 \ No newline at end of file +1.4.2 \ No newline at end of file From 7b18d54cbe6d38b30324cd9ad958c35476fc1c87 Mon Sep 17 00:00:00 2001 From: tobspr Date: Thu, 24 Jun 2021 19:13:21 +0200 Subject: [PATCH 05/11] Minor PR adjustments --- src/js/changelog.js | 2 +- src/js/game/blueprint.js | 12 ++++++++---- src/js/game/components/goal_acceptor.js | 11 +++++++---- src/js/game/hud/parts/blueprint_placer.js | 14 +++++++++----- .../game/hud/parts/puzzle_editor_settings.js | 19 +++++++++---------- src/js/game/hud/parts/puzzle_play_settings.js | 12 ++++++------ src/js/game/systems/goal_acceptor.js | 1 + translations/base-en.yaml | 1 + 8 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index e80806ed..7bd21795 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -4,7 +4,7 @@ export const CHANGELOG = [ date: "24.06.2021", entries: [ "Puzzle DLC: Goal acceptors now reset after getting no items for a while (This should prevent being able to 'cheat' puzzles) (by Sense101)", - "Puzzle DLC: Added button to clear all buildings (by Sense101)", + "Puzzle DLC: Added button to clear all buildings / reset the puzzle (by Sense101)", "Puzzle DLC: Allow copy-paste in puzzle mode (by Sense101)", ], }, diff --git a/src/js/game/blueprint.js b/src/js/game/blueprint.js index a2aa7186..795b27c3 100644 --- a/src/js/game/blueprint.js +++ b/src/js/game/blueprint.js @@ -101,10 +101,11 @@ export class Blueprint { const entity = this.entities[i]; const staticComp = entity.components.StaticMapEntity; - if (staticComp.getMetaBuilding().getIsRotateable()) { - staticComp.rotation = (staticComp.rotation + 90) % 360; - staticComp.originalRotation = (staticComp.originalRotation + 90) % 360; - } + // Actually keeping this in as an easter egg to rotate the trash can + // if (staticComp.getMetaBuilding().getIsRotateable()) { + staticComp.rotation = (staticComp.rotation + 90) % 360; + staticComp.originalRotation = (staticComp.originalRotation + 90) % 360; + // } staticComp.origin = staticComp.origin.rotateFastMultipleOf90(90); } @@ -142,6 +143,9 @@ export class Blueprint { * @param {GameRoot} root */ canAfford(root) { + if (root.gameMode.getHasFreeCopyPaste()) { + return true; + } return root.hubGoals.getShapesStoredByKey(root.gameMode.getBlueprintShapeKey()) >= this.getCost(); } diff --git a/src/js/game/components/goal_acceptor.js b/src/js/game/components/goal_acceptor.js index 485f385b..bb13ee61 100644 --- a/src/js/game/components/goal_acceptor.js +++ b/src/js/game/components/goal_acceptor.js @@ -30,20 +30,23 @@ export class GoalAcceptorComponent extends Component { } clear() { - // the last items we delivered - /** @type {{ item: BaseItem; time: number; }} */ + /** + * The last item we delivered + * @type {{ item: BaseItem; time: number; } | null} */ this.lastDelivery = null; + // The amount of items we delivered so far this.currentDeliveredItems = 0; // Used for animations this.displayPercentage = 0; } - // clears items but doesn't instantly reset the progress bar + /** + * Clears items but doesn't instantly reset the progress bar + */ clearItems() { this.lastDelivery = null; - this.currentDeliveredItems = 0; } diff --git a/src/js/game/hud/parts/blueprint_placer.js b/src/js/game/hud/parts/blueprint_placer.js index e006d24a..4b2bafb2 100644 --- a/src/js/game/hud/parts/blueprint_placer.js +++ b/src/js/game/hud/parts/blueprint_placer.js @@ -27,8 +27,6 @@ export class HUDBlueprintPlacer extends BaseHUDPart { } initialize() { - this.isCopyPasteFree = this.root.gameMode.getHasFreeCopyPaste(); - this.root.hud.signals.buildingsSelectedForCopy.add(this.createBlueprintFromBuildings, this); /** @type {TypedTrackedState} */ @@ -52,6 +50,10 @@ export class HUDBlueprintPlacer extends BaseHUDPart { this.trackedCanAfford = new TrackedState(this.onCanAffordChanged, this); } + getHasFreeCopyPaste() { + return this.root.gameMode.getHasFreeCopyPaste(); + } + abortPlacement() { if (this.currentBlueprint.get()) { this.currentBlueprint.set(null); @@ -84,7 +86,9 @@ export class HUDBlueprintPlacer extends BaseHUDPart { update() { const currentBlueprint = this.currentBlueprint.get(); - this.domAttach.update(!this.isCopyPasteFree && currentBlueprint && currentBlueprint.getCost() > 0); + this.domAttach.update( + !this.getHasFreeCopyPaste() && currentBlueprint && currentBlueprint.getCost() > 0 + ); this.trackedCanAfford.set(currentBlueprint && currentBlueprint.canAfford(this.root)); } @@ -116,7 +120,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart { return; } - if (!this.isCopyPasteFree && !blueprint.canAfford(this.root)) { + if (!this.getHasFreeCopyPaste() && !blueprint.canAfford(this.root)) { this.root.soundProxy.playUiError(); return; } @@ -124,7 +128,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart { const worldPos = this.root.camera.screenToWorld(pos); const tile = worldPos.toTileSpace(); if (blueprint.tryPlace(this.root, tile)) { - if (!this.isCopyPasteFree) { + if (!this.getHasFreeCopyPaste()) { const cost = blueprint.getCost(); this.root.hubGoals.takeShapeByKey(this.root.gameMode.getBlueprintShapeKey(), cost); } diff --git a/src/js/game/hud/parts/puzzle_editor_settings.js b/src/js/game/hud/parts/puzzle_editor_settings.js index bcd2c85c..11b046bf 100644 --- a/src/js/game/hud/parts/puzzle_editor_settings.js +++ b/src/js/game/hud/parts/puzzle_editor_settings.js @@ -1,16 +1,17 @@ /* typehints:start */ -import { PuzzleGameMode } from "../../modes/puzzle"; /* typehints:end */ - import { globalConfig } from "../../../core/config"; +import { gMetaBuildingRegistry } from "../../../core/global_registries"; import { createLogger } from "../../../core/logging"; import { Rectangle } from "../../../core/rectangle"; import { makeDiv } from "../../../core/utils"; import { T } from "../../../translations"; -import { StaticMapEntityComponent } from "../../components/static_map_entity"; -import { BaseHUDPart } from "../base_hud_part"; -import { gMetaBuildingRegistry } from "../../../core/global_registries"; import { MetaBlockBuilding } from "../../buildings/block"; +import { MetaConstantProducerBuilding } from "../../buildings/constant_producer"; +import { MetaGoalAcceptorBuilding } from "../../buildings/goal_acceptor"; +import { StaticMapEntityComponent } from "../../components/static_map_entity"; +import { PuzzleGameMode } from "../../modes/puzzle"; +import { BaseHUDPart } from "../base_hud_part"; const logger = createLogger("puzzle-editor"); @@ -72,13 +73,11 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart { clearBuildings() { for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) { const staticComp = entity.components.StaticMapEntity; - const signalComp = entity.components.ConstantSignal; - const goalComp = entity.components.GoalAcceptor; if ( - signalComp || - goalComp || - staticComp.getMetaBuilding().id === gMetaBuildingRegistry.findByClass(MetaBlockBuilding).id + [MetaGoalAcceptorBuilding, MetaConstantProducerBuilding, MetaBlockBuilding] + .map(metaClass => gMetaBuildingRegistry.findByClass(metaClass).id) + .includes(staticComp.getMetaBuilding().id) ) { continue; } diff --git a/src/js/game/hud/parts/puzzle_play_settings.js b/src/js/game/hud/parts/puzzle_play_settings.js index 88034f72..8ae28166 100644 --- a/src/js/game/hud/parts/puzzle_play_settings.js +++ b/src/js/game/hud/parts/puzzle_play_settings.js @@ -3,6 +3,8 @@ import { createLogger } from "../../../core/logging"; import { makeDiv } from "../../../core/utils"; import { T } from "../../../translations"; import { MetaBlockBuilding } from "../../buildings/block"; +import { MetaConstantProducerBuilding } from "../../buildings/constant_producer"; +import { MetaGoalAcceptorBuilding } from "../../buildings/goal_acceptor"; import { StaticMapEntityComponent } from "../../components/static_map_entity"; import { BaseHUDPart } from "../base_hud_part"; @@ -21,7 +23,7 @@ export class HUDPuzzlePlaySettings extends BaseHUDPart { ["section"], ` - + ` ); @@ -38,13 +40,11 @@ export class HUDPuzzlePlaySettings extends BaseHUDPart { clearBuildings() { for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) { const staticComp = entity.components.StaticMapEntity; - const signalComp = entity.components.ConstantSignal; - const goalComp = entity.components.GoalAcceptor; if ( - signalComp || - goalComp || - staticComp.getMetaBuilding().id === gMetaBuildingRegistry.findByClass(MetaBlockBuilding).id + [MetaGoalAcceptorBuilding, MetaConstantProducerBuilding, MetaBlockBuilding] + .map(metaClass => gMetaBuildingRegistry.findByClass(metaClass).id) + .includes(staticComp.getMetaBuilding().id) ) { continue; } diff --git a/src/js/game/systems/goal_acceptor.js b/src/js/game/systems/goal_acceptor.js index f7ac16a6..40100324 100644 --- a/src/js/game/systems/goal_acceptor.js +++ b/src/js/game/systems/goal_acceptor.js @@ -25,6 +25,7 @@ export class GoalAcceptorSystem extends GameSystemWithFilter { const goalComp = entity.components.GoalAcceptor; if (!goalComp.lastDelivery) { + allAccepted = false; continue; } diff --git a/translations/base-en.yaml b/translations/base-en.yaml index bf5a1890..02d8e948 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -633,6 +633,7 @@ ingame: trimZone: Trim clearItems: Clear Items clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle share: Share report: Report From bee3e6c6264bf49963528e275baad1ca765660cc Mon Sep 17 00:00:00 2001 From: Gumball73 <66757746+Gumball73@users.noreply.github.com> Date: Thu, 24 Jun 2021 18:13:53 +0100 Subject: [PATCH 06/11] Update base-pt-PT.yaml (#1222) --- translations/base-pt-PT.yaml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/translations/base-pt-PT.yaml b/translations/base-pt-PT.yaml index 4bff564d..00fd0699 100644 --- a/translations/base-pt-PT.yaml +++ b/translations/base-pt-PT.yaml @@ -264,8 +264,8 @@ dialogs: title: Introduzir pequeno código desc: Introduz um pequeno código para o puzzle carregar. puzzleDelete: - title: Delete Puzzle? - desc: Are you sure you want to delete ''? This can not be undone! + title: Apagar Puzzle? + desc: Tens a certeza de que queres apagar '<title>'? Isto não pode ser anulado! ingame: keybindingsOverlay: moveMap: Mover @@ -1239,14 +1239,14 @@ puzzleMenu: easy: Fácil hard: Difícil completed: Completo - medium: Medium - official: Official - trending: Trending today - trending-weekly: Trending weekly - categories: Categories - difficulties: By Difficulty - account: My Puzzles - search: Search + medium: Médio + official: Oficial + trending: Tendências de Hoje + trending-weekly: Tendências da Semana + categories: Categorias + difficulties: Por Dificuldade + account: Os meus Puzzles + search: Procurar validation: title: Puzzle Inválido noProducers: Por favor coloca um Produtor Constante! @@ -1262,9 +1262,9 @@ puzzleMenu: teus Produtores Constantes não estão automaticamente direcionados para os Recetores de Objetivo. difficulties: - easy: Easy - medium: Medium - hard: Hard + easy: Fácil + medium: Médio + hard: Difícil backendErrors: ratelimit: Estás a realizar as tuas ações demasiado rápido. Aguarda um pouco. invalid-api-key: Falha ao cominucar com o backend, por favor tenta @@ -1288,6 +1288,6 @@ backendErrors: bad-payload: O pedido contém informção inválida. bad-building-placement: O teu Puzzle contém construções posicionadas de forma inválida. timeout: O tempo do pedido esgotou. - too-many-likes-already: The puzzle alreay got too many likes. If you still want - to remove it, please contact support@shapez.io! - no-permission: You do not have the permission to perform this action. + too-many-likes-already: O puzzle já tem imensos gostos. Se ainda o quiseres + remover, por favor contacta support@shapez.io! + no-permission: Não tens permissão para realizar esta ação. From 8eedd529637a632dc1b2727f4c4d2175d8323597 Mon Sep 17 00:00:00 2001 From: dobidon <35607008+dobidon@users.noreply.github.com> Date: Thu, 24 Jun 2021 20:14:06 +0300 Subject: [PATCH 07/11] Update base-tr.yaml (#1223) * Update base-tr.yaml * Update base-tr.yaml Fixing YAML Syntax Error --- translations/base-tr.yaml | 42 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/translations/base-tr.yaml b/translations/base-tr.yaml index d41c0123..cf54e2a0 100644 --- a/translations/base-tr.yaml +++ b/translations/base-tr.yaml @@ -211,7 +211,7 @@ dialogs: title: Kötü Yapboz desc: "Yapboz yüklenirken hata oluştu:" offlineMode: - title: Çevrimdışı Modu + title: Çevrİmdışı Modu desc: Sunuculara ulaşamadık, bu yüzden oyun çevrimdışı modda çalışmak zorunda. Lütfen aktif bir internet bağlantısı olduğundan emin olunuz. puzzleDownloadError: @@ -254,8 +254,8 @@ dialogs: title: Kısa anahtar gir desc: Yapbozu yüklemek için kısa anahtarı giriniz puzzleDelete: - title: Delete Puzzle? - desc: Are you sure you want to delete '<title>'? This can not be undone! + title: Yapboz silinsin mi? + desc: "'<title>' yapbozunu silmek istediğinize emin misiniz? Bu işlem geri alınamaz!" ingame: keybindingsOverlay: moveMap: Hareket Et @@ -677,11 +677,11 @@ buildings: katmanda çıktı olarak verir. constant_producer: default: - name: Sabit Üretici + name: Sabİt Üretİcİ description: Sabit olarak belirli bir şekli veya rengi üretir. goal_acceptor: default: - name: Hedef Merkezi + name: Hedef Merkezİ description: Şekilleri hedef olarak tanımlamak için hedef merkezine teslim et. block: default: @@ -1208,20 +1208,20 @@ puzzleMenu: noPuzzles: Bu kısımda yapboz yok. categories: levels: Seviyeler - new: Yeni - top-rated: En İyi Değerlendirilen + new: Yenİ + top-rated: En İyİ Değerlendirilen mine: Yapbozlarım easy: Kolay hard: Zor completed: Tamamlanan - medium: Medium - official: Official - trending: Trending today - trending-weekly: Trending weekly - categories: Categories - difficulties: By Difficulty - account: My Puzzles - search: Search + medium: Orta + official: Resmİ + trending: Bugün öne çıkan + trending-weekly: Haftalık öne çıkan + categories: Kategorİler + difficulties: Zorluğa göre + account: Yapbozlarım + search: Ara validation: title: Geçersiz Yapboz noProducers: Lütfen bir Sabit Üretici yerleştiriniz! @@ -1236,9 +1236,9 @@ puzzleMenu: autoComplete: Yapbozunuz kendisini çözüyor! Sabit üreticilerin hedef merkezlerine direkt olarak şekil göndermediğinden emin olunuz. difficulties: - easy: Easy - medium: Medium - hard: Hard + easy: Kolay + medium: Orta + hard: Zor backendErrors: ratelimit: Çok sık işlem yapıyorsunuz. Biraz bekleyiniz. invalid-api-key: Arka tarafla iletişim kurulamadı, lütfen oyunu @@ -1262,6 +1262,6 @@ backendErrors: bad-payload: İstek geçersiz veri içeriyor. bad-building-placement: Yapbozunuzda uygun yerleştirilmeyen yapılar mevcut. timeout: İstek zaman aşımına uğradı. - too-many-likes-already: The puzzle alreay got too many likes. If you still want - to remove it, please contact support@shapez.io! - no-permission: You do not have the permission to perform this action. + too-many-likes-already: Yapbozun zaten çok beğenisi var. Yine de silmek istiyorsanız + support@shapez.io ile iletişime geçiniz! + no-permission: Bu işlemi yapmak için izniniz yok. From 4c2d1ba2d3ff2270753325ce72d89fd123d112d1 Mon Sep 17 00:00:00 2001 From: YJSoft <yjsoft@yjsoft.pe.kr> Date: Fri, 25 Jun 2021 02:14:17 +0900 Subject: [PATCH 08/11] Fix korean translation (#1224) --- translations/base-kor.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/base-kor.yaml b/translations/base-kor.yaml index 3e5139f6..329b8fc2 100644 --- a/translations/base-kor.yaml +++ b/translations/base-kor.yaml @@ -963,7 +963,7 @@ keybindings: constant_producer: 일정 생성기 goal_acceptor: 목표 수집기 block: 블록 - massSelectClear: 밸트를 클리어합니다 + massSelectClear: 벨트 초기화 about: title: 게임 정보 body: >- @@ -1067,7 +1067,7 @@ puzzleMenu: trending: 오늘의 인기 trending-weekly: 이 주의 인기 categories: 카테고리 - difficulties: 어려운 순서로 + difficulties: 난이도순 account: 내 퍼즐들 search: 검색 validation: @@ -1102,5 +1102,5 @@ backendErrors: bad-payload: 요청이 잘못된 데이터를 포함하고 있습니다. bad-building-placement: 퍼즐에 잘못된 곳에 위치한 건물이 있습니다. timeout: 요청 시간이 초과되었습니다. - too-many-likes-already: 이 퍼즐은 이미 너무 많은 하트를 받았습니다. 그래도 부족하다면 support@shapez.io로 문의하세요! - no-permission: 이 작업을 할 권한이 없습니다 + too-many-likes-already: 이 퍼즐은 이미 너무 많은 하트를 받았습니다. 그래도 제거하고 싶다면 support@shapez.io로 문의하세요! + no-permission: 이 작업을 할 권한이 없습니다. From d4ef3a3a5ea6537763e92120c1119b0edb3ec6d4 Mon Sep 17 00:00:00 2001 From: Kruger-Doggie <78209493+Kruger-Doggie@users.noreply.github.com> Date: Thu, 24 Jun 2021 19:15:16 +0200 Subject: [PATCH 09/11] Updated base-de.yaml (#1231) Missing translations for Puzzle DLC added --- translations/base-de.yaml | 172 +++++++++++++++++++------------------- 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/translations/base-de.yaml b/translations/base-de.yaml index cdbde45a..8cd078f6 100644 --- a/translations/base-de.yaml +++ b/translations/base-de.yaml @@ -191,69 +191,69 @@ dialogs: desc: Für dieses Level ist ein Tutorial-Video verfügbar, allerdings nur auf Englisch. Willst du es trotzdem anschauen? editConstantProducer: - title: Set Item + title: Item setzen puzzleLoadFailed: - title: Puzzles failed to load - desc: "Unfortunately the puzzles could not be loaded:" + title: Puzzle konnten nicht geladen werden + desc: "Leider konnten die Puzzle nicht geladen werden:" submitPuzzle: - title: Submit Puzzle - descName: "Give your puzzle a name:" - descIcon: "Please enter a unique short key, which will be shown as the icon of - your puzzle (You can generate them <link>here</link>, or choose one - of the randomly suggested shapes below):" - placeholderName: Puzzle Title + title: Puzzle veröffentlichen + descName: "Gib deinem Puzzle einen Namen:" + descIcon: "Bitte gib einen eindeutigen Kurzschlüssel ein, der als Symbol für + dein Puzzle genutzt wird (Du kannst diesen auch <link>hier</link> generieren, oder wähle + unten einen der zufällig generierten Vorschläge):" + placeholderName: Puzzle Name puzzleResizeBadBuildings: - title: Resize not possible - desc: You can't make the zone any smaller, because then some buildings would be - outside the zone. + title: Größenänderung nicht möglich + desc: Du kannst die Zone nicht weiter verkleinern, da ansonsten einige Gebäude + außerhalb der Zone liegen würden. puzzleLoadError: - title: Bad Puzzle - desc: "The puzzle failed to load:" + title: Schlechtes Puzzle + desc: "Das Puzzle konnte nicht geladen werden:" offlineMode: - title: Offline Mode - desc: We couldn't reach the servers, so the game has to run in offline mode. - Please make sure you have an active internet connection. + title: Offline Modus + desc: Die Server konnten nicht erreicht werden, daher läuft das Spiel im Offline Modus. + Bitte sorge dafür, dass du eine aktive Internetverbindung hast. puzzleDownloadError: - title: Download Error - desc: "Failed to download the puzzle:" + title: Download Fehler + desc: "Der Download des Puzzles ist fehlgeschlagen:" puzzleSubmitError: - title: Submission Error - desc: "Failed to submit your puzzle:" + title: Übertragungsfehler + desc: "Das Puzzle konnte nicht übertragen werden:" puzzleSubmitOk: - title: Puzzle Published - desc: Congratulations! Your puzzle has been published and can now be played by - others. You can now find it in the "My puzzles" section. + title: Puzzle veröffentlicht + desc: Herzlichen Glückwunsch! Dein Rätsel wurde veröffentlicht und kann nun von + anderen gespielt werden. Du kannst es jetzt im Bereich "Meine Puzzle" finden. puzzleCreateOffline: - title: Offline Mode - desc: Since you are offline, you will not be able to save and/or publish your - puzzle. Would you still like to continue? + title: Offline Modus + desc: Da du offline bist, bist du nicht in der Lage dei Puzzle zu speichern und/oder + zu veröffentlichen. Möchtest du trotzdem fortfahren? puzzlePlayRegularRecommendation: - title: Recommendation - desc: I <strong>strongly</strong> recommend playing the normal game to level 12 - before attempting the puzzle DLC, otherwise you may encounter - mechanics not yet introduced. Do you still want to continue? + title: Empfehlung + desc: ch empfehle <strong>stark</strong>, das normale Spiel bis Level 12 zu spielen, + bevor du dich an das Puzzle DLC wagst, sonst stößt du möglicherweise + auf noch nicht eingeführte Mechaniken. Möchtest du trotzdem fortfahren? puzzleShare: - title: Short Key Copied - desc: The short key of the puzzle (<key>) has been copied to your clipboard! It - can be entered in the puzzle menu to access the puzzle. + title: Kurzschlüssel kopiert + desc: Der Kurzschlüssel des Puzzles (<key>) wurde in die Zwischenablage kopiert! Dieser + kann im Puzzle Menü genutzt werden, um das Puzzle zu laden. puzzleReport: - title: Report Puzzle + title: Puzzle Melden options: - profane: Profane - unsolvable: Not solvable + profane: Profan + unsolvable: Nicht lösbar trolling: Trolling puzzleReportComplete: - title: Thank you for your feedback! - desc: The puzzle has been flagged. + title: Danke für das Feedback! + desc: Das Puzzle wurde markiert. puzzleReportError: - title: Failed to report - desc: "Your report could not get processed:" + title: Melden fehlgeschlagen + desc: "Deine Meldung konnte nicht verarbeitet werden:" puzzleLoadShortKey: - title: Enter short key - desc: Enter the short key of the puzzle to load it. + title: Kurzschlüssel eingeben + desc: Trage einen Kurzschlüssel ein um das Puzzle zu laden. puzzleDelete: - title: Delete Puzzle? - desc: Are you sure you want to delete '<title>'? This can not be undone! + title: Puzzle löschen? + desc: Bist du sicher, dass du '<title>' löschen möchtest? Dies kann nicht rückgängig gemacht werden! ingame: keybindingsOverlay: moveMap: Bewegen @@ -426,42 +426,42 @@ ingame: desc: Hol sie dir alle! puzzleEditorSettings: zoneTitle: Zone - zoneWidth: Width - zoneHeight: Height - trimZone: Trim - clearItems: Clear Items - share: Share - report: Report + zoneWidth: Breite + zoneHeight: Höhe + trimZone: Zuschneiden + clearItems: Items löschen + share: Teilen + report: Melden puzzleEditorControls: - title: Puzzle Creator + title: Puzzle Editor instructions: - - 1. Place <strong>Constant Producers</strong> to provide shapes and - colors to the player - - 2. Build one or more shapes you want the player to build later and - deliver it to one or more <strong>Goal Acceptors</strong> - - 3. Once a Goal Acceptor receives a shape for a certain amount of - time, it <strong>saves it as a goal</strong> that the player must - produce later (Indicated by the <strong>green badge</strong>). - - 4. Click the <strong>lock button</strong> on a building to disable - it. - - 5. Once you click review, your puzzle will be validated and you - can publish it. - - 6. Upon release, <strong>all buildings will be removed</strong> - except for the Producers and Goal Acceptors - That's the part that - the player is supposed to figure out for themselves, after all :) + - 1. Plaziere einen <strong>Item-Produzent</strong> um Shapes und + Farben für den Spieler bereitzustellen + - 2. Produziere ein oder mehrere Shapes, die der Spieler herstellen soll + und liefere dieze zu einem oder mehreren <strong>Ziel-Akzeptoren</strong> + - 3. Sobald ein Ziel-Akzeptor ein Shape für eine gewisse Zeit erhällt, + <strong>speichert dieser es als Ziel</strong>, welches der Spieler + später herstellen muss (Angezeigt durch den <strong>grünen Punkt</strong>). + - 4. Klicke den <strong>sperren Button</strong> um die Gebäude zu + sperren. + - 5. Sobald du auf Überprüfen gedrückt hast, wird dei Puzzel geprüft + und du kannst es veröffentlichen. + - 6. Bei der Freigabe werden <strong>alle Gebäude entfernt</strong>. + Ausgenommen sind die Produzenten und Akzeptoren - Das ist schließlich der + Teil, den die Spieler selbst herausfinden sollen :) puzzleCompletion: - title: Puzzle Completed! - titleLike: "Click the heart if you liked the puzzle:" - titleRating: How difficult did you find the puzzle? - titleRatingDesc: Your rating will help me to make you better suggestions in the future - continueBtn: Keep Playing - menuBtn: Menu + title: Puzzle abgeschlossen! + titleLike: "Klicke auf das Herz, wenn dier das Puzzle gefallen hat:" + titleRating: Wie schwierig fandest du das Puzzle? + titleRatingDesc: Deine Bewertung wird mir helfen, in Zukunft bessere Vorschläge zu machen + continueBtn: Weiter spielen + menuBtn: Menü puzzleMetadata: - author: Author - shortKey: Short Key - rating: Difficulty score - averageDuration: Avg. Duration - completionRate: Completion rate + author: Ersteller + shortKey: Kurzschlüssel + rating: Schwierigkeitsgrad + averageDuration: Durchschnittliche Dauer + completionRate: Abschlussrate shopUpgrades: belt: name: Fließbänder, Verteiler & Tunnel @@ -680,16 +680,16 @@ buildings: Wires-Ebene als Item aus. constant_producer: default: - name: Constant Producer - description: Constantly outputs a specified shape or color. + name: Item-Produzent + description: Gibt dauerhaft ein Shape oder eine Farbe aus. goal_acceptor: default: - name: Goal Acceptor - description: Deliver shapes to the goal acceptor to set them as a goal. + name: Ziel Akzeptor + description: Liefere ein Shape an, um dieses als Ziel festzulegen. block: default: - name: Block - description: Allows you to block a tile. + name: Sperre + description: Ermöglicht das Blockieren einer Kachel. storyRewards: reward_cutter_and_trash: title: Formen zerschneiden @@ -1291,6 +1291,6 @@ backendErrors: bad-payload: Die Anfrage beinhaltet ungültige Daten. bad-building-placement: Dein Puzzle beinhaltet Gebäude, die sich an ungültigen Stellen befinden. timeout: Es kam zu einer Zeitüberschreitung bei der Anfrage. - too-many-likes-already: The puzzle alreay got too many likes. If you still want - to remove it, please contact support@shapez.io! - no-permission: You do not have the permission to perform this action. + too-many-likes-already: Dieses Puzzle hat schon zu viele Likes erhalten. Wenn du es trotzdem + löschen möchtest, wende dich an support@shapez.io! + no-permission: Du hast nicht die Berechtigung diese Aktion auszuführen. From 3cc179e283f9c83638583a4da675f04307ec58c4 Mon Sep 17 00:00:00 2001 From: Sooxin <16705366+sooxin@users.noreply.github.com> Date: Fri, 25 Jun 2021 01:15:39 +0800 Subject: [PATCH 10/11] Replace some punctuation marks by Chinese version and optimize format (#1225) --- translations/base-zh-CN.yaml | 110 +++++++++++++++++------------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/translations/base-zh-CN.yaml b/translations/base-zh-CN.yaml index 4f8e1e17..f1d91aa8 100644 --- a/translations/base-zh-CN.yaml +++ b/translations/base-zh-CN.yaml @@ -8,12 +8,12 @@ steamPage: 《异形工厂》(Shapez.io)是一款能让您尽情发挥创造力,充分享受思维乐趣的IO游戏。 游戏很轻松,只需建造工厂,布好设施,无需操作即能自动创造出各种各样的几何图形。 挑战很烧脑,随着等级提升,需要创造的图形将会越来越复杂,同时您还需要在无限扩展的地图中持续扩建优化您的工厂。 - 以为这就是全部了吗? 不!图形的生产需求将会指数性增长,持续的扩大规模和熵增带来的无序,将会是令人头痛的问题! - 这还不是全部! 一开始我们创造了图形,然后我们需要学会提取和混合来让它们五颜六色。 - 然后,还有吗? 当然,唯有思维,方能无限。 + 以为这就是全部了吗?不!图形的生产需求将会指数性增长,持续的扩大规模和熵增带来的无序,将会是令人头痛的问题! + 这还不是全部!一开始我们创造了图形,然后我们需要学会提取和混合来让它们五颜六色。 + 然后,还有吗?当然,唯有思维,方能无限。 欢迎免费体验试玩版:“让您的想象力插上翅膀!” - 和最聪明的玩家一起挑战,请访问 Steam 游戏商城购买《异形工厂》(Shapez.io)的完整版, + 和最聪明的玩家一起挑战,请访问 Steam 游戏商城购买《异形工厂》(Shapez.io)的完整版, what_others_say: 来看看玩家们对《异形工厂》(Shapez.io)的评价 nothernlion_comment: 非常棒的有游戏,我的游戏过程充满乐趣,不觉时间飞逝。 notch_comment: 哦,天哪!我真得该去睡了!但我想我刚刚搞定如何在游戏里面制造一台电脑出来。 @@ -60,7 +60,7 @@ mainMenu: openSourceHint: 本游戏已开源! discordLink: 官方Discord服务器 helpTranslate: 帮助我们翻译! - browserWarning: 很抱歉, 本游戏在当前浏览器上可能运行缓慢! 使用 Chrome 或者购买完整版以得到更好的体验。 + browserWarning: 很抱歉,本游戏在当前浏览器上可能运行缓慢!使用 Chrome 或者购买完整版以得到更好的体验。 savegameLevel: 第<x>关 savegameLevelUnknown: 未知关卡 continue: 继续游戏 @@ -99,7 +99,7 @@ dialogs: text: 未能读取您的存档: confirmSavegameDelete: title: 确认删除 - text: 您确定要删除这个游戏吗?<br><br> '<savegameName>' 等级 <savegameLevel><br><br> 该操作无法回退! + text: 您确定要删除这个游戏吗?<br><br> '<savegameName>' 等级 <savegameLevel><br><br> 该操作无法回退! savegameDeletionError: title: 删除失败 text: 未能删除您的存档 @@ -123,34 +123,34 @@ dialogs: desc: 试玩版中只能保存一份存档。请删除旧存档或者购买完整版! updateSummary: title: 新内容更新啦! - desc: "以下为游戏最新更新内容:" + desc: "以下为游戏最新更新内容:" upgradesIntroduction: title: 解锁升级 - desc: <strong>您生产过的所有图形都能被用来解锁升级。</strong> 所以不要销毁您之前建造的工厂! 注意:升级菜单在屏幕右上角。 + desc: <strong>您生产过的所有图形都能被用来解锁升级。</strong> 所以不要销毁您之前建造的工厂!注意:升级菜单在屏幕右上角。 massDeleteConfirm: title: 确认删除 - desc: 您将要删除很多设施,准确来说有<count>种! 您确定要这么做吗? + desc: 您将要删除很多设施,准确来说有<count>种!您确定要这么做吗? blueprintsNotUnlocked: title: 尚未解锁 desc: 您还没有解锁蓝图功能!通过第12关的挑战后可解锁蓝图。 keybindingsIntroduction: title: 实用快捷键 desc: - "这个游戏有很多有用的快捷键设定。 以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> + "这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> <code class='keybinding'>CTRL键</code> + 拖动:选择区域以复制或删除。<br> <code - class='keybinding'>SHIFT键</code>: 按住以放置多个同一种设施。<br> <code - class='keybinding'>ALT键</code>: 反向放置传送带。<br>" + class='keybinding'>SHIFT键</code>: 按住以放置多个同一种设施。<br> <code + class='keybinding'>ALT键</code>:反向放置传送带。<br>" createMarker: title: 创建地图标记 desc: - 填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link> - 生成短代码) + 填写一个有意义的名称,还可以同时包含一个形状的 <strong>短代码</strong>(您可以 <link>点击这里</link> + 生成短代码) titleEdit: 编辑地图标记 markerDemoLimit: desc: 在试玩版中您只能创建两个地图标记。请获取完整版以创建更多标记。 massCutConfirm: title: 确认剪切 - desc: 您将要剪切很多设施,准确来说有<count>种! 您确定要这么做吗? + desc: 您将要剪切很多设施,准确来说有<count>种!您确定要这么做吗? exportScreenshotWarning: title: 工厂截图 desc: 您将要导出您整个工厂基地的截图。如果您已经建设了一个规模很大的基地,生成截图的过程将会很慢,且有可能导致游戏崩溃! @@ -160,16 +160,16 @@ dialogs: editSignal: title: 设置信号 descItems: "选择一个预定义的项目:" - descShortKey: ... 或者输入图形的 <strong>短代码</strong> (您可以 <link>点击这里</link> 生成短代码) + descShortKey: ... 或者输入图形的 <strong>短代码</strong> (您可以 <link>点击这里</link> 生成短代码) renameSavegame: title: 重命名游戏存档 desc: 您可以在此重命名游戏存档。 tutorialVideoAvailable: title: 教程 - desc: 这个关卡有视频攻略! 您想查看这个视频攻略? + desc: 这个关卡有视频攻略!您想查看这个视频攻略? tutorialVideoAvailableForeignLanguage: title: 教程 - desc: 这个关卡有英语版本的视频攻略! 您想查看这个视频攻略吗?? + desc: 这个关卡有英语版本的视频攻略!您想查看这个视频攻略吗? editConstantProducer: title: 设置项目 puzzleLoadFailed: @@ -178,7 +178,7 @@ dialogs: submitPuzzle: title: 提交谜题 descName: 给您的谜题设定名称: - descIcon: "请输入唯一的短代码,它将显示为标志您的谜题的图标( <link>在此</link>生成,或者从以下随机推荐的图形中选择一个): " + descIcon: "请输入唯一的短代码,它将显示为标志您的谜题的图标( <link>在此</link>生成,或者从以下随机推荐的图形中选择一个):" placeholderName: 谜题标题 puzzleResizeBadBuildings: title: 无法调整大小 @@ -197,7 +197,7 @@ dialogs: desc: 无法提交您的谜题: puzzleSubmitOk: title: 谜题已发布 - desc: 恭喜!您所创造的谜题已成功发布,别的玩家已经可以对您的谜题发起挑战!您可以在"我的谜题"部分找到您发布的谜题。 + desc: 恭喜!您所创造的谜题已成功发布,别的玩家已经可以对您的谜题发起挑战!您可以在“我的谜题”部分找到您发布的谜题。 puzzleCreateOffline: title: 离线模式 desc: 由于您现在没有连接互联网,所以您将无法保存或发布您的谜题。是否仍要继续? @@ -223,8 +223,8 @@ dialogs: title: 输入短代码 desc: 输入此谜题的短代码以载入。 puzzleDelete: - title: 删除谜题? - desc: 您是否确认删除 '<title>'? 删除后不可恢复! + title: 删除谜题? + desc: 您是否确认删除 '<title>'?删除后不可恢复! ingame: keybindingsOverlay: moveMap: 移动地图 @@ -249,7 +249,7 @@ ingame: clearBelts: 清除传送带 buildingPlacement: cycleBuildingVariants: 按 <key> 键以选择设施的变型体。 - hotkeyLabel: "快捷键: <key>" + hotkeyLabel: "快捷键:<key>" infoTexts: speed: 速率 range: 范围 @@ -266,7 +266,7 @@ ingame: notifications: newUpgrade: 有新内容更新啦! gameSaved: 游戏已保存。 - freeplayLevelComplete: 第 <level>关 完成了! + freeplayLevelComplete: 第 <level>关 完成了! shop: title: 升级 buttonUnlock: 升级 @@ -355,8 +355,8 @@ ingame: no_thanks: 不需要,谢谢 points: levels: - title: 12 个全新关卡! - desc: 总共 26 个不同关卡! + title: 12 个全新关卡! + desc: 总共 26 个不同关卡! buildings: title: 18 个全新设施! desc: 呈现完全体的全自动工厂! @@ -377,7 +377,7 @@ ingame: desc: 我使用闲暇时间开发游戏! achievements: title: 成就 - desc: 挑战全成就解锁! + desc: 挑战全成就解锁! puzzleEditorSettings: zoneTitle: 区域 zoneWidth: 宽度 @@ -391,7 +391,7 @@ ingame: instructions: - 1.放置<strong>常量生成器</strong>,为玩家提供此谜题的初始图形和颜色。 - 2.建造您希望玩家稍后建造的一个或多个图形,并将其交付给一个或多个<strong>目标接收器</strong>。 - - 3.当一个目标接收器接收到一个图形一段时间后,会<strong>将其保存为此玩家稍后必须建造的目标</strong>(由<strong>绿色充能条</strong>表示)。 + - 3.当一个目标接收器接收到一个图形一段时间后,会<strong>将其保存为此玩家稍后必须建造的目标</strong>(由<strong>绿色充能条</strong>表示)。 - 4.单击设施上的<strong>锁定按钮</strong>即可将其禁用。 - 5.单击审阅后,您的谜题将通过验证,您可以正式发布它。 - 6.谜题发布后,<strong>所有设施都将被拆除</strong>,除了<strong>常量生成器</strong>和<strong>目标接收器</strong>。然后,等着其他玩家对您创造的谜题发起挑战吧! @@ -431,7 +431,7 @@ buildings: name: 开采器 description: 放置在<strong>图形</strong>或者<strong>颜色</strong>上进行开采。 chainable: - name: 开采器(链式) + name: 开采器(链式) description: 放置在<strong>图形</strong>或者<strong>颜色</strong>上进行开采。它们可以被链接在一起。 underground_belt: default: @@ -455,7 +455,7 @@ buildings: name: 旋转机(逆时针) description: 将<strong>图形</strong>逆时针旋转90度。 rotate180: - name: 旋转机 (180度) + name: 旋转机(180度) description: 将<strong>图形</strong>旋转180度。 stacker: default: @@ -476,7 +476,7 @@ buildings: name: 上色器(四口) description: 能够为<strong>图形</strong>的四个象限单独上色。记住只有通过电线层上带有<strong>正信号</strong>的插槽才可以上色! mirrored: - name: 上色器 (镜像) + name: 上色器(镜像) description: 将整个<strong>图形</strong>涂上输入的颜色。 trash: default: @@ -501,21 +501,21 @@ buildings: name: 平衡器 description: 多功能的设施:可将所有输入均匀地分配到所有输出上。 merger: - name: 合并器 (小型) + name: 合并器(小型) description: 可将两条传送带合并为一条。 merger-inverse: - name: 合并器 (小型) + name: 合并器(小型) description: 可将两条传送带合并为一条。 splitter: - name: 分离器 (小型) + name: 分离器(小型) description: 可将一条传送带分成为两条。 splitter-inverse: - name: 分离器 (小型) + name: 分离器(小型) description: 可将一条传送带分成为两条。 storage: default: name: 存储器 - description: 储存多余的物品,直到储满。 优先处理左边的输出,并可以用作溢出门。 + description: 储存多余的物品,直到储满。优先处理左边的输出,并可以用作溢出门。 wire_tunnel: default: name: 交叉电线 @@ -568,7 +568,7 @@ buildings: comparator: default: name: 比较器 - description: 如果输入的两个<strong>信号</strong>一样将输出开(1)信号,可以比较图形,颜色,和开关值。 + description: 如果输入的两个<strong>信号</strong>一样将输出开(1)信号,可以比较图形,颜色,和开关值。 virtual_processor: default: name: 虚拟切割机 @@ -613,7 +613,7 @@ storyRewards: reward_painter: title: 上色 desc: - 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色! + 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色! <br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong> reward_mixer: title: 混合颜色 @@ -664,14 +664,14 @@ storyRewards: <br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。 no_reward: title: 下一关 - desc: 这一关没有奖励,但是下一关有! <br><br> + desc: 这一关没有奖励,但是下一关有!<br><br> 注意:最高明的规划师都不会破坏原有的工厂设施,您生产过的<strong>所有图形</strong>都会被用于<strong>解锁升级</strong>。 no_reward_freeplay: title: 下一关 desc: 恭喜您!另外,我们已经计划在完整版中加入更多内容! reward_balancer: title: 平衡器 - desc: 恭喜!您解锁了多功能<strong>平衡器</strong>,它能够<strong>分割和合并</strong>多个传送带的资源,可以用来建造更大的工厂! + desc: 恭喜!您解锁了多功能<strong>平衡器</strong>,它能够<strong>分割和合并</strong>多个传送带的资源,可以用来建造更大的工厂! reward_merger: title: 合并器(小型) desc: 恭喜!您解锁了<strong>平衡器</strong>的变体<strong>合并器</strong>,它能合并两个输入到同一个传送带上! @@ -685,7 +685,7 @@ storyRewards: reward_display: title: 显示器 desc: 恭喜!您已经解锁了<strong>显示器</strong>,它可以显示一个在<strong>电线层上连接的信号</strong>! - <br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!" + <br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下! reward_constant_signal: title: 恒定信号 desc: @@ -704,8 +704,8 @@ storyRewards: reward_wires_painter_and_levers: title: 电线 & 四口上色器 desc: 恭喜!您解锁了<strong>电线层</strong>:它是正常层之上的一个层,它将带来了许多新的机制!<br><br> - 首先我解锁了您的<strong>四口上色器</strong>,按<strong>E</strong>键切换到电线层,然后连接您想要染色的槽,用开关来控制开启。<br><br> - <strong>提示</strong>:可在设置中打开电线层教程!" + 首先我解锁了您的<strong>四口上色器</strong>,按<strong>E</strong>键切换到电线层,然后连接您想要染色的槽,用开关来控制开启。<br><br> + <strong>提示</strong>:可在设置中打开电线层教程! reward_filter: title: 物品过滤器 desc: @@ -713,7 +713,7 @@ storyRewards: 您也可以输入开关值(1 / 0)信号来激活或者禁用它。 reward_demo_end: title: 试玩结束 - desc: 恭喜!您已经通关了试玩版本! <br>更多挑战,请至Steam商城购买完整版!谢谢支持! + desc: 恭喜!您已经通关了试玩版本!<br>更多挑战,请至Steam商城购买完整版!谢谢支持! settings: title: 设置 categories: @@ -785,7 +785,7 @@ settings: extremely_fast: 最快 enableTunnelSmartplace: title: 智能隧道放置 - description: 启用后,放置隧道时会将多余的传送带移除。 此外,拖动隧道可以快速铺设隧道,以及移除不必要的隧道。 + description: 启用后,放置隧道时会将多余的传送带移除。此外,拖动隧道可以快速铺设隧道,以及移除不必要的隧道。 vignette: title: 晕映 description: 启用晕映功能,可将屏幕角落里的颜色变深,更容易阅读文本。 @@ -827,7 +827,7 @@ settings: title: 右键取消 description: 默认启用。在选择要放置的设施时,单击鼠标右键即可取消。如果禁用,则可以通过在放置设施时单击鼠标右键来删除设施。 lowQualityTextures: - title: 低质量纹理(丑陋) + title: 低质量纹理(丑陋) description: 使用低质量纹理提高游戏性能。但是这样游戏会看起来很丑! displayChunkBorders: title: 显示大块的边框 @@ -918,7 +918,7 @@ keybindings: transistor: 晶体管 analyzer: 图形分析器 comparator: 比较器 - item_producer: 物品生产器 (沙盒模式) + item_producer: 物品生产器(沙盒模式) copyWireValue: 电线:复制指定电线上的值 rotateToUp: 向上旋转 rotateToDown: 向下旋转 @@ -977,14 +977,14 @@ tips: - 您值得花时间来构建可重复的设计! - 按住<b>CTRL</b>键能够放置多个设施。 - 您可以按住<b>ALT</b>来反向放置传送带的方向。 - - 效率是关键! + - 效率是关键! - 离基地越远图形越复杂。 - 机器的速度是有限的,把它们分开可以获得最高的效率。 - 使用平衡器最大化您的效率。 - 有条不紊!尽量不要过多地穿过传送带。 - - 凡事预则立!不预则废! + - 凡事预则立!不预则废! - 尽量不要删除旧的设施和生产线,您会需要他们生产的东西来升级设施并提高效率。 - - 先给自己定一个小目标:自己完成20级!!不去看别人的攻略! + - 先给自己定一个小目标:自己完成20级!不去看别人的攻略! - 不要把问题复杂化,试着保持简单,您会成功的。 - 您可能需要在游戏的后期重复使用工厂。把您的工厂规划成可重复使用的。 - 有时,您可以在地图上直接找到您需要的图形,并不需要使用堆叠机去合成它。 @@ -998,8 +998,8 @@ tips: - 使用升级列表中每个形状旁边的固定图标将其固定到屏幕上。 - 地图无限,放飞想象,尽情创造。 - 向您推荐Factorio!这是我最喜欢的游戏。向神作致敬! - - 四向切割机从右上开始进行顺时针切割! - - 在主界面您可以下载您的游戏存档文件! + - 四向切割机从右上开始进行顺时针切割! + - 在主界面您可以下载您的游戏存档文件! - 这个游戏有很多有用的快捷键!一定要到快捷键页面看看。 - 这个游戏有很多设置可以提高游戏效率,请一定要了解一下! - 中心基地有个指向它所在方向的小指南指针! @@ -1048,9 +1048,9 @@ puzzleMenu: hard: 困难 backendErrors: ratelimit: 你的操作太频繁了。请稍等。 - invalid-api-key: 与后台通信失败,请尝试更新或重新启动游戏(无效的Api密钥)。 - unauthorized: 与后台通信失败,请尝试更新或重新启动游戏(未经授权)。 - bad-token: 与后台通信失败,请尝试更新或重新启动游戏(令牌错误)。 + invalid-api-key: 与后台通信失败,请尝试更新或重新启动游戏(无效的Api密钥)。 + unauthorized: 与后台通信失败,请尝试更新或重新启动游戏(未经授权)。 + bad-token: 与后台通信失败,请尝试更新或重新启动游戏(令牌错误)。 bad-id: 谜题标识符无效。 not-found: 找不到给定的谜题。 bad-category: 找不到给定的类别。 From 5074727efa4910acdb298bbed28c9e7bd1d7849d Mon Sep 17 00:00:00 2001 From: tobspr <tobias.springer1@gmail.com> Date: Thu, 24 Jun 2021 19:16:10 +0200 Subject: [PATCH 11/11] Update translations and changelog --- src/js/changelog.js | 1 + translations/base-ar.yaml | 5 +++ translations/base-cat.yaml | 5 +++ translations/base-cz.yaml | 9 +++-- translations/base-da.yaml | 5 +++ translations/base-de.yaml | 64 ++++++++++++++++++++++-------------- translations/base-el.yaml | 5 +++ translations/base-es.yaml | 5 +++ translations/base-fi.yaml | 5 +++ translations/base-fr.yaml | 5 +++ translations/base-he.yaml | 5 +++ translations/base-hr.yaml | 5 +++ translations/base-hu.yaml | 5 +++ translations/base-ind.yaml | 5 +++ translations/base-it.yaml | 18 ++++++---- translations/base-ja.yaml | 5 +++ translations/base-kor.yaml | 13 +++++--- translations/base-lt.yaml | 5 +++ translations/base-nl.yaml | 13 ++++++-- translations/base-no.yaml | 5 +++ translations/base-pl.yaml | 5 +++ translations/base-pt-BR.yaml | 5 +++ translations/base-pt-PT.yaml | 5 +++ translations/base-ro.yaml | 5 +++ translations/base-ru.yaml | 60 ++++++++++++++++++--------------- translations/base-sl.yaml | 5 +++ translations/base-sr.yaml | 5 +++ translations/base-sv.yaml | 5 +++ translations/base-tr.yaml | 12 +++++-- translations/base-uk.yaml | 5 +++ translations/base-zh-CN.yaml | 50 ++++++++++++---------------- translations/base-zh-TW.yaml | 5 +++ 32 files changed, 257 insertions(+), 98 deletions(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 7bd21795..24b5d725 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -6,6 +6,7 @@ export const CHANGELOG = [ "Puzzle DLC: Goal acceptors now reset after getting no items for a while (This should prevent being able to 'cheat' puzzles) (by Sense101)", "Puzzle DLC: Added button to clear all buildings / reset the puzzle (by Sense101)", "Puzzle DLC: Allow copy-paste in puzzle mode (by Sense101)", + "Updated translations", ], }, { diff --git a/translations/base-ar.yaml b/translations/base-ar.yaml index 82560517..91e1aa9e 100644 --- a/translations/base-ar.yaml +++ b/translations/base-ar.yaml @@ -75,6 +75,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -429,6 +430,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1209,6 +1212,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-cat.yaml b/translations/base-cat.yaml index 0ec8004c..2d7b371c 100644 --- a/translations/base-cat.yaml +++ b/translations/base-cat.yaml @@ -79,6 +79,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -439,6 +440,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1251,6 +1254,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-cz.yaml b/translations/base-cz.yaml index be339a30..e91463ba 100644 --- a/translations/base-cz.yaml +++ b/translations/base-cz.yaml @@ -75,6 +75,7 @@ mainMenu: puzzleDlcText: Baví vás zmenšování a optimalizace továren? Pořiďte si nyní Puzzle DLC na Steamu pro ještě více zábavy! puzzleDlcWishlist: Přidejte si nyní na seznam přání! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -430,6 +431,8 @@ ingame: clearItems: Vymazat tvary share: Sdílet report: Nahlásit + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle editor instructions: @@ -1210,6 +1213,8 @@ puzzleMenu: easy: Lehká medium: Střední hard: Těžká + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Provádíte své akce příliš často. Počkejte prosím. invalid-api-key: Komunikace s back-endem se nezdařila, prosím zkuste @@ -1233,6 +1238,6 @@ backendErrors: bad-payload: Žádost obsahuje neplatná data. bad-building-placement: Váš puzzle obsahuje neplatně umístěné budovy. timeout: Žádost vypršela. - too-many-likes-already: Tento puzzle již získal příliš mnoho lajků. Pokud jej přesto chcete - odstranit, kontaktujte nás prosím na support@shapez.io! + too-many-likes-already: Tento puzzle již získal příliš mnoho lajků. Pokud jej + přesto chcete odstranit, kontaktujte nás prosím na support@shapez.io! no-permission: K provedení této akce nemáte oprávnění. diff --git a/translations/base-da.yaml b/translations/base-da.yaml index 0d5ab377..1e6b329f 100644 --- a/translations/base-da.yaml +++ b/translations/base-da.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -434,6 +435,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1218,6 +1221,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-de.yaml b/translations/base-de.yaml index 8cd078f6..d4662108 100644 --- a/translations/base-de.yaml +++ b/translations/base-de.yaml @@ -75,6 +75,7 @@ mainMenu: puzzleDlcText: Du hast Spaß daran, deine Fabriken zu optimieren und effizienter zu machen? Hol dir das Puzzle DLC auf Steam für noch mehr Spaß! puzzleDlcWishlist: Jetzt zur Wunschliste hinzufügen! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -199,8 +200,9 @@ dialogs: title: Puzzle veröffentlichen descName: "Gib deinem Puzzle einen Namen:" descIcon: "Bitte gib einen eindeutigen Kurzschlüssel ein, der als Symbol für - dein Puzzle genutzt wird (Du kannst diesen auch <link>hier</link> generieren, oder wähle - unten einen der zufällig generierten Vorschläge):" + dein Puzzle genutzt wird (Du kannst diesen auch <link>hier</link> + generieren, oder wähle unten einen der zufällig generierten + Vorschläge):" placeholderName: Puzzle Name puzzleResizeBadBuildings: title: Größenänderung nicht möglich @@ -211,8 +213,9 @@ dialogs: desc: "Das Puzzle konnte nicht geladen werden:" offlineMode: title: Offline Modus - desc: Die Server konnten nicht erreicht werden, daher läuft das Spiel im Offline Modus. - Bitte sorge dafür, dass du eine aktive Internetverbindung hast. + desc: Die Server konnten nicht erreicht werden, daher läuft das Spiel im Offline + Modus. Bitte sorge dafür, dass du eine aktive Internetverbindung + hast. puzzleDownloadError: title: Download Fehler desc: "Der Download des Puzzles ist fehlgeschlagen:" @@ -222,20 +225,22 @@ dialogs: puzzleSubmitOk: title: Puzzle veröffentlicht desc: Herzlichen Glückwunsch! Dein Rätsel wurde veröffentlicht und kann nun von - anderen gespielt werden. Du kannst es jetzt im Bereich "Meine Puzzle" finden. + anderen gespielt werden. Du kannst es jetzt im Bereich "Meine + Puzzle" finden. puzzleCreateOffline: title: Offline Modus - desc: Da du offline bist, bist du nicht in der Lage dei Puzzle zu speichern und/oder - zu veröffentlichen. Möchtest du trotzdem fortfahren? + desc: Da du offline bist, bist du nicht in der Lage dei Puzzle zu speichern + und/oder zu veröffentlichen. Möchtest du trotzdem fortfahren? puzzlePlayRegularRecommendation: title: Empfehlung - desc: ch empfehle <strong>stark</strong>, das normale Spiel bis Level 12 zu spielen, - bevor du dich an das Puzzle DLC wagst, sonst stößt du möglicherweise - auf noch nicht eingeführte Mechaniken. Möchtest du trotzdem fortfahren? + desc: ch empfehle <strong>stark</strong>, das normale Spiel bis Level 12 zu + spielen, bevor du dich an das Puzzle DLC wagst, sonst stößt du + möglicherweise auf noch nicht eingeführte Mechaniken. Möchtest du + trotzdem fortfahren? puzzleShare: title: Kurzschlüssel kopiert - desc: Der Kurzschlüssel des Puzzles (<key>) wurde in die Zwischenablage kopiert! Dieser - kann im Puzzle Menü genutzt werden, um das Puzzle zu laden. + desc: Der Kurzschlüssel des Puzzles (<key>) wurde in die Zwischenablage kopiert! + Dieser kann im Puzzle Menü genutzt werden, um das Puzzle zu laden. puzzleReport: title: Puzzle Melden options: @@ -253,7 +258,8 @@ dialogs: desc: Trage einen Kurzschlüssel ein um das Puzzle zu laden. puzzleDelete: title: Puzzle löschen? - desc: Bist du sicher, dass du '<title>' löschen möchtest? Dies kann nicht rückgängig gemacht werden! + desc: Bist du sicher, dass du '<title>' löschen möchtest? Dies kann nicht + rückgängig gemacht werden! ingame: keybindingsOverlay: moveMap: Bewegen @@ -432,35 +438,41 @@ ingame: clearItems: Items löschen share: Teilen report: Melden + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Editor instructions: - 1. Plaziere einen <strong>Item-Produzent</strong> um Shapes und Farben für den Spieler bereitzustellen - - 2. Produziere ein oder mehrere Shapes, die der Spieler herstellen soll - und liefere dieze zu einem oder mehreren <strong>Ziel-Akzeptoren</strong> - - 3. Sobald ein Ziel-Akzeptor ein Shape für eine gewisse Zeit erhällt, - <strong>speichert dieser es als Ziel</strong>, welches der Spieler - später herstellen muss (Angezeigt durch den <strong>grünen Punkt</strong>). + - 2. Produziere ein oder mehrere Shapes, die der Spieler herstellen + soll und liefere dieze zu einem oder mehreren + <strong>Ziel-Akzeptoren</strong> + - 3. Sobald ein Ziel-Akzeptor ein Shape für eine gewisse Zeit + erhällt, <strong>speichert dieser es als Ziel</strong>, welches + der Spieler später herstellen muss (Angezeigt durch den + <strong>grünen Punkt</strong>). - 4. Klicke den <strong>sperren Button</strong> um die Gebäude zu sperren. - 5. Sobald du auf Überprüfen gedrückt hast, wird dei Puzzel geprüft und du kannst es veröffentlichen. - 6. Bei der Freigabe werden <strong>alle Gebäude entfernt</strong>. - Ausgenommen sind die Produzenten und Akzeptoren - Das ist schließlich der - Teil, den die Spieler selbst herausfinden sollen :) + Ausgenommen sind die Produzenten und Akzeptoren - Das ist + schließlich der Teil, den die Spieler selbst herausfinden sollen + :) puzzleCompletion: title: Puzzle abgeschlossen! titleLike: "Klicke auf das Herz, wenn dier das Puzzle gefallen hat:" titleRating: Wie schwierig fandest du das Puzzle? - titleRatingDesc: Deine Bewertung wird mir helfen, in Zukunft bessere Vorschläge zu machen + titleRatingDesc: Deine Bewertung wird mir helfen, in Zukunft bessere Vorschläge + zu machen continueBtn: Weiter spielen menuBtn: Menü puzzleMetadata: author: Ersteller shortKey: Kurzschlüssel rating: Schwierigkeitsgrad - averageDuration: Durchschnittliche Dauer + averageDuration: Durchschnittliche Dauer completionRate: Abschlussrate shopUpgrades: belt: @@ -689,7 +701,7 @@ buildings: block: default: name: Sperre - description: Ermöglicht das Blockieren einer Kachel. + description: Ermöglicht das Blockieren einer Kachel. storyRewards: reward_cutter_and_trash: title: Formen zerschneiden @@ -1268,6 +1280,8 @@ puzzleMenu: easy: Einfach medium: Mittel hard: Schwer + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Du führst Aktionen zu schnell aus. Bitte warte kurz. invalid-api-key: Kommunikation mit dem Back-End fehlgeschlagen, veruche das @@ -1291,6 +1305,6 @@ backendErrors: bad-payload: Die Anfrage beinhaltet ungültige Daten. bad-building-placement: Dein Puzzle beinhaltet Gebäude, die sich an ungültigen Stellen befinden. timeout: Es kam zu einer Zeitüberschreitung bei der Anfrage. - too-many-likes-already: Dieses Puzzle hat schon zu viele Likes erhalten. Wenn du es trotzdem - löschen möchtest, wende dich an support@shapez.io! + too-many-likes-already: Dieses Puzzle hat schon zu viele Likes erhalten. Wenn du + es trotzdem löschen möchtest, wende dich an support@shapez.io! no-permission: Du hast nicht die Berechtigung diese Aktion auszuführen. diff --git a/translations/base-el.yaml b/translations/base-el.yaml index a48f9a13..0ca43bc5 100644 --- a/translations/base-el.yaml +++ b/translations/base-el.yaml @@ -79,6 +79,7 @@ mainMenu: puzzleDlcText: Σε αρέσει να συμπάγης και να βελτιστοποίεις εργοστάσια; Πάρε την λειτουργεία παζλ στο Steam για ακόμη περισσότερη πλάκα! puzzleDlcWishlist: Βαλτε το στην λίστα επιθυμιών τώρα! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -445,6 +446,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Κατασκευαστείς παζλ. instructions: @@ -1251,6 +1254,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-es.yaml b/translations/base-es.yaml index 9f5974da..23eccceb 100644 --- a/translations/base-es.yaml +++ b/translations/base-es.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: ¿Disfrutas compactando y optimizando fábricas? ¡Consigue ahora el DLC de Puzles en Steam para aún más diversión! puzzleDlcWishlist: ¡Añádelo ahora a tu lista de deseos! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -443,6 +444,8 @@ ingame: clearItems: Eliminar todos los elementos share: Compartir report: Reportar + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Editor de Puzles instructions: @@ -1271,6 +1274,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Estás haciendo tus acciones con demasiada frecuencia. Por favor, espera un poco. diff --git a/translations/base-fi.yaml b/translations/base-fi.yaml index 302fe190..a11cee94 100644 --- a/translations/base-fi.yaml +++ b/translations/base-fi.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -431,6 +432,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1211,6 +1214,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-fr.yaml b/translations/base-fr.yaml index 83f08fbc..c90b41bf 100644 --- a/translations/base-fr.yaml +++ b/translations/base-fr.yaml @@ -76,6 +76,7 @@ mainMenu: puzzleDlcText: Vous aimez compacter et optimiser vos usines ? Achetez le DLC sur Steam dés maintenant pour encore plus d'amusement ! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -439,6 +440,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1273,6 +1276,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Vous effectuez vos actions trop fréquemment. Veuillez attendre un peu s'il vous plait. diff --git a/translations/base-he.yaml b/translations/base-he.yaml index 8d4c7ea0..9be04af5 100644 --- a/translations/base-he.yaml +++ b/translations/base-he.yaml @@ -74,6 +74,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: אישור @@ -417,6 +418,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1154,6 +1157,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-hr.yaml b/translations/base-hr.yaml index 9d7d9391..6d58d9f2 100644 --- a/translations/base-hr.yaml +++ b/translations/base-hr.yaml @@ -77,6 +77,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -431,6 +432,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1204,6 +1207,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-hu.yaml b/translations/base-hu.yaml index c770d04f..b20a52fa 100644 --- a/translations/base-hu.yaml +++ b/translations/base-hu.yaml @@ -75,6 +75,7 @@ mainMenu: puzzleDlcText: Szereted optimalizálni a gyáraid méretét és hatákonyságát? Szerezd meg a Puzzle DLC-t a Steamen most! puzzleDlcWishlist: Kívánságlistára vele! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -435,6 +436,8 @@ ingame: clearItems: Elemek eltávolítása share: Megosztás report: Jelentés + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Fejtörő Készítő instructions: @@ -1239,6 +1242,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Túl gyorsan csinálsz dolgokat. Kérlek, várj egy kicsit. invalid-api-key: Valami nem oké a játékkal. Próbáld meg frissíteni vagy diff --git a/translations/base-ind.yaml b/translations/base-ind.yaml index be1d12b9..46a0db87 100644 --- a/translations/base-ind.yaml +++ b/translations/base-ind.yaml @@ -75,6 +75,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -440,6 +441,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1285,6 +1288,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-it.yaml b/translations/base-it.yaml index ace9f13d..aa1b898e 100644 --- a/translations/base-it.yaml +++ b/translations/base-it.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Ti piace miniaturizzare e ottimizzare le tue fabbriche? Ottini il Puzzle DLC ora su steam per un divertimento ancora maggiore! puzzleDlcWishlist: Aggiungi alla lista dei desideri ora! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -263,7 +264,8 @@ dialogs: desc: Inserisci il codice del puzzle per caricarlo. puzzleDelete: title: Cancellare il puzzle? - desc: Sei sicuro di voler cancellare '<title>'? Questa azione non può essere annullata! + desc: Sei sicuro di voler cancellare '<title>'? Questa azione non può essere + annullata! ingame: keybindingsOverlay: moveMap: Sposta @@ -445,6 +447,8 @@ ingame: clearItems: Elimina oggetti share: Condividi report: Segnala + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Creazione puzzle instructions: @@ -699,7 +703,8 @@ buildings: goal_acceptor: default: name: Accettore di obiettivi. - description: Consegna forme all'accettore di obiettivi per impostarli come obiettivo. + description: Consegna forme all'accettore di obiettivi per impostarli come + obiettivo. block: default: name: Blocco @@ -1138,8 +1143,7 @@ about: La colonna sonora è stata composta da<a href="https://soundcloud.com/pettersumelius" target="_blank"> Peppsen</a> - È un grande.<br><br> - Per finire, grazie di cuore al mio migliore amico <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - - Senza le nostre sessioni su factorio questo gioco non sarebbe mai esistito. + Per finire, grazie di cuore al mio migliore amico <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Senza le nostre sessioni su factorio questo gioco non sarebbe mai esistito. changelog: title: Registro modifiche demo: @@ -1268,6 +1272,8 @@ puzzleMenu: easy: Facile medium: Medio hard: Difficile + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Stai facendo troppe azioni velocemente. Per favore attendi un attimo. invalid-api-key: Comunicazione con il backend fallita, per favore prova ad @@ -1291,6 +1297,6 @@ backendErrors: bad-payload: La richiesta contiene dati non validi. bad-building-placement: Il tuo puzzle contiene edifici non validi. timeout: La richiesta è scaduta. - too-many-likes-already: Questo puzzle ha già ricevuto troppi "mi piace". Se vuoi ancora - rimuoverlo, per favore contatta support@shapez.io! + too-many-likes-already: Questo puzzle ha già ricevuto troppi "mi piace". Se vuoi + ancora rimuoverlo, per favore contatta support@shapez.io! no-permission: Non hai i permessi per eseguire questa azione. diff --git a/translations/base-ja.yaml b/translations/base-ja.yaml index a55afd79..2fe56bec 100644 --- a/translations/base-ja.yaml +++ b/translations/base-ja.yaml @@ -69,6 +69,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -395,6 +396,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1067,6 +1070,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-kor.yaml b/translations/base-kor.yaml index 329b8fc2..dc8d190f 100644 --- a/translations/base-kor.yaml +++ b/translations/base-kor.yaml @@ -71,6 +71,7 @@ mainMenu: back: Back puzzleDlcText: 공장의 크기를 줄이고 최적화하는데 관심이 많으신가요? 지금 퍼즐 DLC를 구입하세요! puzzleDlcWishlist: 지금 찜 목록에 추가하세요! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: 확인 @@ -395,6 +396,8 @@ ingame: clearItems: 아이템 초기화 share: 공유 report: 신고 + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: 퍼즐 생성기 instructions: @@ -956,10 +959,10 @@ keybindings: comparator: 비교기 item_producer: 아이템 생성기 (샌드박스) copyWireValue: "전선: 커서 아래 값 복사" - rotateToUp: "위로 향하게 회전" - rotateToDown: "아래로 향하게 회전" - rotateToRight: "오른쪽으로 향하게 회전" - rotateToLeft: "아래쪽으로 향하게 회전" + rotateToUp: 위로 향하게 회전 + rotateToDown: 아래로 향하게 회전 + rotateToRight: 오른쪽으로 향하게 회전 + rotateToLeft: 아래쪽으로 향하게 회전 constant_producer: 일정 생성기 goal_acceptor: 목표 수집기 block: 블록 @@ -1082,6 +1085,8 @@ puzzleMenu: easy: 쉬움 medium: 중간 hard: 어려움 + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: 너무 빠른 시간 내 작업을 반복하고 있습니다. 조금만 기다려 주세요. invalid-api-key: 백엔드 서버와 통신할 수 없습니다. 게임을 업데이트하거나 재시작해 주세요 (잘못된 API 키). diff --git a/translations/base-lt.yaml b/translations/base-lt.yaml index 883d9a17..0c963f33 100644 --- a/translations/base-lt.yaml +++ b/translations/base-lt.yaml @@ -77,6 +77,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -430,6 +431,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1209,6 +1212,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-nl.yaml b/translations/base-nl.yaml index a6e847a2..92efd04c 100644 --- a/translations/base-nl.yaml +++ b/translations/base-nl.yaml @@ -79,6 +79,7 @@ mainMenu: puzzleDlcText: Houd je van het comprimeren en optimaliseren van fabrieken? Verkrijg de puzzel DLC nu op Steam voor nog meer plezier! puzzleDlcWishlist: Voeg nu toe aan je verlanglijst! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -262,7 +263,8 @@ dialogs: desc: Voer de vorm sleutel van de puzzel in om deze te laden. puzzleDelete: title: Puzzel verwijderen? - desc: Weet je zeker dat je '<title>' wilt verwijderen? Dit kan niet ongedaan gemaakt worden! + desc: Weet je zeker dat je '<title>' wilt verwijderen? Dit kan niet ongedaan + gemaakt worden! ingame: keybindingsOverlay: moveMap: Beweeg rond de wereld @@ -443,6 +445,8 @@ ingame: clearItems: Items leeg maken share: Delen report: Rapporteren + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzel Maker instructions: @@ -1222,7 +1226,9 @@ puzzleMenu: validatingPuzzle: Puzzel Valideren submittingPuzzle: Puzzel Indienen noPuzzles: Er zijn momenteel geen puzzels in deze sectie. - dlcHint: Heb je de DLC al gekocht? Zorg ervoor dat het is geactiveerd door met de rechtermuisknop op shapez.io in uw bibliotheek te klikken, Eigenschappen > DLC's te selecteren. + dlcHint: Heb je de DLC al gekocht? Zorg ervoor dat het is geactiveerd door met + de rechtermuisknop op shapez.io in uw bibliotheek te klikken, + Eigenschappen > DLC's te selecteren. categories: levels: Levels new: Nieuw @@ -1278,5 +1284,6 @@ backendErrors: bad-payload: Het verzoek bevat ongeldige gegevens. bad-building-placement: Je puzzel bevat ongeldig geplaatste gebouwen. timeout: Het verzoek is verlopen. - too-many-likes-already: De puzzel heeft al te veel likes. Als je het nog steeds wilt verwijderen, neem dan contact op support@shapez.io! + too-many-likes-already: De puzzel heeft al te veel likes. Als je het nog steeds + wilt verwijderen, neem dan contact op support@shapez.io! no-permission: Je bent niet gemachtigd om deze actie uit te voeren. diff --git a/translations/base-no.yaml b/translations/base-no.yaml index 5f61d43d..7a29d5c6 100644 --- a/translations/base-no.yaml +++ b/translations/base-no.yaml @@ -79,6 +79,7 @@ mainMenu: puzzleDlcText: Liker du å bygge kompate og optimaliserte fabrikker? Skaff deg Puzzle tilleggspakken nå på Steam for mere moro! puzzleDlcWishlist: Legg i ønskeliste nå! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -436,6 +437,8 @@ ingame: clearItems: Fjern gjenstander share: Del report: Rapporter + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puslespill lager instructions: @@ -1233,6 +1236,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Du gjør en handling for ofte. Vennligst vent litt. invalid-api-key: Kunne ikke kommunisere med kjernen, vennligst prøv å diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 53cade2d..180233c0 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -438,6 +439,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1248,6 +1251,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-pt-BR.yaml b/translations/base-pt-BR.yaml index 1fe51503..0fba5f0f 100644 --- a/translations/base-pt-BR.yaml +++ b/translations/base-pt-BR.yaml @@ -77,6 +77,7 @@ mainMenu: puzzleDlcText: Você gosta de compactar e otimizar fábricas? Adquira a Puzzle DLC já disponível na Steam para se divertir ainda mais! puzzleDlcWishlist: Adicione já a sua lista de desejos! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -437,6 +438,8 @@ ingame: clearItems: Limpar Items share: Compartilhar report: Denunciar + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Criador de Desafios instructions: @@ -1254,6 +1257,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Você está fazendo coisas muito rapidamente. Por favor espere um pouco. invalid-api-key: Falha ao comunicar com o backend, por favor tente diff --git a/translations/base-pt-PT.yaml b/translations/base-pt-PT.yaml index 00fd0699..3f3ece0c 100644 --- a/translations/base-pt-PT.yaml +++ b/translations/base-pt-PT.yaml @@ -79,6 +79,7 @@ mainMenu: puzzleDlcText: Gostas de compactar e otimizar fábricas? Adquire agora o DLC Puzzle na Steam para ainda mais diversão! puzzleDlcWishlist: Lista de desejos agora! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -446,6 +447,8 @@ ingame: clearItems: Limpar Itens share: Partilhar report: Reportar + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Criador de Puzzle instructions: @@ -1265,6 +1268,8 @@ puzzleMenu: easy: Fácil medium: Médio hard: Difícil + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Estás a realizar as tuas ações demasiado rápido. Aguarda um pouco. invalid-api-key: Falha ao cominucar com o backend, por favor tenta diff --git a/translations/base-ro.yaml b/translations/base-ro.yaml index e5a3135b..76f0c731 100644 --- a/translations/base-ro.yaml +++ b/translations/base-ro.yaml @@ -79,6 +79,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -439,6 +440,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1230,6 +1233,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-ru.yaml b/translations/base-ru.yaml index b07eb66e..3661be37 100644 --- a/translations/base-ru.yaml +++ b/translations/base-ru.yaml @@ -77,6 +77,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -203,20 +204,20 @@ dialogs: title: Отправить головоломку descName: "Дайте имя вашей головоломке:" descIcon: "Введите уникальный короткий ключ, который будет показан как иконка - вашей головоломки (Вы можете сгенерировать их <link>здесь</link>, или выбрать один - из случайно предложенных фигур ниже):" + вашей головоломки (Вы можете сгенерировать их <link>здесь</link>, + или выбрать один из случайно предложенных фигур ниже):" placeholderName: Название головоломки puzzleResizeBadBuildings: title: Невозможно изменить размер - desc: Нельзя уменьшить область, потому что некоторые постройки будут - вне области. + desc: Нельзя уменьшить область, потому что некоторые постройки будут вне + области. puzzleLoadError: title: Bad Puzzle desc: "Не удалось загрузить головоломки:" offlineMode: title: Оффлайн режим - desc: Нам не удалось связаться с сервеами, поэтому игра будет работать в оффлайн режиме. - Убедитесь, что вы подключены к интернету. + desc: Нам не удалось связаться с сервеами, поэтому игра будет работать в оффлайн + режиме. Убедитесь, что вы подключены к интернету. puzzleDownloadError: title: Ошибка загрузки desc: "Не удалось загрузить головломку:" @@ -225,21 +226,22 @@ dialogs: desc: "Не удалось отправить вашу головоломку:" puzzleSubmitOk: title: Головоломка опубликована - desc: Поздравляю! Ваша головоломка была опубликована, и теперь в нее могут играть - остальные. Теперь вы можете найти ее в разделе "Мои головоломки". + desc: Поздравляю! Ваша головоломка была опубликована, и теперь в нее могут + играть остальные. Теперь вы можете найти ее в разделе "Мои + головоломки". puzzleCreateOffline: title: Оффлайн режим desc: Поскольку вы не в сети, вы не сможете сохранять и / или публиковать свои головоломки. Вы все еще хотите продолжить? puzzlePlayRegularRecommendation: title: Рекомендация - desc: Я <strong>настоятельно</strong> рекомендую пройти обычную игру до уровня 12 - перед игрой в Puzzle DLC, иначе вы можете встретить + desc: Я <strong>настоятельно</strong> рекомендую пройти обычную игру до уровня + 12 перед игрой в Puzzle DLC, иначе вы можете встретить непредставленные механики. Вы все еще хотите продолжить? puzzleShare: title: Короткий ключ скопирован - desc: Короткий ключ головоломки (<key>) был скопирован в буфер обмена! Он - может быть введен в меню головолом для доступа к головоломке. + desc: Короткий ключ головоломки (<key>) был скопирован в буфер обмена! Он может + быть введен в меню головолом для доступа к головоломке. puzzleReport: title: Жалоба на головоломку options: @@ -438,23 +440,27 @@ ingame: clearItems: Очистить предметы share: Поделиться report: Пожаловаться + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Редактор головоломок instructions: - - 1. Разместите <strong>постоянный производитель</strong>, чтоб предоставить фигуры - и цвета игроку - - 2. Постройте одну или несколько фигур, которые вы хотите, чтобы игрок построил позже, и - доставьте их к одному или нескольким <strong>приемникам цели</strong> + - 1. Разместите <strong>постоянный производитель</strong>, чтоб + предоставить фигуры и цвета игроку + - 2. Постройте одну или несколько фигур, которые вы хотите, чтобы + игрок построил позже, и доставьте их к одному или нескольким + <strong>приемникам цели</strong> - 3. Как только приемник цели получил фигуру определенное количество - раз, он <strong>сохраняет фигуру как цель</strong>, которую игрок должен - произвести позже (Обозначается <strong>зеленым значком</strong>). - - 4. Нажмите <strong>кнопу блокировки</strong> на здании, чтоб выключить - его. - - 5. Как только вы нажали "Обзор", ваша головоломка будет проверена и вы - сможете опубликовать ее. + раз, он <strong>сохраняет фигуру как цель</strong>, которую игрок + должен произвести позже (Обозначается <strong>зеленым + значком</strong>). + - 4. Нажмите <strong>кнопу блокировки</strong> на здании, чтоб + выключить его. + - 5. Как только вы нажали "Обзор", ваша головоломка будет проверена + и вы сможете опубликовать ее. - 6. После публикации, <strong>все постройки будут удалены</strong> - за исключением производителей и приемников цели - Это часть, в которой - игрок должен разобраться сам :) + за исключением производителей и приемников цели - Это часть, в + которой игрок должен разобраться сам :) puzzleCompletion: title: Головоломка завершена! titleLike: "Нажмите на сердечко, если головоломка вам понравилась:" @@ -1242,6 +1248,8 @@ puzzleMenu: easy: Лего medium: Средне hard: Сложно + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Вы слишком часто выполняете свои действия. Подождите немного. invalid-api-key: Не удалось связаться с сервером, попробуйте @@ -1265,6 +1273,6 @@ backendErrors: bad-payload: Запрос содержит неверные данные. bad-building-placement: Ваша головоломка содержит неверно размещенные здания. timeout: Время ожидания запроса истекло. - too-many-likes-already: Головоломка уже заработала слишком много лайков. Если вы все еще хотите - удалить ее, обратитесь в support@shapez.io! + too-many-likes-already: Головоломка уже заработала слишком много лайков. Если вы + все еще хотите удалить ее, обратитесь в support@shapez.io! no-permission: У вас нет прав на выполнение этого действия. diff --git a/translations/base-sl.yaml b/translations/base-sl.yaml index 4abb4021..b5400263 100644 --- a/translations/base-sl.yaml +++ b/translations/base-sl.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -432,6 +433,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1212,6 +1215,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-sr.yaml b/translations/base-sr.yaml index c96258ce..4cac7750 100644 --- a/translations/base-sr.yaml +++ b/translations/base-sr.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -432,6 +433,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1210,6 +1213,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-sv.yaml b/translations/base-sv.yaml index 21fda562..dd30305f 100644 --- a/translations/base-sv.yaml +++ b/translations/base-sv.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -436,6 +437,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1220,6 +1223,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-tr.yaml b/translations/base-tr.yaml index cf54e2a0..342daf6c 100644 --- a/translations/base-tr.yaml +++ b/translations/base-tr.yaml @@ -77,6 +77,7 @@ mainMenu: alıyorsun? Şimdi Yapboz Paketini (DLC) Steam'de alarak keyfine keyif katabilirsin! puzzleDlcWishlist: İstek listene ekle! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: OK @@ -255,7 +256,8 @@ dialogs: desc: Yapbozu yüklemek için kısa anahtarı giriniz puzzleDelete: title: Yapboz silinsin mi? - desc: "'<title>' yapbozunu silmek istediğinize emin misiniz? Bu işlem geri alınamaz!" + desc: "'<title>' yapbozunu silmek istediğinize emin misiniz? Bu işlem geri + alınamaz!" ingame: keybindingsOverlay: moveMap: Hareket Et @@ -435,6 +437,8 @@ ingame: clearItems: Eşyaları temizle share: Paylaş report: Şikayet et + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Yapboz Oluşturucu instructions: @@ -1239,6 +1243,8 @@ puzzleMenu: easy: Kolay medium: Orta hard: Zor + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: Çok sık işlem yapıyorsunuz. Biraz bekleyiniz. invalid-api-key: Arka tarafla iletişim kurulamadı, lütfen oyunu @@ -1262,6 +1268,6 @@ backendErrors: bad-payload: İstek geçersiz veri içeriyor. bad-building-placement: Yapbozunuzda uygun yerleştirilmeyen yapılar mevcut. timeout: İstek zaman aşımına uğradı. - too-many-likes-already: Yapbozun zaten çok beğenisi var. Yine de silmek istiyorsanız - support@shapez.io ile iletişime geçiniz! + too-many-likes-already: Yapbozun zaten çok beğenisi var. Yine de silmek + istiyorsanız support@shapez.io ile iletişime geçiniz! no-permission: Bu işlemi yapmak için izniniz yok. diff --git a/translations/base-uk.yaml b/translations/base-uk.yaml index 4d01f0ff..79913e51 100644 --- a/translations/base-uk.yaml +++ b/translations/base-uk.yaml @@ -78,6 +78,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: Гаразд @@ -438,6 +439,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1250,6 +1253,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to diff --git a/translations/base-zh-CN.yaml b/translations/base-zh-CN.yaml index f1d91aa8..6e7b2ab9 100644 --- a/translations/base-zh-CN.yaml +++ b/translations/base-zh-CN.yaml @@ -72,6 +72,7 @@ mainMenu: back: 返回 puzzleDlcText: 持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez.io)的首个DLC“谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战! puzzleDlcWishlist: 添加愿望单! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: 确认 @@ -123,7 +124,7 @@ dialogs: desc: 试玩版中只能保存一份存档。请删除旧存档或者购买完整版! updateSummary: title: 新内容更新啦! - desc: "以下为游戏最新更新内容:" + desc: 以下为游戏最新更新内容: upgradesIntroduction: title: 解锁升级 desc: <strong>您生产过的所有图形都能被用来解锁升级。</strong> 所以不要销毁您之前建造的工厂!注意:升级菜单在屏幕右上角。 @@ -135,16 +136,13 @@ dialogs: desc: 您还没有解锁蓝图功能!通过第12关的挑战后可解锁蓝图。 keybindingsIntroduction: title: 实用快捷键 - desc: - "这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> + desc: 这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br> <code class='keybinding'>CTRL键</code> + 拖动:选择区域以复制或删除。<br> <code class='keybinding'>SHIFT键</code>: 按住以放置多个同一种设施。<br> <code - class='keybinding'>ALT键</code>:反向放置传送带。<br>" + class='keybinding'>ALT键</code>:反向放置传送带。<br> createMarker: title: 创建地图标记 - desc: - 填写一个有意义的名称,还可以同时包含一个形状的 <strong>短代码</strong>(您可以 <link>点击这里</link> - 生成短代码) + desc: 填写一个有意义的名称,还可以同时包含一个形状的 <strong>短代码</strong>(您可以 <link>点击这里</link> 生成短代码) titleEdit: 编辑地图标记 markerDemoLimit: desc: 在试玩版中您只能创建两个地图标记。请获取完整版以创建更多标记。 @@ -178,7 +176,7 @@ dialogs: submitPuzzle: title: 提交谜题 descName: 给您的谜题设定名称: - descIcon: "请输入唯一的短代码,它将显示为标志您的谜题的图标( <link>在此</link>生成,或者从以下随机推荐的图形中选择一个):" + descIcon: 请输入唯一的短代码,它将显示为标志您的谜题的图标( <link>在此</link>生成,或者从以下随机推荐的图形中选择一个): placeholderName: 谜题标题 puzzleResizeBadBuildings: title: 无法调整大小 @@ -249,7 +247,7 @@ ingame: clearBelts: 清除传送带 buildingPlacement: cycleBuildingVariants: 按 <key> 键以选择设施的变型体。 - hotkeyLabel: "快捷键:<key>" + hotkeyLabel: 快捷键:<key> infoTexts: speed: 速率 range: 范围 @@ -310,18 +308,15 @@ ingame: hints: 1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong> 1_2_conveyor: 用<strong>传送带</strong>将您的开采器连接到中心基地上!<br><br>提示:选中<strong>传送带</strong>后<strong>按下鼠标左键可拖动</strong>布置传送带! - 1_3_expand: - 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br> + 1_3_expand: 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br> 提示:按住 <strong>SHIFT</strong> 键可放置多个<strong>开采器</strong>,注意用<strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。 2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<strong>从上到下</strong>切割。 - 2_2_place_trash: - 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前 + 2_2_place_trash: 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前 (!) 不需要的废物。 2_3_more_cutters: 干的好!现在放置<strong>2个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键0-9</strong>可以快速选择各项设施! - 3_1_rectangles: - 现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br> + 3_1_rectangles: 现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br> 提示:选中<strong>传送带</strong>后按住<strong>SHIFT键</strong>可快速准确地规划<strong>传送带路线!</strong> 21_1_place_quad_painter: 放置<strong>四口上色器</strong>并且获取一些<strong>圆形</strong>,<strong>白色</strong>和<strong>红色</strong>! 21_2_switch_to_wires: 按 <strong>E</strong> 键选择<strong>电线层</strong>!<br><br> @@ -386,6 +381,8 @@ ingame: clearItems: 清除项目 share: 共享 report: 上报 + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: 谜题编辑器 instructions: @@ -612,8 +609,7 @@ storyRewards: desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。 reward_painter: title: 上色 - desc: - 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色! + desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色! <br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong> reward_mixer: title: 混合颜色 @@ -630,13 +626,11 @@ storyRewards: desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。 reward_rotater_ccw: title: 逆时针旋转 - desc: - 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。 + desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。 <br>选择<strong>旋转机</strong>然后按"T"键来选取这个变体。 reward_miner_chainable: title: 链式开采器 - desc: - 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br> + desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br> 注意:新的开采器已替换了工具栏里旧的开采器! reward_underground_belt_tier_2: title: 二级隧道 @@ -653,14 +647,12 @@ storyRewards: <br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了! reward_freeplay: title: 自由模式 - desc: - 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形! + desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形! 从现在起,中心基地最为需要的是<strong>产量</strong>,我强烈建议您去制造一台能够自动交付所需图形的机器!<br><br> 基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。 reward_blueprints: title: 蓝图 - desc: - 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL键并拖动鼠标来选择一块区域,然后按C键复制。 + desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL键并拖动鼠标来选择一块区域,然后按C键复制。 <br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。 no_reward: title: 下一关 @@ -688,8 +680,7 @@ storyRewards: <br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下! reward_constant_signal: title: 恒定信号 - desc: - 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。 + desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。 <br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。 reward_logic_gates: title: 逻辑门 @@ -708,8 +699,7 @@ storyRewards: <strong>提示</strong>:可在设置中打开电线层教程! reward_filter: title: 物品过滤器 - desc: - 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br> + desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br> 您也可以输入开关值(1 / 0)信号来激活或者禁用它。 reward_demo_end: title: 试玩结束 @@ -1046,6 +1036,8 @@ puzzleMenu: easy: 简单 medium: 普通 hard: 困难 + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: 你的操作太频繁了。请稍等。 invalid-api-key: 与后台通信失败,请尝试更新或重新启动游戏(无效的Api密钥)。 diff --git a/translations/base-zh-TW.yaml b/translations/base-zh-TW.yaml index 5464bb17..b10f4a24 100644 --- a/translations/base-zh-TW.yaml +++ b/translations/base-zh-TW.yaml @@ -71,6 +71,7 @@ mainMenu: puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle DLC now on Steam for even more fun! puzzleDlcWishlist: Wishlist now! + puzzleDlcViewNow: View Dlc dialogs: buttons: ok: 確認 @@ -393,6 +394,8 @@ ingame: clearItems: Clear Items share: Share report: Report + clearBuildings: Clear Buildings + resetPuzzle: Reset Puzzle puzzleEditorControls: title: Puzzle Creator instructions: @@ -1063,6 +1066,8 @@ puzzleMenu: easy: Easy medium: Medium hard: Hard + dlcHint: Purchased the DLC already? Make sure it is activated by right clicking + shapez.io in your library, selecting Properties > DLCs. backendErrors: ratelimit: You are performing your actions too frequent. Please wait a bit. invalid-api-key: Failed to communicate with the backend, please try to