ENH: Inventory
							parent
							
								
									c07bbb864f
								
							
						
					
					
						commit
						dad790090e
					
				| 
						 | 
					@ -75,6 +75,7 @@
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    "OSE.category.attributes": "Attributes",
 | 
					    "OSE.category.attributes": "Attributes",
 | 
				
			||||||
    "OSE.category.inventory": "Inventory",
 | 
					    "OSE.category.inventory": "Inventory",
 | 
				
			||||||
 | 
					    "OSE.category.abilities": "Abilities",
 | 
				
			||||||
    "OSE.category.spells": "Spells",
 | 
					    "OSE.category.spells": "Spells",
 | 
				
			||||||
    "OSE.category.notes": "Notes",
 | 
					    "OSE.category.notes": "Notes",
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -92,18 +93,25 @@
 | 
				
			||||||
    "OSE.Setting.VariableWeaponDamage": "Variable Weapon Damage",
 | 
					    "OSE.Setting.VariableWeaponDamage": "Variable Weapon Damage",
 | 
				
			||||||
    "OSE.Setting.VariableWeaponDamageHint": "Weapons have different damage dice",
 | 
					    "OSE.Setting.VariableWeaponDamageHint": "Weapons have different damage dice",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    "OSE.ItemWeight": "Weight",
 | 
					    "OSE.items.Equip": "Equip",
 | 
				
			||||||
    "OSE.ItemCost": "Cost",
 | 
					    "OSE.items.Unequip": "Unequip",
 | 
				
			||||||
    "OSE.ItemQuantity": "Quantity",
 | 
					    "OSE.items.Misc": "Misc",
 | 
				
			||||||
    "OSE.ItemRoll": "Roll",
 | 
					    "OSE.items.Weapons": "Weapons",
 | 
				
			||||||
    "OSE.WeaponDamage": "Damage",
 | 
					    "OSE.items.Armors": "Armors",
 | 
				
			||||||
    "OSE.WeaponMelee": "Melee",
 | 
					    "OSE.items.Weight": "Wght.",
 | 
				
			||||||
    "OSE.WeaponMissile": "Missile",
 | 
					    "OSE.items.Qualities": "Qualities",
 | 
				
			||||||
    "OSE.WeaponSlow": "Slow",
 | 
					    "OSE.items.Notes": "Notes",
 | 
				
			||||||
    "OSE.SpellRange": "Range",
 | 
					    "OSE.items.Cost": "Cost",
 | 
				
			||||||
    "OSE.SpellClass": "Class",
 | 
					    "OSE.items.Quantity": "Qt.",
 | 
				
			||||||
    "OSE.SpellDuration": "Duration",
 | 
					    "OSE.items.Roll": "Roll",
 | 
				
			||||||
    "OSE.SpellLevel": "Level",
 | 
					    "OSE.items.Damage": "Damage",
 | 
				
			||||||
    "OSE.ArmorAC": "AC",
 | 
					    "OSE.items.Melee": "Melee",
 | 
				
			||||||
    "OSE.ArmorAAC": "AAC"
 | 
					    "OSE.items.Missile": "Missile",
 | 
				
			||||||
 | 
					    "OSE.items.Slow": "Slow",
 | 
				
			||||||
 | 
					    "OSE.spells.Range": "Range",
 | 
				
			||||||
 | 
					    "OSE.spells.Class": "Class",
 | 
				
			||||||
 | 
					    "OSE.spells.Duration": "Duration",
 | 
				
			||||||
 | 
					    "OSE.spells.Level": "Level",
 | 
				
			||||||
 | 
					    "OSE.items.ArmorAC": "AC",
 | 
				
			||||||
 | 
					    "OSE.items.ArmorAAC": "AAC"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -12,18 +12,48 @@ export class OseActorSheet extends ActorSheet {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    data.config = CONFIG.OSE;
 | 
					    data.config = CONFIG.OSE;
 | 
				
			||||||
    // Settings
 | 
					    // Settings
 | 
				
			||||||
      data.config.ascendingAC = game.settings.get('ose', 'ascendingAC');
 | 
					    data.config.ascendingAC = game.settings.get("ose", "ascendingAC");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Prepare owned items
 | 
				
			||||||
 | 
					    this._prepareItems(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return data;
 | 
					    return data;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Organize and classify Owned Items for Character sheets
 | 
				
			||||||
 | 
					   * @private
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  _prepareItems(data) {
 | 
				
			||||||
 | 
					    // Partition items by category
 | 
				
			||||||
 | 
					    let [inventory, weapons, armors, abilities, spells] = data.items.reduce(
 | 
				
			||||||
 | 
					      (arr, item) => {
 | 
				
			||||||
 | 
					        // Classify items into types
 | 
				
			||||||
 | 
					        if (item.type === "item") arr[0].push(item);
 | 
				
			||||||
 | 
					        else if (item.type === "weapon") arr[1].push(item);
 | 
				
			||||||
 | 
					        else if (item.type === "armor") arr[2].push(item);
 | 
				
			||||||
 | 
					        else if (item.type === "ability") arr[3].push(item);
 | 
				
			||||||
 | 
					        else if (item.type === "spell") arr[4].push(item);
 | 
				
			||||||
 | 
					        return arr;
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      [[], [], [], [], []]
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Assign and return
 | 
				
			||||||
 | 
					    data.inventory = inventory;
 | 
				
			||||||
 | 
					    data.weapons = weapons;
 | 
				
			||||||
 | 
					    data.armors = armors;
 | 
				
			||||||
 | 
					    data.spells = spells;
 | 
				
			||||||
 | 
					    data.abilities = abilities;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  activateListeners(html) {
 | 
					  activateListeners(html) {
 | 
				
			||||||
      html.find('.saving-throw .attribute-name a').click(ev => {
 | 
					    html.find(".saving-throw .attribute-name a").click((ev) => {
 | 
				
			||||||
      let actorObject = this.actor;
 | 
					      let actorObject = this.actor;
 | 
				
			||||||
      let element = event.currentTarget;
 | 
					      let element = event.currentTarget;
 | 
				
			||||||
      let save = element.parentElement.parentElement.dataset.save;
 | 
					      let save = element.parentElement.parentElement.dataset.save;
 | 
				
			||||||
      actorObject.rollSave(save, { event: event });
 | 
					      actorObject.rollSave(save, { event: event });
 | 
				
			||||||
      })
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    super.activateListeners(html);
 | 
					    super.activateListeners(html);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -34,12 +64,12 @@ export class OseActorSheet extends ActorSheet {
 | 
				
			||||||
    this.form = html[0];
 | 
					    this.form = html[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Resize resizable classes
 | 
					    // Resize resizable classes
 | 
				
			||||||
      let resizable = html.find('.resizable');
 | 
					    let resizable = html.find(".resizable");
 | 
				
			||||||
    if (resizable.length == 0) {
 | 
					    if (resizable.length == 0) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    resizable.each((_, el) => {
 | 
					    resizable.each((_, el) => {
 | 
				
			||||||
        let heightDelta = this.position.height - (this.options.height);
 | 
					      let heightDelta = this.position.height - this.options.height;
 | 
				
			||||||
      el.style.height = `${heightDelta + parseInt(el.dataset.baseSize)}px`;
 | 
					      el.style.height = `${heightDelta + parseInt(el.dataset.baseSize)}px`;
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    return html;
 | 
					    return html;
 | 
				
			||||||
| 
						 | 
					@ -48,14 +78,13 @@ export class OseActorSheet extends ActorSheet {
 | 
				
			||||||
  async _onResize(event) {
 | 
					  async _onResize(event) {
 | 
				
			||||||
    super._onResize(event);
 | 
					    super._onResize(event);
 | 
				
			||||||
    let html = $(event.path);
 | 
					    let html = $(event.path);
 | 
				
			||||||
      let resizable = html.find('.resizable');
 | 
					    let resizable = html.find(".resizable");
 | 
				
			||||||
    resizable.each((_, el) => {
 | 
					    resizable.each((_, el) => {
 | 
				
			||||||
        let heightDelta = this.position.height - (this.options.height);
 | 
					      let heightDelta = this.position.height - this.options.height;
 | 
				
			||||||
      el.style.height = `${heightDelta + parseInt(el.dataset.baseSize)}px`;
 | 
					      el.style.height = `${heightDelta + parseInt(el.dataset.baseSize)}px`;
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
  _onConfigureActor(event) {
 | 
					  _onConfigureActor(event) {
 | 
				
			||||||
    event.preventDefault();
 | 
					    event.preventDefault();
 | 
				
			||||||
    new OseEntityTweaks(this.actor, {
 | 
					    new OseEntityTweaks(this.actor, {
 | 
				
			||||||
| 
						 | 
					@ -76,9 +105,9 @@ export class OseActorSheet extends ActorSheet {
 | 
				
			||||||
    if (this.options.editable && canConfigure) {
 | 
					    if (this.options.editable && canConfigure) {
 | 
				
			||||||
      buttons = [
 | 
					      buttons = [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            label: 'Tweaks',
 | 
					          label: "Tweaks",
 | 
				
			||||||
            class: 'configure-actor',
 | 
					          class: "configure-actor",
 | 
				
			||||||
            icon: 'fas fa-dice',
 | 
					          icon: "fas fa-dice",
 | 
				
			||||||
          onclick: (ev) => this._onConfigureActor(ev),
 | 
					          onclick: (ev) => this._onConfigureActor(ev),
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
      ].concat(buttons);
 | 
					      ].concat(buttons);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,38 +42,18 @@ export class OseActorSheetCharacter extends OseActorSheet {
 | 
				
			||||||
    for (let [a, score] of Object.entries(data.data.scores)) {
 | 
					    for (let [a, score] of Object.entries(data.data.scores)) {
 | 
				
			||||||
      data.data.scores[a].label = game.i18n.localize(`OSE.scores.${a}`);
 | 
					      data.data.scores[a].label = game.i18n.localize(`OSE.scores.${a}`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Prepare owned items
 | 
					 | 
				
			||||||
    this._prepareItems(data);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Settings
 | 
					    // Settings
 | 
				
			||||||
    data.config.individualInit = game.settings.get('ose', 'individualInit');
 | 
					    data.config.variableWeaponDamage = game.settings.get(
 | 
				
			||||||
 | 
					      "ose",
 | 
				
			||||||
 | 
					      "variableWeaponDamage"
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    data.config.ascendingAC = game.settings.get("ose", "ascendingAC");
 | 
				
			||||||
 | 
					    data.config.individualInit = game.settings.get("ose", "individualInit");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return data;
 | 
					    return data;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Organize and classify Owned Items for Character sheets
 | 
					 | 
				
			||||||
   * @private
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  _prepareItems(data) {
 | 
					 | 
				
			||||||
    // Partition items by category
 | 
					 | 
				
			||||||
    let [inventory, abilities, spells] = data.items.reduce(
 | 
					 | 
				
			||||||
      (arr, item) => {
 | 
					 | 
				
			||||||
        // Classify items into types
 | 
					 | 
				
			||||||
        if (item.type === "item") arr[0].push(item);
 | 
					 | 
				
			||||||
        if (item.type === "ability") arr[1].push(item);
 | 
					 | 
				
			||||||
        else if (item.type === "spell") arr[2].push(item);
 | 
					 | 
				
			||||||
        return arr;
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      [[], [], [], []]
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Assign and return
 | 
					 | 
				
			||||||
    data.inventory = inventory;
 | 
					 | 
				
			||||||
    data.spells = spells;
 | 
					 | 
				
			||||||
    data.abilities = abilities;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _onItemSummary(event) {
 | 
					  _onItemSummary(event) {
 | 
				
			||||||
| 
						 | 
					@ -83,16 +63,23 @@ export class OseActorSheetCharacter extends OseActorSheet {
 | 
				
			||||||
      description = TextEditor.enrichHTML(item.data.data.description);
 | 
					      description = TextEditor.enrichHTML(item.data.data.description);
 | 
				
			||||||
    // Toggle summary
 | 
					    // Toggle summary
 | 
				
			||||||
    if (li.hasClass("expanded")) {
 | 
					    if (li.hasClass("expanded")) {
 | 
				
			||||||
      let summary = li.parents('.item-entry').children(".item-summary");
 | 
					      let summary = li.parents(".item-entry").children(".item-summary");
 | 
				
			||||||
      summary.slideUp(200, () => summary.remove());
 | 
					      summary.slideUp(200, () => summary.remove());
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      let div = $(`<div class="item-summary">${description}</div>`);
 | 
					      let div = $(`<div class="item-summary">${description}</div>`);
 | 
				
			||||||
      li.parents('.item-entry').append(div.hide());
 | 
					      li.parents(".item-entry").append(div.hide());
 | 
				
			||||||
      div.slideDown(200);
 | 
					      div.slideDown(200);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    li.toggleClass("expanded");
 | 
					    li.toggleClass("expanded");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  async _onQtChange(event) {
 | 
				
			||||||
 | 
					    event.preventDefault();
 | 
				
			||||||
 | 
					    const itemId = event.currentTarget.closest(".item").dataset.itemId;
 | 
				
			||||||
 | 
					    const item = this.actor.getOwnedItem(itemId);
 | 
				
			||||||
 | 
					    return item.update({ "data.quantity.value": parseInt(event.target.value) });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Activate event listeners using the prepared sheet HTML
 | 
					   * Activate event listeners using the prepared sheet HTML
 | 
				
			||||||
   * @param html {HTML}   The prepared HTML object ready to be rendered into the DOM
 | 
					   * @param html {HTML}   The prepared HTML object ready to be rendered into the DOM
 | 
				
			||||||
| 
						 | 
					@ -128,16 +115,34 @@ export class OseActorSheetCharacter extends OseActorSheet {
 | 
				
			||||||
      return this.actor.createOwnedItem(itemData);
 | 
					      return this.actor.createOwnedItem(itemData);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Toggle Equipment
 | 
				
			||||||
 | 
					    html.find(".item-toggle").click(async (ev) => {
 | 
				
			||||||
 | 
					      const li = $(ev.currentTarget).parents(".item");
 | 
				
			||||||
 | 
					      const item = this.actor.getOwnedItem(li.data("itemId"));
 | 
				
			||||||
 | 
					      await this.actor.updateOwnedItem({
 | 
				
			||||||
 | 
					        _id: li.data("itemId"),
 | 
				
			||||||
 | 
					        data: {
 | 
				
			||||||
 | 
					          equipped: !item.data.data.equipped,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    html
 | 
				
			||||||
 | 
					      .find(".quantity input")
 | 
				
			||||||
 | 
					      .click((ev) => ev.target.select())
 | 
				
			||||||
 | 
					      .change(this._onQtChange.bind(this));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Item summaries
 | 
					    // Item summaries
 | 
				
			||||||
    html.find('.item .item-name h4').click(event => this._onItemSummary(event));
 | 
					    html
 | 
				
			||||||
 | 
					      .find(".item .item-name h4")
 | 
				
			||||||
 | 
					      .click((event) => this._onItemSummary(event));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    html.find(".ability-score .attribute-name a").click((ev) => {
 | 
				
			||||||
    html.find('.ability-score .attribute-name a').click(ev => {
 | 
					 | 
				
			||||||
      let actorObject = this.actor;
 | 
					      let actorObject = this.actor;
 | 
				
			||||||
      let element = event.currentTarget;
 | 
					      let element = event.currentTarget;
 | 
				
			||||||
      let score = element.parentElement.parentElement.dataset.score;
 | 
					      let score = element.parentElement.parentElement.dataset.score;
 | 
				
			||||||
      actorObject.rollCheck(score, { event: event });
 | 
					      actorObject.rollCheck(score, { event: event });
 | 
				
			||||||
    })
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Handle default listeners last so system listeners are triggered first
 | 
					    // Handle default listeners last so system listeners are triggered first
 | 
				
			||||||
    super.activateListeners(html);
 | 
					    super.activateListeners(html);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,39 +39,12 @@ export class OseActorSheetMonster extends OseActorSheet {
 | 
				
			||||||
  getData() {
 | 
					  getData() {
 | 
				
			||||||
    const data = super.getData();
 | 
					    const data = super.getData();
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Prepare owned items
 | 
					 | 
				
			||||||
    this._prepareItems(data);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Settings
 | 
					    // Settings
 | 
				
			||||||
    data.config.morale = game.settings.get('ose', 'morale');
 | 
					    data.config.morale = game.settings.get('ose', 'morale');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return data;
 | 
					    return data;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Organize and classify Owned Items for Character sheets
 | 
					 | 
				
			||||||
   * @private
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  _prepareItems(data) {
 | 
					 | 
				
			||||||
    // Partition items by category
 | 
					 | 
				
			||||||
    let [inventory, abilities, spells] = data.items.reduce(
 | 
					 | 
				
			||||||
      (arr, item) => {
 | 
					 | 
				
			||||||
        // Classify items into types
 | 
					 | 
				
			||||||
        if (item.type === "item") arr[0].push(item);
 | 
					 | 
				
			||||||
        if (item.type === "ability") arr[1].push(item);
 | 
					 | 
				
			||||||
        else if (item.type === "spell") arr[2].push(item);
 | 
					 | 
				
			||||||
        return arr;
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      [[], [], [], []]
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Assign and return
 | 
					 | 
				
			||||||
    data.inventory = inventory;
 | 
					 | 
				
			||||||
    data.spells = spells;
 | 
					 | 
				
			||||||
    data.abilities = abilities;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  _onItemSummary(event) {
 | 
					  _onItemSummary(event) {
 | 
				
			||||||
    event.preventDefault();
 | 
					    event.preventDefault();
 | 
				
			||||||
    let li = $(event.currentTarget).parents(".item"),
 | 
					    let li = $(event.currentTarget).parents(".item"),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@ export const preloadHandlebarsTemplates = async function () {
 | 
				
			||||||
        //Sheet tabs
 | 
					        //Sheet tabs
 | 
				
			||||||
        'systems/ose/templates/actors/partials/character-header.html',
 | 
					        'systems/ose/templates/actors/partials/character-header.html',
 | 
				
			||||||
        'systems/ose/templates/actors/partials/character-attributes-tab.html',
 | 
					        'systems/ose/templates/actors/partials/character-attributes-tab.html',
 | 
				
			||||||
 | 
					        'systems/ose/templates/actors/partials/character-abilities-tab.html',
 | 
				
			||||||
        'systems/ose/templates/actors/partials/character-spells-tab.html',
 | 
					        'systems/ose/templates/actors/partials/character-spells-tab.html',
 | 
				
			||||||
        'systems/ose/templates/actors/partials/character-inventory-tab.html',
 | 
					        'systems/ose/templates/actors/partials/character-inventory-tab.html',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,7 @@ export const registerSettings = function () {
 | 
				
			||||||
      config: true
 | 
					      config: true
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    game.settings.register('ose', 'variableDamage', {
 | 
					    game.settings.register('ose', 'variableWeaponDamage', {
 | 
				
			||||||
      name: game.i18n.localize('OSE.Setting.VariableWeaponDamage'),
 | 
					      name: game.i18n.localize('OSE.Setting.VariableWeaponDamage'),
 | 
				
			||||||
      hint: game.i18n.localize('OSE.Setting.VariableWeaponDamageHint'),
 | 
					      hint: game.i18n.localize('OSE.Setting.VariableWeaponDamageHint'),
 | 
				
			||||||
      default: false,
 | 
					      default: false,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -129,57 +129,7 @@
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .editor {
 | 
					    .editor {
 | 
				
			||||||
      height: 300px;
 | 
					      height: 300px;
 | 
				
			||||||
    }
 | 
					      padding: 4px;
 | 
				
			||||||
    .inventory {
 | 
					 | 
				
			||||||
      .item-entry {
 | 
					 | 
				
			||||||
        padding: 0;
 | 
					 | 
				
			||||||
        margin: 0;
 | 
					 | 
				
			||||||
        list-style: none;
 | 
					 | 
				
			||||||
        .item {
 | 
					 | 
				
			||||||
          .item-image {
 | 
					 | 
				
			||||||
            flex: 0 0 24px;
 | 
					 | 
				
			||||||
            height: 24px;
 | 
					 | 
				
			||||||
            background-size: cover;
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          .item-name {
 | 
					 | 
				
			||||||
            line-height: 24px;
 | 
					 | 
				
			||||||
            height: 24px;
 | 
					 | 
				
			||||||
            overflow: hidden;
 | 
					 | 
				
			||||||
            h4 {
 | 
					 | 
				
			||||||
              text-indent: 4px;
 | 
					 | 
				
			||||||
              margin: 0;
 | 
					 | 
				
			||||||
              cursor: pointer;
 | 
					 | 
				
			||||||
              &:hover {
 | 
					 | 
				
			||||||
                color: whitesmoke;
 | 
					 | 
				
			||||||
                background: linear-gradient(
 | 
					 | 
				
			||||||
                  45deg,
 | 
					 | 
				
			||||||
                  rgba(0, 0, 0, 0.5),
 | 
					 | 
				
			||||||
                  transparent
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
              }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          .item-controls {
 | 
					 | 
				
			||||||
            line-height: 24px;
 | 
					 | 
				
			||||||
            flex: 0 0 32px;
 | 
					 | 
				
			||||||
            margin: 0 3px;
 | 
					 | 
				
			||||||
            .fas {
 | 
					 | 
				
			||||||
              color: $colorTan;
 | 
					 | 
				
			||||||
              font-size: 12px;
 | 
					 | 
				
			||||||
              &:hover {
 | 
					 | 
				
			||||||
                color: $colorDark;
 | 
					 | 
				
			||||||
              }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        .item-summary {
 | 
					 | 
				
			||||||
          font-size: 12px;
 | 
					 | 
				
			||||||
          padding: 0 4px;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        &:nth-child(odd) {
 | 
					 | 
				
			||||||
          background: rgba(0, 0, 0, 0.1);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,13 +18,111 @@
 | 
				
			||||||
  /*  Sheet Body                               */
 | 
					  /*  Sheet Body                               */
 | 
				
			||||||
  /* ----------------------------------------- */
 | 
					  /* ----------------------------------------- */
 | 
				
			||||||
  .sheet-body {
 | 
					  .sheet-body {
 | 
				
			||||||
  }
 | 
					    .inventory {
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  .abilities {
 | 
					 | 
				
			||||||
    .panel-content {
 | 
					 | 
				
			||||||
      height: 250px;
 | 
					 | 
				
			||||||
      overflow: auto;
 | 
					      overflow: auto;
 | 
				
			||||||
 | 
					      height: 520px;
 | 
				
			||||||
 | 
					      .items-section {
 | 
				
			||||||
 | 
					        .header-field {
 | 
				
			||||||
 | 
					          margin: 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .item-titles {
 | 
				
			||||||
 | 
					        text-align: center;
 | 
				
			||||||
 | 
					        margin-top: 1px;
 | 
				
			||||||
 | 
					        padding-top: 2px;
 | 
				
			||||||
 | 
					        .item-name {
 | 
				
			||||||
 | 
					          text-align: left;
 | 
				
			||||||
 | 
					          text-indent: 8px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        font-weight: 300;
 | 
				
			||||||
 | 
					        font-size: 12px;
 | 
				
			||||||
 | 
					        background: $colorDark;
 | 
				
			||||||
 | 
					        color: white;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .item-list {
 | 
				
			||||||
 | 
					        list-style: none;
 | 
				
			||||||
 | 
					        margin: 0;
 | 
				
			||||||
 | 
					        padding: 0;
 | 
				
			||||||
 | 
					        li {
 | 
				
			||||||
 | 
					          padding: 0 2px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item-header {
 | 
				
			||||||
 | 
					          @extend %header-field !optional;
 | 
				
			||||||
 | 
					          padding: 0px;
 | 
				
			||||||
 | 
					          margin-bottom: 0px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item-entry {
 | 
				
			||||||
 | 
					          &:nth-child(even) {
 | 
				
			||||||
 | 
					            background: rgba(0, 0, 0, 0.1);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item {
 | 
				
			||||||
 | 
					          line-height: 30px;
 | 
				
			||||||
 | 
					          height: 30px;
 | 
				
			||||||
 | 
					          overflow: hidden;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item-equipped {
 | 
				
			||||||
 | 
					          grid-area: item-equipped;
 | 
				
			||||||
 | 
					          justify-self: center;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item-name {
 | 
				
			||||||
 | 
					          text-indent: 8px;
 | 
				
			||||||
 | 
					          text-align: left;
 | 
				
			||||||
 | 
					          overflow: hidden;
 | 
				
			||||||
 | 
					          height: 30px;
 | 
				
			||||||
 | 
					          margin: 0;
 | 
				
			||||||
 | 
					          line-height: 30px;
 | 
				
			||||||
 | 
					          .item-image {
 | 
				
			||||||
 | 
					            flex-basis: 30px;
 | 
				
			||||||
 | 
					            flex-grow: 0;
 | 
				
			||||||
 | 
					            background-size: contain;
 | 
				
			||||||
 | 
					            background-repeat: no-repeat;
 | 
				
			||||||
 | 
					            &:hover {
 | 
				
			||||||
 | 
					              background-image: url("/icons/svg/d20-grey.svg") !important;
 | 
				
			||||||
 | 
					              cursor: pointer;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          h4 {
 | 
				
			||||||
 | 
					            margin: 0;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .field-longer {
 | 
				
			||||||
 | 
					        text-indent: 8px;
 | 
				
			||||||
 | 
					        text-align: left;
 | 
				
			||||||
 | 
					        flex-basis: 150px;
 | 
				
			||||||
 | 
					        font-size: 12px;
 | 
				
			||||||
 | 
					        flex-grow: 0;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .field-long {
 | 
				
			||||||
 | 
					        flex-basis: 65px;
 | 
				
			||||||
 | 
					        flex-grow: 0;
 | 
				
			||||||
 | 
					        text-align: center;
 | 
				
			||||||
 | 
					        font-size: 12px;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .field-short {
 | 
				
			||||||
 | 
					        font-size: 12px;
 | 
				
			||||||
 | 
					        flex-basis: 45px;
 | 
				
			||||||
 | 
					        flex-grow: 0;
 | 
				
			||||||
 | 
					        text-align: center;
 | 
				
			||||||
 | 
					        &.quantity {
 | 
				
			||||||
 | 
					          margin: 4px 0;
 | 
				
			||||||
 | 
					          display: flex;
 | 
				
			||||||
 | 
					          input {
 | 
				
			||||||
 | 
					            border-bottom: none;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .item-controls {
 | 
				
			||||||
 | 
					        font-size: 12px;
 | 
				
			||||||
 | 
					        flex-basis: 60px;
 | 
				
			||||||
 | 
					        flex-grow: 0;
 | 
				
			||||||
 | 
					        text-align: right;
 | 
				
			||||||
 | 
					        margin-right: 4px;
 | 
				
			||||||
 | 
					        .item-unequipped {
 | 
				
			||||||
 | 
					          color: rgba(0, 0, 0, 0.2);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,4 +18,56 @@
 | 
				
			||||||
      margin: 2px;
 | 
					      margin: 2px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .inventory {
 | 
				
			||||||
 | 
					    .item-entry {
 | 
				
			||||||
 | 
					      padding: 0;
 | 
				
			||||||
 | 
					      margin: 0;
 | 
				
			||||||
 | 
					      list-style: none;
 | 
				
			||||||
 | 
					      .item {
 | 
				
			||||||
 | 
					        .item-image {
 | 
				
			||||||
 | 
					          flex: 0 0 30px;
 | 
				
			||||||
 | 
					          height: 30px;
 | 
				
			||||||
 | 
					          background-size: cover;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item-name {
 | 
				
			||||||
 | 
					          line-height: 30px;
 | 
				
			||||||
 | 
					          height: 30px;
 | 
				
			||||||
 | 
					          overflow: hidden;
 | 
				
			||||||
 | 
					          h4 {
 | 
				
			||||||
 | 
					            text-indent: 4px;
 | 
				
			||||||
 | 
					            margin: 0;
 | 
				
			||||||
 | 
					            cursor: pointer;
 | 
				
			||||||
 | 
					            &:hover {
 | 
				
			||||||
 | 
					              color: whitesmoke;
 | 
				
			||||||
 | 
					              background: linear-gradient(
 | 
				
			||||||
 | 
					                45deg,
 | 
				
			||||||
 | 
					                rgba(0, 0, 0, 0.5),
 | 
				
			||||||
 | 
					                transparent
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .item-controls {
 | 
				
			||||||
 | 
					          line-height: 30px;
 | 
				
			||||||
 | 
					          flex: 0 0 32px;
 | 
				
			||||||
 | 
					          margin: 0 3px;
 | 
				
			||||||
 | 
					          .fas {
 | 
				
			||||||
 | 
					            color: $colorTan;
 | 
				
			||||||
 | 
					            font-size: 12px;
 | 
				
			||||||
 | 
					            &:hover {
 | 
				
			||||||
 | 
					              color: $colorDark;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      .item-summary {
 | 
				
			||||||
 | 
					        font-size: 13px;
 | 
				
			||||||
 | 
					        padding: 0 4px;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      &:nth-child(odd) {
 | 
				
			||||||
 | 
					        background: rgba(0, 0, 0, 0.1);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,10 +13,12 @@
 | 
				
			||||||
          "max": 20
 | 
					          "max": 20
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "ac": {
 | 
					        "ac": {
 | 
				
			||||||
 | 
					          "naked": 0,
 | 
				
			||||||
          "value": 0,
 | 
					          "value": 0,
 | 
				
			||||||
          "mod": 0
 | 
					          "mod": 0
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "aac": {
 | 
					        "aac": {
 | 
				
			||||||
 | 
					          "naked": 0,
 | 
				
			||||||
          "value": 0,
 | 
					          "value": 0,
 | 
				
			||||||
          "mod": 0
 | 
					          "mod": 0
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
| 
						 | 
					@ -141,7 +143,7 @@
 | 
				
			||||||
        "max": 0
 | 
					        "max": 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "cost": 0,
 | 
					      "cost": 0,
 | 
				
			||||||
      "weight": 0
 | 
					      "weight": 80
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "weapon": {
 | 
					    "weapon": {
 | 
				
			||||||
      "description": "",
 | 
					      "description": "",
 | 
				
			||||||
| 
						 | 
					@ -151,6 +153,7 @@
 | 
				
			||||||
      "missile": true,
 | 
					      "missile": true,
 | 
				
			||||||
      "ranged": true,
 | 
					      "ranged": true,
 | 
				
			||||||
      "cost": 0,
 | 
					      "cost": 0,
 | 
				
			||||||
 | 
					      "equipped": false,
 | 
				
			||||||
      "weight": 0
 | 
					      "weight": 0
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "armor": {
 | 
					    "armor": {
 | 
				
			||||||
| 
						 | 
					@ -158,6 +161,7 @@
 | 
				
			||||||
      "ac": 9,
 | 
					      "ac": 9,
 | 
				
			||||||
      "aac": 10,
 | 
					      "aac": 10,
 | 
				
			||||||
      "cost": 0,
 | 
					      "cost": 0,
 | 
				
			||||||
 | 
					      "equipped": false,
 | 
				
			||||||
      "weight": 0
 | 
					      "weight": 0
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "spell": {
 | 
					    "spell": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,9 @@
 | 
				
			||||||
    <a class="item" data-tab="inventory">
 | 
					    <a class="item" data-tab="inventory">
 | 
				
			||||||
      {{localize "OSE.category.inventory"}}
 | 
					      {{localize "OSE.category.inventory"}}
 | 
				
			||||||
    </a>
 | 
					    </a>
 | 
				
			||||||
 | 
					    <a class="item" data-tab="abilities">
 | 
				
			||||||
 | 
					      {{localize "OSE.category.abilities"}}
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
    {{#if data.spells.enabled}}
 | 
					    {{#if data.spells.enabled}}
 | 
				
			||||||
    <a class="item" data-tab="spells">
 | 
					    <a class="item" data-tab="spells">
 | 
				
			||||||
      {{localize "OSE.category.spells"}}
 | 
					      {{localize "OSE.category.spells"}}
 | 
				
			||||||
| 
						 | 
					@ -30,6 +33,9 @@
 | 
				
			||||||
    <div class="tab" data-group="primary" data-tab="inventory">
 | 
					    <div class="tab" data-group="primary" data-tab="inventory">
 | 
				
			||||||
      {{> "systems/ose/templates/actors/partials/character-inventory-tab.html"}}
 | 
					      {{> "systems/ose/templates/actors/partials/character-inventory-tab.html"}}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="tab" data-group="primary" data-tab="abilities">
 | 
				
			||||||
 | 
					      {{> "systems/ose/templates/actors/partials/character-abilities-tab.html"}}
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
    {{#if data.spells.enabled}}
 | 
					    {{#if data.spells.enabled}}
 | 
				
			||||||
    <div class="tab" data-group="primary" data-tab="spells">
 | 
					    <div class="tab" data-group="primary" data-tab="spells">
 | 
				
			||||||
      {{> "systems/ose/templates/actors/partials/character-spells-tab.html"}}
 | 
					      {{> "systems/ose/templates/actors/partials/character-spells-tab.html"}}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					<div class="flex3 panel abilities resizable" data-base-size="250">
 | 
				
			||||||
 | 
					  <div class="panel-title">
 | 
				
			||||||
 | 
					    <h4>{{localize 'OSE.panel.abilities'}}</h4>
 | 
				
			||||||
 | 
					    <div class="item-controls">
 | 
				
			||||||
 | 
					      {{#if owner}}
 | 
				
			||||||
 | 
					      <a
 | 
				
			||||||
 | 
					        class="item-control item-create"
 | 
				
			||||||
 | 
					        title='{{localize "OSE.Add"}}'
 | 
				
			||||||
 | 
					        data-type="ability"
 | 
				
			||||||
 | 
					        ><i class="fas fa-plus"></i
 | 
				
			||||||
 | 
					      ></a>
 | 
				
			||||||
 | 
					      {{/if}}
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <ul class="panel-content inventory resizable" data-base-size="225">
 | 
				
			||||||
 | 
					    <div class="">
 | 
				
			||||||
 | 
					      {{#each abilities as |item|}}
 | 
				
			||||||
 | 
					      <li class="item-entry">
 | 
				
			||||||
 | 
					        <div class="item flexrow" data-item-id="{{item._id}}">
 | 
				
			||||||
 | 
					          <div class="item-name flexrow">
 | 
				
			||||||
 | 
					            <div
 | 
				
			||||||
 | 
					              class="item-image"
 | 
				
			||||||
 | 
					              style="background-image: url({{item.img}})"
 | 
				
			||||||
 | 
					            ></div>
 | 
				
			||||||
 | 
					            <h4 title="{{item.name}}">
 | 
				
			||||||
 | 
					              {{item.name~}}
 | 
				
			||||||
 | 
					            </h4>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="item-controls">
 | 
				
			||||||
 | 
					            {{#if ../owner}}
 | 
				
			||||||
 | 
					            <a class="item-control item-edit" title='{{localize "Ose.Edit"}}'
 | 
				
			||||||
 | 
					              ><i class="fas fa-edit"></i
 | 
				
			||||||
 | 
					            ></a>
 | 
				
			||||||
 | 
					            <a
 | 
				
			||||||
 | 
					              class="item-control item-delete"
 | 
				
			||||||
 | 
					              title='{{localize "Ose.Delete"}}'
 | 
				
			||||||
 | 
					              ><i class="fas fa-trash"></i
 | 
				
			||||||
 | 
					            ></a>
 | 
				
			||||||
 | 
					            {{/if}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      {{/each}}
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </ul>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
| 
						 | 
					@ -111,42 +111,6 @@
 | 
				
			||||||
            </li>
 | 
					            </li>
 | 
				
			||||||
        </ul>
 | 
					        </ul>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    {{!-- Skills and abilities --}}
 | 
					 | 
				
			||||||
    <div class="flex3 panel abilities resizable" data-base-size="250">
 | 
					 | 
				
			||||||
        <div class="panel-title">
 | 
					 | 
				
			||||||
            <h4>{{localize 'OSE.panel.abilities'}}</h4>
 | 
					 | 
				
			||||||
            <div class="item-controls">
 | 
					 | 
				
			||||||
                {{#if owner}}
 | 
					 | 
				
			||||||
                <a class="item-control item-create" title='{{localize "OSE.Add"}}' data-type="ability"><i
 | 
					 | 
				
			||||||
                        class="fas fa-plus"></i></a>
 | 
					 | 
				
			||||||
                {{/if}}
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        <ul class="panel-content inventory resizable" data-base-size="225">
 | 
					 | 
				
			||||||
            <div class="">
 | 
					 | 
				
			||||||
                {{#each abilities as |item|}}
 | 
					 | 
				
			||||||
                <li class="item-entry">
 | 
					 | 
				
			||||||
                    <div class="item flexrow" data-item-id="{{item._id}}">
 | 
					 | 
				
			||||||
                        <div class="item-name flexrow">
 | 
					 | 
				
			||||||
                            <div class="item-image" style="background-image: url({{item.img}})"></div>
 | 
					 | 
				
			||||||
                            <h4 title="{{item.name}}">
 | 
					 | 
				
			||||||
                                {{item.name~}}
 | 
					 | 
				
			||||||
                            </h4>
 | 
					 | 
				
			||||||
                        </div>
 | 
					 | 
				
			||||||
                        <div class="item-controls">
 | 
					 | 
				
			||||||
                            {{#if ../owner}}
 | 
					 | 
				
			||||||
                            <a class="item-control item-edit" title='{{localize "Ose.Edit"}}'><i
 | 
					 | 
				
			||||||
                                    class="fas fa-edit"></i></a>
 | 
					 | 
				
			||||||
                            <a class="item-control item-delete" title='{{localize "Ose.Delete"}}'><i
 | 
					 | 
				
			||||||
                                    class="fas fa-trash"></i></a>
 | 
					 | 
				
			||||||
                            {{/if}}
 | 
					 | 
				
			||||||
                        </div>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
                {{/each}}
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </ul>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    {{!-- Saving throws --}}
 | 
					    {{!-- Saving throws --}}
 | 
				
			||||||
    <div class="attribute-group">
 | 
					    <div class="attribute-group">
 | 
				
			||||||
        <ul class="attributes">
 | 
					        <ul class="attributes">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,29 +1,141 @@
 | 
				
			||||||
<section class="inventory resizable" data-base-size="320">
 | 
					<section class="inventory resizable" data-base-size="320">
 | 
				
			||||||
  <div class="">
 | 
					  <div>
 | 
				
			||||||
    {{#each inventory as |item|}}
 | 
					    <li class="item-titles flexrow">
 | 
				
			||||||
 | 
					      <div class="item-name">{{localize "OSE.items.Weapons"}}</div>
 | 
				
			||||||
 | 
					      {{#if config.variableWeaponDamage}}
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.Damage"}}</div>
 | 
				
			||||||
 | 
					      {{/if}}
 | 
				
			||||||
 | 
					      <div class="field-longer">{{localize "OSE.items.Qualities"}}</div>
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.Weight"}}</div>
 | 
				
			||||||
 | 
					      <div class="item-controls">
 | 
				
			||||||
 | 
					        <a class="item-control item-create" data-type="weapon"><i class="fa fa-plus"></i> {{localize "OSE.Add"}}</a>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </li>
 | 
				
			||||||
 | 
					    <ol class="item-list">
 | 
				
			||||||
 | 
					      {{#each weapons as |item|}}
 | 
				
			||||||
      <li class="item-entry">
 | 
					      <li class="item-entry">
 | 
				
			||||||
        <div class="item flexrow" data-item-id="{{item._id}}">
 | 
					        <div class="item flexrow" data-item-id="{{item._id}}">
 | 
				
			||||||
          <div class="item-name flexrow">
 | 
					          <div class="item-name flexrow">
 | 
				
			||||||
          <div
 | 
					            <div class="item-image" style="background-image: url({{item.img}})"></div>
 | 
				
			||||||
            class="item-image"
 | 
					            <a>
 | 
				
			||||||
            style="background-image: url({{item.img}})"
 | 
					 | 
				
			||||||
          ></div>
 | 
					 | 
				
			||||||
              <h4 title="{{item.name}}">
 | 
					              <h4 title="{{item.name}}">
 | 
				
			||||||
                {{item.name~}}
 | 
					                {{item.name~}}
 | 
				
			||||||
              </h4>
 | 
					              </h4>
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          {{#if config.variableWeaponDamage}}
 | 
				
			||||||
 | 
					          <div class="field-short">
 | 
				
			||||||
 | 
					            {{item.data.damage}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          {{/if}}
 | 
				
			||||||
 | 
					          <div class="field-longer">
 | 
				
			||||||
 | 
					            {{item.data.qualities}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="field-short">
 | 
				
			||||||
 | 
					            {{item.data.weight}}
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
          <div class="item-controls">
 | 
					          <div class="item-controls">
 | 
				
			||||||
            {{#if ../owner}}
 | 
					            {{#if ../owner}}
 | 
				
			||||||
          <a class="item-control item-edit" title='{{localize "Ose.Edit"}}'
 | 
					            <a class="item-control item-toggle {{#unless item.data.equipped}}item-unequipped{{/unless}}"
 | 
				
			||||||
            ><i class="fas fa-edit"></i
 | 
					              title='{{localize "OSE.items.Equip"}}'>
 | 
				
			||||||
          ></a>
 | 
					              <i class="fas fa-tshirt"></i>
 | 
				
			||||||
          <a class="item-control item-delete" title='{{localize "Ose.Delete"}}'
 | 
					            </a>
 | 
				
			||||||
            ><i class="fas fa-trash"></i
 | 
					            <a class="item-control item-edit" title='{{localize "OSE.Edit"}}'><i class="fas fa-edit"></i></a>
 | 
				
			||||||
          ></a>
 | 
					            <a class="item-control item-delete" title='{{localize "OSE.Delete"}}'><i class="fas fa-trash"></i></a>
 | 
				
			||||||
            {{/if}}
 | 
					            {{/if}}
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
      </li>
 | 
					      </li>
 | 
				
			||||||
      {{/each}}
 | 
					      {{/each}}
 | 
				
			||||||
 | 
					    </ol>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div>
 | 
				
			||||||
 | 
					    <li class="item-titles flexrow">
 | 
				
			||||||
 | 
					      <div class="item-name">{{localize "OSE.items.Armors"}}</div>
 | 
				
			||||||
 | 
					      {{#if config.ascendingAC}}
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.ArmorAAC"}}</div>
 | 
				
			||||||
 | 
					      {{else}}
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.ArmorAC"}}</div>
 | 
				
			||||||
 | 
					      {{/if}}
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.Weight"}}</div>
 | 
				
			||||||
 | 
					      <div class="item-controls">
 | 
				
			||||||
 | 
					        <a class="item-control item-create" data-type="armor"><i class="fa fa-plus"></i> {{localize "OSE.Add"}}</a>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </li>
 | 
				
			||||||
 | 
					    <ol class="item-list">
 | 
				
			||||||
 | 
					      {{#each armors as |item|}}
 | 
				
			||||||
 | 
					      <li class="item-entry">
 | 
				
			||||||
 | 
					        <div class="item flexrow" data-item-id="{{item._id}}">
 | 
				
			||||||
 | 
					          <div class="item-name flexrow">
 | 
				
			||||||
 | 
					            <div class="item-image" style="background-image: url({{item.img}})"></div>
 | 
				
			||||||
 | 
					            <a>
 | 
				
			||||||
 | 
					              <h4 title="{{item.name}}">
 | 
				
			||||||
 | 
					                {{item.name~}}
 | 
				
			||||||
 | 
					              </h4>
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="field-short">
 | 
				
			||||||
 | 
					            {{#if config.ascendingAC}}
 | 
				
			||||||
 | 
					            {{item.data.aac}}
 | 
				
			||||||
 | 
					            {{else}}
 | 
				
			||||||
 | 
					            {{item.data.ac}}
 | 
				
			||||||
 | 
					            {{/if}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="field-short">
 | 
				
			||||||
 | 
					            {{item.data.weight}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="item-controls">
 | 
				
			||||||
 | 
					            {{#if ../owner}}
 | 
				
			||||||
 | 
					            <a class="item-control item-toggle {{#unless item.data.equipped}}item-unequipped{{/unless}}"
 | 
				
			||||||
 | 
					              title='{{localize "OSE.items.Equip"}}'>
 | 
				
			||||||
 | 
					              <i class="fas fa-tshirt"></i>
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					            <a class="item-control item-edit" title='{{localize "OSE.Edit"}}'><i class="fas fa-edit"></i></a>
 | 
				
			||||||
 | 
					            <a class="item-control item-delete" title='{{localize "OSE.Delete"}}'><i class="fas fa-trash"></i></a>
 | 
				
			||||||
 | 
					            {{/if}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      {{/each}}
 | 
				
			||||||
 | 
					    </ol>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div class="">
 | 
				
			||||||
 | 
					    <li class="item-titles flexrow">
 | 
				
			||||||
 | 
					      <div class="item-name">{{localize "OSE.items.Misc"}}</div>
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.Quantity"}}</div>
 | 
				
			||||||
 | 
					      <div class="field-short">{{localize "OSE.items.Weight"}}</div>
 | 
				
			||||||
 | 
					      <div class="item-controls">
 | 
				
			||||||
 | 
					        <a class="item-control item-create" data-type="item"><i class="fa fa-plus"></i> {{localize "OSE.Add"}}</a>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </li>
 | 
				
			||||||
 | 
					    <ol class="item-list">
 | 
				
			||||||
 | 
					      {{#each inventory as |item|}}
 | 
				
			||||||
 | 
					      <li class="item-entry">
 | 
				
			||||||
 | 
					        <div class="item flexrow" data-item-id="{{item._id}}">
 | 
				
			||||||
 | 
					          <div class="item-name flexrow">
 | 
				
			||||||
 | 
					            <div class="item-image" style="background-image: url({{item.img}})"></div>
 | 
				
			||||||
 | 
					            <a>
 | 
				
			||||||
 | 
					              <h4 title="{{item.name}}">
 | 
				
			||||||
 | 
					                {{item.name~}}
 | 
				
			||||||
 | 
					              </h4>
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="field-short quantity">
 | 
				
			||||||
 | 
					            <input value="{{item.data.quantity.value}}" type="text"
 | 
				
			||||||
 | 
					              placeholder="0" />{{#if item.data.quantity.max}}<span> / {{item.data.quantity.max}}</span>{{/if}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="field-short">
 | 
				
			||||||
 | 
					            {{item.data.weight}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div class="item-controls">
 | 
				
			||||||
 | 
					            {{#if ../owner}}
 | 
				
			||||||
 | 
					            <a class="item-control item-edit" title='{{localize "OSE.Edit"}}'><i class="fas fa-edit"></i></a>
 | 
				
			||||||
 | 
					            <a class="item-control item-delete" title='{{localize "OSE.Delete"}}'><i class="fas fa-trash"></i></a>
 | 
				
			||||||
 | 
					            {{/if}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      {{/each}}
 | 
				
			||||||
 | 
					    </ol>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</section>
 | 
					</section>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue