damage tags to ignore multipliers
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { some, intersection, difference, remove } from 'lodash';
|
import { some, intersection, difference, remove, includes } from 'lodash';
|
||||||
import applyProperty from '../applyProperty.js';
|
import applyProperty from '../applyProperty.js';
|
||||||
import {insertCreatureLog} from '/imports/api/creature/log/CreatureLogs.js';
|
import {insertCreatureLog} from '/imports/api/creature/log/CreatureLogs.js';
|
||||||
import resolve, { Context, toString } from '/imports/parser/resolve.js';
|
import resolve, { Context, toString } from '/imports/parser/resolve.js';
|
||||||
@@ -147,21 +147,21 @@ function applyDamageMultipliers({target, damage, damageProp, logValue}){
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
multiplier.immunity &&
|
multiplier.immunity &&
|
||||||
some(multiplier.immunities, multiplierAppliesTo(damageProp))
|
some(multiplier.immunities, multiplierAppliesTo(damageProp, 'immunity'))
|
||||||
){
|
){
|
||||||
logValue.push(`Immune to ${damageTypeText}`);
|
logValue.push(`Immune to ${damageTypeText}`);
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
multiplier.resistance &&
|
multiplier.resistance &&
|
||||||
some(multiplier.resistances, multiplierAppliesTo(damageProp))
|
some(multiplier.resistances, multiplierAppliesTo(damageProp, 'resistance'))
|
||||||
){
|
){
|
||||||
logValue.push(`Resistant to ${damageTypeText}`);
|
logValue.push(`Resistant to ${damageTypeText}`);
|
||||||
damage = Math.floor(damage / 2);
|
damage = Math.floor(damage / 2);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
multiplier.vulnerability &&
|
multiplier.vulnerability &&
|
||||||
some(multiplier.vulnerabilities, multiplierAppliesTo(damageProp))
|
some(multiplier.vulnerabilities, multiplierAppliesTo(damageProp, 'vulnerability'))
|
||||||
){
|
){
|
||||||
logValue.push(`Vulnerable to ${damageTypeText}`);
|
logValue.push(`Vulnerable to ${damageTypeText}`);
|
||||||
damage = Math.floor(damage * 2);
|
damage = Math.floor(damage * 2);
|
||||||
@@ -170,8 +170,11 @@ function applyDamageMultipliers({target, damage, damageProp, logValue}){
|
|||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
function multiplierAppliesTo(damageProp){
|
function multiplierAppliesTo(damageProp, multiplierType){
|
||||||
return multiplier => {
|
return multiplier => {
|
||||||
|
// Apply the default 'ignore x' tags
|
||||||
|
if (includes(damageProp.tags, `ignore ${multiplierType}`)) return false;
|
||||||
|
|
||||||
const hasRequiredTags = difference(
|
const hasRequiredTags = difference(
|
||||||
multiplier.includeTags, damageProp.tags
|
multiplier.includeTags, damageProp.tags
|
||||||
).length === 0;
|
).length === 0;
|
||||||
|
|||||||
@@ -7,19 +7,19 @@ import getAggregatorResult from './getAggregatorResult.js';
|
|||||||
export default function computeImplicitVariable(node){
|
export default function computeImplicitVariable(node){
|
||||||
const prop = {};
|
const prop = {};
|
||||||
|
|
||||||
// Combine damage multipliers
|
// Combine damage multipliers
|
||||||
if (node.data.immunity){
|
if (node.data.immunity){
|
||||||
prop.immunity = node.data.immunity;
|
prop.immunity = node.data.immunity;
|
||||||
prop.immunities = node.data.immunities;
|
prop.immunities = node.data.immunities;
|
||||||
}
|
}
|
||||||
if (node.data.resistance){
|
if (node.data.resistance){
|
||||||
prop.resistance = node.data.resistance;
|
prop.resistance = node.data.resistance;
|
||||||
prop.resistances = node.data.resistances;
|
prop.resistances = node.data.resistances;
|
||||||
}
|
}
|
||||||
if (node.data.vulnerability){
|
if (node.data.vulnerability){
|
||||||
prop.vulnerability = node.data.vulnerability;
|
prop.vulnerability = node.data.vulnerability;
|
||||||
prop.vulnerabilities = node.data.vulnerabilities;
|
prop.vulnerabilities = node.data.vulnerabilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = getAggregatorResult(node);
|
const result = getAggregatorResult(node);
|
||||||
if (result !== undefined){
|
if (result !== undefined){
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
chips
|
chips
|
||||||
deletable-chips
|
deletable-chips
|
||||||
hint=""
|
hint=""
|
||||||
:items="['magical', 'silvered']"
|
:items="['magical', 'silvered', 'ignore resistance', 'ignore vulnerability', 'ignore immunity']"
|
||||||
:value="model.tags"
|
:value="model.tags"
|
||||||
:error-messages="errors.tags"
|
:error-messages="errors.tags"
|
||||||
@change="change('tags', ...arguments)"
|
@change="change('tags', ...arguments)"
|
||||||
|
|||||||
Reference in New Issue
Block a user