51 lines
4 KiB
JavaScript
51 lines
4 KiB
JavaScript
"use strict";
|
|
|
|
// Food and medicine consumption metadata.
|
|
|
|
(function (global) {
|
|
const rawDefinitions = {
|
|
food: { label: "\u30da\u30c3\u30c8\u30d5\u30fc\u30c9", nutrition: 20.0, hungerRelief: 1.08, interest: "normal", decayRateMultiplier: 1.0 },
|
|
sweet: { label: "\u305a\u3093\u3060\u9905", nutrition: 16.5, hungerRelief: 0.95, interest: "zunda_high", decayRateMultiplier: 0.82 },
|
|
love_mochi: { label: "\u3078\u3053\u9905", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "love_mochi" },
|
|
fight_mochi: { label: "\u3051\u3093\u304b\u9905", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "fight_mochi" },
|
|
sleep_drug: { label: "\u306d\u3080\u308a\u85ac", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "sleep_drug" },
|
|
first_aid: { label: "\u6551\u6025\u85ac", nutrition: 1.0, hungerRelief: 0, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "first_aid" },
|
|
sedative: { label: "\u93ae\u9759\u85ac", nutrition: 11.0, hungerRelief: 0.12, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "sedative" },
|
|
laxative: { label: "\u4e0b\u5264", nutrition: 6.8, hungerRelief: 0, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "laxative" },
|
|
protein: { label: "\u30d7\u30ed\u30c6\u30a4\u30f3", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "protein" },
|
|
niteropu: { label: "\u30f3\u30a4\u30c6\u30ed\u30d7", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "niteropu" },
|
|
ammo: { label: "\u5f3e\u85ac", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "ammo" },
|
|
mystery_drug: { label: "\u602a\u3057\u3044\u85ac", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "mystery_drug" },
|
|
mercury: { label: "\u6c34\u9280", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "mercury" },
|
|
giant_drug: { label: "\u5de8\u5927\u85ac", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "giant_drug" },
|
|
dwarf_drug: { label: "\u77ee\u5c0f\u85ac", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.0, effectId: "dwarf_drug" },
|
|
zunda_juice: { label: "\u305a\u3093\u3060\u6c41", nutrition: 15.0, hungerRelief: 0.92, interest: "medicine_low", decayRateMultiplier: 1.12, effectId: "zunda_juice", removesItemEffects: true },
|
|
grass: { label: "\u8349", nutrition: 2.6, hungerRelief: 0.55, interest: "grass_like", decayRateMultiplier: 1.0 },
|
|
water: { label: "\u6c34\u6ef4", nutrition: 0, hungerRelief: 0, interest: "water", decayRateMultiplier: 1.0 },
|
|
ant_corpse: { label: "\u30a2\u30ea\u306e\u6b7b\u9ab8", nutrition: 4.2, hungerRelief: 0.62, interest: "corpse", decayRateMultiplier: 1.0 }
|
|
};
|
|
|
|
class FoodRegistry extends global.TarinaiRegistryBase {
|
|
servingTypes() {
|
|
return [...this.defs.entries()]
|
|
.filter(([, def]) => def.interest && !["grass_like", "water", "corpse"].includes(def.interest))
|
|
.map(([id]) => id);
|
|
}
|
|
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;
|
|
}
|
|
passiveDecayMultiplier(type = "") { return this.get(type)?.decayRateMultiplier ?? 1; }
|
|
}
|
|
|
|
const registry = new FoodRegistry(rawDefinitions);
|
|
global.TarinaiFoodRegistry = registry;
|
|
})(typeof window !== "undefined" ? window : globalThis);
|
|
|