Implemented very basic value-auditing for skills/abilities
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user