Implemented very basic value-auditing for skills/abilities
This commit is contained in:
123
rpg-docs/client/globalHelpers/effectList.js
Normal file
123
rpg-docs/client/globalHelpers/effectList.js
Normal file
@@ -0,0 +1,123 @@
|
||||
Template.registerHelper("effectList", function(obj, character){
|
||||
var result = $("<div>");
|
||||
if(_.has(obj, "conditional") && obj.conditional.length > 0){
|
||||
_.each(obj.conditional, function(cond){
|
||||
var c = $("<div>")
|
||||
.append("* ")
|
||||
.append(evaluateString(character, cond.name));
|
||||
result.append(c);
|
||||
});
|
||||
}
|
||||
|
||||
if(obj.base > 0){
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append(obj.base))
|
||||
.append("Base");
|
||||
result.append(c);
|
||||
}
|
||||
|
||||
if(_.has(obj, "proficiency") && obj.proficiency.length > 0){
|
||||
var highestProf = {};
|
||||
_.each(obj.proficiency, function(prof, i){
|
||||
var value = evaluateEffect(character, prof)
|
||||
if(i === 0 || value > highestProf.value){
|
||||
highestProf.value = value;
|
||||
highestProf.name = prof.name;
|
||||
highestProf.calculation = prof.calculation;
|
||||
}
|
||||
});
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append(highestProf.value).append(" x Proficiency Bonus"))
|
||||
.append(highestProf.name);
|
||||
result.append(c);
|
||||
}
|
||||
|
||||
if(_.has(obj, "add") && obj.add.length > 0){
|
||||
_.each(obj.add, function(a){
|
||||
var value = signedString(evaluateEffect(character, a));
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append(value))
|
||||
.append(a.name);
|
||||
result.append(c);
|
||||
});
|
||||
}
|
||||
|
||||
if(_.has(obj, "mul") && obj.mul.length > 0){
|
||||
_.each(obj.mul, function(a){
|
||||
var value = signedString(evaluateEffect(character, a));
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append("×").append(value))
|
||||
.append(a.name);
|
||||
result.append(c);
|
||||
});
|
||||
}
|
||||
|
||||
if(_.has(obj, "min") && obj.min.length > 0){
|
||||
var highestMin = {};
|
||||
_.each(obj.min, function(m, i){
|
||||
var value = evaluateEffect(character, m)
|
||||
if(i === 0 || value > highestMin.value){
|
||||
highestMin.value = value;
|
||||
highestMin.name = m.name;
|
||||
highestMin.calculation = m.calculation;
|
||||
}
|
||||
});
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append(highestMin.value).append(" Minimum"))
|
||||
.append(highestMin.name);
|
||||
result.append(c);
|
||||
}
|
||||
|
||||
if(_.has(obj, "max") && obj.max.length > 0){
|
||||
var lowestMax = {};
|
||||
_.each(obj.max, function(m, i){
|
||||
var value = evaluateEffect(character, m)
|
||||
if(i === 0 || value < lowestMax.value){
|
||||
lowestMax.value = value;
|
||||
lowestMax.name = m.name;
|
||||
lowestMax.calculation = m.calculation;
|
||||
}
|
||||
});
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append(lowestMax.value).append(" Maximum"))
|
||||
.append(lowestMax.name);
|
||||
result.append(c);
|
||||
}
|
||||
|
||||
if(obj.base < 0){
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append(obj.base))
|
||||
.append("Damage");
|
||||
result.append(c);
|
||||
}
|
||||
|
||||
if(_.has(obj, "advantage") && obj.advantage.length > 0){
|
||||
_.each(obj.advantage, function(adv){
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append("Advantage"))
|
||||
.append(adv.name);
|
||||
result.append(c);
|
||||
})
|
||||
}
|
||||
|
||||
if(_.has(obj, "disadvantage") && obj.disadvantage.length > 0){
|
||||
_.each(obj.disadvantage, function(disadv){
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append("Disadvantage"))
|
||||
.append(disadv.name);
|
||||
result.append(c);
|
||||
})
|
||||
}
|
||||
|
||||
if(_.has(obj, "fail") && obj.fail.length > 0){
|
||||
_.each(obj.fail, function(f){
|
||||
var c = $("<div>")
|
||||
.append($("<span>").addClass("auditValue").append("Fail"))
|
||||
.append(f.name);
|
||||
result.append(c);
|
||||
})
|
||||
}
|
||||
var string = result.html()
|
||||
if (_.isString(string)) return Spacebars.SafeString(string);
|
||||
return string;
|
||||
});
|
||||
@@ -2,7 +2,7 @@
|
||||
<h2>Saving Throws</h2>
|
||||
<table class="skillTable">
|
||||
{{#each saveList}}
|
||||
<tr>
|
||||
<tr title={{effectList skill ..}}>
|
||||
<td><div class="profIcon" style="background-image: url(/png/profIcons/{{profIcon skill}})"></div></td>
|
||||
{{#if failSkill}}
|
||||
<td class="fail">fail</td>
|
||||
@@ -16,7 +16,7 @@
|
||||
<h2>Skills</h2>
|
||||
<table class="skillTable">
|
||||
{{#each skillList}}
|
||||
<tr>
|
||||
<tr title={{effectList skill ..}}>
|
||||
<td><div class="profIcon" style="background-image: url(/png/profIcons/{{profIcon skill}})"></div></td>
|
||||
{{#if failSkill}}
|
||||
<td class="fail">fail</td>
|
||||
|
||||
@@ -9,11 +9,13 @@ Template.textField.helpers({
|
||||
},
|
||||
input: function(){
|
||||
var text = this.character.strings[this.field];
|
||||
return Spacebars.SafeString(text);
|
||||
if (_.isString(text)) return Spacebars.SafeString(text);
|
||||
return text;
|
||||
},
|
||||
output: function(){
|
||||
var html = evaluateString(this.character, this.character.strings[this.field]);
|
||||
return Spacebars.SafeString(html);
|
||||
if (_.isString(html)) return Spacebars.SafeString(html);
|
||||
return html;
|
||||
},
|
||||
outputClass: function(){
|
||||
if(Template.instance().editing.get()){
|
||||
@@ -28,6 +30,7 @@ Template.textField.events({
|
||||
"blur #textInput": function(){
|
||||
Template.instance().editing.set(false);
|
||||
var text = $("#textInput").html();
|
||||
if(!_.isString(text)) text = "";
|
||||
//TODO sanitise the html
|
||||
var setter = {};
|
||||
setter["strings."+this.field] = text;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{{>loginButtons}}
|
||||
<div>
|
||||
{{# each characters}}
|
||||
<li><a href="{{ pathFor 'character' }} ">{{_id}}</a></li>
|
||||
<li><a href="{{ pathFor 'character' }} ">{{_id}}</a> <button class="deleteChar">delete</button></li>
|
||||
{{/each}}
|
||||
</div>
|
||||
<input id="addCharacter" type="button" value="Add Character">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
Template.home.events({
|
||||
"click #addCharacter": function (event, template) {
|
||||
Characters.insert(new Character(Meteor.userId()));
|
||||
Characters.insert({});
|
||||
},
|
||||
"click #delete": function(event, template){
|
||||
"click .delete": function(event, template){
|
||||
Characters.remove(this._id);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user