188 lines
15 KiB
JavaScript
188 lines
15 KiB
JavaScript
"use strict";
|
|
|
|
const TEXT_CATALOG = {
|
|
toolTips: toolTipsFromDefinitions(),
|
|
ecologyCards: [
|
|
{
|
|
title: "\u305F\u308A\u306A\u3044\u3068\u306F",
|
|
image: "assets/sprites/tarinai_01_smile.webp",
|
|
text: "\u5EAD\u3084\u30B1\u30FC\u30B8\u3067\u751F\u6D3B\u3059\u308B\u89B3\u5BDF\u5BFE\u8C61\u3002\u7A7A\u8179\u3001\u7761\u7720\u3001\u5065\u5EB7\u3001\u5B89\u5168\u3001\u95A2\u4FC2\u3001\u5145\u8DB3\u306E\u6B32\u6C42\u3068\u30B9\u30C8\u30EC\u30B9\u3067\u884C\u52D5\u304C\u5909\u308F\u308A\u307E\u3059\u3002\u6027\u683C\u3001\u4F53\u683C\u3001\u5BB6\u65CF\u3001\u7D4C\u9A13\u3001\u75C5\u6C17\u3001\u6226\u7E3E\u306F\u500B\u4F53\u3054\u3068\u306B\u6B8B\u308A\u307E\u3059\u3002",
|
|
},
|
|
{
|
|
title: "\u6B32\u6C42\u3068\u884C\u52D5",
|
|
image: "assets/ui/ecology_hp_stress.webp",
|
|
text: "\u8DB3\u308A\u306A\u3044\u6B32\u6C42\u304C\u5F37\u3044\u307B\u3069\u3001\u98DF\u4E8B\u3001\u7761\u7720\u3001\u4EF2\u9593\u63A2\u3057\u3001\u904A\u3073\u3001\u907F\u6691\u30FB\u907F\u5BD2\u3001\u9003\u8D70\u306A\u3069\u3092\u512A\u5148\u3057\u307E\u3059\u3002\u6050\u6016\u3001\u6DF7\u96D1\u3001\u6C5A\u308C\u3001\u3051\u3093\u304B\u3001\u5730\u9762\u3084\u6C17\u6E29\u306F\u30B9\u30C8\u30EC\u30B9\u3068\u884C\u52D5\u9078\u629E\u306B\u5F71\u97FF\u3057\u307E\u3059\u3002",
|
|
},
|
|
{
|
|
title: "\u98DF\u4E8B\u3001\u75C5\u6C17\u3001\u56DE\u5FA9",
|
|
image: "assets/sprites/tarinai_05_drool.webp",
|
|
text: "\u8349\u3001\u305A\u3093\u3061\u3001\u9905\u3001\u30B8\u30E5\u30FC\u30B9\u3001\u6C34\u3001\u85AC\u306A\u3069\u3092\u72B6\u6CC1\u306B\u5FDC\u3058\u3066\u4F7F\u3044\u307E\u3059\u3002\u305A\u3093\u3061\u75C5\u3001\u306D\u3080\u308A\u75C5\u3001\u7206\u767A\u75C5\u3001\u304D\u305A\u3064\u304D\u75C5\u3067\u306F\u6C42\u3081\u308B\u3082\u306E\u3084\u884C\u52D5\u304C\u5909\u308F\u308A\u3001\u6C34\u30FB\u85AC\u30FB\u4F11\u606F\u30FB\u65E5\u5149\u6D74\u30FB\u74B0\u5883\u6539\u5584\u304C\u56DE\u5FA9\u306B\u95A2\u308F\u308A\u307E\u3059\u3002",
|
|
},
|
|
{
|
|
title: "\u7761\u7720\u3068\u5DE3\u7BB1",
|
|
image: "assets/ui/tool_nest_box.webp",
|
|
text: "\u7720\u3044\u500B\u4F53\u306F\u5DE3\u7BB1\u3001\u30D9\u30C3\u30C9\u3001\u304B\u3093\u305F\u3093\u30D9\u30C3\u30C9\u3092\u63A2\u3057\u3001\u898B\u3064\u304B\u3089\u306A\u3044\u6642\u306F\u305D\u306E\u5834\u3067\u7720\u308A\u307E\u3059\u3002\u5DE3\u7BB1\u306F\u4E2D\u3067\u4F11\u3081\u308B\u5BDD\u5834\u6240\u3067\u3059\u3002\u901A\u5E38\u306F\u5B9A\u54E1\u3092\u8D85\u3048\u3066\u5165\u308C\u307E\u305B\u3093\u304C\u3001\u305F\u308A\u306A\u3044\u738B\u304B\u3089\u9003\u3052\u308B\u6642\u306F\u4E00\u5339\u3092\u62BC\u3057\u306E\u3051\u3066\u5165\u308C\u307E\u3059\u3002",
|
|
},
|
|
{
|
|
title: "\u95A2\u4FC2\u3001\u5BB6\u65CF\u3001\u7E41\u6B96",
|
|
image: "assets/sprites/tarinai_27_birth_ritual.webp",
|
|
text: "\u89AA\u5B50\u3001\u5171\u540C\u89AA\u3001\u53CB\u597D\u3001\u6575\u5BFE\u3001\u6050\u6016\u3092\u8A18\u9332\u3057\u307E\u3059\u3002\u6761\u4EF6\u304C\u305D\u308D\u3046\u3068\u7E41\u6B96\u76F8\u624B\u3078\u8FD1\u3065\u304D\u3001\u3078\u3053\u3078\u3053\u5F8C\u306B\u5B50\u304C\u751F\u307E\u308C\u307E\u3059\u3002\u5BB6\u7CFB\u56F3\u3067\u306F\u4E16\u4EE3\u3001\u6027\u683C\u30BF\u30B0\u3001\u6226\u7E3E\u3001\u907A\u4F1D\u50BE\u5411\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002",
|
|
},
|
|
{
|
|
title: "\u305F\u308A\u306A\u3044\u738B\u3068\u305A\u3093\u3061\u3069\u308C\u3044",
|
|
image: "assets/sprites/tarinai_26_intimidate.webp",
|
|
text: "\u9EC4\u91D1\u306E\u51A0\u306B\u89E6\u308C\u308B\u3001\u307E\u305F\u306F\u3051\u3093\u304B\u3067\u5F37\u3044\u5B9F\u7E3E\u3092\u51FA\u3059\u3068\u305F\u308A\u306A\u3044\u738B\u306B\u306A\u308A\u307E\u3059\u3002\u5974\u96B7\u306E\u9396\u306B\u89E6\u308C\u305F\u500B\u4F53\u306F\u305A\u3093\u3061\u3069\u308C\u3044\u306B\u306A\u308A\u3001\u666E\u901A\u306E\u305F\u308A\u306A\u3044\u3068\u306F\u8DDD\u96E2\u3092\u53D6\u308A\u307E\u3059\u3002\u738B\u3068\u3069\u308C\u3044\u306E\u72B6\u614B\u306F\u500B\u4F53\u30C7\u30FC\u30BF\u3068\u5BB6\u7CFB\u56F3\u306B\u6B8B\u308A\u3001\u95A2\u4FC2\u3084\u884C\u52D5\u306E\u89B3\u5BDF\u5BFE\u8C61\u306B\u306A\u308A\u307E\u3059\u3002",
|
|
},
|
|
{
|
|
title: "\u9053\u5177\u3068\u4E8B\u6545",
|
|
image: "assets/ui/tool_duplicator.webp",
|
|
text: "\u98DF\u3079\u7269\u3001\u85AC\u3001\u5DE3\u7BB1\u3001\u67F5\u3001\u770B\u677F\u3001\u8907\u88FD\u6A5F\u306A\u3069\u3092\u914D\u7F6E\u3067\u304D\u307E\u3059\u3002\u7206\u7AF9\u3001\u3052\u3093\u3053\u3064\u3001\u30D4\u30F3\u3001\u30DC\u30FC\u30EB\u3001\u30A2\u30EA\u3001\u843D\u4E0B\u7269\u306A\u3069\u306F\u4E8B\u6545\u3084\u6B7B\u4EA1\u306B\u3064\u306A\u304C\u308A\u3001\u51FA\u6765\u4E8B\u306F\u30ED\u30B0\u3068\u7D71\u8A08\u306B\u6B8B\u308A\u307E\u3059\u3002",
|
|
},
|
|
],};
|
|
|
|
|
|
TEXT_CATALOG.stateLabels = Object.freeze({
|
|
idle: "\u307c\u30fc\u3063\u3068\u3057\u3066\u3044\u308b",
|
|
seek_food: "\u98df\u3079\u7269\u3078\u5411\u304b\u3046",
|
|
seek_bed: "\u5bdd\u5e8a\u3078\u5411\u304b\u3046",
|
|
play_ball: "\u30dc\u30fc\u30eb\u904a\u3073",
|
|
seek_water: "\u6c34\u3092\u63a2\u3059",
|
|
seek_material: "\u6750\u6599\u3092\u63a2\u3059",
|
|
seek_enemy: "\u76f8\u624b\u3078\u5411\u304b\u3046",
|
|
seek_temperature: "\u907f\u6691\u30fb\u907f\u5bd2\u4e2d",
|
|
wander: "\u79fb\u52d5\u4e2d",
|
|
build: "\u4f5c\u6210\u4e2d",
|
|
zunchi_sick: "\u305a\u3093\u3061\u75c5",
|
|
fight_sick: "\u304d\u305a\u3064\u304d\u75c5",
|
|
system: "\u305a\u3093\u3061\u75c5",
|
|
seek_friend: "\u4ef2\u9593\u3092\u63a2\u3059",
|
|
follow_parent: "\u89aa\u306b\u3064\u3044\u3066\u3044\u304f",
|
|
cursor_friend: "\u30ab\u30fc\u30bd\u30eb\u306b\u3064\u3044\u3066\u3044\u304f",
|
|
cursor_enemy: "\u30ab\u30fc\u30bd\u30eb\u3092\u907f\u3051\u308b",
|
|
fight: "\u55a7\u5629\u4e2d",
|
|
sleep: "\u7761\u7720\u4e2d",
|
|
eat: "\u98df\u4e8b\u4e2d",
|
|
panic: "\u30d1\u30cb\u30c3\u30af",
|
|
intimidate: "\u5a01\u5687\u4e2d",
|
|
birth_ritual: "\u8a95\u751f\u524d",
|
|
sunbath: "\u65e5\u5149\u6d74\u4e2d",
|
|
ant_attack: "\u30a2\u30ea\u653b\u6483\u4e2d",
|
|
ant_intimidate: "\u30a2\u30ea\u5a01\u5687\u4e2d",
|
|
frozen: "\u51b7\u51cd\u4e2d",
|
|
});
|
|
|
|
|
|
TEXT_CATALOG.behaviorLabels = Object.freeze({
|
|
seek_material: "\u6750\u6599\u3092\u63a2\u3057\u3066\u3044\u308b",
|
|
build_structure: "\u4f5c\u6210\u3057\u3066\u3044\u308b",
|
|
build: "\u4f5c\u6210\u3057\u3066\u3044\u308b",
|
|
seek_enemy: "\u6c17\u306b\u306a\u308b\u76f8\u624b\u3078\u5411\u304b\u3063\u3066\u3044\u308b",
|
|
wander_lightly: "\u5c11\u3057\u79fb\u52d5\u3057\u3066\u3044\u308b",
|
|
eat_food: "\u98df\u4e8b\u3092\u3057\u3066\u3044\u308b",
|
|
drink_water: "\u6c34\u3092\u98f2\u3093\u3067\u3044\u308b",
|
|
sleep_in_bed: "\u5bdd\u5e8a\u3067\u4f11\u3093\u3067\u3044\u308b",
|
|
sleep_anywhere: "\u4f11\u3093\u3067\u3044\u308b",
|
|
intimidate_enemy: "\u5a01\u5687\u3057\u3066\u3044\u308b",
|
|
panic_escape: "\u9003\u3052\u3066\u3044\u308b",
|
|
seek_comfort_temperature: "\u5feb\u9069\u306a\u6e29\u5ea6\u5e2f\u3078\u79fb\u52d5\u3057\u3066\u3044\u308b",
|
|
});
|
|
|
|
TEXT_CATALOG.behaviorLabel = function behaviorLabelFromCatalog(value = "") {
|
|
const key = String(value || "");
|
|
return TEXT_CATALOG.behaviorLabels?.[key] || TEXT_CATALOG.stateLabels?.[key] || key;
|
|
};
|
|
|
|
TEXT_CATALOG.cleanBehaviorText = function cleanBehaviorText(text = "", fallbackKey = "") {
|
|
const raw = String(text || "").trim();
|
|
const key = String(fallbackKey || raw || "").trim();
|
|
const mapped = TEXT_CATALOG.behaviorLabel(key);
|
|
if (!raw) return mapped || "";
|
|
if (/^[a-z][a-z0-9_:-]*$/i.test(raw)) return TEXT_CATALOG.behaviorLabel(raw);
|
|
return raw;
|
|
};
|
|
|
|
TEXT_CATALOG.targetLabelOverrides = Object.freeze({
|
|
system: "\u305a\u3093\u3061\u75c5",
|
|
zunchi_sick: "\u305a\u3093\u3061\u75c5",
|
|
fight_sick: "\u304d\u305a\u3064\u304d\u75c5",
|
|
});
|
|
TEXT_CATALOG.idleGroundText = function idleGroundText(t = null) {
|
|
const ground = String(t?.world?.groundType || (typeof world !== "undefined" ? world?.groundType : "") || "soil");
|
|
if (ground === "foot_massage") return "\u8db3\u3064\u307c\u306b\u8010\u3048\u3066\u3044\u308b\u3002";
|
|
if (ground === "blanket") return "\u6bdb\u5e03\u306b\u3046\u3063\u3068\u308a\u3057\u3066\u3044\u308b\u3002";
|
|
if (ground === "ice") return "\u6c37\u306e\u4e0a\u3067\u3058\u3063\u3068\u3057\u3066\u3044\u308b\u3002";
|
|
return "\u307c\u30fc\u3063\u3068\u3057\u3066\u3044\u308b\u3002";
|
|
};
|
|
|
|
TEXT_CATALOG.stateLabel = function stateLabelFromCatalog(s, t = null) {
|
|
if (String(s || "") === "idle") return TEXT_CATALOG.idleGroundText(t);
|
|
return TEXT_CATALOG.stateLabels?.[s] || s || "";
|
|
};
|
|
|
|
TEXT_CATALOG.temperatureEndureText = function temperatureEndureText(t = null) {
|
|
if (!t || !t.world) return "";
|
|
const status = t.temperatureStatus || t.world.temperatureStatusFor?.(t.feltTemperature ?? t.tempComfort ?? t.world.temperatureAt?.(t.x, t.y, t) ?? (CONFIG.standardTemperature ?? 15), t);
|
|
if (!status || status.comfortable || (status.discomfort || 0) <= 0.5) return "";
|
|
if (t.world.hasReachableComfortTemperatureSpot?.(t)) return "";
|
|
return status.direction === "cold" ? "\u5BD2\u3055\u306B\u8010\u3048\u3066\u3044\u308B\u3002" : "\u6691\u3055\u306B\u8010\u3048\u3066\u3044\u308B\u3002";
|
|
};
|
|
|
|
TEXT_CATALOG.targetLabel = function targetLabelFromCatalog(target) {
|
|
if (!target) return "\u306a\u3057";
|
|
if (target.name) return target.name;
|
|
if (target.kind === "queen") return "\u5973\u738b\u30a2\u30ea";
|
|
if (target.kind === "worker") return "\u50cd\u304d\u30a2\u30ea";
|
|
if (target.type) {
|
|
const type = String(target.type || "");
|
|
if (TEXT_CATALOG.targetLabelOverrides?.[type]) return TEXT_CATALOG.targetLabelOverrides[type];
|
|
const label = typeof toolLabel === "function" ? toolLabel(type) : "";
|
|
return label || type;
|
|
}
|
|
if (Number.isFinite(target.x) && Number.isFinite(target.y)) return "\u4f4d\u7f6e";
|
|
return "\u4e0d\u660e";
|
|
};
|
|
|
|
TEXT_CATALOG.reasonLabel = function reasonLabelFromCatalog(t) {
|
|
if (!t) return "\u306a\u3057";
|
|
if ((t.pinchThoughtTimer || 0) > 0 && (t.playerHeld || t._heldByPlayer)) return "\u3064\u307e\u307e\u308c\u3066\u3044\u308b";
|
|
if (t.lastPanicCause === "tarinai_champion" && (t.state === "panic" || (t.fearTimer || 0) > 0.04)) return "\u305F\u308A\u306A\u3044\u738B\u304C\u6016\u304F\u3066\u9003\u3052\u3066\u3044\u308B\u3002";
|
|
const behaviorState = currentTarinaiBehavior(t);
|
|
const behaviorLabel = behaviorText(t);
|
|
const cleanedBehaviorLabel = TEXT_CATALOG.cleanBehaviorText(behaviorLabel, behaviorState?.actionId || t.state || "");
|
|
if (["\u5f85\u6a5f", "\u5f85\u3063\u3066\u3044\u308b", "\u5f85\u3063\u3066\u3044\u308b\u3002", "\u307c\u30fc\u3063\u3068\u3057\u3066\u3044\u308b", "\u307c\u30fc\u3063\u3068\u3057\u3066\u3044\u308b\u3002", "\u5468\u56f2\u3092\u898b\u3066\u3044\u308b"].includes(cleanedBehaviorLabel)) return TEXT_CATALOG.temperatureEndureText(t) || TEXT_CATALOG.idleGroundText(t);
|
|
if (cleanedBehaviorLabel) return cleanedBehaviorLabel;
|
|
const target = TEXT_CATALOG.targetLabel(t.target);
|
|
if (t.state === "eat") return target !== "\u306a\u3057" ? `${target}\u3092\u98df\u3079\u3066\u3044\u308b` : "\u98df\u3079\u3066\u3044\u308b";
|
|
if (t.state === "sleep") return t.target?.type === "pipe" ? "\u571f\u7ba1\u306e\u4e2d\u3067\u4f53\u529b\u3092\u56de\u5fa9\u3057\u3066\u3044\u308b" : (t.target?.type === "nest_box" ? "\u5de3\u7bb1\u306e\u4e2d\u3067\u4f53\u529b\u3092\u56de\u5fa9\u3057\u3066\u3044\u308b" : "\u4f53\u529b\u3092\u56de\u5fa9\u3057\u3066\u3044\u308b");
|
|
if (t.state === "panic") return t.target ? `${target}\u304b\u3089\u9003\u3052\u3066\u3044\u308b` : "\u6016\u304c\u3063\u3066\u3044\u308b";
|
|
if (t.state === "intimidate") return target !== "\u306a\u3057" ? `${target}\u3092\u5a01\u5687\u3057\u3066\u3044\u308b` : "\u76f8\u624b\u3092\u5a01\u5687\u3057\u3066\u3044\u308b";
|
|
if (t.state === "ant_intimidate") return "\u30a2\u30ea\u3092\u5a01\u5687\u3057\u3066\u3044\u308b";
|
|
if (t.state === "ant_attack") return "\u30a2\u30ea\u3092\u653b\u6483\u3057\u3066\u3044\u308b";
|
|
if (t.state === "birth_ritual") return t.target?.name ? `${t.target.name}\u3068\u3078\u3053\u3078\u3053\u3057\u3066\u3044\u308b` : "\u3078\u3053\u3078\u3053\u3057\u3066\u3044\u308b";
|
|
if (t.state === "sunbath") return "\u6674\u308c\u305f\u65e5\u306a\u305f\u3067\u30b9\u30c8\u30ec\u30b9\u3092\u4e0b\u3052\u3066\u3044\u308b";
|
|
if (t.state === "frozen") return "\u30d5\u30a3\u30fc\u30eb\u30c9\u5916\u3067\u51b7\u51cd\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b";
|
|
if (t.state === "seek_food") return target !== "\u306a\u3057" ? `${target}\u3092\u63a2\u3057\u3066\u3044\u308b` : "\u304a\u8179\u304c\u3059\u3044\u3066\u3044\u308b";
|
|
if (t.state === "seek_water") return t.explosionDisease ? "\u7206\u767a\u75c5\u3067\u6c34\u3092\u63a2\u3057\u3066\u3044\u308b" : "\u305a\u3093\u3061\u75c5\u3067\u6c34\u3092\u63a2\u3057\u3066\u3044\u308b";
|
|
if (t.state === "seek_bed") return target !== "\u306a\u3057" ? `${target}\u3078\u5411\u304b\u3063\u3066\u3044\u308b` : "\u7720\u308b\u5834\u6240\u3092\u63a2\u3057\u3066\u3044\u308b";
|
|
if (t.state === "play_ball") return "\u30dc\u30fc\u30eb\u304c\u6c17\u306b\u306a\u3063\u3066\u3044\u308b";
|
|
if (t.state === "seek_friend" && (getTarinaiBehaviorId(t)) === "approach_mate") return t.target?.name ? `${t.target.name}\u306b\u7e41\u6b96\u306e\u305f\u3081\u8fd1\u3065\u3044\u3066\u3044\u308b` : "\u7e41\u6b96\u3067\u304d\u308b\u76f8\u624b\u3092\u63a2\u3057\u3066\u3044\u308b";
|
|
if (t.state === "seek_friend") return "\u4ef2\u9593\u3092\u63a2\u3057\u3066\u3044\u308b";
|
|
if (t.state === "follow_parent") return "\u89aa\u306b\u3064\u3044\u3066\u3044\u304f";
|
|
if (t.state === "cursor_friend") return "\u30ab\u30fc\u30bd\u30eb\u306b\u3064\u3044\u3066\u3044\u304f";
|
|
if (t.state === "cursor_enemy") return "\u30ab\u30fc\u30bd\u30eb\u3092\u907f\u3051\u3066\u3044\u308b";
|
|
if (t.state === "fight") return target !== "\u306a\u3057" ? `${target}\u3068\u55a7\u5629\u3057\u3066\u3044\u308b` : "\u55a7\u5629\u3057\u3066\u3044\u308b";
|
|
if (t.state === "fight_sick") return "\u304d\u305a\u3064\u304d\u75c5\u3067\u5f53\u3066\u3082\u306a\u304f\u5f77\u5fa8\u3063\u3066\u3044\u308b";
|
|
if (t.state === "zunchi_sick" || t.state === "system") return "\u305a\u3093\u3061\u75c5\u3067\u8abf\u5b50\u304c\u60aa\u3044";
|
|
if ((t.hurtTimer || 0) > 0.08) return "\u75db\u307f\u3067\u6df7\u4e71\u3057\u3066\u3044\u308b";
|
|
if ((t.fearTimer || 0) > 0.08) return "\u6016\u304c\u3063\u3066\u3044\u308b";
|
|
if ((t.grassEatTimer || 0) > 0.04) return "\u8349\u3092\u98df\u3079\u3066\u3044\u308b";
|
|
const thought = String(t.thought || "").trim();
|
|
const cleanedThought = TEXT_CATALOG.cleanBehaviorText(thought, t.state || "");
|
|
if (["\u5f85\u6a5f", "\u5f85\u3063\u3066\u3044\u308b", "\u5f85\u3063\u3066\u3044\u308b\u3002", "\u307c\u30fc\u3063\u3068\u3057\u3066\u3044\u308b", "\u307c\u30fc\u3063\u3068\u3057\u3066\u3044\u308b\u3002", "\u5468\u56f2\u3092\u898b\u3066\u3044\u308b"].includes(cleanedThought)) return TEXT_CATALOG.temperatureEndureText(t) || TEXT_CATALOG.idleGroundText(t);
|
|
if (thought) return thought;
|
|
if (t.state === "idle" || !t.state) return TEXT_CATALOG.temperatureEndureText(t) || TEXT_CATALOG.idleGroundText(t);
|
|
return "\u5468\u56f2\u3092\u898b\u3066\u3044\u308b";
|
|
};
|
|
|
|
|
|
window.TEXT_CATALOG = TEXT_CATALOG;
|