25 lines
1 KiB
JavaScript
25 lines
1 KiB
JavaScript
"use strict";
|
|
|
|
// Layer: entity-runtime/items/growth-system
|
|
// Owns zunchi lifecycle stage ticking. Grass growth is handled by
|
|
// simulation_item_ant_system.js via sparse random stage advances.
|
|
(function (global) {
|
|
function updateZunchiLifecycle(item, dt, worldRef) {
|
|
if (!item || item.dead || item.type !== "zunchi") return false;
|
|
item.lifecycleTimer += dt;
|
|
const interval = item.lifecycleInterval || (0.95 + stableUnit(item.id, "zunchi-life") * 0.45);
|
|
if (item.lifecycleTimer < interval) return false;
|
|
const lifecycleDt = Math.min(item.lifecycleTimer, 2.4);
|
|
item.lifecycleTimer = 0;
|
|
global.TarinaiItemDynamicZunchiSystem.updateLifecycle(item, lifecycleDt, worldRef);
|
|
return true;
|
|
}
|
|
|
|
function update(item, dt, worldRef) {
|
|
if (!item || item.dead) return { done: true };
|
|
if (item.type === "zunchi") updateZunchiLifecycle(item, dt, worldRef);
|
|
return { done: false };
|
|
}
|
|
|
|
global.TarinaiItemGrowthSystem = Object.freeze({ update });
|
|
})(typeof window !== "undefined" ? window : globalThis);
|