{{> ripple}}
diff --git a/rpg-docs/client/views/character/Stats/skillRow/skillRow.js b/rpg-docs/client/views/character/Stats/skillRow/skillRow.js
new file mode 100644
index 00000000..d0fb9a1d
--- /dev/null
+++ b/rpg-docs/client/views/character/Stats/skillRow/skillRow.js
@@ -0,0 +1,40 @@
+Template.skillRow.helpers({
+ profIcon: function(skill){
+ var prof = Template.parentData(1).proficiency(this.skill);
+ if(prof > 0 && prof < 1) return "profHalf.png";
+ if(prof === 1) return "profSingle.png";
+ if(prof > 1) return "profDouble.png";
+ return "profNone.png";
+ },
+ failSkill: function(){
+ var skill = Template.parentData(1).getField(this.skill);
+ _.each(skill.effets, function(effect){
+ if (effect.operation === "fail"){
+ return true;
+ }
+ })
+ return false;
+ },
+ advantage: function(){
+ var adv = 0;
+ var disadv = 0;
+ var skill = Template.parentData(1).getField(this.skill);
+ _.each(skill.effets, function(effect){
+ if (effect.operation === "advantage"){
+ adv ++;
+ } else if (effect.operation === "disadvantage") {
+ disadv ++;
+ }
+ })
+ if(adv > 0 && disadv === 0) return "advantage";
+ if(disadv > 0 && adv === 0) return "disadvantage";
+ },
+ conditionals: function(){
+ var skill = Template.parentData(1).getField(this.skill);
+ _.each(skill.effets, function(effect){
+ if (effect.operation === "conditional"){
+ return "conditionals";
+ }
+ })
+ }
+});
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/Title/characterName.html b/rpg-docs/client/views/character/Title/characterName.html
deleted file mode 100644
index fbfb2c13..00000000
--- a/rpg-docs/client/views/character/Title/characterName.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- {{experience.level}}
-
-
- {{name}}
-
-
- {{alignment}} {{gender}} {{race}}
-
-
- {{> healthBar}}
-
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/bigAbilities/bigAbilities.css b/rpg-docs/client/views/character/bigAbilities/bigAbilities.css
deleted file mode 100644
index 79551a3d..00000000
--- a/rpg-docs/client/views/character/bigAbilities/bigAbilities.css
+++ /dev/null
@@ -1,28 +0,0 @@
-.flexItem.abilities {
- flex-grow: 1;
- width: 100px;
- max-width: 400px;
-}
-
-.floatBox.ability {
- width: 85px;
- text-align: center;
- display: inline-block;
-}
-
-.abilityName {
-
-}
-
-.abilityScore {
- font-size: 2em;
-}
-
-.abilityMod {
- margin: 0 auto -15px;
- padding: 2px;
- border: 2px solid black;
- border-radius: 5px;
- background: white;
- width: 40px;
-}
diff --git a/rpg-docs/client/views/character/bigAbilities/bigAbilities.html b/rpg-docs/client/views/character/bigAbilities/bigAbilities.html
deleted file mode 100644
index 05bb32f8..00000000
--- a/rpg-docs/client/views/character/bigAbilities/bigAbilities.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
- {{> bigAbility name="Strength" ability="strength"}}
-
-
- {{> bigAbility name="Dexterity" ability="dexterity"}}
-
-
- {{> bigAbility name="Constitution" ability="constitution"}}
-
-
- {{> bigAbility name="Intelligence" ability="intelligence"}}
-
-
- {{> bigAbility name="Wisdom" ability="wisdom"}}
-
-
- {{> bigAbility name="Charisma" ability="charisma"}}
-
-
-
-
-
- {{name}}
-
-
- {{../attributeValue ability}}
-
-
- {{../abilityMod ability}}
-
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/persona/persona.html b/rpg-docs/client/views/character/persona/persona.html
deleted file mode 100644
index 97934fd0..00000000
--- a/rpg-docs/client/views/character/persona/persona.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
Description
- {{> textField character=this field="description"}}
-
-
-
Personality
- {{> textField character=this field="personality"}}
- Ideals
- {{> textField character=this field="ideals"}}
- Bonds
- {{> textField character=this field="bonds"}}
- Flaws
- {{> textField character=this field="flaws"}}
-
-
-
Backstory
- {{> textField character=this field="backstory"}}
-
-
-
Notes
- {{> textField character=this field="notes"}}
-
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/resources/resources.html b/rpg-docs/client/views/character/resources/resources.html
deleted file mode 100644
index 73af72b5..00000000
--- a/rpg-docs/client/views/character/resources/resources.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
- {{#if hasSlots}}
- {{slotSummary}}
- {{/if}}
-
-
- {{#if hasKi}}
- {{attributeValue attributes.ki}}
- {{/if}}
-
-
- {{#if hasSorceryPoints}}
- {{attributeValue attributes.sorceryPoints}}
- {{/if}}
-
-
- {{#if hasRages}}
- {{attributeValue attributes.rages}}
- {{/if}}
-
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/resources/resources.js b/rpg-docs/client/views/character/resources/resources.js
deleted file mode 100644
index b6c5dd9e..00000000
--- a/rpg-docs/client/views/character/resources/resources.js
+++ /dev/null
@@ -1,36 +0,0 @@
-Template.resources.helpers({
- hasSlots: function(){
- var slots = 0;
- for(var i = 1; i < 9; i++){
- var attribute = this.attributes["level"+i+"SpellSlots"]
- if(attribute.base != 0) return true;
- if(attribute.add.length != 0) return true;
- }
- },
- hasKi: function(){
- var slots = 0;
- var attribute = this.attributes.ki;
- if(attribute.base != 0) return true;
- if(attribute.add.length != 0) return true;
- },
- hasSorceryPoints: function(){
- var slots = 0;
- var attribute = this.attributes.sorceryPoints;
- if(attribute.base != 0) return true;
- if(attribute.add.length != 0) return true;
- },
- hasRages: function(){
- var slots = 0;
- var attribute = this.attributes.rages;
- if(attribute.base != 0) return true;
- if(attribute.add.length != 0) return true;
- },
- slotSummary: function(){
- var slots = "";
- for(var i = 1; i < 9; i++){
- if (i > 0) slots += " "
- slots += this.attributeValue(this.attributes["level"+i+"SpellSlots"]);
- }
- return slots;
- }
-});
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/skills/skills.js b/rpg-docs/client/views/character/skills/skills.js
deleted file mode 100644
index fff61c9c..00000000
--- a/rpg-docs/client/views/character/skills/skills.js
+++ /dev/null
@@ -1,75 +0,0 @@
-Template.skills.helpers({
- saveList: function(){
- return [
- {name: "Strength", skill: "strengthSave"},
- {name: "Dexterity", skill: "dexteritySave"},
- {name: "Constitution", skill: "constitutionSave"},
- {name: "Intelligence", skill: "intelligenceSave"},
- {name: "Wisdom", skill: "wisdomSave"},
- {name: "Charisma", skill: "charismaSave"}
- ];
- },
- skillList: function(){
- return [
- {name: "Acrobatics", skill: "acrobatics"},
- {name: "Animal Handling", skill: "animalHandling"},
- {name: "Arcana", skill: "arcana"},
- {name: "Athletics", skill: "athletics"},
- {name: "Deception", skill: "deception"},
- {name: "History", skill: "history"},
- {name: "Insight", skill: "insight"},
- {name: "Intimidation", skill: "intimidation"},
- {name: "Investigation", skill: "investigation"},
- {name: "Medicine", skill: "medicine"},
- {name: "Nature", skill: "nature"},
- {name: "Perception", skill: "perception"},
- {name: "Performance", skill: "performance"},
- {name: "Persuasion", skill: "persuasion"},
- {name: "Religion", skill: "religion"},
- {name: "Sleight of Hand", skill: "sleightOfHand"},
- {name: "Stealth", skill: "stealth"},
- {name: "Survival", skill: "survival"}
- ];
- }
-});
-
-Template.skillRow.helpers({
- profIcon: function(skill){
- var prof = Template.parentData(1).proficiency(this.skill);
- if(prof > 0 && prof < 1) return "profHalf.png";
- if(prof === 1) return "profSingle.png";
- if(prof > 1) return "profDouble.png";
- return "profNone.png";
- },
- failSkill: function(){
- var skill = Template.parentData(1).getField(this.skill);
- _.each(skill.effets, function(effect){
- if (effect.operation === "fail"){
- return true;
- }
- })
- return false;
- },
- advantage: function(){
- var adv = 0;
- var disadv = 0;
- var skill = Template.parentData(1).getField(this.skill);
- _.each(skill.effets, function(effect){
- if (effect.operation === "advantage"){
- adv ++;
- } else if (effect.operation === "disadvantage") {
- disadv ++;
- }
- })
- if(adv > 0 && disadv === 0) return "advantage";
- if(disadv > 0 && adv === 0) return "disadvantage";
- },
- conditionals: function(){
- var skill = Template.parentData(1).getField(this.skill);
- _.each(skill.effets, function(effect){
- if (effect.operation === "conditional"){
- return "conditionals";
- }
- })
- }
-});
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/textField/textField.css b/rpg-docs/client/views/character/textField/textField.css
deleted file mode 100644
index 55623be3..00000000
--- a/rpg-docs/client/views/character/textField/textField.css
+++ /dev/null
@@ -1,7 +0,0 @@
-#textOutput.notEditing{
- cursor: pointer;
-}
-
-.textField {
- min-height: 32px;
-}
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/textField/textField.html b/rpg-docs/client/views/character/textField/textField.html
deleted file mode 100644
index 8e8840d9..00000000
--- a/rpg-docs/client/views/character/textField/textField.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
- {{#if editing}}
- {{input}}
- {{else}}
-
- {{output}}
-
- {{/if}}
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/character/textField/textField.js b/rpg-docs/client/views/character/textField/textField.js
deleted file mode 100644
index 81646435..00000000
--- a/rpg-docs/client/views/character/textField/textField.js
+++ /dev/null
@@ -1,46 +0,0 @@
-Template.textField.created = function(){
- Template.instance().editing = new ReactiveVar(false);
- document.execCommand('defaultParagraphSeparator', false, 'div');
-}
-
-Template.textField.helpers({
- editing: function(){
- return Template.instance().editing.get();
- },
- input: function(){
- var text = this.character.getField(this.field);
- if (_.isString(text)) return Spacebars.SafeString(text);
- return text;
- },
- output: function(){
- var html = evaluateString(this.character._id, this.character.getField(this.field));
- if (_.isString(html)) return Spacebars.SafeString(html);
- return html;
- },
- outputClass: function(){
- if(Template.instance().editing.get()){
- return "editing";
- } else{
- return "notEditing"
- }
- }
-})
-
-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[this.field] = text;
- Characters.update(this.character._id, {$set: setter}, {removeEmptyStrings: false});
- },
- "click #textOutput": function(){
- Template.instance().editing.set(true);
- Tracker.afterFlush(function(){
- $("#textInput").focus();
- placeCaretAtEnd($("#textInput"));
- });
- }
-})
\ No newline at end of file
diff --git a/rpg-docs/client/views/colors/colors.less b/rpg-docs/client/views/colors/colors.less
deleted file mode 100644
index f141bb2c..00000000
--- a/rpg-docs/client/views/colors/colors.less
+++ /dev/null
@@ -1,67 +0,0 @@
-/* LESS - http://lesscss.org style sheet */
-/* Palette color codes */
-/* Palette URL: http://paletton.com/#uid=7000K0kDPzIFM9PC5lZm-D39kMT */
-
-/* Feel free to copy&paste color codes to your application */
-
-
-/* MIXINS */
-
-/* As hex codes */
-
-@color-primary-0: #FF0000; /* Main Primary color */
-@color-primary-1: #4E0000;
-@color-primary-2: #AF0000;
-@color-primary-3: #FF4B4B;
-@color-primary-4: #FFB5B5;
-
-@color-secondary-1-0: #0961B0; /* Main Secondary color (1) */
-@color-secondary-1-1: #021C33;
-@color-secondary-1-2: #063F71;
-@color-secondary-1-3: #4182BC;
-@color-secondary-1-4: #9DBCD7;
-
-@color-secondary-2-0: #FF9500; /* Main Secondary color (2) */
-@color-secondary-2-1: #4E2E00;
-@color-secondary-2-2: #AF6700;
-@color-secondary-2-3: #FFB54B;
-@color-secondary-2-4: #FFE0B5;
-
-@color-complement-0: #00D200; /* Main Complement color */
-@color-complement-1: #003F00;
-@color-complement-2: #008C00;
-@color-complement-3: #40D940;
-@color-complement-4: #A5E9A5;
-
-
-
-/* As RGBa codes */
-
-@rgba-primary-0: rgba(255, 0, 0,1); /* Main Primary color */
-@rgba-primary-1: rgba( 78, 0, 0,1);
-@rgba-primary-2: rgba(175, 0, 0,1);
-@rgba-primary-3: rgba(255, 75, 75,1);
-@rgba-primary-4: rgba(255,181,181,1);
-
-@rgba-secondary-1-0: rgba( 9, 97,176,1); /* Main Secondary color (1) */
-@rgba-secondary-1-1: rgba( 2, 28, 51,1);
-@rgba-secondary-1-2: rgba( 6, 63,113,1);
-@rgba-secondary-1-3: rgba( 65,130,188,1);
-@rgba-secondary-1-4: rgba(157,188,215,1);
-
-@rgba-secondary-2-0: rgba(255,149, 0,1); /* Main Secondary color (2) */
-@rgba-secondary-2-1: rgba( 78, 46, 0,1);
-@rgba-secondary-2-2: rgba(175,103, 0,1);
-@rgba-secondary-2-3: rgba(255,181, 75,1);
-@rgba-secondary-2-4: rgba(255,224,181,1);
-
-@rgba-complement-0: rgba( 0,210, 0,1); /* Main Complement color */
-@rgba-complement-1: rgba( 0, 63, 0,1);
-@rgba-complement-2: rgba( 0,140, 0,1);
-@rgba-complement-3: rgba( 64,217, 64,1);
-@rgba-complement-4: rgba(165,233,165,1);
-
-
-
-/* Generated by Paletton.com © 2002-2014 */
-/* http://paletton.com */
\ No newline at end of file
diff --git a/rpg-docs/client/views/layout/publicHeader.html b/rpg-docs/client/views/layout/publicHeader.html
deleted file mode 100644
index 4fda47ce..00000000
--- a/rpg-docs/client/views/layout/publicHeader.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{> headerItems}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Pricing
-
-
-
-
-
- Sign Up
-
-
-
-
-
- Sign In
-
-
-
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/paperTemplates/clickCard/clickCard.html b/rpg-docs/client/views/paperTemplates/clickCard/clickCard.html
deleted file mode 100644
index aa73ba4a..00000000
--- a/rpg-docs/client/views/paperTemplates/clickCard/clickCard.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- {{> ripple}}
- {{> UI.contentBlock}}
-
-
\ No newline at end of file
diff --git a/rpg-docs/client/views/paperTemplates/clickCard/clickCard.js b/rpg-docs/client/views/paperTemplates/clickCard/clickCard.js
deleted file mode 100644
index 8b92bf1c..00000000
--- a/rpg-docs/client/views/paperTemplates/clickCard/clickCard.js
+++ /dev/null
@@ -1,8 +0,0 @@
-Template.clickCard.events({
- "click paper-shadow ": function(event){
- event.currentTarget.setZ(2);
- _.delay(function(){
- event.currentTarget.setZ(1);
- }, 300)
- }
-})
\ No newline at end of file
diff --git a/rpg-docs/lib/constants/standardItems.js b/rpg-docs/lib/constants/standardItems.js
index 3d7a1d25..31729c49 100644
--- a/rpg-docs/lib/constants/standardItems.js
+++ b/rpg-docs/lib/constants/standardItems.js
@@ -7,20 +7,18 @@ standardItems = [
equipmentSlot: "armor",
weight: 8,
value: 5,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 11,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 11,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Leather Armor",
@@ -30,15 +28,13 @@ standardItems = [
equipmentSlot: "armor",
weight: 10,
value: 10,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 11,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 11,
+ }
+ ]
},
{
name: "Studded leather Armor",
@@ -48,15 +44,13 @@ standardItems = [
equipmentSlot: "armor",
weight: 13,
value: 45,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 12,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 12,
+ }
+ ]
},
{
name: "Hide Armor",
@@ -66,20 +60,18 @@ standardItems = [
equipmentSlot: "armor",
weight: 12,
value: 10,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 12,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 2,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 12,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 2,
+ }
+ ]
},
{
name: "Chain Shirt",
@@ -89,20 +81,18 @@ standardItems = [
equipmentSlot: "armor",
weight: 20,
value: 50,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 13,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 2,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 13,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 2,
+ }
+ ]
},
{
name: "Scale Mail",
@@ -112,25 +102,24 @@ standardItems = [
equipmentSlot: "armor",
weight: 45,
value: 50,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 14,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 2,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 14,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 2,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Breastplate",
@@ -140,20 +129,18 @@ standardItems = [
equipmentSlot: "armor",
weight: 20,
value: 400,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 14,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 2,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 14,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 2,
+ }
+ ]
},
{
name: "Half Plate",
@@ -163,25 +150,23 @@ standardItems = [
equipmentSlot: "armor",
weight: 40,
value: 750,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 15,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 2,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 15,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 2,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Ring Mail",
@@ -191,25 +176,23 @@ standardItems = [
equipmentSlot: "armor",
weight: 40,
value: 30,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 14,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 0,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 14,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 0,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Chain Mail",
@@ -219,25 +202,23 @@ standardItems = [
equipmentSlot: "armor",
weight: 55,
value: 75,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 16,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 0,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 16,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 0,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Splint Armor",
@@ -247,25 +228,23 @@ standardItems = [
equipmentSlot: "armor",
weight: 60,
value: 200,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 17,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 0,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 17,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 0,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Plate Armor",
@@ -275,25 +254,23 @@ standardItems = [
equipmentSlot: "armor",
weight: 65,
value: 1500,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "base",
- value: 18,
- },
- {
- stat: "dexterityArmor",
- operation: "max",
- value: 0,
- },
- {
- stat: "stealth",
- operation: "disadvantage",
- value: 1,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "base",
+ value: 18,
+ },
+ {
+ stat: "dexterityArmor",
+ operation: "max",
+ value: 0,
+ },
+ {
+ stat: "stealth",
+ operation: "disadvantage",
+ value: 1,
+ }
+ ]
},
{
name: "Shield",
@@ -303,14 +280,12 @@ standardItems = [
equipmentSlot: "held",
weight: 6,
value: 10,
- feature: {
- effects: [
- {
- stat: "armor",
- operation: "add",
- value: 2,
- }
- ]
- }
+ effects: [
+ {
+ stat: "armor",
+ operation: "add",
+ value: 2,
+ }
+ ]
},
]
\ No newline at end of file