Start of action system re-write
This commit is contained in:
@@ -5,7 +5,6 @@ import CreatureProperties from '/imports/api/creature/creatureProperties/Creatur
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import { damagePropertyWork } from '/imports/api/creature/creatureProperties/methods/damageProperty.js';
|
||||
import { computeCreatureDependencyGroup } from '/imports/api/engine/computeCreature.js';
|
||||
|
||||
const damagePropertiesByName = new ValidatedMethod({
|
||||
name: 'CreatureProperties.damagePropertiesByName',
|
||||
@@ -29,14 +28,13 @@ const damagePropertiesByName = new ValidatedMethod({
|
||||
// Check permissions
|
||||
let creature = Creatures.findOne(creatureId, {
|
||||
fields: {
|
||||
damageMultipliers: 1,
|
||||
variables: 1,
|
||||
owner: 1,
|
||||
readers: 1,
|
||||
writers: 1,
|
||||
},
|
||||
});
|
||||
assertEditPermission(creature, this.userId);
|
||||
let lastProperty;
|
||||
CreatureProperties.find({
|
||||
'ancestors.id': creatureId,
|
||||
variableName,
|
||||
@@ -48,9 +46,7 @@ const damagePropertiesByName = new ValidatedMethod({
|
||||
if (!schema.allowsKey('damage')) return;
|
||||
// Damage the property
|
||||
damagePropertyWork({property, operation, value});
|
||||
lastProperty = property;
|
||||
});
|
||||
if (lastProperty) computeCreatureDependencyGroup(lastProperty);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -45,21 +45,17 @@ const damageProperty = new ValidatedMethod({
|
||||
});
|
||||
|
||||
export function damagePropertyWork({property, operation, value}){
|
||||
let damage, newValue;
|
||||
if (operation === 'set'){
|
||||
let currentValue = property.value;
|
||||
const currentValue = property.value;
|
||||
// Set represents what we want the value to be after damage
|
||||
// So we need the actual damage to get to that value
|
||||
let damage = currentValue - value;
|
||||
damage = currentValue - value;
|
||||
// Damage can't exceed total value
|
||||
if (damage > currentValue) damage = currentValue;
|
||||
// Damage must be positive
|
||||
if (damage < 0) damage = 0;
|
||||
CreatureProperties.update(property._id, {
|
||||
$set: {damage}
|
||||
}, {
|
||||
selector: property
|
||||
});
|
||||
return currentValue - damage;
|
||||
newValue = property.total - damage;
|
||||
} else if (operation === 'increment'){
|
||||
let currentValue = property.value - (property.damage || 0);
|
||||
let currentDamage = property.damage;
|
||||
@@ -68,13 +64,16 @@ export function damagePropertyWork({property, operation, value}){
|
||||
if (increment > currentValue) increment = currentValue;
|
||||
// Can't decrease damage below zero
|
||||
if (-increment > currentDamage) increment = -currentDamage;
|
||||
CreatureProperties.update(property._id, {
|
||||
$inc: {damage: increment}
|
||||
}, {
|
||||
selector: property
|
||||
});
|
||||
return increment;
|
||||
damage = currentDamage + increment;
|
||||
newValue = property.total - damage;
|
||||
}
|
||||
|
||||
// Write the results
|
||||
CreatureProperties.update(property._id, {
|
||||
$set: {damage, value: newValue}
|
||||
}, {
|
||||
selector: property
|
||||
});
|
||||
}
|
||||
|
||||
export default damageProperty;
|
||||
|
||||
Reference in New Issue
Block a user