Support live attribute restoration mechanics
This commit is contained in:
@@ -82,6 +82,8 @@ export type ConditionalEffectOutcomeRow = {
|
||||
value_basis: DatabaseValue;
|
||||
resource_kind?: DatabaseValue;
|
||||
combat_timing?: DatabaseValue;
|
||||
delivery_mode?: DatabaseValue;
|
||||
delivery_duration_seconds?: DatabaseValue;
|
||||
value_scaling: DatabaseValue;
|
||||
unit: DatabaseValue;
|
||||
damage_basis: DatabaseValue;
|
||||
@@ -530,6 +532,17 @@ function parseOutcome(
|
||||
if (combatTiming && combatTiming !== 'pre_event' && combatTiming !== 'current') {
|
||||
errors.push(`${path} has invalid combat timing.`);
|
||||
}
|
||||
const delivery = nullableText(row.delivery_mode) ?? 'instant';
|
||||
if (delivery !== 'instant' && delivery !== 'continuous') {
|
||||
errors.push(`${path} has an unsupported delivery mode.`);
|
||||
}
|
||||
const durationSeconds = number(row.delivery_duration_seconds);
|
||||
if (delivery === 'continuous' && (durationSeconds === null || durationSeconds <= 0)) {
|
||||
errors.push(`${path} continuous delivery requires a positive duration.`);
|
||||
}
|
||||
if (delivery === 'instant' && durationSeconds !== null) {
|
||||
errors.push(`${path} instant delivery cannot set a duration.`);
|
||||
}
|
||||
return {
|
||||
clauseId: nullableText(row.clause_id),
|
||||
outcome: {
|
||||
@@ -546,6 +559,9 @@ function parseOutcome(
|
||||
...(combatTiming === 'pre_event' || combatTiming === 'current'
|
||||
? { combatTiming }
|
||||
: {}),
|
||||
...(delivery === 'continuous' && durationSeconds !== null
|
||||
? { delivery, durationSeconds }
|
||||
: {}),
|
||||
...(kind === 'attribute_modifier' && nullableText(row.stat_attribute_id)
|
||||
? { attributeId: text(row.stat_attribute_id) }
|
||||
: {}),
|
||||
|
||||
Reference in New Issue
Block a user