diff --git a/rpg-docs/Model/Character/Characters.js b/rpg-docs/Model/Character/Characters.js index 3003dc16..cb09ce3b 100644 --- a/rpg-docs/Model/Character/Characters.js +++ b/rpg-docs/Model/Character/Characters.js @@ -33,6 +33,7 @@ Schemas.Character = new SimpleSchema({ age: {type: Schemas.Attribute}, ageRate: {type: Schemas.Attribute}, armor: {type: Schemas.Attribute}, + carryMultiplier: {type: Schemas.Attribute}, //resources level1SpellSlots: {type: Schemas.Attribute}, diff --git a/rpg-docs/Model/Character/Effects.js b/rpg-docs/Model/Character/Effects.js index 2c8b5367..6a6edeff 100644 --- a/rpg-docs/Model/Character/Effects.js +++ b/rpg-docs/Model/Character/Effects.js @@ -107,6 +107,18 @@ if (Meteor.isServer) Characters.after.insert(function(userId, char) { 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"); diff --git a/rpg-docs/client/views/character/effects/effectEdit/effectEdit.js b/rpg-docs/client/views/character/effects/effectEdit/effectEdit.js index ec34b67b..bc20833b 100644 --- a/rpg-docs/client/views/character/effects/effectEdit/effectEdit.js +++ b/rpg-docs/client/views/character/effects/effectEdit/effectEdit.js @@ -42,6 +42,7 @@ var stats = [ {stat: "rageDamage", name: "Rage Damage", group: "Stats"}, {stat: "expertiseDice", name: "Expertise 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: "level2SpellSlots", name: "level 2", group: "Spell Slots"}, {stat: "level3SpellSlots", name: "level 3", group: "Spell Slots"}, diff --git a/rpg-docs/client/views/character/inventory/carryCapacityBar/carryCapacityBar.js b/rpg-docs/client/views/character/inventory/carryCapacityBar/carryCapacityBar.js index c6a56997..da213f64 100644 --- a/rpg-docs/client/views/character/inventory/carryCapacityBar/carryCapacityBar.js +++ b/rpg-docs/client/views/character/inventory/carryCapacityBar/carryCapacityBar.js @@ -14,7 +14,9 @@ var getFractionCarried = function(char) { }); //get 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; }; diff --git a/rpg-docs/client/views/character/stats/carryCapacityTable/carryCapacityTable.html b/rpg-docs/client/views/character/stats/carryCapacityTable/carryCapacityTable.html index 5e6313ca..e6f67f02 100644 --- a/rpg-docs/client/views/character/stats/carryCapacityTable/carryCapacityTable.html +++ b/rpg-docs/client/views/character/stats/carryCapacityTable/carryCapacityTable.html @@ -2,27 +2,27 @@ - + - + - + - +
Encumbered>{{evaluate charId "strength * 5"}}lbs>{{evaluate charId "strength * 5 * carryMultiplier"}}lbs Variant rule, encumbered characters move 10 feet slower
Heavily encumbered>{{evaluate charId "strength * 10"}}lbs>{{evaluate charId "strength * 10 * carryMultiplier"}}lbs 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
Over Encumbered>{{evaluate charId "strength * 15"}}lbs>{{evaluate charId "strength * 15 * carryMultiplier"}}lbs Characters that can only just lift, push or drag their current load can only move at 5 feet.
Push, drag or lift maximum{{evaluate charId "strength * 30"}}lbs{{evaluate charId "strength * 30 * carryMultiplier"}}lbs
- \ No newline at end of file + diff --git a/rpg-docs/lib/methods/conditions.js b/rpg-docs/lib/methods/conditions.js index f0ecddb0..4e42bdcc 100644 --- a/rpg-docs/lib/methods/conditions.js +++ b/rpg-docs/lib/methods/conditions.js @@ -101,6 +101,8 @@ trackEncumbranceConditions = function(charId, templateInstance) { {fields: {"settings": 1}} ); var strength = Characters.calculate.attributeValue(charId, "strength"); + var carryMultiplier = Characters.calculate + .attributeValue(charId, "carryMultiplier"); var give = function(condition) { Meteor.call("giveCondition", charId, condition); }; @@ -108,11 +110,11 @@ trackEncumbranceConditions = function(charId, templateInstance) { Meteor.call("removeCondition", charId, condition); }; //variant encumbrance rules - if (weight > strength * 10 && + if (weight > strength * 10 * carryMultiplier && character.settings.useVariantEncumbrance) { give("encumbered2"); remove("encumbered"); - } else if (weight > strength * 5 && + } else if (weight > strength * 5 * carryMultiplier && character.settings.useVariantEncumbrance){ give("encumbered"); remove("encumbered2"); @@ -121,11 +123,11 @@ trackEncumbranceConditions = function(charId, templateInstance) { remove("encumbered2"); } //normal encumbrance rules - if (weight > strength * 30 && + if (weight > strength * 30 * carryMultiplier && character.settings.useStandardEncumbrance){ give("encumbered4"); remove("encumbered3"); - } else if (weight > strength * 15 && + } else if (weight > strength * 15 * carryMultiplier && character.settings.useStandardEncumbrance) { give("encumbered3"); remove("encumbered4"); diff --git a/rpg-docs/private/changeLogs/changeLogs.js b/rpg-docs/private/changeLogs/changeLogs.js index 91b738cd..f6ab9a34 100644 --- a/rpg-docs/private/changeLogs/changeLogs.js +++ b/rpg-docs/private/changeLogs/changeLogs.js @@ -252,3 +252,11 @@ ChangeLogs.insert({ "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", + ], +}); diff --git a/rpg-docs/server/migrations/migrations.js b/rpg-docs/server/migrations/migrations.js index 9310c8e2..9eee2347 100644 --- a/rpg-docs/server/migrations/migrations.js +++ b/rpg-docs/server/migrations/migrations.js @@ -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; + }, +});