This commit is contained in:
33333-33333 2026-06-28 23:07:40 +09:00
commit 0e432c62ae
87 changed files with 4282 additions and 3066 deletions

View file

@ -379,6 +379,10 @@ function processForcedBehaviorQueue(tarinai, world, needs) {
return false;
}
function effectCauseTextLooksStale(text = "") {
return /の効果$/.test(String(text || "").trim().replace(/[。!?]+$/, ""));
}
function setBehaviorText(tarinai, { need = null, actionId = null, actionLabel = null, reasonText = null, reason = null, target = undefined, subNeed = "", phase = "active", source = "state", forced = null, forcedId = "", sourceReasonText = "", forcedReasonText = "", causeText = "" } = {}) {
if (!tarinai) return;
const now = tarinai.world?.time || 0;
@ -400,9 +404,11 @@ function setBehaviorText(tarinai, { need = null, actionId = null, actionLabel =
}
const nextForced = forced ?? preserveForced;
const nextSource = nextForced ? "forced" : (source || previousBehavior.source || "state");
const nextForcedId = forcedId || previousBehavior.forcedId || "";
const nextSourceReason = sourceReasonText || forcedReasonText || previousBehavior.sourceReasonText || "";
const nextCauseText = causeText || previousBehavior.causeText || "";
const nextForcedId = nextForced ? (forcedId || previousBehavior.forcedId || "") : "";
const nextSourceReason = nextForced ? (sourceReasonText || forcedReasonText || previousBehavior.sourceReasonText || "") : (sourceReasonText || forcedReasonText || "");
const explicitCauseText = String(causeText || "");
const previousCauseText = String(previousBehavior.causeText || "");
const nextCauseText = explicitCauseText || ((nextForced || !effectCauseTextLooksStale(previousCauseText)) ? previousCauseText : "");
if (nextCauseText) {
nextReasonText = buildReasonText(nextNeed, existingTiedNeeds.length ? existingTiedNeeds : [nextNeed], { ...(action || {}), id: nextActionId, label: nextActionLabel, subNeed: subNeed || action?.subNeed || "" }, tarinai, tarinai.world || null, { causeText: nextCauseText });
}
@ -422,7 +428,7 @@ function setBehaviorText(tarinai, { need = null, actionId = null, actionLabel =
causeText: nextCauseText,
forced: nextForced,
forcedId: nextForcedId,
forcedRequest: previousBehavior.forcedRequest || null,
forcedRequest: nextForced ? (previousBehavior.forcedRequest || null) : null,
priority: previousBehavior.priority ?? actionPriority(action),
phase,
startedAt: previousBehavior.startedAt || now,