Implemented very basic value-auditing for skills/abilities

This commit is contained in:
Thaum
2014-11-18 12:01:02 +00:00
parent d0e5a1a378
commit 5c99530077
13 changed files with 251 additions and 68 deletions

View File

@@ -1,13 +1,23 @@
evaluate = function(character, string){
if(!string) return string;
string = string.replace(/\b[a-z]+\b/g, function(sub){
//skill mods
if(character.skills[sub]){
if(_.has(character.skills, sub)){
return +character.skillMod(character.skills[sub]);
}
//attributes
if(character.attributes[sub]){
if(_.has(character.attributes, sub)){
return +character.attributeValue(character.attributes[sub]);
}
//ability modifiers
var abilityMods = ["strengthMod", "dexterityMod", "constitutionMod", "intelligenceMod", "wisdomMod", "charismaMod"]
if( _.contains(abilityMods, sub) ){
var slice = sub.slice(0, - 3);
return +character.abilityMod(character.attributes[slice]);
}
if(sub === "level"){
return +character.level();
}
return sub;
});
try{
@@ -21,6 +31,7 @@ evaluate = function(character, string){
evaluateString = function(character, string){
//define brackets as curly brackets around anything that isn't a curly bracket
if(!string) return string;
var brackets = /\{[^\{\}]*\}/g;
var result = string.replace(brackets, function(exp){
var exp = exp.replace(/(\{|\})/g, "") //remove brackets
@@ -33,4 +44,14 @@ evaluateString = function(character, string){
});
//this is going to return HTML, ensure it is santized!
return result;
}
evaluateEffect = function(character, effect){
if(_.isFinite(effect.value)){
return effect.value;
} else if(_.isString(effect.calculation)){
return +evaluate(character, effect.calculation);
} else {
return 0;
}
}