diff --git a/app/modules/in-game-lists/stage-ids.ts b/app/modules/in-game-lists/stage-ids.ts
index 5b53ba46f..901b6210f 100644
--- a/app/modules/in-game-lists/stage-ids.ts
+++ b/app/modules/in-game-lists/stage-ids.ts
@@ -1,4 +1,4 @@
-// when adding new stage id also create new language dicts via create-misc.json.ts
+// when adding new stage id also create new language dicts via create-misc-json.ts
export const stageIds = [
0, // Scorch Gorge
1, // Eeltail Alley
@@ -12,4 +12,6 @@ export const stageIds = [
9, // Sturgeon Shipyard
10, // MakoMart
11, // Wahoo World
+ 12, // Flounder Heights
+ 13, // Brinewater Springs
] as const;
diff --git a/app/modules/map-pool-serializer/serializer.test.ts b/app/modules/map-pool-serializer/serializer.test.ts
index 5d0b5aab0..7096c53be 100644
--- a/app/modules/map-pool-serializer/serializer.test.ts
+++ b/app/modules/map-pool-serializer/serializer.test.ts
@@ -8,7 +8,7 @@ import type { MapPoolObject } from "./types";
const Serializer = suite("Map pool serializer");
-const testSerializedPool = "tw:1998;sz:1d0a;tc:164c;rm:15e0;cb:1ce0";
+const testSerializedPool = "tw:6660;sz:7428;tc:5930;rm:5780;cb:7380";
Serializer("Unserializes and then serializes to same result", () => {
const mapPool = serializedStringToMapPool(testSerializedPool);
@@ -25,10 +25,15 @@ Serializer("Ignores invalid mode key", () => {
Serializer("Matching serialization with IPLMapGen2", () => {
const testMapPool: MapPoolObject = {
+ // Gorge, Spillway, Mincemeat, Mahi-Mahi, Inkblot
TW: [0, 3, 4, 7, 8],
+ // Gorge, Eeltail, Spillway, Inkblot, MakoMart
SZ: [0, 1, 3, 8, 10],
+ // Eeltail, Hagglefish, Bridge, Inbklot, Sturgeon
TC: [1, 2, 5, 8, 9],
+ // Eeltail, Spillway, Mincemeat, Bridge, Museum
RM: [1, 3, 4, 5, 6],
+ // Gorge, Eeltail, Mincemeat, Bridge, Museum
CB: [0, 1, 4, 5, 6],
};
diff --git a/app/routes/contributions.tsx b/app/routes/contributions.tsx
index 03a0b21ce..682e1fd04 100644
--- a/app/routes/contributions.tsx
+++ b/app/routes/contributions.tsx
@@ -6,6 +6,7 @@ import { languages } from "~/modules/i18n";
import { makeTitle } from "~/utils/strings";
import {
BORZOIC_TWITTER,
+ CHARA_TWITTER,
GITHUB_CONTRIBUTORS_URL,
LEAN_TWITTER,
SENDOU_TWITTER_URL,
@@ -113,6 +114,10 @@ export default function ContributionsPage() {
Twig
{" "}
+ &{" "}
+
+ Chara
+
- {t("contributions:twig")}
{TRANSLATORS.map(({ translators, language }) => (
diff --git a/app/utils/urls.ts b/app/utils/urls.ts
index e635e117e..c2b86a61c 100644
--- a/app/utils/urls.ts
+++ b/app/utils/urls.ts
@@ -32,6 +32,7 @@ export const BORZOIC_TWITTER = "https://twitter.com/borzoic_";
export const LEAN_TWITTER = "https://twitter.com/LeanYoshi";
export const UBERU_TWITTER = "https://twitter.com/uberu5";
export const TWIG_TWITTER = "https://twitter.com/TwigTheBluePik";
+export const CHARA_TWITTER = "https://twitter.com/ProChara";
export const ipLabsMaps = (pool: string) =>
`https://maps.iplabs.ink/?3&pool=${pool}`;
diff --git a/public/locales/da/game-misc.json b/public/locales/da/game-misc.json
index 8c581340a..283ce12eb 100644
--- a/public/locales/da/game-misc.json
+++ b/public/locales/da/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "Sturgeon Shipyard",
"STAGE_10": "MakoMart",
"STAGE_11": "Wahoo World",
+ "STAGE_12": "Flounder Heights",
+ "STAGE_13": "Brinewater Springs",
"MODE_SHORT_TW": "RK",
"MODE_SHORT_SZ": "DD",
"MODE_SHORT_TC": "TR",
diff --git a/public/locales/de/game-misc.json b/public/locales/de/game-misc.json
index d9e393f1c..8cb84cffc 100644
--- a/public/locales/de/game-misc.json
+++ b/public/locales/de/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "Störwerft",
"STAGE_10": "Cetacea-Markt",
"STAGE_11": "Flunder-Funpark",
+ "STAGE_12": "Schollensiedlung",
+ "STAGE_13": "Kusaya-Quellen",
"MODE_SHORT_TW": "RK",
"MODE_SHORT_SZ": "HS",
"MODE_SHORT_TC": "TK",
diff --git a/public/locales/en/game-misc.json b/public/locales/en/game-misc.json
index 780d33e38..e64abfa66 100644
--- a/public/locales/en/game-misc.json
+++ b/public/locales/en/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "Sturgeon Shipyard",
"STAGE_10": "MakoMart",
"STAGE_11": "Wahoo World",
+ "STAGE_12": "Flounder Heights",
+ "STAGE_13": "Brinewater Springs",
"MODE_SHORT_TW": "TW",
"MODE_SHORT_SZ": "SZ",
"MODE_SHORT_TC": "TC",
diff --git a/public/locales/es-ES/game-misc.json b/public/locales/es-ES/game-misc.json
index 119f38f0d..39f3554a9 100644
--- a/public/locales/es-ES/game-misc.json
+++ b/public/locales/es-ES/game-misc.json
@@ -10,5 +10,7 @@
"STAGE_8": "Instituto Coralino",
"STAGE_9": "Astillero Beluga",
"STAGE_10": "Ultramarinos Orca",
- "STAGE_11": "Pirañalandia"
+ "STAGE_11": "Pirañalandia",
+ "STAGE_12": "Complejo Medusa",
+ "STAGE_13": "Balneario Aguasal"
}
diff --git a/public/locales/es-US/game-misc.json b/public/locales/es-US/game-misc.json
index 9f60f6370..dae757466 100644
--- a/public/locales/es-US/game-misc.json
+++ b/public/locales/es-US/game-misc.json
@@ -10,5 +10,7 @@
"STAGE_8": "Instituto Coralino",
"STAGE_9": "Astillero Beluga",
"STAGE_10": "Ultramarinos Orca",
- "STAGE_11": "Pirañalandia"
+ "STAGE_11": "Pirañalandia",
+ "STAGE_12": "Complejo Medusa",
+ "STAGE_13": "Balneario Aguasal"
}
diff --git a/public/locales/fr/game-misc.json b/public/locales/fr/game-misc.json
index 70daa96d9..f932a82a1 100644
--- a/public/locales/fr/game-misc.json
+++ b/public/locales/fr/game-misc.json
@@ -10,5 +10,7 @@
"STAGE_8": "Institut Calam'arts",
"STAGE_9": "Chantier Narval",
"STAGE_10": "Supermarché Cétacé",
- "STAGE_11": "Parc Carapince"
+ "STAGE_11": "Parc Carapince",
+ "STAGE_12": "Lotissement Filament",
+ "STAGE_13": "Sources Sauret"
}
diff --git a/public/locales/it/game-misc.json b/public/locales/it/game-misc.json
index d8a2e4c9d..1577e374a 100644
--- a/public/locales/it/game-misc.json
+++ b/public/locales/it/game-misc.json
@@ -10,5 +10,7 @@
"STAGE_8": "Campus Hippocampus",
"STAGE_9": "Cantiere Pinnenere",
"STAGE_10": "Mercatotano",
- "STAGE_11": "Soglioland"
+ "STAGE_11": "Soglioland",
+ "STAGE_12": "Cime Sogliolose",
+ "STAGE_13": "Fermenterme"
}
diff --git a/public/locales/ja/game-misc.json b/public/locales/ja/game-misc.json
index 165f65825..774bab783 100644
--- a/public/locales/ja/game-misc.json
+++ b/public/locales/ja/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "チョウザメ造船",
"STAGE_10": "ザトウマーケット",
"STAGE_11": "スメーシーワールド",
+ "STAGE_12": "ヒラメが丘団地",
+ "STAGE_13": "クサヤ温泉",
"MODE_SHORT_TW": "ナワバリ",
"MODE_SHORT_SZ": "エリア",
"MODE_SHORT_TC": "ヤグラ",
diff --git a/public/locales/ko/game-misc.json b/public/locales/ko/game-misc.json
index 5595a0ddd..c244eaa25 100644
--- a/public/locales/ko/game-misc.json
+++ b/public/locales/ko/game-misc.json
@@ -10,5 +10,7 @@
"STAGE_8": "해녀 미술 대학",
"STAGE_9": "철갑상어 조선소",
"STAGE_10": "혹등 마켓",
- "STAGE_11": "초밥 월드"
+ "STAGE_11": "초밥 월드",
+ "STAGE_12": "넙치 언덕 단지",
+ "STAGE_13": "과메기 온천"
}
diff --git a/public/locales/nl/game-misc.json b/public/locales/nl/game-misc.json
index 4646d4b8b..aa7effba2 100644
--- a/public/locales/nl/game-misc.json
+++ b/public/locales/nl/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "Walruswerf",
"STAGE_10": "Bultrugbazaar",
"STAGE_11": "Waterwonderland",
+ "STAGE_12": "Baleinbuurt",
+ "STAGE_13": "Barbeelbaden",
"MODE_SHORT_TW": "GO",
"MODE_SHORT_SZ": "SZ",
"MODE_SHORT_TC": "TT",
diff --git a/public/locales/ru/game-misc.json b/public/locales/ru/game-misc.json
index 577c54636..a27bcb6c8 100644
--- a/public/locales/ru/game-misc.json
+++ b/public/locales/ru/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "Осетровые верфи",
"STAGE_10": "«Горбуша-Маркет»",
"STAGE_11": "Луна-парк «Язь»",
+ "STAGE_12": "Микрорайон «Камбалово»",
+ "STAGE_13": "Тухловодск",
"MODE_SHORT_TW": "Терфы:",
"MODE_SHORT_SZ": "Зоны:",
"MODE_SHORT_TC": "Башни:",
diff --git a/public/locales/zh/game-misc.json b/public/locales/zh/game-misc.json
index 6c43dab20..4a03dd83a 100644
--- a/public/locales/zh/game-misc.json
+++ b/public/locales/zh/game-misc.json
@@ -11,6 +11,8 @@
"STAGE_9": "鲟鱼造船厂",
"STAGE_10": "座头购物中心",
"STAGE_11": "醋饭海洋世界",
+ "STAGE_12": "比目鱼住宅区",
+ "STAGE_13": "臭鱼干温泉",
"MODE_SHORT_TW": "涂地",
"MODE_SHORT_SZ": "区域",
"MODE_SHORT_TC": "塔楼",
diff --git a/public/static-assets/img/stage-minimaps/12-CB.jpeg b/public/static-assets/img/stage-minimaps/12-CB.jpeg
new file mode 100644
index 000000000..e42a228d5
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/12-CB.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/12-RM.jpeg b/public/static-assets/img/stage-minimaps/12-RM.jpeg
new file mode 100644
index 000000000..57c3bc85a
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/12-RM.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/12-SZ.jpeg b/public/static-assets/img/stage-minimaps/12-SZ.jpeg
new file mode 100644
index 000000000..f0cc64393
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/12-SZ.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/12-TC.jpeg b/public/static-assets/img/stage-minimaps/12-TC.jpeg
new file mode 100644
index 000000000..ee3c30571
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/12-TC.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/12-TW.jpeg b/public/static-assets/img/stage-minimaps/12-TW.jpeg
new file mode 100644
index 000000000..5af244db0
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/12-TW.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/13-CB.jpeg b/public/static-assets/img/stage-minimaps/13-CB.jpeg
new file mode 100644
index 000000000..edd939316
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/13-CB.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/13-RM.jpeg b/public/static-assets/img/stage-minimaps/13-RM.jpeg
new file mode 100644
index 000000000..75d7eece2
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/13-RM.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/13-SZ.jpeg b/public/static-assets/img/stage-minimaps/13-SZ.jpeg
new file mode 100644
index 000000000..50fe369cd
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/13-SZ.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/13-TC.jpeg b/public/static-assets/img/stage-minimaps/13-TC.jpeg
new file mode 100644
index 000000000..65160e19c
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/13-TC.jpeg differ
diff --git a/public/static-assets/img/stage-minimaps/13-TW.jpeg b/public/static-assets/img/stage-minimaps/13-TW.jpeg
new file mode 100644
index 000000000..7e0e35406
Binary files /dev/null and b/public/static-assets/img/stage-minimaps/13-TW.jpeg differ
diff --git a/public/static-assets/img/stages/12.avif b/public/static-assets/img/stages/12.avif
new file mode 100644
index 000000000..819a9f6b7
Binary files /dev/null and b/public/static-assets/img/stages/12.avif differ
diff --git a/public/static-assets/img/stages/12.png b/public/static-assets/img/stages/12.png
new file mode 100644
index 000000000..17b027c7b
Binary files /dev/null and b/public/static-assets/img/stages/12.png differ
diff --git a/public/static-assets/img/stages/13.avif b/public/static-assets/img/stages/13.avif
new file mode 100644
index 000000000..76a5dfaf5
Binary files /dev/null and b/public/static-assets/img/stages/13.avif differ
diff --git a/public/static-assets/img/stages/13.png b/public/static-assets/img/stages/13.png
new file mode 100644
index 000000000..cde8e1297
Binary files /dev/null and b/public/static-assets/img/stages/13.png differ
diff --git a/scripts/create-misc-json.ts b/scripts/create-misc-json.ts
index 717a43cc2..fb5ca6717 100644
--- a/scripts/create-misc-json.ts
+++ b/scripts/create-misc-json.ts
@@ -24,6 +24,8 @@ const stages = [
"Sturgeon Shipyard",
"MakoMart",
"Wahoo World",
+ "Flounder Heights",
+ "Brinewater Springs",
] as const;
async function main() {