diff --git a/rpg-docs/Model/Character/Conditions.js b/rpg-docs/Model/Character/Conditions.js
new file mode 100644
index 00000000..ce894fe1
--- /dev/null
+++ b/rpg-docs/Model/Character/Conditions.js
@@ -0,0 +1,42 @@
+Conditions = new Mongo.Collection("conditions");
+
+Schemas.Conditions = new SimpleSchema({
+ charId: {
+ type: String,
+ regEx: SimpleSchema.RegEx.Id,
+ index: 1,
+ },
+ name: {
+ type: String,
+ optional: true,
+ trim: false,
+ },
+ description: {
+ type: String,
+ optional: true,
+ trim: false,
+ },
+ "lifeTime.total": {
+ type: Number,
+ defaultValue: 0, //0 is infinite
+ min: 0,
+ },
+ "lifeTime.spent": {
+ type: Number,
+ defaultValue: 0,
+ min: 0,
+ },
+ color: {
+ type: String,
+ allowedValues: _.pluck(colorOptions, "key"),
+ defaultValue: "q",
+ },
+});
+
+Conditions.attachSchema(Schemas.Conditions);
+
+Conditions.attachBehaviour("softRemovable");
+makeParent(Conditions, ["name"]); //parents of effects, attacks, proficiencies
+
+Conditions.allow(CHARACTER_SUBSCHEMA_ALLOW);
+Conditions.deny(CHARACTER_SUBSCHEMA_DENY);
diff --git a/rpg-docs/client/views/character/buffs/conditionView/conditionView.html b/rpg-docs/client/views/character/buffs/conditionView/conditionView.html
new file mode 100644
index 00000000..38659a6d
--- /dev/null
+++ b/rpg-docs/client/views/character/buffs/conditionView/conditionView.html
@@ -0,0 +1,7 @@
+
+
+
+ {{condition.name}}
+
+
+
diff --git a/rpg-docs/client/views/character/buffs/conditionView/conditionView.js b/rpg-docs/client/views/character/buffs/conditionView/conditionView.js
new file mode 100644
index 00000000..752a9ba6
--- /dev/null
+++ b/rpg-docs/client/views/character/buffs/conditionView/conditionView.js
@@ -0,0 +1,11 @@
+Template.conditionView.events({
+ "click .conditionView": function(event){
+ var condition = this.condition;
+ var charId = Template.parentData()._id;
+ pushDialogStack({
+ template: "conditionViewDialog",
+ data: {condition: condition},
+ element: event.currentTarget,
+ });
+ },
+});
diff --git a/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.html b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.html
new file mode 100644
index 00000000..9800cc25
--- /dev/null
+++ b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.html
@@ -0,0 +1,14 @@
+
+ {{#baseDialog title=condition.name class="white" hideColor=true startEditing=true editOnly=true}}}
+ {{> conditionDetails condition=condition}}
+ {{else}}
+ {{> conditionDetails condition=condition}}
+ {{/baseDialog}}
+
+
+
+ {{#if condition.description}}
+ {{#markdown}}{{evaluateString condition.charId condition.description}}{{/markdown}}
+ {{/if}}
+ {{> effectsViewList charId=condition.charId parentId=condition._id}}
+
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.js b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.js
new file mode 100644
index 00000000..da029186
--- /dev/null
+++ b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.js
@@ -0,0 +1,6 @@
+Template.conditionViewDialog.events({
+ "click #deleteButton": function(event, instance){
+ Conditions.remove(instance.data.condition._id);
+ popDialogStack();
+ },
+});
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html
index 92cd8050..59ada714 100644
--- a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html
+++ b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html
@@ -1,31 +1,29 @@
- {{#with buff}}
- {{#baseEditDialog title=name hideColor=true}}
-
-
+ {{#baseEditDialog title=buff.name hideColor=true}}
+
+
-
-
-
-
- Self only
-
-
- Others only
-
-
- Both
-
-
-
-
+
+
+
+
+ Self only
+
+
+ Others only
+
+
+ Both
+
+
+
+
-
-
+
+
- {{> effectsEditList parentId=_id parentCollection="Buffs" charId=charId name=name enabled=false}}
- {{> attackEditList parentId=_id parentCollection="Buffs" charId=charId name=name enabled=false}}
- {{> proficiencyEditList parentId=_id parentCollection="Buffs" charId=charId enabled=false}}
- {{/baseEditDialog}}
- {{/with}}
+ {{> effectsEditList parentId=buff._id parentCollection="CustomBuffs" charId=buff.charId name=name enabled=false}}
+ {{> attackEditList parentId=buff._id parentCollection="CustomBuffs" charId=buff.charId name=name enabled=false}}
+ {{> proficiencyEditList parentId=buff._id parentCollection="CustomBuffs" charId=buff.charId enabled=false}}
+ {{/baseEditDialog}}
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js
index 4941e58d..66330ba4 100644
--- a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js
+++ b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js
@@ -1,9 +1,3 @@
-Template.customBuffEdit.helpers({
- buff: function(){
- return CustomBuffs.findOne(this.buffId);
- },
-});
-
const debounce = (f) => _.debounce(f, 300);
Template.customBuffEdit.events({
@@ -15,7 +9,7 @@ Template.customBuffEdit.events({
input.errorMessage = "Name is required";
} else {
input.invalid = false;
- CustomBuffs.update(this._id, {
+ CustomBuffs.update(this.buff._id, {
$set: {name: name}
}, {
removeEmptyStrings: false,
@@ -25,7 +19,7 @@ Template.customBuffEdit.events({
}),
"input #buffDescriptionInput": debounce(function(event){
var description = event.currentTarget.value;
- CustomBuffs.update(this._id, {
+ CustomBuffs.update(this.buff._id, {
$set: {description: description}
}, {
removeEmptyStrings: false,
@@ -35,7 +29,7 @@ Template.customBuffEdit.events({
"iron-select .target-dropdown": function(event){
var detail = event.originalEvent.detail;
var value = detail.item.getAttribute("name");
- if (value === this.target) return;
- CustomBuffs.update(this._id, {$set: {target: value}});
+ if (value === this.buff.target) return;
+ CustomBuffs.update(this.buff._id, {$set: {target: value}});
},
});
diff --git a/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js b/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js
index a7d955f4..54f7fc29 100644
--- a/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js
+++ b/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js
@@ -34,7 +34,7 @@ Template.customBuffEditListItem.events({
"tap .edit-buff": function(event, template){
pushDialogStack({
template: "customBuffEdit",
- data: {id: this.buff._id},
+ data: {buff: this.buff},
element: event.currentTarget.parentElement.parentElement,
});
},
diff --git a/rpg-docs/client/views/character/stats/stats.html b/rpg-docs/client/views/character/stats/stats.html
index 5ecdb947..e9c8736e 100644
--- a/rpg-docs/client/views/character/stats/stats.html
+++ b/rpg-docs/client/views/character/stats/stats.html
@@ -54,7 +54,7 @@
{{#each condition in conditions}}
- {{>buffListItem buff=condition}}
+ {{>conditionView condition=condition}}
{{/each}}
{{#if buffs.count}}
diff --git a/rpg-docs/client/views/character/stats/stats.js b/rpg-docs/client/views/character/stats/stats.js
index 8c02073c..365136b8 100644
--- a/rpg-docs/client/views/character/stats/stats.js
+++ b/rpg-docs/client/views/character/stats/stats.js
@@ -1,15 +1,10 @@
Template.stats.helpers({
- conditions: function(){
- var selector = {
- "charId": this._id,
- "type": "inate",
- };
- return Buffs.find(selector);
+ conditions: function() {
+ return Conditions.find({charId: this._id});
},
- buffs: function(){
+ buffs: function() {
var selector = {
"charId": this._id,
- "type": "custom",
};
return Buffs.find(selector);
},
diff --git a/rpg-docs/lib/methods/conditions.js b/rpg-docs/lib/methods/conditions.js
index 2202c5f8..d0f949c8 100644
--- a/rpg-docs/lib/methods/conditions.js
+++ b/rpg-docs/lib/methods/conditions.js
@@ -28,21 +28,19 @@ Meteor.methods({
var buff = _.extend(
{
charId: charId,
- type: "inate",
- appliedBy: charId,
},
condition.buff
);
//make sure the character doesn't already have the buff
- var existingBuffs = Buffs.find(_.clone(buff)).count();
+ var existingBuffs = Conditions.find(_.clone(buff)).count();
if (existingBuffs) return;
//remove exclusive conditions
_.each(condition.exclusiveConditions, function(exCond) {
Meteor.call("removeCondition", charId, exCond);
});
//insert the buff
- var buffId = Buffs.insert(buff);
+ var buffId = Conditions.insert(buff);
//extend and insert each effect
_.each(condition.effects, function(effect) {
var newEffect = {
@@ -53,7 +51,7 @@ Meteor.methods({
charId: charId,
parent: {
id: buffId,
- collection: "Buffs",
+ collection: "Conditions",
},
enabled: true,
};
@@ -81,7 +79,7 @@ Meteor.methods({
var buff = _.extend(
{charId: charId, type: "inate"}, condition.buff
);
- Buffs.remove(buff);
+ Conditions.remove(buff);
//dont remove the effects, they get removed automatically through parenting
},
getConditions: function() {
diff --git a/rpg-docs/server/publications/singleCharacter.js b/rpg-docs/server/publications/singleCharacter.js
index 42f8c073..771375b6 100644
--- a/rpg-docs/server/publications/singleCharacter.js
+++ b/rpg-docs/server/publications/singleCharacter.js
@@ -17,6 +17,7 @@ Meteor.publish("singleCharacter", function(characterId){
Attacks.find ({charId: characterId}, {removed: true}),
Buffs.find ({charId: characterId}, {removed: true}),
Classes.find ({charId: characterId}, {removed: true}),
+ Conditions.find ({charId: characterId}, {removed: true}),
Containers.find ({charId: characterId}, {removed: true}),
CustomBuffs.find ({charId: characterId}, {removed: true}),
Effects.find ({charId: characterId}, {removed: true}),