pinch-points 0.1.0

A fast, kid-friendly crab-routing game: route streams of crabs into your sandcastle before the tide comes in
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
//! Russian strings.

use super::Tr;

pub static RU: Tr = Tr {
    tagline: "отлив начался - проводи крабов домой",
    menu_names: [
        "Приливная лужа",
        "Битва за пляж",
        "Плавник",
        "Повтор",
        "Пляжное лобби",
        "Настройки",
        "День на пляже",
        "Достижения",
        "Задача дня",
        "Продолжить",
    ],
    menu_blurbs: [
        "одиночная кампания-головоломка",
        "местная дуэль, до 6 мест",
        "редактор уровней",
        "смотри сохранённые раунды",
        "матч по локальной сети",
        "управление, звук, скорость",
        "испытания на очки",
        "твоя статистика и трофеи",
        "сегодняшний пляж, один для всех",
        "вернись к отложенному раунду",
    ],
    menu_daily_blurb: "{d}.{m} - один пляж для всех",
    menu_prompt: "W/S: выбор | Enter: играть | V: вставить раунд | M: музыка | Esc: выход",
    title_achievements: "Достижения",
    ach_names: [
        "Первый краб дома",
        "Бригадир пляжа",
        "Хозяин прилива",
        "Золотая хватка",
        "Сокровищница",
        "Крабий шёпот",
        "Охотник за штормом",
        "Владыка замка",
        "Династия",
        "Новичок головоломок",
        "Знаток луж",
        "Профессор луж",
        "Сухой замок",
        "Тяжёлая работа",
        "Полная рулетка",
        "Улов прилива",
        "Чемпион пляжа",
        "Хороший сосед",
        "Завсегдатай",
        "Архитектор плавника",
        "Морской волк",
        "Хранитель берега",
        "Золотой стандарт",
        "Большой груз",
        "Сотня за прилив",
        "Банк выигрывает",
        "Сила привычки",
        "Склад плавника",
        "Корм для птиц",
        "Пляж в безопасности",
        "От зари до зари",
        "Чемпион лета",
    ],
    ach_descs: [
        "приведи первого краба",
        "приведи 100 крабов",
        "приведи 1000 крабов",
        "приведи золотого краба",
        "приведи 10 золотых крабов",
        "запусти 5 приманок-линек",
        "получи 5 событий прилива",
        "выиграй раунд дуэли",
        "выиграй 10 раундов дуэли",
        "реши 5 головоломок",
        "реши 25 головоломок",
        "реши 50 головоломок",
        "выиграй раунд без единого набега",
        "приведи 25 гигантских крабов",
        "получи все события прилива",
        "приведи 50 крабов за раунд",
        "выиграй серию из пяти",
        "выиграй раунд по сети",
        "сыграй задачу дня в 7 разных дней",
        "сохрани уровень в редакторе",
        "сыграй 100 раундов дуэли",
        "приведи 5000 крабов",
        "приведи 50 золотых крабов",
        "приведи 100 гигантских крабов",
        "приведи 100 крабов за раунд",
        "выиграй 50 раундов дуэли",
        "сыграй задачу дня в 30 разных дней",
        "сохрани 10 уровней в редакторе",
        "потеряй 25 крабов из-за чаек",
        "пройди всю Приливную лужу",
        "пройди весь День на пляже",
        "выиграй 5 серий из пяти",
    ],
    stats_footer: "дома {banked} · золотых {golden} · побед {wins}/{rounds} · головоломок {puzzles}",
    daily_best: "Лучший результат задачи дня: {n}",
    crab_names: [
        "обычный",
        "молодой",
        "гигант",
        "линяющий",
        "золотой",
        "искристый",
    ],
    crab_notes: [
        "",
        "быстрый",
        "медленный",
        "приманка!",
        "джекпот",
        "сюрприз!",
    ],
    title_pick_language: "Выбери язык",
    title_new_version: "Вышла новая версия",
    prompt_new_version: "W/S: выбор | Enter: подтвердить | Esc: не сейчас",
    prompt_pick_language: "W/S: выбор | Enter: подтвердить",
    pick_language_later: "это можно изменить позже в настройках",
    title_tide_pool: "Приливная лужа",
    title_beach_day: "День на пляже",
    title_turf_war: "Битва за пляж",
    title_replay: "ПОВТОР",
    title_online: "ПО СЕТИ (ты {p})",
    title_vs_ai: "БИТВА ЗА ПЛЯЖ против {n} ИИ - ты {p}",
    title_editor: "Плавник - редактор",
    title_playtest: "Плавник - проверка",
    title_lobby: "Пляжное лобби",
    title_settings: "Настройки",
    title_match_setup: "Битва за пляж - настройка матча",
    title_replays: "Повторы",
    prompt_replays: "W/S: выбор | Enter: смотреть | C: копировать код | V: вставить код | Esc: меню",
    replays_empty: "Пока ничего не сохранено - доиграй Битву за пляж, и раунд ляжет сюда",
    replays_heading: "СОХРАНЁННЫЕ РАУНДЫ",
    replay_speed: "x{n}  (S: быстрее)",
    hint_offer: "Застрял? Нажми H для подсказки.",
    hint_showing: "Один знак из решения, приглушённый. H ещё раз, когда поставишь его.",
    title_stages: "Выбери этап",
    prompt_stages: "стрелки: выбор | Enter: играть | Esc: меню",
    stage_progress: "{a} из {b} пройдено",
    stage_key: "знаки",
    stage_custom: "твой плавник",
    ach_progress: "{a} из {b} открыто",
    stage_cleared: "пройдено",
    stage_open: "знаков: {n}",
    stage_free: "знаки не нужны",
    stage_locked: "закрыто - сначала пройди этап {n}",
    team_banner: "{mode}   КОМАНДЫ: {s}",
    the_gulls: "ЧАЙКИ!",
    tide_event: "СОБЫТИЕ ПРИЛИВА: {e}!",
    lure_started: "{p} привёл линяющего краба - ПРИМАНКА!",
    lure_banner: "ПРИМАНКА {s}с: крабы не видят знаков -> {p}!",
    desync: "РАССИНХРОН на кадре {f}!",
    waiting_peer: "ждём соперника...",
    waiting_for: "ждём {p}...",
    saved_count: "Спасено {a}/{b}",
    signposts_count: "Знаки: {a}/{b}",
    goal_bank: "Приведи {a}/{b}{t}",
    goal_survive: "Не потеряй ни одного краба!{t}",
    goal_golden: "Поймай золотого краба{t}",
    prompt_setup: "WASD ходить | стрелки ставить | Space убрать | Enter старт | N/P уровень",
    prompt_setup_full: "Все знаки расставлены - Space убирает один | Enter старт | N/P уровень",
    prompt_setup_no_posts: "Знаки тут не нужны - решается сам. Enter запустить | N/P уровень",
    prompt_running: "Идёт... R - сброс",
    prompt_won: "Все крабы дома! Enter: следующий уровень | R: посмотреть ещё раз",
    prompt_lost: "Не все крабы дошли. Enter: ещё раз",
    prompt_versus_short: "WASD ходить | стрелки ставить | Space убрать | Esc пауза",
    prompt_versus_local: "И1: WASD + стрелки/Space | И2: IJKL + цифры 8546/0 | геймпады: со старших мест",
    prompt_setup_custom: "твои клавиши (Настройки) | Enter старт | N/P уровень",
    prompt_versus_custom: "твои клавиши (Настройки) | Esc пауза",
    prompt_enter_menu: "Enter: меню",
    prompt_esc_menu: "Esc: меню",
    prompt_mute: "M: тишина",
    replay_draw: "ничья",
    pause_title: "ПАУЗА",
    pause_continue: "Продолжить",
    pause_to_menu: "Назад в меню",
    pause_quit: "Выйти из игры",
    pause_put_down: "Отложить раунд",
    round_put_down: "раунд отложен - вернись к нему из меню",
    round_put_down_failed: "не удалось отложить раунд: {e}",
    round_copied: "раунд скопирован кодом ({n} символов)",
    round_code_bad: "этот код - не начатый раунд",
    update_title: "Вышла новая версия: {v}",
    update_have: "У тебя {v}",
    update_no_notes: "(без описания выпуска)",
    update_question: "Хочешь обновиться?",
    update_yes: "Да, покажи новую версию",
    update_no: "Нет, не сейчас",
    update_note: "эту проверку можно выключить в настройках",
    update_opened: "страница выпуска передана браузеру",
    update_open_failed: "открыть не в чем, браузера нет: {url}",
    prompt_settings: "W/S: выбор | A/D: менять | Esc: сохранить и назад",
    prompt_match_setup: "W/S: выбор | A/D: менять | Enter: начать матч | Esc: назад",
    prompt_match_name: "W/S: выбор | Tab: имя | Enter: начать матч | Esc: назад",
    player_label: "И{p}",
    events: [
        "Крабомания",
        "Чайкомания",
        "Крабья монополия",
        "Налёт чаек",
        "Ускорение",
        "Замедление",
        "Свежий песок",
        "Обмен замками",
    ],
    event_blurbs: [
        "чаек смывает, а из нор валят крабы",
        "из нор лезут чайки вместо крабов",
        "половина свободных крабов бежит прямо к одному замку",
        "у каждого чужого замка садится чайка",
        "все крабы на пляже прибавляют ходу",
        "все крабы еле ползут",
        "все знаки на пляже смывает",
        "замки меняют хозяев - следи, где чей",
    ],
    ann_lure: "ПРИМАНКА!",
    ann_lure_sub: "десять секунд каждый свободный краб бежит к {p}",
    ann_surge: "ЧАЙКИ!",
    ann_surge_sub: "стая слетается на остаток раунда",
    tide_is_in: "~ ПРИЛИВ ПРИШЁЛ ~",
    wins: "{p} побеждает!",
    dead_heat: "Ничья!",
    team_wins: "{t} побеждают!",
    tag_you: " (ты)",
    tag_ai: " (ИИ)",
    haul: "крабов дошло домой за раунд: {n}",
    highlight_saved: "лучшие моменты: {path}",
    all_safe: "ВСЕ КРАБЫ ДОМА!",
    last_level: "Это был последний. Enter: назад в меню",
    campaign_done: "ПЛЯЖ В БЕЗОПАСНОСТИ!",
    set_group_controls: "УПРАВЛЕНИЕ",
    set_group_sound: "ЗВУК",
    set_group_round: "РАУНД",
    set_group_look: "ОФОРМЛЕНИЕ",
    set_group_danger: "НАЧАТЬ ЗАНОВО",
    set_group_game: "ИГРА",
    set_seat_input: "И{n} играет через",
    val_input_auto: "что подключено",
    val_input_keys: "только клавиатура",
    val_input_pad: "геймпад {n}",
    set_commit_keys: "Клавиши знаков И1",
    set_repeat_delay: "Задержка повтора",
    set_repeat_rate: "Скорость повтора",
    set_music: "Громкость музыки",
    set_sfx: "Звуки",
    set_speed: "Скорость головоломок",
    set_versus_mode: "Счёт в дуэли",
    set_language: "Язык",
    set_rumble: "Вибрация геймпада",
    set_deadzone: "Мёртвая зона стика",
    pad_help1: "Геймпад: крестовина/стик ходят, кнопки ставят",
    pad_help2: "L1 убрать, R1 очистить, Start пауза/вход, B назад",
    set_palette: "Цвета игроков",
    set_ui_scale: "Масштаб интерфейса",
    set_reduced_motion: "Меньше движения",
    set_update_check: "Искать обновления",
    set_replay_cap: "Хранить раундов",
    set_key_bindings: "Назначение клавиш",
    set_reset_progress: "Сбросить прогресс",
    val_palette_classic: "классические",
    val_palette_safe: "для дальтоников",
    val_open: "Enter - открыть",
    val_reset: "Enter - сбросить",
    val_reset_confirm: "Enter ещё раз",
    val_reset_done: "прогресс сброшен",
    title_controls: "Назначение клавиш",
    prompt_controls: "W/S: выбор | Enter: переназначить | Backspace: по умолчанию | Esc: назад",
    ctl_seat: "Место",
    ctl_group_seat: "ЧЬИ КЛАВИШИ",
    ctl_group_move: "ДВИЖЕНИЕ КУРСОРА",
    ctl_group_place: "УСТАНОВКА ЗНАКА",
    ctl_group_posts: "УБОРКА",
    ctl_listening: "нажми клавишу...",
    ctl_reset_key: "Backspace",
    ctl_press_key: "нажми клавишу... (Esc отменяет)",
    ctl_taken: "{k} уже делает «{a}»",
    ctl_reset: "Вернуть как было",
    bind_actions: [
        "Вверх",
        "Вниз",
        "Влево",
        "Вправо",
        "Знак вверх",
        "Знак вниз",
        "Знак влево",
        "Знак вправо",
        "Убрать знак",
        "Убрать все знаки",
    ],
    match_pad_joined: "Геймпады в игре: {list}",
    match_pad_hint: "Start на геймпаде занимает следующее место",
    val_arrows: "Стрелки",
    val_ijkl: "IJKL (одной рукой)",
    val_on: "вкл",
    val_off: "выкл",
    team_modes: [
        "каждый сам за себя",
        "пары (2v2, 2v2v2 при 6)",
        "тройки (3v3, 6 мест)",
    ],
    match_heading: "МАТЧ",
    match_players: "Игроки",
    match_ai: "Соперники-ИИ",
    human_one: "1 человек",
    human_many: "людей: {n}",
    match_ai_level: "Уровень ИИ",
    bot_levels: ["лёгкий", "обычный", "злой"],
    match_map: "Карта",
    match_gulls: "Напор чаек",
    match_round: "Длина раунда",
    match_mode: "Режим",
    match_name: "Имя",
    match_name_empty: "- (Tab: назвать)",
    match_name_typing: "(Enter: оставить)",
    mode_names: ["один раунд", "серия из 5"],
    tour_round: "Раунд {n} из 5",
    tour_champion: "{p} берёт серию!",
    tour_next: "Enter: следующий раунд",
    log_raid: "{p} обокрали! -{n}",
    log_golden: "{p} сдаёт золото! +{n}",
    log_lure: "{p} запускает приманку!",
    log_tier: "замок {p} растёт",
    log_gull: "чайка налетает",
    log_surge: "наплыв! крабы валом",
    map_names: [
        "Классика (12x9)",
        "Случайная - малая (9x7)",
        "Случайная - обычная (12x9)",
        "Случайная - большая (16x11)",
        "Случайная - XL (20x13)",
        "Океан без краёв (16x11)",
    ],
    map_custom: "{n} (твоя)",
    map_custom_local: "{n} (твоя, только тут)",
    map_none_seats: "ни один твой пляж не вместит {n}",
    gull_names: ["тихо", "обычно", "безумно"],
    round_names: ["2 минуты", "3 минуты", "5 минут"],
    lobby_hosting: "ждём на порту {p} - соперника пока нет",
    lobby_hosting_noport: "принимаем - соперника пока нет",
    lobby_rivals_one: "1 соперник на месте - Enter, чтобы начать (до 5)",
    lobby_rivals_many: "соперников на месте: {n} - Enter, чтобы начать (до 5)",
    lobby_ai_seats: " + {n} ИИ",
    lobby_watchers: " (смотрят: {n})",
    lobby_watch_armed: "режим зрителя: цифра (или J) - смотреть | W: лучше играть | Esc: меню",
    lobby_watching: "смотришь - матч начнётся, когда хозяин запустит",
    title_watching: "СМОТРИМ",
    lobby_aboard: "на месте - ждём, когда хозяин начнёт",
    lobby_listening: "ищем пляжи...",
    lobby_none_yet: "Пляжей пока нет... | H: принимать | J: войти по адресу | W: смотреть | Esc: меню",
    lobby_in_progress: "(идёт игра)",
    lobby_full_tag: "(мест нет)",
    lobby_chat_hint: "T: сказать что-нибудь",
    lobby_ask_player_name: "Твоё имя: ",
    lobby_ask_game_name: "Назови свой пляж: ",
    lobby_needs_name: "Сначала введи имя",
    lobby_ask_address: "Адрес пляжа (ip:порт): ",
    lobby_bad_address: "Это не адрес - попробуй 192.168.1.5:47777",
    lobby_hosting_at: "этот пляж по адресу {a}",
    lobby_calling: "звоним по {a}...",
    lobby_no_answer: "с {a} никто не ответил - проверь адрес или попроси их принимать",
    lobby_card_beaches: "ПЛЯЖИ В ЭФИРЕ",
    lobby_card_chat: "ЛОББИ",
    lobby_joined: "{p} пришёл",
    lobby_left: "{p} ушёл",
    lobby_card_players: "НА ЭТОМ ПЛЯЖЕ",
    lobby_card_terms: "РАУНД",
    online_seat_abandoned: "{p} выбыл - замок берёт ИИ",
    online_host_gone: "хозяин ушёл - без него раунд не продолжить",
    lobby_queued_next: "Раунд уже идёт - ты следующий",
    lobby_queued_behind: "Раунд уже идёт - перед тобой {n}",
    lobby_beach_full: "На том пляже мест нет",
    lobby_join_list: "пляжей в эфире: {n} | стрелки: выбор | Enter: войти | H: принимать | J: по адресу | W: смотреть | Esc: меню",
    lobby_join_list_one: "1 пляж в эфире | Enter: войти | H: принимать | J: по адресу | W: смотреть | Esc: меню",
    lobby_broadcasting: "В эфире - стрелки: условия раунда | T: сказать | Enter: начать (до 5 соперников) | Esc: меню",
    lobby_aboard_prompt: "На месте - матч начнётся, когда хозяин запустит | Esc: меню",
    lobby_could_not_host: "не удалось принимать: {e}",
    lobby_could_not_join: "не удалось войти: {e}",
    lobby_version_clash: "на том пляже другая версия игры (у них {t}, у тебя {o})",
    ed_prompt: "WASD ходить | стрелки стены | Tab/буква кисть | Space рисовать | +/- знаки | F5 размер | K стая O края | F1 имя F6 вид | V проверка | F2 сохранить F3/F4 код | Enter тест",
    ed_brushes: [
        "Песок (стирает)",
        "Камень",
        "Замок",
        "Нора",
        "Бревно",
        "Водоросли",
        "Лужа",
        "Краб",
        "Чайка",
    ],
    ed_under: "под курсором: {t}",
    ed_playtest_prompt: "стрелки ставить | Space убрать | Esc конец проверки",
    ed_solvable: "решается: {placements}",
    ed_solvable_free: "решается вообще без знаков",
    ed_not_solvable: "НЕ решается за {n} знаков",
    ed_solver_gave_up: "сдались - слишком большой, не проверить. Возьми меньше знаков.",
    ed_validating: "проверяем...",
    ed_already_validating: "уже проверяем...",
    ed_resized: "новый пляж {w}x{h}",
    ed_default_name: "Мой пляж",
    ed_name_row: "имя: {n}   (F1 переименует)",
    ed_naming: "назови его, потом Enter",
    ed_saved_to: "сохранено в {path}",
    ed_save_failed: "сохранить не вышло: {e}",
    code_kind_beach: "начатый раунд",
    code_kind_level: "уровень",
    code_kind_round: "раунд",
    code_wrong_kind: "этот код - {got}, а не {want}",
    code_copied: "код скопирован - {n} символов в буфере",
    code_copy_failed: "до буфера обмена не добраться: {e}",
    code_none_pasted: "в буфере обмена нет кода",
    code_level_checking: "уровень загружен из кода - проверяем...",
    code_level_bad: "этот код - не уровень, понятный этой сборке: {e}",
    code_round_saved: "раунд сохранён из кода",
    code_round_bad: "этот код - не раунд, понятный этой сборке: {e}",
    ed_posts: "знаков: {n} | {msg}",
    ed_fresh_sand: "чистый песок",
    ed_back: "обратно в песок",
    ed_wrap_on: "открытый океан: края замыкаются",
    ed_wrap_off: "по краям снова стены",
    ed_gulls_every: "стая чаек: каждые {period} тиков",
    ed_gulls_off: "стая чаек: нет",
    ed_seats: "мест: {n} | {msg}",
    ed_puzzle_no_crabs: "крабов нет, вести некого - в списках этапов его не будет",
    ed_kind_row: "F6 - что строим",
    ed_kind_puzzle: "головоломка",
    ed_kind_arena: "пляж для битвы",
    ed_now_puzzle: "теперь головоломка: попадёт в список Приливной лужи",
    ed_now_arena: "теперь пляж для битвы: попадёт в выбор карт",
    ed_arena_ok: "пляж на {n}, крабов гонят {h} нор",
    ed_arena_needs_seats: "замков пока на {n} - пляжу нужен один на игрока",
    ed_arena_no_crabs: "ни крабов, ни нор: делить нечего",
};