This commit is contained in:
33333-33333 2026-06-22 02:03:19 +09:00
commit e8f1d1db1e
60 changed files with 2417 additions and 612 deletions

View file

@ -22,11 +22,7 @@
ant_corpse: { label: "\u30a2\u30ea\u306e\u6b7b\u9ab8", nutrition: 0.62, hungerRelief: 0.62, interest: "corpse", decayRateMultiplier: 1.0, hygienePenalty: 0.065 }
};
class FoodRegistry {
constructor(defs) { this.defs = new Map(Object.entries(defs || {})); }
get(type = "") { return this.defs.get(String(type || "")) || null; }
has(type = "") { return this.defs.has(String(type || "")); }
label(type = "") { return this.get(type)?.label || type || ""; }
class FoodRegistry extends global.TarinaiRegistryBase {
servingTypes() {
return [...this.defs.entries()]
.filter(([, def]) => def.interest && !["grass_like", "water", "corpse"].includes(def.interest))
@ -41,9 +37,18 @@
paramEffectTypes() {
return [...this.defs.entries()].filter(([, def]) => def.effectId && !def.effectId.endsWith("_mochi") && def.effectId !== "sleep_drug").map(([id]) => id);
}
nutrition(type = "", fallback = 0) {
const value = this.get(type)?.nutrition;
return Number.isFinite(value) ? value : fallback;
}
hungerRelief(type = "", fallback = 0) {
const value = this.get(type)?.hungerRelief;
return Number.isFinite(value) ? value : fallback;
}
effectId(type = "") { return this.get(type)?.effectId || ""; }
passiveDecayMultiplier(type = "") { return this.get(type)?.decayRateMultiplier ?? 1; }
hygienePenalty(type = "") { return this.get(type)?.hygienePenalty ?? 0.055; }
debugSnapshot() { return [...this.defs.entries()].map(([id, def]) => ({ id, label: def.label, interest: def.interest, effectId: def.effectId || "" })); }
debugSnapshot() { return super.debugSnapshot((id, def) => ({ id, label: def.label, interest: def.interest, effectId: def.effectId || "" })); }
}
const registry = new FoodRegistry(rawDefinitions);