Compare commits

...

31 Commits
0.6.5 ... 0.7.0

Author SHA1 Message Date
Stefan Zermatten
b578dd5fb0 Merge branch 'feature-carry-capacity-modifier' 2015-09-03 14:09:51 +02:00
Stefan Zermatten
5d6f934d88 Bumped version 2015-09-03 14:09:23 +02:00
Stefan Zermatten
337f0bfa8a Made sure migration touches every character 2015-09-03 14:09:17 +02:00
Stefan Zermatten
c62784894b Made sure encumbered conditions respect carry capacity 2015-09-03 13:53:00 +02:00
Stefan Zermatten
75fff43d7d Gave an effect menu option for carry capacity 2015-09-03 13:52:40 +02:00
Stefan Zermatten
a9eeeac0df Fixed carry capacity bar 2015-09-03 13:52:22 +02:00
Stefan Zermatten
c8af0ff0a9 Fixed carry capacity table 2015-09-03 13:52:06 +02:00
Stefan Zermatten
9e200db7b9 Made carry capacity an attribute, migrations need testing 2015-08-31 15:51:52 +02:00
Stefan Zermatten
c08cf83096 Bumped version 2015-08-27 12:21:23 +02:00
Stefan Zermatten
d9368b06d0 Merge branch 'bugfix-0.6.8' 2015-08-27 12:07:42 +02:00
Stefan Zermatten
2703367681 Proficiencies now get disabled when their features are disabled 2015-08-27 12:05:56 +02:00
Stefan Zermatten
d419442549 Fixed share dialog not finding usernames or email addresses 2015-08-27 11:59:38 +02:00
Stefan Zermatten
99df01c950 Prevented negative temporary hitpoints being added 2015-08-27 11:43:34 +02:00
Stefan Zermatten
d76349b3bb Merge branch 'release-0.6.7a' 2015-07-29 09:57:06 +02:00
Stefan Zermatten
39c061f4e8 Fixed formatting of not found page, now has a toolbar and centered text 2015-07-29 09:55:22 +02:00
Stefan Zermatten
6d167ddb22 Fixed formatting of loading page, more padding 2015-07-29 09:55:01 +02:00
Stefan Zermatten
037acbd459 Added Starter Set Wizard to the front page 2015-07-29 09:54:43 +02:00
Stefan Zermatten
4d3fc3bb09 Fixed accidental back() requests when closing detail dialogs 2015-07-29 09:54:18 +02:00
Stefan Zermatten
4b984d4fac Made analytics show all characters as the same page 2015-07-29 09:53:46 +02:00
Stefan Zermatten
58843613ba Merge branch 'release-0.6.7' 2015-07-27 13:12:42 +02:00
Stefan Zermatten
39b549b24b Bumped version 2015-07-27 13:12:28 +02:00
Stefan Zermatten
c79177de72 Added Google Analytics 2015-07-27 13:10:33 +02:00
Stefan Zermatten
11d09b1487 Fixed effect values not being visible on mobile 2015-07-27 12:16:02 +02:00
Stefan Zermatten
0e4918d57d Merge branch 'hotfix-style' 2015-07-27 12:08:22 +02:00
Stefan Zermatten
949f313af2 removed 1st column of all tables being 100px 2015-07-27 12:08:15 +02:00
Stefan Zermatten
85b63f152f Merge branch 'release-0.6.6' into develop 2015-07-27 11:23:12 +02:00
Stefan Zermatten
2141d52a7a Merge branch 'release-0.6.6' 2015-07-27 11:22:41 +02:00
Stefan Zermatten
4c84235064 Bumped version 2015-07-27 11:22:26 +02:00
Stefan Zermatten
0e194a5408 Added markdown to text areas 2015-07-27 10:21:26 +02:00
Stefan Zermatten
4b60eac330 Fixed typo on change log 2015-07-24 11:52:46 +02:00
Stefan Zermatten
cb017c359d Merge branch 'release-0.6.5' into develop 2015-07-24 11:31:05 +02:00
38 changed files with 186 additions and 52 deletions

1
rpg-docs/.gitignore vendored
View File

@@ -1,5 +1,6 @@
.meteor/local .meteor/local
.meteor/meteorite .meteor/meteorite
settings.json
public/components public/components
nohup.out nohup.out
dump dump

View File

@@ -27,3 +27,5 @@ fourseven:scss@2.1.1
wolves:bourbon wolves:bourbon
meteorhacks:subs-manager meteorhacks:subs-manager
meteorhacks:kadira meteorhacks:kadira
chuangbo:marked
reywood:iron-router-ga

View File

@@ -14,6 +14,7 @@ blaze-tools@1.0.3
boilerplate-generator@1.0.3 boilerplate-generator@1.0.3
callback-hook@1.0.3 callback-hook@1.0.3
check@1.0.5 check@1.0.5
chuangbo:marked@0.3.5
coffeescript@1.0.6 coffeescript@1.0.6
dburles:collection-helpers@1.0.3 dburles:collection-helpers@1.0.3
dburles:mongo-collection-instances@0.3.3 dburles:mongo-collection-instances@0.3.3
@@ -70,6 +71,7 @@ reactive-dict@1.1.0
reactive-var@1.0.5 reactive-var@1.0.5
reload@1.1.3 reload@1.1.3
retry@1.0.3 retry@1.0.3
reywood:iron-router-ga@0.6.0
routepolicy@1.0.5 routepolicy@1.0.5
service-configuration@1.0.4 service-configuration@1.0.4
session@1.1.0 session@1.1.0

View File

@@ -33,6 +33,7 @@ Schemas.Character = new SimpleSchema({
age: {type: Schemas.Attribute}, age: {type: Schemas.Attribute},
ageRate: {type: Schemas.Attribute}, ageRate: {type: Schemas.Attribute},
armor: {type: Schemas.Attribute}, armor: {type: Schemas.Attribute},
carryMultiplier: {type: Schemas.Attribute},
//resources //resources
level1SpellSlots: {type: Schemas.Attribute}, level1SpellSlots: {type: Schemas.Attribute},

View File

@@ -107,6 +107,18 @@ if (Meteor.isServer) Characters.after.insert(function(userId, char) {
group: "Inate", group: "Inate",
}, },
}); });
Effects.insert({
charId: char._id,
name: "Natural Carrying Capacity",
stat: "carryMultiplier",
operation: "base",
value: "1",
parent: {
id: char._id,
collection: "Characters",
group: "Inate",
},
});
}); });
Effects.attachBehaviour("softRemovable"); Effects.attachBehaviour("softRemovable");

View File

@@ -30,7 +30,7 @@ Schemas.Proficiency = new SimpleSchema({
Proficiencies.attachSchema(Schemas.Proficiency); Proficiencies.attachSchema(Schemas.Proficiency);
Proficiencies.attachBehaviour("softRemovable"); Proficiencies.attachBehaviour("softRemovable");
makeChild(Proficiencies); makeChild(Proficiencies, ["enabled"]);
Proficiencies.allow(CHARACTER_SUBSCHEMA_ALLOW); Proficiencies.allow(CHARACTER_SUBSCHEMA_ALLOW);
Proficiencies.deny(CHARACTER_SUBSCHEMA_DENY); Proficiencies.deny(CHARACTER_SUBSCHEMA_DENY);

View File

@@ -3,8 +3,8 @@ TemporaryHitPoints = new Mongo.Collection("temporaryHitPoints");
Schemas.TemporaryHitPoints = new SimpleSchema({ Schemas.TemporaryHitPoints = new SimpleSchema({
charId: {type: String, regEx: SimpleSchema.RegEx.Id}, charId: {type: String, regEx: SimpleSchema.RegEx.Id},
name: {type: String, optional: true}, name: {type: String, optional: true},
maximum: {type: Number, defaultValue: 0}, maximum: {type: Number, defaultValue: 0, min: 0, max: 500},
used: {type: Number, defaultValue: 0}, used: {type: Number, defaultValue: 0, min: 0, max: 500},
deleteOnZero:{type: Boolean, defaultValue: false}, deleteOnZero:{type: Boolean, defaultValue: false},
dateAdded: { dateAdded: {
type: Date, type: Date,

View File

@@ -1,6 +1,7 @@
Router.configure({ Router.configure({
loadingTemplate: "loading", loadingTemplate: "loading",
layoutTemplate: "layout", layoutTemplate: "layout",
trackPageView: true,
}); });
Router.plugin("ensureSignedIn", { Router.plugin("ensureSignedIn", {
@@ -56,6 +57,12 @@ Router.map(function() {
document.title = name; document.title = name;
} }
}, },
//analytics
trackPageView: false,
onRun: function() {
window.ga && window.ga("send", "pageview", "/character");
this.next();
},
}); });
this.route("loading", { this.route("loading", {

View File

@@ -77,10 +77,10 @@ this.GlobalUI = (function() {
var throttleBack = _.throttle(function() { var throttleBack = _.throttle(function() {
history.back(); history.back();
}, 800, {trailing: false}); }, 100, {trailing: false});
GlobalUI.closeDetail = function() { GlobalUI.closeDetail = function() {
if (!!(window.history && window.history.pushState)) { if (window.history && history.pushState && history.state.detail === "opened") {
throttleBack(); throttleBack();
} else { } else {
Session.set("global.ui.detailShow", false); Session.set("global.ui.detailShow", false);

View File

@@ -29,6 +29,11 @@ core-header-panel[drawer] {
box-shadow: 2px 0px 5px 0px rgba(0,0,0,0.2); box-shadow: 2px 0px 5px 0px rgba(0,0,0,0.2);
} }
//Paragraphs
p {
margin-bottom: 8px;
}
//Horizontal rule //Horizontal rule
hr { hr {
background-color: #444; background-color: #444;
@@ -37,7 +42,7 @@ hr {
color: #444; color: #444;
height: 1px; height: 1px;
line-height: 0; line-height: 0;
margin: 16px -16px; margin: 16px 0;
text-align: center; text-align: center;
} }

View File

@@ -1,8 +1,5 @@
td { td {
padding: 8px; padding: 8px;
&:nth-child(1) {
min-width: 100px;
}
} }
.strengthTable{ .strengthTable{

View File

@@ -44,7 +44,8 @@
label="Value" label="Value"
floatinglabel floatinglabel
value={{effectValue}} value={{effectValue}}
flex> flex
style="flex-basis: 100px;">
</paper-input> </paper-input>
</template> </template>

View File

@@ -42,6 +42,7 @@ var stats = [
{stat: "rageDamage", name: "Rage Damage", group: "Stats"}, {stat: "rageDamage", name: "Rage Damage", group: "Stats"},
{stat: "expertiseDice", name: "Expertise Dice", group: "Stats"}, {stat: "expertiseDice", name: "Expertise Dice", group: "Stats"},
{stat: "superiorityDice", name: "Superiority Dice", group: "Stats"}, {stat: "superiorityDice", name: "Superiority Dice", group: "Stats"},
{stat: "carryMultiplier", name: "Carry Capacity Multiplier", group: "Stats"},
{stat: "level1SpellSlots", name: "level 1", group: "Spell Slots"}, {stat: "level1SpellSlots", name: "level 1", group: "Spell Slots"},
{stat: "level2SpellSlots", name: "level 2", group: "Spell Slots"}, {stat: "level2SpellSlots", name: "level 2", group: "Spell Slots"},
{stat: "level3SpellSlots", name: "level 3", group: "Spell Slots"}, {stat: "level3SpellSlots", name: "level 3", group: "Spell Slots"},

View File

@@ -32,7 +32,7 @@
{{/if}} {{/if}}
{{#if description}} {{#if description}}
<div class="pre-wrap">{{evaluateString charId description}}</div> <div>{{#markdown}}{{evaluateString charId description}}{{/markdown}}</div>
{{/if}} {{/if}}
{{> effectsViewList charId=charId parentId=_id}} {{> effectsViewList charId=charId parentId=_id}}

View File

@@ -102,8 +102,9 @@
{{/if}} {{/if}}
</div> </div>
{{#if description}} {{#if description}}
<div flex class="bottom text" <div flex class="bottom">
>{{evaluateString charId shortDescription}}</div> {{#markdown}}{{evaluateString charId shortDescription}}{{/markdown}}
</div>
{{/if}} {{/if}}
{{#if hasUses}} {{#if hasUses}}
<div layout horizontal center end-justified> <div layout horizontal center end-justified>

View File

@@ -5,7 +5,7 @@ Template.features.helpers({
}, },
shortDescription: function() { shortDescription: function() {
if (_.isString(this.description)){ if (_.isString(this.description)){
return this.description.split(/[\n\r]{3,}/)[0]; return this.description.split(/^( *[-*_]){3,} *(?:\n+|$)/m)[0];
} }
}, },
hasUses: function(){ hasUses: function(){

View File

@@ -14,7 +14,9 @@ var getFractionCarried = function(char) {
}); });
//get strength //get strength
var strength = Characters.calculate.attributeValue(char._id, "strength"); var strength = Characters.calculate.attributeValue(char._id, "strength");
var capacity = strength * 15; var carryMultiplier = Characters.calculate
.attributeValue(char._id, "carryMultiplier");
var capacity = strength * 15 * carryMultiplier;
return weight / capacity; return weight / capacity;
}; };

View File

@@ -41,6 +41,6 @@
</div> </div>
{{#if description}} {{#if description}}
<hr class="vertMargin"> <hr class="vertMargin">
<div class="pre-wrap">{{evaluateString charId description}}</div> <div>{{#markdown}}{{evaluateString charId description}}{{/markdown}}</div>
{{/if}} {{/if}}
</template> </template>

View File

@@ -18,8 +18,8 @@
{{#if requiresAttunement}}<div class="vertMargin">Requires Attunement</div>{{/if}} {{#if requiresAttunement}}<div class="vertMargin">Requires Attunement</div>{{/if}}
</div> </div>
{{#if description}} {{#if description}}
<hr class="vertMargin"> <hr style="margin: 16px 0 16px 0;">
<div class="pre-wrap">{{evaluateString charId description}}</div> <div>{{#markdown}}{{evaluateString charId description}}{{/markdown}}</div>
{{/if}} {{/if}}
{{> effectsViewList charId=charId parentId=_id}} {{> effectsViewList charId=charId parentId=_id}}
{{> attacksViewList charId=charId parentId=_id}} {{> attacksViewList charId=charId parentId=_id}}

View File

@@ -6,7 +6,7 @@
</div> </div>
{{#if description}} {{#if description}}
<hr class="vertMargin"> <hr class="vertMargin">
<div class="pre-wrap">{{description}}</div> <div>{{#markdown}}{{description}}{{/markdown}}</div>
{{/if}} {{/if}}
{{else}} {{else}}
{{> experienceEdit}} {{> experienceEdit}}

View File

@@ -87,7 +87,7 @@
layout horizontal center> layout horizontal center>
{{name}} {{name}}
</div> </div>
<div class="bottom text">{{description}}</div> <div class="bottom">{{#markdown}}{{description}}{{/markdown}}</div>
</paper-shadow> </paper-shadow>
{{/each}} {{/each}}
</div> </div>

View File

@@ -1,7 +1,7 @@
<template name="noteDialog"> <template name="noteDialog">
{{#with note}} {{#with note}}
{{#baseDialog title=name class=colorClass startEditing=../startEditing}} {{#baseDialog title=name class=colorClass startEditing=../startEditing}}
<div class="pre-wrap">{{description}}</div> <div>{{#markdown}}{{description}}{{/markdown}}</div>
{{else}} {{else}}
{{> noteDialogEdit}} {{> noteDialogEdit}}
{{/baseDialog}} {{/baseDialog}}

View File

@@ -1,6 +1,6 @@
<template name="backgroundDialog"> <template name="backgroundDialog">
{{#baseDialog title=title class=colorClass hideColor="true" hideDelete="true"}} {{#baseDialog title=title class=colorClass hideColor="true" hideDelete="true"}}
<div class="pre-wrap">{{evaluateString charId value}}</div> <div>{{#markdown}}{{evaluateString charId value}}{{/markdown}}</div>
{{> proficiencyViewList charId=charId parentId=charId parentGroup="background"}} {{> proficiencyViewList charId=charId parentId=charId parentGroup="background"}}
{{else}} {{else}}
{{> textDialogEdit}} {{> textDialogEdit}}

View File

@@ -68,6 +68,6 @@
{{title}} {{title}}
</div> </div>
</div> </div>
<div class="bottom text">{{> UI.contentBlock}}</div> <div class="bottom">{{#markdown}}{{> UI.contentBlock}}{{/markdown}}</div>
</paper-shadow> </paper-shadow>
</template> </template>

View File

@@ -1,6 +1,6 @@
<template name="textDialog"> <template name="textDialog">
{{#baseDialog title=title class=colorClass hideColor="true" hideDelete="true" startEditing=startEditing}} {{#baseDialog title=title class=colorClass hideColor="true" hideDelete="true" startEditing=startEditing}}
<div class="pre-wrap">{{evaluateString charId value}}</div> <div>{{#markdown}}{{evaluateString charId value}}{{/markdown}}</div>
{{else}} {{else}}
{{> textDialogEdit}} {{> textDialogEdit}}
{{/baseDialog}} {{/baseDialog}}

View File

@@ -34,7 +34,7 @@
</div> </div>
{{/if}} {{/if}}
</div> </div>
<div class="pre-wrap">{{evaluateString charId description}}</div> <div>{{#markdown}}{{evaluateString charId description}}{{/markdown}}</div>
{{> attacksViewList charId=charId parentId=_id}} {{> attacksViewList charId=charId parentId=_id}}
</template> </template>

View File

@@ -20,7 +20,7 @@
{{/if}} {{/if}}
</div> </div>
<hr class="vertMargin"> <hr class="vertMargin">
<div class="pre-wrap">{{evaluateString charId description}}</div> <div>{{#markdown}}{{evaluateString charId description}}{{/markdown}}</div>
</div> </div>
{{else}} {{else}}
<!--Name--> <!--Name-->

View File

@@ -1,9 +1,11 @@
Template.addTHPDialog.events({ Template.addTHPDialog.events({
"tap #addButton": function(event, instance){ "tap #addButton": function(event, instance){
var max = +instance.find("#quantityInput").value;
if (!max || max < 0) max = 0;
TemporaryHitPoints.insert({ TemporaryHitPoints.insert({
charId: this.charId, charId: this.charId,
name: instance.find("#nameInput").value, name: instance.find("#nameInput").value,
maximum: +instance.find("#quantityInput").value, maximum: max,
deleteOnZero: !!instance.find("#deleteWhenZeroCheckbox").checked, deleteOnZero: !!instance.find("#deleteWhenZeroCheckbox").checked,
}); });
} }

View File

@@ -2,27 +2,27 @@
<table class="carryCapacityTable strengthTable"> <table class="carryCapacityTable strengthTable">
<tr> <tr>
<td>Encumbered</td> <td>Encumbered</td>
<td>&gt;{{evaluate charId "strength * 5"}}lbs</td> <td>&gt;{{evaluate charId "strength * 5 * carryMultiplier"}}lbs</td>
<td class="caption">Variant rule, encumbered characters move 10 feet slower</td> <td class="caption">Variant rule, encumbered characters move 10 feet slower</td>
</tr> </tr>
<tr> <tr>
<td>Heavily encumbered</td> <td>Heavily encumbered</td>
<td>&gt;{{evaluate charId "strength * 10"}}lbs</td> <td>&gt;{{evaluate charId "strength * 10 * carryMultiplier"}}lbs</td>
<td class="caption"> <td class="caption">
Variant rule, heavily encumbered characters move 20 feet slower and have disadvantage on ability checks, attack rolls, and saving thows that use Strength, Dexterity, or Constitution Variant rule, heavily encumbered characters move 20 feet slower and have disadvantage on ability checks, attack rolls, and saving thows that use Strength, Dexterity, or Constitution
</td> </td>
</tr> </tr>
<tr> <tr>
<td>Over Encumbered</td> <td>Over Encumbered</td>
<td>&gt;{{evaluate charId "strength * 15"}}lbs</td> <td>&gt;{{evaluate charId "strength * 15 * carryMultiplier"}}lbs</td>
<td class="caption"> <td class="caption">
Characters that can only just lift, push or drag their current load can only move at 5 feet. Characters that can only just lift, push or drag their current load can only move at 5 feet.
</td> </td>
</tr> </tr>
<tr> <tr>
<td>Push, drag or lift maximum</td> <td>Push, drag or lift maximum</td>
<td>{{evaluate charId "strength * 30"}}lbs</td> <td>{{evaluate charId "strength * 30 * carryMultiplier"}}lbs</td>
<td class="caption"></td> <td class="caption"></td>
</tr> </tr>
</table> </table>
</template> </template>

View File

@@ -1,14 +1,14 @@
<template name="healthCard"> <template name="healthCard">
<paper-shadow class="card container healthCard" <paper-shadow class="card container healthCard"
hero-id="main" {{detailHero "hitPoints" _id}} hero-id="main" {{detailHero "hitPoints" _id}}
layout horizontal wrap> layout horizontal wrap>
<div class="green white-text subhead left" <div class="green white-text subhead left"
hero-id="toolbar" {{detailHero "hitPoints" _id}} hero-id="toolbar" {{detailHero "hitPoints" _id}}
layout vertical center center-justified> layout vertical center center-justified>
<div class="hitPointTitle clickable">Hit Points</div> <div class="hitPointTitle clickable">Hit Points</div>
<paper-icon-button class="white54" <paper-icon-button class="white54"
id="addTempHP" id="addTempHP"
icon="add" icon="add"
disabled={{#unless canEditCharacter _id}}true{{/unless}}> disabled={{#unless canEditCharacter _id}}true{{/unless}}>
</paper-icon-button> </paper-icon-button>
</div> </div>
@@ -33,14 +33,14 @@
role="slider" role="slider"
flex flex
></paper-diff-slider> ></paper-diff-slider>
{{#unless left}}{{#unless deleteOnZero}} {{#unless left}}
<paper-icon-button class="deleteTHP" icon="delete"></paper-icon-button> <paper-icon-button class="deleteTHP" icon="delete"></paper-icon-button>
{{/unless}}{{/unless}} {{/unless}}
</div> </div>
</div> </div>
{{/each}} {{/each}}
<div class="caption"> <div class="caption">
{{#if multipliers.immunities.length}} {{#if multipliers.immunities.length}}
<div> <div>
Immune: {{#each multipliers.immunities}} {{name}} {{/each}} Immune: {{#each multipliers.immunities}} {{name}} {{/each}}
</div> </div>

View File

@@ -45,6 +45,15 @@
</div> </div>
<div class="bottom text">Lawful Good Human</div> <div class="bottom text">Lawful Good Human</div>
</paper-shadow> </paper-shadow>
<paper-shadow class="card characterCard ssWizard clickable"
z="2">
<div class="top subhead deep-purple white-text">
<div class="subhead" flex>
Starter Set Wizard
</div>
</div>
<div class="bottom text">Chaotic Good High Elf</div>
</paper-shadow>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -8,6 +8,9 @@ Template.intro.events({
"tap .ssArcher": function() { "tap .ssArcher": function() {
Router.go("/character/yBWwt5XQTTHZiRQxq"); Router.go("/character/yBWwt5XQTTHZiRQxq");
}, },
"tap .ssWizard": function() {
Router.go("/character/KxHKskm22fS2Xogah");
},
"tap .guideButton": function() { "tap .guideButton": function() {
Router.go("/guide"); Router.go("/guide");
}, },

View File

@@ -4,6 +4,9 @@
</core-toolbar> </core-toolbar>
<div fit layout vertical center center-justified> <div fit layout vertical center center-justified>
<paper-spinner class="bigSpinner" active></paper-spinner> <paper-spinner class="bigSpinner" active></paper-spinner>
<div class="subhead">{{randomHint}}</div> <div class="subhead"
style="margin-left: 16px;
margin-right: 16px;
text-align: center;">{{randomHint}}</div>
</div> </div>
</template> </template>

View File

@@ -1,10 +1,14 @@
<template name="notFound"> <template name="notFound">
<div layout vertical center center-justified fit> <core-toolbar class="app-grey white-text">
<h2>The data for the page you requested could not be found.</h2> <core-icon-button icon="menu" core-drawer-toggle></core-icon-button>
</core-toolbar>
<div layout vertical center center-justified fit
style="padding: 16px; text-align: center;">
<h2 style="margin-bottom: 12px;">The data for the page you requested could not be found.</h2>
{{#if currentUser}} {{#if currentUser}}
<h2>It might not exist, or you might not have permission to view it.</h2> <h3>It might not exist, or you might not have permission to view it.</h3>
{{else}} {{else}}
<h2>Perhaps you need to sign in first:</h2> <h3>Perhaps you need to sign in first:</h3>
{{atForm}} {{atForm}}
{{/if}} {{/if}}
</div> </div>

View File

@@ -1,8 +1,13 @@
Meteor.methods({ Meteor.methods({
"getUserId": function(username){ "getUserId": function(username){
if (!username) return; if (!username) return;
regex = new RegExp("^" + username + "$", "i")
var user = Meteor.users.findOne( var user = Meteor.users.findOne(
{$or: [{username: username}, {"emails.address": username}]} {$or: [
{username: username},
{"emails.address": regex},
{"services.google.email": regex},
]}
); );
return user && user._id; return user && user._id;
} }

View File

@@ -101,6 +101,8 @@ trackEncumbranceConditions = function(charId, templateInstance) {
{fields: {"settings": 1}} {fields: {"settings": 1}}
); );
var strength = Characters.calculate.attributeValue(charId, "strength"); var strength = Characters.calculate.attributeValue(charId, "strength");
var carryMultiplier = Characters.calculate
.attributeValue(charId, "carryMultiplier");
var give = function(condition) { var give = function(condition) {
Meteor.call("giveCondition", charId, condition); Meteor.call("giveCondition", charId, condition);
}; };
@@ -108,11 +110,11 @@ trackEncumbranceConditions = function(charId, templateInstance) {
Meteor.call("removeCondition", charId, condition); Meteor.call("removeCondition", charId, condition);
}; };
//variant encumbrance rules //variant encumbrance rules
if (weight > strength * 10 && if (weight > strength * 10 * carryMultiplier &&
character.settings.useVariantEncumbrance) { character.settings.useVariantEncumbrance) {
give("encumbered2"); give("encumbered2");
remove("encumbered"); remove("encumbered");
} else if (weight > strength * 5 && } else if (weight > strength * 5 * carryMultiplier &&
character.settings.useVariantEncumbrance){ character.settings.useVariantEncumbrance){
give("encumbered"); give("encumbered");
remove("encumbered2"); remove("encumbered2");
@@ -121,11 +123,11 @@ trackEncumbranceConditions = function(charId, templateInstance) {
remove("encumbered2"); remove("encumbered2");
} }
//normal encumbrance rules //normal encumbrance rules
if (weight > strength * 30 && if (weight > strength * 30 * carryMultiplier &&
character.settings.useStandardEncumbrance){ character.settings.useStandardEncumbrance){
give("encumbered4"); give("encumbered4");
remove("encumbered3"); remove("encumbered3");
} else if (weight > strength * 15 && } else if (weight > strength * 15 * carryMultiplier &&
character.settings.useStandardEncumbrance) { character.settings.useStandardEncumbrance) {
give("encumbered3"); give("encumbered3");
remove("encumbered4"); remove("encumbered4");

View File

@@ -225,6 +225,38 @@ ChangeLogs.insert({
changes: [ changes: [
"Net worth now takes container values into account", "Net worth now takes container values into account",
"Added support for character pictures", "Added support for character pictures",
"Disabled edit buttons for reada-only viewers", "Disabled edit buttons for read-only viewers",
],
});
ChangeLogs.insert({
version: "0.6.6",
changes: [
"Text fields now accept github-flavor markdown formatting",
],
});
ChangeLogs.insert({
version: "0.6.7",
changes: [
"Fixed effect values not being visible on small screens",
"Added basic analytics",
],
});
ChangeLogs.insert({
version: "0.6.8",
changes: [
"Fixed share dialog not finding user names",
"Fixed temporary hitpoint sliders allowing negative values",
"Fixed proficiencies not being disabled with their features",
],
});
ChangeLogs.insert({
version: "0.7.0",
changes: [
"Added carry capacity multiplier as a stat with a default value of 1",
"Improved loading times by vulcanizing polymer imports",
], ],
}); });

View File

@@ -108,3 +108,45 @@ Migrations.add({
); );
}, },
}); });
Migrations.add({
version: 4,
name: "Adds an effect to give characters a base carry capacity",
up: function() {
//update characters
Characters.find({}).forEach(function(char){
Characters.update(char._id, {
$set: {
carryMultiplier: {
adjustment: 0,
reset: "longRest",
}
}
});
var effect = Effects.findOne({
charId: char._id, name: "Natural Carrying Capacity"
});
if (effect) return;
Effects.insert({
charId: char._id,
name: "Natural Carrying Capacity",
stat: "carryMultiplier",
operation: "base",
value: "1",
parent: {
id: char._id,
collection: "Characters",
group: "Inate",
},
});
effect = Effects.findOne({
charId: char._id, name: "Natural Carrying Capacity"
});
if (!effect) throw "Carry capacity effect should be set by now."
});
},
down: function(){
return;
},
});