Made proficiencies their own objects, added migration functionality
This commit is contained in:
@@ -18,3 +18,4 @@ zimme:collection-softremovable
|
|||||||
momentjs:moment
|
momentjs:moment
|
||||||
mike:mocha
|
mike:mocha
|
||||||
dburles:mongo-collection-instances
|
dburles:mongo-collection-instances
|
||||||
|
percolate:migrations
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ mongo@1.1.0
|
|||||||
npm-bcrypt@0.7.8_2
|
npm-bcrypt@0.7.8_2
|
||||||
observe-sequence@1.0.6
|
observe-sequence@1.0.6
|
||||||
ordered-dict@1.0.3
|
ordered-dict@1.0.3
|
||||||
|
percolate:migrations@0.7.3
|
||||||
practicalmeteor:chai@1.9.2_3
|
practicalmeteor:chai@1.9.2_3
|
||||||
practicalmeteor:loglevel@1.1.0_3
|
practicalmeteor:loglevel@1.1.0_3
|
||||||
random@1.0.3
|
random@1.0.3
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ Schemas.Character = new SimpleSchema({
|
|||||||
bonds: { type: String, defaultValue: "", trim: false},
|
bonds: { type: String, defaultValue: "", trim: false},
|
||||||
flaws: { type: String, defaultValue: "", trim: false},
|
flaws: { type: String, defaultValue: "", trim: false},
|
||||||
backstory: { type: String, defaultValue: "", trim: false},
|
backstory: { type: String, defaultValue: "", trim: false},
|
||||||
proficiencies:{ type: String, defaultValue: "", trim: false},
|
|
||||||
languages: { type: String, defaultValue: "", trim: false},
|
languages: { type: String, defaultValue: "", trim: false},
|
||||||
|
|
||||||
//attributes
|
//attributes
|
||||||
@@ -182,7 +181,7 @@ var attributeBase = function(charId, statName){
|
|||||||
|
|
||||||
//start with the highest base value
|
//start with the highest base value
|
||||||
_.each(effects.base, function(effect){
|
_.each(effects.base, function(effect){
|
||||||
var efv = evaluateEffect(charId, effect)
|
var efv = evaluateEffect(charId, effect);
|
||||||
if (efv > value){
|
if (efv > value){
|
||||||
value = efv;
|
value = efv;
|
||||||
}
|
}
|
||||||
@@ -210,7 +209,7 @@ var attributeBase = function(charId, statName){
|
|||||||
value = value < max? value : max;
|
value = value < max? value : max;
|
||||||
});
|
});
|
||||||
return value;
|
return value;
|
||||||
}
|
};
|
||||||
|
|
||||||
//functions and calculated values.
|
//functions and calculated values.
|
||||||
//These functions can only rely on this._id since no other
|
//These functions can only rely on this._id since no other
|
||||||
@@ -302,12 +301,10 @@ Characters.helpers({
|
|||||||
var charId = this._id;
|
var charId = this._id;
|
||||||
//return largest value in proficiency array
|
//return largest value in proficiency array
|
||||||
var prof = 0;
|
var prof = 0;
|
||||||
Effects.find({charId: charId, stat: skillName, enabled: true}).forEach(function(effect){
|
Proficiencies.find({charId: charId, name: skillName, enabled: true}).forEach(function(proficiency){
|
||||||
if(effect.operation === "proficiency"){
|
var newProf = proficiency.value;
|
||||||
var newProf = evaluateEffect(charId, effect);
|
if (newProf > prof){
|
||||||
if (newProf > prof){
|
prof = newProf;
|
||||||
prof = newProf;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return prof;
|
return prof;
|
||||||
@@ -317,7 +314,7 @@ Characters.helpers({
|
|||||||
if (_.isString(skillName)){
|
if (_.isString(skillName)){
|
||||||
var skill = this.getField(skillName);
|
var skill = this.getField(skillName);
|
||||||
}
|
}
|
||||||
var charId = this._id
|
var charId = this._id;
|
||||||
var mod = +this.skillMod(skillName);
|
var mod = +this.skillMod(skillName);
|
||||||
var value = 10 + mod;
|
var value = 10 + mod;
|
||||||
Effects.find({charId: charId, stat: skillName, enabled: true, operation: "passiveAdd"}).forEach(function(effect){
|
Effects.find({charId: charId, stat: skillName, enabled: true, operation: "passiveAdd"}).forEach(function(effect){
|
||||||
@@ -328,7 +325,7 @@ Characters.helpers({
|
|||||||
},
|
},
|
||||||
|
|
||||||
advantage: function(skillName){
|
advantage: function(skillName){
|
||||||
var charId = this._id
|
var charId = this._id;
|
||||||
var advantage = Effects.find({charId: charId, stat: skillName, enabled: true, operation: "advantage"}).count();
|
var advantage = Effects.find({charId: charId, stat: skillName, enabled: true, operation: "advantage"}).count();
|
||||||
var disadvantage = Effects.find({charId: charId, stat: skillName, enabled: true, operation: "disadvantage"}).count();
|
var disadvantage = Effects.find({charId: charId, stat: skillName, enabled: true, operation: "disadvantage"}).count();
|
||||||
if(advantage && !disadvantage) return 1;
|
if(advantage && !disadvantage) return 1;
|
||||||
|
|||||||
@@ -7,12 +7,24 @@ Schemas.Proficiency = new SimpleSchema({
|
|||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
trim: false
|
trim: false,
|
||||||
|
optional: true,
|
||||||
},
|
},
|
||||||
value: {
|
value: {
|
||||||
type: Number,
|
type: Number,
|
||||||
allowedValues: [0, 0.5, 1],
|
allowedValues: [0, 0.5, 1, 2],
|
||||||
|
defaultValue: 1,
|
||||||
|
decimal: true,
|
||||||
},
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
allowedValues: ["skill", "save", "weapon", "armor", "tool", "language"],
|
||||||
|
defaultValue: "skill",
|
||||||
|
},
|
||||||
|
enabled: {
|
||||||
|
type: Boolean,
|
||||||
|
defaultValue: true,
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Proficiencies.attachSchema(Schemas.Proficiency);
|
Proficiencies.attachSchema(Schemas.Proficiency);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!--needs to be given charId, parentId and parentCollection-->
|
<!--needs to be given charId, parentId and parentCollection-->
|
||||||
<template name="effectsEditList">
|
<template name="effectsEditList">
|
||||||
{{#if effects.count}}
|
{{#if effects.count}}
|
||||||
<hr style="margin: 16px 0 16px 0;">
|
<hr class="vertMargin">
|
||||||
<div id="effects">
|
<div id="effects">
|
||||||
<h2>Effects</h2>
|
<h2>Effects</h2>
|
||||||
{{#each effects}}
|
{{#each effects}}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{> effectsViewList charId=charId parentId=_id}}
|
{{> effectsViewList charId=charId parentId=_id}}
|
||||||
|
{{> proficiencyViewList charId=charId parentId=_id}}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="featureEdit">
|
<template name="featureEdit">
|
||||||
@@ -82,4 +83,5 @@
|
|||||||
</paper-input-decorator>
|
</paper-input-decorator>
|
||||||
|
|
||||||
{{> effectsEditList parentId=_id parentCollection="Features" charId=charId name=name enabled=enabled}}
|
{{> effectsEditList parentId=_id parentCollection="Features" charId=charId name=name enabled=enabled}}
|
||||||
|
{{> proficiencyEditList parentId=_id parentCollection="Features" charId=charId enabled=enabled}}
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
<paper-input id="levelValueInput" label="Level" floatinglabel value={{level}}></paper-input>
|
<paper-input id="levelValueInput" label="Level" floatinglabel value={{level}}></paper-input>
|
||||||
<!--Effects-->
|
<!--Effects-->
|
||||||
{{> effectsEditList parentId=_id parentCollection="Classes" charId=charId}}
|
{{> effectsEditList parentId=_id parentCollection="Classes" charId=charId}}
|
||||||
|
{{> proficiencyEditList parentId=_id parentCollection="Characters" charId=charId}}
|
||||||
{{/baseDialog}}
|
{{/baseDialog}}
|
||||||
{{/with}}
|
{{/with}}
|
||||||
</template>
|
</template>
|
||||||
@@ -2,5 +2,6 @@
|
|||||||
{{#baseDialog title="Race" class=colorClass hideColor="true" hideDelete="true"}}
|
{{#baseDialog title="Race" class=colorClass hideColor="true" hideDelete="true"}}
|
||||||
<paper-input id="raceInput" label="Race" floatinglabel value={{race}}></paper-input>
|
<paper-input id="raceInput" label="Race" floatinglabel value={{race}}></paper-input>
|
||||||
{{> effectsEditList parentId=charId parentCollection="Characters" charId=charId}}
|
{{> effectsEditList parentId=charId parentCollection="Characters" charId=charId}}
|
||||||
|
{{> proficiencyEditList parentId=charId parentCollection="Characters" charId=charId}}
|
||||||
{{/baseDialog}}
|
{{/baseDialog}}
|
||||||
</template>
|
</template>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<template name="proficiencyEdit">
|
||||||
|
<div layout horizontal around-justified>
|
||||||
|
<paper-dropdown-menu class="typeDropDown" label="Stat Group" flex>
|
||||||
|
<paper-dropdown layered class="dropdown">
|
||||||
|
<core-menu class="menu typeMenu" selected={{type}}>
|
||||||
|
{{#each proficiencyTypes}}
|
||||||
|
<paper-item class="statGroupSelect" name={{type}}>{{name}}</paper-item>
|
||||||
|
{{/each}}
|
||||||
|
</core-menu>
|
||||||
|
</paper-dropdown>
|
||||||
|
</paper-dropdown-menu>
|
||||||
|
{{> UI.dynamic template=nameInputTemplate}}
|
||||||
|
<paper-dropdown-menu class="valueDropDown" label="Proficiency" flex>
|
||||||
|
<paper-dropdown layered class="dropdown">
|
||||||
|
<core-menu class="menu valueMenu" selected={{value}}>
|
||||||
|
<paper-item name="1">Proficient</paper-item>
|
||||||
|
<paper-item name="0.5">Half Prof. Bonus</paper-item>
|
||||||
|
<paper-item name="2">Double Prof. Bonus</paper-item>
|
||||||
|
</core-menu>
|
||||||
|
</paper-dropdown>
|
||||||
|
</paper-dropdown-menu>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="nameDropdown">
|
||||||
|
<paper-dropdown-menu class="nameDropDown sideMargin" label="Proficiency" flex>
|
||||||
|
<paper-dropdown layered class="dropdown">
|
||||||
|
<core-menu class="menu nameMenu" selected={{name}}>
|
||||||
|
{{#each nameDropdownItems}}
|
||||||
|
<paper-item name={{stat}}>{{name}}</paper-item>
|
||||||
|
{{/each}}
|
||||||
|
</core-menu>
|
||||||
|
</paper-dropdown>
|
||||||
|
</paper-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="nameInput sideMargin">
|
||||||
|
<paper-input class="nameInput"
|
||||||
|
label="Name"
|
||||||
|
floatinglabel
|
||||||
|
value={{name}}
|
||||||
|
flex></paper-input>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
var profTypes = [
|
||||||
|
{type: "skill", name: "Skill"},
|
||||||
|
{type: "save", name: "Saving Throw"},
|
||||||
|
{type: "weapon", name: "Weapon"},
|
||||||
|
{type: "armor", name: "Armor"},
|
||||||
|
{type: "tool", name: "Tool"},
|
||||||
|
{type: "language", name: "Language"}
|
||||||
|
];
|
||||||
|
|
||||||
|
var saves = [
|
||||||
|
{name: "Strength Save", stat: "strengthSave"},
|
||||||
|
{name: "Dexterity Save", stat: "dexteritySave"},
|
||||||
|
{name: "Constitution Save", stat: "constitutionSave"},
|
||||||
|
{name: "Intelligence Save", stat: "intelligenceSave"},
|
||||||
|
{name: "Wisdom Save", stat: "wisdomSave"},
|
||||||
|
{name: "Charisma Save", stat: "charismaSave"},
|
||||||
|
];
|
||||||
|
|
||||||
|
var skills = [
|
||||||
|
{name: "Acrobatics", stat: "acrobatics"},
|
||||||
|
{name: "Animal Handling", stat: "animalHandling"},
|
||||||
|
{name: "Arcana", stat: "arcana"},
|
||||||
|
{name: "Athletics", stat: "athletics"},
|
||||||
|
{name: "Deception", stat: "deception"},
|
||||||
|
{name: "History", stat: "history"},
|
||||||
|
{name: "Insight", stat: "insight"},
|
||||||
|
{name: "Intimidation", stat: "intimidation"},
|
||||||
|
{name: "Investigation", stat: "investigation"},
|
||||||
|
{name: "Medicine", stat: "medicine"},
|
||||||
|
{name: "Nature", stat: "nature"},
|
||||||
|
{name: "Perception", stat: "perception"},
|
||||||
|
{name: "Performance", stat: "performance"},
|
||||||
|
{name: "Persuasion", stat: "persuasion"},
|
||||||
|
{name: "Religion", stat: "religion"},
|
||||||
|
{name: "Sleight of Hand", stat: "sleightOfHand"},
|
||||||
|
{name: "Stealth", stat: "stealth"},
|
||||||
|
{name: "Survival", stat: "survival"},
|
||||||
|
{name: "Initiative", stat: "initiative"},
|
||||||
|
];
|
||||||
|
|
||||||
|
Template.proficiencyEdit.helpers({
|
||||||
|
proficiencyTypes: function(){
|
||||||
|
return profTypes;
|
||||||
|
},
|
||||||
|
nameInputTemplate: function(){
|
||||||
|
if(!this.type) return null;
|
||||||
|
if(this.type === "skill"||
|
||||||
|
this.type === "save") return "nameDropdown";
|
||||||
|
return "nameInput";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.proficiencyEdit.events({
|
||||||
|
"core-select .typeDropDown": function(event){
|
||||||
|
var detail = event.originalEvent.detail;
|
||||||
|
if(!detail.isSelected) return;
|
||||||
|
var type = detail.item.getAttribute("name");
|
||||||
|
if (type == this.type) return;
|
||||||
|
Proficiencies.update(this._id, {$set: {type: type}});
|
||||||
|
},
|
||||||
|
"core-select .valueDropDown": function(event){
|
||||||
|
var detail = event.originalEvent.detail;
|
||||||
|
if(!detail.isSelected) return;
|
||||||
|
var value = +detail.item.getAttribute("name");
|
||||||
|
if (value == this.value) return;
|
||||||
|
Proficiencies.update(this._id, {$set: {value: value}});
|
||||||
|
},
|
||||||
|
"core-select .nameDropDown": function(event){
|
||||||
|
var detail = event.originalEvent.detail;
|
||||||
|
if(!detail.isSelected) return;
|
||||||
|
var name = detail.item.getAttribute("name");
|
||||||
|
if (name == this.name) return;
|
||||||
|
Proficiencies.update(this._id, {$set: {name: name}});
|
||||||
|
},
|
||||||
|
"change .nameInput": function(event){
|
||||||
|
var name = event.currentTarget.value;
|
||||||
|
Proficiencies.update(this._id, {$set: {name: name}});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.nameDropdown.helpers({
|
||||||
|
nameDropdownItems: function(){
|
||||||
|
if (this.type === "skill") return skills;
|
||||||
|
if (this.type === "save") return saves;
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<!--needs to be given charId, parentId and parentCollection-->
|
||||||
|
<template name="proficiencyEditList">
|
||||||
|
{{#if proficiencies.count}}
|
||||||
|
<hr class="vertMargin">
|
||||||
|
|
||||||
|
<div id="proficiencies">
|
||||||
|
<h2>Proficiencies</h2>
|
||||||
|
{{#each proficiencies}}
|
||||||
|
{{>proficiencyEdit}}
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
<paper-button id="addProficiencyButton"
|
||||||
|
class="red-button"
|
||||||
|
raised>
|
||||||
|
Add Proficiency
|
||||||
|
</paper-button>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
Template.proficiencyEditList.helpers({
|
||||||
|
proficiencies: function(){
|
||||||
|
var cursor = Proficiencies.find({"parent.id": this.parentId, "parent.collection": this.parentCollection});
|
||||||
|
return cursor;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.proficiencyEditList.events({
|
||||||
|
"tap #addProficiencyButton": function(){
|
||||||
|
if ( !_.isBoolean(this.enabled) ) {
|
||||||
|
this.enabled = true;
|
||||||
|
}
|
||||||
|
Proficiencies.insert({
|
||||||
|
charId: this.charId,
|
||||||
|
parent: {
|
||||||
|
id: this.parentId,
|
||||||
|
collection: this.parentCollection
|
||||||
|
},
|
||||||
|
enabled: this.enabled,
|
||||||
|
value: 1,
|
||||||
|
type: "skill",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<template name="proficiencyView">
|
||||||
|
<div class="proficiencyView" layout horizontal center>
|
||||||
|
<core-icon icon="{{profIcon}}"></core-icon>
|
||||||
|
<div class="sideMargin">{{getName}}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
var saves = {
|
||||||
|
strengthSave: "Strength Save",
|
||||||
|
dexteritySave: "Dexterity Save",
|
||||||
|
constitutionSave: "Constitution Save",
|
||||||
|
intelligenceSave: "Intelligence Save",
|
||||||
|
wisdomSave: "Wisdom Save",
|
||||||
|
charismaSave: "Charisma Save",
|
||||||
|
};
|
||||||
|
|
||||||
|
var skills = {
|
||||||
|
acrobatics: "Acrobatics",
|
||||||
|
animalHandling: "Animal Handling",
|
||||||
|
arcana: "Arcana",
|
||||||
|
athletics: "Athletics",
|
||||||
|
deception: "Deception",
|
||||||
|
history: "History",
|
||||||
|
insight: "Insight",
|
||||||
|
intimidation: "Intimidation",
|
||||||
|
investigation: "Investigation",
|
||||||
|
medicine: "Medicine",
|
||||||
|
nature: "Nature",
|
||||||
|
perception: "Perception",
|
||||||
|
performance: "Performance",
|
||||||
|
persuasion: "Persuasion",
|
||||||
|
religion: "Religion",
|
||||||
|
sleightOfHand: "Sleight of Hand",
|
||||||
|
stealth: "Stealth",
|
||||||
|
survival: "Survival",
|
||||||
|
initiative: "Initiative",
|
||||||
|
};
|
||||||
|
|
||||||
|
Template.proficiencyView.helpers({
|
||||||
|
profIcon: function(){
|
||||||
|
var prof = this.value;
|
||||||
|
if(prof > 0 && prof < 1) return "image:brightness-2";
|
||||||
|
if(prof === 1) return "image:brightness-1";
|
||||||
|
if(prof > 1) return "av:album";
|
||||||
|
return "radio-button-off";
|
||||||
|
},
|
||||||
|
getName: function(){
|
||||||
|
if(this.type === "skill") return skills[this.name];
|
||||||
|
if(this.type === "save") return saves[this.name];
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<template name="proficiencyViewList">
|
||||||
|
{{#if proficiencies.count}}
|
||||||
|
<hr class="vertMargin">
|
||||||
|
<div class="proficiencies">
|
||||||
|
<h2 class="spaceAfter">Proficiencies</h2>
|
||||||
|
{{#each proficiencies}}
|
||||||
|
{{> proficiencyView}}
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
Template.proficiencyViewList.helpers({
|
||||||
|
proficiencies: function(){
|
||||||
|
return Proficiencies.find({"parent.id": this.parentId, charId: this.charId});
|
||||||
|
}
|
||||||
|
});
|
||||||
8
rpg-docs/lib/constants/saves.js
Normal file
8
rpg-docs/lib/constants/saves.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
SAVES = [
|
||||||
|
"strengthSave",
|
||||||
|
"dexteritySave",
|
||||||
|
"constitutionSave",
|
||||||
|
"intelligenceSave",
|
||||||
|
"wisdomSave",
|
||||||
|
"charismaSave",
|
||||||
|
];
|
||||||
21
rpg-docs/lib/constants/skills.js
Normal file
21
rpg-docs/lib/constants/skills.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
SKILLS = [
|
||||||
|
"acrobatics",
|
||||||
|
"animalHandling",
|
||||||
|
"arcana",
|
||||||
|
"athletics",
|
||||||
|
"deception",
|
||||||
|
"history",
|
||||||
|
"insight",
|
||||||
|
"intimidation",
|
||||||
|
"investigation",
|
||||||
|
"medicine",
|
||||||
|
"nature",
|
||||||
|
"perception",
|
||||||
|
"performance",
|
||||||
|
"persuasion",
|
||||||
|
"religion",
|
||||||
|
"sleightOfHand",
|
||||||
|
"stealth",
|
||||||
|
"survival",
|
||||||
|
"initiative",
|
||||||
|
];
|
||||||
31
rpg-docs/server/migrations/migrations.js
Normal file
31
rpg-docs/server/migrations/migrations.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
Migrations.add({
|
||||||
|
version: 1,
|
||||||
|
up: function() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Migrations.add({
|
||||||
|
version: 2,
|
||||||
|
name: "converts effect proficiencies to proficiency objects",
|
||||||
|
up: function() {
|
||||||
|
Effects.find({operation: "proficiency"}).forEach(function(effect){
|
||||||
|
var type;
|
||||||
|
if(_.contains(SKILLS, effect.stat)) type = "skill";
|
||||||
|
if(_.contains(SAVES, effect.stat)) type = "save";
|
||||||
|
if(!type) throw "stat not a skill or a save";
|
||||||
|
Proficiencies.insert({
|
||||||
|
charId: effect.charId,
|
||||||
|
name: effect.stat,
|
||||||
|
value: effect.value,
|
||||||
|
parent: effect.parent,
|
||||||
|
type: type,
|
||||||
|
enabled: effect.enabled
|
||||||
|
});
|
||||||
|
Effects.remove(effect._id);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
down: function(){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -3,9 +3,9 @@ Meteor.publish("singleCharacter", function(characterId, userId){
|
|||||||
Characters.findOne({
|
Characters.findOne({
|
||||||
_id: characterId,
|
_id: characterId,
|
||||||
$or: [
|
$or: [
|
||||||
{readers: userId},
|
{readers: userId},
|
||||||
{writers: userId},
|
{writers: userId},
|
||||||
{owner: userId}
|
{owner: userId}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
){
|
){
|
||||||
@@ -24,6 +24,7 @@ Meteor.publish("singleCharacter", function(characterId, userId){
|
|||||||
Spells.find ({charId: characterId}, {removed: true}),
|
Spells.find ({charId: characterId}, {removed: true}),
|
||||||
SpellLists.find ({charId: characterId}, {removed: true}),
|
SpellLists.find ({charId: characterId}, {removed: true}),
|
||||||
TemporaryHitPoints.find({charId: characterId}, {removed: true}),
|
TemporaryHitPoints.find({charId: characterId}, {removed: true}),
|
||||||
|
Proficiencies.find ({charId: characterId}, {removed: true}),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user