Added attribute damage and self damage results to actions and log.

This commit is contained in:
Stefan Zermatten
2020-11-12 12:57:48 +02:00
parent 3917f63d5e
commit 525b528d9a
10 changed files with 243 additions and 48 deletions

View File

@@ -33,15 +33,15 @@ function combineAttribute(stat, aggregator, memo){
stat.value = getAggregatorResult(stat, aggregator);
stat.baseValue = aggregator.statBaseValue;
stat.baseValueErrors = aggregator.baseValueErrors;
if (stat.attributeType === 'ability') {
stat.modifier = Math.floor((stat.value - 10) / 2);
}
if (stat.attributeType === 'spellSlot'){
let {result, context} = evaluateCalculation(stat.spellSlotLevelCalculation, memo);
stat.spellSlotLevelValue = result.value;
stat.spellSlotLevelErrors = context.errors;
}
stat.currentValue = stat.value - (stat.damage || 0);
if (stat.attributeType === 'ability') {
stat.modifier = Math.floor((stat.currentValue - 10) / 2);
}
stat.hide = aggregator.hasNoEffects &&
stat.baseValue === undefined ||
undefined

View File

@@ -67,43 +67,28 @@ function computeAction(prop, memo){
});
}
function computeAttack(prop, memo){
// Roll bonus
let {result, context} = evaluateCalculation(prop.rollBonus, memo);
prop.rollBonusResult = result.value;
function computePropertyField(prop, memo, fieldName, fn){
let {result, context} = evaluateCalculation(prop[fieldName], memo, fn);
prop[`${fieldName}Result`] = result.value;
if (context.errors.length){
prop.rollBonusErrors = context.errors;
prop[`${fieldName}Errors`] = context.errors;
} else {
delete prop.rollBonusErrors;
delete prop[`${fieldName}Errors`];
}
}
function computeAttack(prop, memo){
computePropertyField(prop, memo, 'rollBonus');
}
function computeSavingThrow(prop, memo){
let {result, context} = evaluateCalculation(prop.dc, memo);
prop.dcResult = result.value;
if (context.errors.length){
prop.dcErrors = context.errors;
} else {
delete prop.dcErrors;
}
computePropertyField(prop, memo, 'dc');
}
function computeSpellList(prop, memo){
let {result, context} = evaluateCalculation(prop.maxPrepared, memo);
prop.maxPreparedResult = result.value;
if (context.errors.length){
prop.maxPreparedErrors = context.errors;
} else {
delete prop.maxPreparedErrors;
}
computePropertyField(prop, memo, 'maxPrepared');
}
function computeSlot(prop, memo){
let {result, context} = evaluateCalculation(prop.slotCondition, memo);
prop.slotConditionResult = result.value;
if (context.errors.length){
prop.slotConditionErrors = context.errors;
} else {
delete prop.slotConditionErrors;
}
computePropertyField(prop, memo, 'slotCondition');
}