10 Commits

29 changed files with 619 additions and 55 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

BIN
images/icons/skill1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

BIN
images/icons/spell1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -7,10 +7,15 @@
"TypeWeapon": "Weapon",
"TypeShield": "Shield",
"TypeArmor": "Armor",
"TypeSkill": "Skill",
"TypeSpell": "Spell",
"TypeModule": "Module",
"TypeMoney": "Money",
"TypeEquipment": "Equipment"
"TypeEquipment": "Equipment",
"TypeAction": "Action",
"TypeFreeaction": "Free Action",
"TypeReaction": "Reaction",
"TypeStance": "Stance",
"TypeTrait": "Trait",
"TypeCondition": "Condition"
}
}

View File

@ -1,5 +1,7 @@
import { Avd12Utility } from "./avd12-utility.js";
const __ALLOWED_MODULE_TYPES = { "action": 1, "reaction": 1, "freeaction": 1, "trait": 1 }
/**
* Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet}
@ -14,8 +16,8 @@ export class Avd12ItemSheet extends ItemSheet {
template: "systems/fvtt-avd12/templates/item-sheet.hbs",
dragDrop: [{ dragSelector: null, dropSelector: null }],
width: 620,
height: 550,
tabs: [{navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description"}]
height: 'fit-content',
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }]
});
}
@ -48,7 +50,16 @@ export class Avd12ItemSheet extends ItemSheet {
/* -------------------------------------------- */
async getData() {
// Specific case for formating descriptions of sub-items
if (this.object.type == "module") {
for (let level of this.object.system.levels) {
for (let id in level.features) {
level.features[id].descriptionHTML = await TextEditor.enrichHTML(level.features[id].system.description, { async: true })
}
}
}
let formData = {
title: this.title,
id: this.id,
@ -61,6 +72,8 @@ export class Avd12ItemSheet extends ItemSheet {
limited: this.object.limited,
options: this.options,
owner: this.document.isOwner,
bonusList: Avd12Utility.buildBonusList(),
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
isGM: game.user.isGM
}
@ -104,6 +117,60 @@ export class Avd12ItemSheet extends ItemSheet {
});
}
/* -------------------------------------------- */
async _onDrop(event) {
let li = $(event.toElement).parents(".item")
const levelIndex = Number(li.data("level-index"))
const choiceIndex = Number(li.data("choice-index"))
let data = event.dataTransfer.getData('text/plain')
let dataItem = JSON.parse(data)
let item = fromUuidSync(dataItem.uuid)
if (item.pack) {
item = await Avd12Utility.searchItem(item)
}
if (!item) {
ui.notifications.warn("Unable to find relevant item - Aborting drag&drop " + data.uuid)
return
}
if (this.object.type == "module" && __ALLOWED_MODULE_TYPES[item.type]) {
let levels = duplicate(this.object.system.levels)
levels[levelIndex].choices[choiceIndex].features[item.id] = duplicate(item)
this.object.update({ 'system.levels': levels })
return
}
ui.notifications.warn("This item is not allowed dropped here")
}
/* -------------------------------------------- */
async viewSubitem(ev) {
let field = $(ev.currentTarget).data('type');
let idx = Number($(ev.currentTarget).data('index'));
let itemData = this.object.system[field][idx];
if (itemData.name != 'None') {
let spec = await Item.create(itemData, { temporary: true });
spec.system.origin = "embeddedItem";
new Avd12ItemSheet(spec).render(true);
}
}
/* -------------------------------------------- */
async deleteSubitem(ev) {
let field = $(ev.currentTarget).data('type');
let idx = Number($(ev.currentTarget).data('index'));
let oldArray = this.object.system[field];
let itemData = this.object.system[field][idx];
if (itemData.name != 'None') {
let newArray = [];
for (var i = 0; i < oldArray.length; i++) {
if (i != idx) {
newArray.push(oldArray[i]);
}
}
this.object.update({ [`system.${field}`]: newArray });
}
}
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
@ -120,10 +187,6 @@ export class Avd12ItemSheet extends ItemSheet {
item.sheet.render(true);
});
html.find('.delete-spec').click(ev => {
this.object.update({ "data.specialisation": [{ name: 'None' }] });
});
html.find('.delete-subitem').click(ev => {
this.deleteSubitem(ev);
});
@ -139,14 +202,37 @@ export class Avd12ItemSheet extends ItemSheet {
this.viewSubitem(ev);
});
html.find('.view-spec').click(ev => {
this.manageSpec();
});
html.find('.add-module-level').click(ev => {
let levels = duplicate(this.object.system.levels)
if ( (levels.length+1) % 2 == 0) {
levels.push({ choices: [ {selected: false, features: {} }, {selected: false, features: {} } ] })
}else {
levels.push({ choices: [ {selected: false, features: {} } ] })
}
this.object.update({ 'system.levels': levels })
})
html.find('.module-feature-delete').click(ev => {
let levels = duplicate(this.object.system.levels)
let levelIndex = Number($(ev.currentTarget).parents(".item").data("level-index"))
let choiceIndex = Number($(ev.currentTarget).parents(".item").data("choice-index"))
let featureId = $(ev.currentTarget).parents(".item").data("feature-id")
levels[levelIndex].choices[choiceIndex].features[featureId] = undefined
this.object.update({ 'system.levels': levels })
})
html.find('.choice-level-selected').change(ev => {
let levels = duplicate(this.object.system.levels)
let levelIndex = Number($(ev.currentTarget).parents(".item").data("level-index"))
let choiceIndex = Number($(ev.currentTarget).parents(".item").data("choice-index"))
for (let choice of levels[levelIndex].choices) {
choice.selected = false // Everybody to false
}
levels[levelIndex].choices[choiceIndex].selected = ev.currentTarget.value
this.object.update({ 'system.levels': levels })
})
}
/* -------------------------------------------- */
get template() {
let type = this.item.type;

View File

@ -1,7 +1,7 @@
import { Avd12Utility } from "./avd12-utility.js";
export const defaultItemImg = {
skill: "systems/fvtt-avd12/images/icons/skill1.webp",
//skill: "systems/fvtt-avd12/images/icons/skill1.webp",
armor: "systems/fvtt-avd12/images/icons/chest2.webp",
shield: "systems/fvtt-avd12/images/icons/shield2.webp",
weapon: "systems/fvtt-avd12/images/icons/weapon2.webp",

View File

@ -5,7 +5,7 @@ export class Avd12RollDialog extends Dialog {
/* -------------------------------------------- */
static async create(actor, rollData) {
let options = { classes: ["Avd12Dialog"], width: 540, height: 340, 'z-index': 99999 };
let options = { classes: ["Avd12Dialog"], width: 540, height: 'fit-content', 'z-index': 99999 };
let html = await renderTemplate('systems/fvtt-avd12/templates/dialogs/roll-dialog-generic.html', rollData);
return new CrucibleRollDialog(actor, rollData, html, options);

View File

@ -41,6 +41,9 @@ export class Avd12Utility {
Handlebars.registerHelper('mul', function (a, b) {
return parseInt(a) * parseInt(b);
})
Handlebars.registerHelper('add', function (a, b) {
return parseInt(a) + parseInt(b);
})
}
/*-------------------------------------------- */
@ -62,6 +65,27 @@ export class Avd12Utility {
return duplicate(this.shieldSkills)
}
/* -------------------------------------------- */
static buildBonusList() {
let bonusList = []
for(let key in game.system.model.Actor.character.bonus) {
let bonuses = game.system.model.Actor.character.bonus[key]
for (let bonus in bonuses) {
bonusList.push( key + "." + bonus )
}
}
for(let key in game.system.model.Actor.character.attributes) {
let attrs = game.system.model.Actor.character.attributes[key]
for(let skillKey in attrs.skills) {
bonusList.push( key + ".skills." + skillKey + ".modifier" )
}
}
for(let key in game.system.model.Actor.character.universal.skills) {
bonusList.push( "universal.skills." + key + ".modifier" )
}
return bonusList
}
/* -------------------------------------------- */
static async ready() {
const skills = await Avd12Utility.loadCompendium("fvtt-avd12.skills")
@ -128,11 +152,17 @@ export class Avd12Utility {
'systems/fvtt-avd12/templates/items/partial-item-nav.hbs',
'systems/fvtt-avd12/templates/items/partial-item-description.hbs',
'systems/fvtt-avd12/templates/items/partial-common-item-fields.hbs',
'systems/fvtt-avd12/templates/items/partial-options-damage-types.hbs',
'systems/fvtt-avd12/templates/items/partial-options-weapon-types.hbs',
'systems/fvtt-avd12/templates/items/partial-options-weapon-categories.hbs',
'systems/fvtt-avd12/templates/items/partial-options-attributes.hbs',
'systems/fvtt-avd12/templates/items/partial-options-equipment-types.hbs',
'systems/fvtt-avd12/templates/items/partial-options-spell-types.hbs',
'systems/fvtt-avd12/templates/items/partial-options-spell-levels.hbs',
'systems/fvtt-avd12/templates/items/partial-options-spell-schools.hbs',
'systems/fvtt-avd12/templates/items/partial-options-focus-bond.hbs',
'systems/fvtt-avd12/templates/items/partial-options-focus-treatment.hbs',
'systems/fvtt-avd12/templates/items/partial-options-focus-core.hbs',
]
return loadTemplates(templatePaths);
}

View File

@ -1299,3 +1299,10 @@ ul, li {
min-width:2rem;
max-width: 2rem;
}
.drop-module-step {
background: linear-gradient(to bottom, #6c95b9fc 5%, #105177ab 100%);
background-color: #7d5d3b00;
border-radius: 3px;
border: 2px ridge #846109;
}

View File

@ -3,8 +3,8 @@
"esmodules": [
"modules/avd12-main.js"
],
"gridDistance": 5,
"gridUnits": "m",
"gridDistance": 1,
"gridUnits": "u",
"languages": [
{
"lang": "en",
@ -20,15 +20,13 @@
}
],
"license": "LICENSE.txt",
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-avd12/raw/branch/master/system.json",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-avd12/raw/branch/master/system.json",
"compatibility": {
"minimum": "10",
"verified": "10",
"maximum": "10"
},
"id": "fvtt-avd12",
"packs": [
],
"primaryTokenAttribute": "secondary.health",
"secondaryTokenAttribute": "secondary.delirium",
"socket": true,
@ -36,8 +34,8 @@
"styles/simple.css"
],
"title": "AnyVenture D12 RPG",
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-avd12",
"version": "10.0.0",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-avd12/archive/fvtt-avd12-v10.0.0.zip",
"url": "https://www.uberwald.me/gitea/public/fvtt-avd12",
"version": "10.0.8",
"download": "https://www.uberwald.me/gitea/public/fvtt-avd12/archive/fvtt-avd12-v10.0.8.zip",
"background": "systems/fvtt-avd12/images/ui/avd12_welcome_page.webp"
}

View File

@ -26,7 +26,21 @@
"value": 0,
"bonuseffect": 0,
"mod": 0,
"col": 1
"col": 1,
"skills": {
"athletics": {
"modifier": 0,
"good": false
},
"block": {
"modifier": 0,
"good": false
},
"strength": {
"modifier": 0,
"good": false
}
}
},
"agility": {
"label": "Agility",
@ -34,7 +48,21 @@
"value": 0,
"bonuseffect": 0,
"col": 1,
"mod": 0
"mod": 0,
"skills": {
"acrobatics": {
"modifier": 0 ,
"good": false
},
"stealth": {
"modifier": 0,
"good": false
},
"dodge": {
"modifier": 0,
"good": false
}
}
},
"willpower": {
"label": "Willpower",
@ -42,7 +70,21 @@
"value": 0,
"bonuseffect": 0,
"col": 1,
"mod": 0
"mod": 0,
"skills": {
"concentration": {
"modifier": 0,
"good": false
},
"endurance": {
"modifier": 0 ,
"good": false
},
"resistance": {
"modifier": 0,
"good": false
}
}
},
"knowledge": {
"label": "Knowledge",
@ -50,7 +92,29 @@
"value": 0,
"bonuseffect": 0,
"col": 1,
"mod": 0
"mod": 0,
"skills": {
"wilderness": {
"modifier": 0,
"good": false
},
"academic": {
"modifier": 0,
"good": false
},
"arcanum": {
"modifier": 0,
"good": false
},
"medicine": {
"modifier": 0,
"good": false
},
"thievery": {
"modifier": 0,
"good": false
}
}
},
"social": {
"label": "Social",
@ -58,7 +122,37 @@
"value": 0,
"bonuseffect": 0,
"col": 1,
"mod": 0
"mod": 0,
"skills": {
"persuasion": {
"modifier": 0,
"good": false
},
"insight": {
"modifier": 0,
"good": false
},
"performance": {
"modifier": 0,
"good": false
},
"animals": {
"modifier": 0,
"good": false
}
}
}
},
"universal": {
"skills": {
"search": {
"modifier": 0,
"good": false
},
"initiative": {
"modifier": 0,
"good": false
}
}
},
"size": {
@ -220,7 +314,6 @@
},
"Item": {
"types": [
"skill",
"spell",
"armor",
"shield",
@ -228,7 +321,12 @@
"weapon",
"module",
"money",
"condition"
"condition",
"action",
"freeaction",
"reaction",
"stance",
"trait"
],
"templates": {
"commonitem": {
@ -272,19 +370,49 @@
"value": 0
}
},
"focus": {
"isfocus": false,
"core": "",
"treatment": "",
"bond": ""
},
"weight": 0,
"cost": 0,
"health": 0,
"movespeed": 0
}
},
"skill": {
"attribute": "",
"value": 0,
"action": {
"description": ""
},
"reaction": {
"description": ""
},
"freeaction": {
"description": ""
},
"stance": {
"active": false,
"description": ""
},
"trait": {
"traittype": "",
"computebonus": false,
"bonusdata": "",
"bonusvalue": 0,
"description": ""
},
"spell": {
"spelltype": "",
"actions": "",
"chargeeffect": "",
"school": "",
"damage": "",
"damagetype": "",
"range": 0,
"components": "",
"reaction": false,
"sustained": false,
"level":"",
"value": 0,
"description": ""
@ -352,6 +480,7 @@
"description": ""
},
"module": {
"levels": [],
"description": ""
},
"condition": {

View File

@ -0,0 +1,30 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
</div>
</header>
{{> systems/fvtt-avd12/templates/items/partial-item-nav.hbs}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-avd12/templates/items/partial-item-description.hbs}}
<div class="tab details" data-group="primary" data-tab="details">
<div class="tab" data-group="primary">
<ul>
<li class="flexrow">
<label class="item-field-label-long">Selected</label>
<input type="checkbox" class="item-field-label-short" name="system.selected" {{checked system.selected}} />
</li>
</ul>
</div>
</div>
</section>
</form>

View File

@ -0,0 +1,30 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
</div>
</header>
{{> systems/fvtt-avd12/templates/items/partial-item-nav.hbs}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-avd12/templates/items/partial-item-description.hbs}}
<div class="tab details" data-group="primary" data-tab="details">
<div class="tab" data-group="primary">
<ul>
<li class="flexrow">
<label class="item-field-label-long">Selected</label>
<input type="checkbox" class="item-field-label-short" name="system.selected" {{checked system.selected}} />
</li>
</ul>
</div>
</div>
</section>
</form>

View File

@ -6,21 +6,62 @@
</div>
</header>
{{> systems/fvtt-avd12/templates/items/partial-item-nav.hbs}}
{{> systems/fvtt-avd12/templates/items/partial-item-nav.hbs builder=true}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-avd12/templates/items/partial-item-description.hbs}}
<div class="tab details" data-group="primary" data-tab="details">
<div class="tab" data-group="primary">
<ul>
</ul>
TODO : The tre of module choices will be displayed here for players, with the "selected" option only
</div>
{{#if isGM}}
<div class="tab builder" data-group="primary" data-tab="builder">
<div class="tab" data-group="primary">
<ul>
{{#each system.levels as |level index|}}
<hr>
<li class="flexrow">
<h2 class="item-field-label-long">Level {{add index 1}}</h2>
</li>
<ul class="ul-level1">
{{#each level.choices as |choice choiceIndex|}}
<li class="">
<h3 class="item-field-label-long">Level choice {{add choiceIndex 1}}</h3>
</li>
<li class="item flexrow" data-level-index="{{@../index}}" data-choice-index="{{choiceIndex}}">
<div class="drop-module-step">
<label>Drop traits/actions/... here !</label>
</div>
<span class="item-field-label-short">&nbsp;</span>
<label class="item-field-label-short">Selected</label>
<input type="checkbox" class="item-field-label-short choice-level-selected" {{checked choice.selected}} />
</li>
{{#each choice.features as |feature id|}}
<li class="flexrow item" data-level-index="{{@../../index}}" data-choice-index="{{choiceIndex}}" data-feature-id="{{feature._id}}" >
<label class="item-field-label-long2">{{feature.name}}</label>
<div class="item-controls item-controls-fixed">
<a class="item-control module-feature-delete" title="Delete Feature"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
{{/each}}
</ul>
{{/each}}
<li class="flexrow item">
<button class="chat-card-button add-module-level">Add a level</button>
</li>
</ul>
</div>
{{/if}}
</div>
</section>

View File

@ -19,18 +19,8 @@
<div class="tab" data-group="primary">
<ul>
<li class="flexrow">
<label class="item-field-label-long">Attribute</label>
<select class="item-field-label-long" type="text" name="system.attribute" value="{{system.attribute}}" data-dtype="String">
{{#select system.attribute}}
{{> systems/fvtt-avd12/templates/items/partial-options-attributes.hbs}}
{{/select}}
</select>
</li>
<li class="flexrow">
<label class="item-field-label-long">Level</label>
<input type="text" class="item-field-label-short" name="system.value" value="{{system.value}}" data-dtype="Number"/>
<label class="item-field-label-long">Selected</label>
<input type="checkbox" class="item-field-label-short" name="system.selected" {{checked system.selected}} />
</li>
</ul>

View File

@ -25,7 +25,6 @@
{{> systems/fvtt-avd12/templates/items/partial-options-spell-types.hbs}}
{{/select}}
</select>
</li>
<li class="flexrow">
@ -37,6 +36,59 @@
</select>
</li>
<li class="flexrow">
<label class="item-field-label-long">Actions</label>
<input type="text" class="item-field-label-long2" name="system.actions" value="{{system.actions}}" data-dtype="String"/>
</li>
<li class="flexrow">
<label class="item-field-label-long">Charge Effect</label>
<input type="text" class="item-field-label-long2" name="system.chargeeffect" value="{{system.chargeeffect}}" data-dtype="String"/>
</li>
<li class="flexrow">
<label class="item-field-label-long">School</label>
<select class="item-field-label-long" type="text" name="system.school" value="{{system.school}}" data-dtype="String">
{{#select system.school}}
{{> systems/fvtt-avd12/templates/items/partial-options-spell-schools.hbs}}
{{/select}}
</select>
</li>
<li class="flexrow">
<label class="item-field-label-long">Damage</label>
<input type="text" class="item-field-label-short" name="system.damage" value="{{system.damage}}" data-dtype="String"/>
</li>
<li class="flexrow">
<label class="item-field-label-long">Damage Type</label>
<select class="item-field-label-long" type="text" name="system.damagetype" value="{{system.damagetype}}" data-dtype="String">
{{#select system.damagetype}}
{{> systems/fvtt-avd12/templates/items/partial-options-damage-types.hbs}}
{{/select}}
</select>
</li>
<li class="flexrow">
<label class="item-field-label-long">Range</label>
<input type="text" class="item-field-label-short" name="system.range" value="{{system.range}}" data-dtype="Number"/>
</li>
<li class="flexrow">
<label class="item-field-label-long">Components</label>
<input type="text" class="item-field-label-long2" name="system.components" value="{{system.components}}" data-dtype="String"/>
</li>
<li class="flexrow">
<label class="item-field-label-long">Reaction?</label>
<input type="checkbox" class="item-field-label-short" name="system.reaction" {{checked system.reaction}} />
</li>
<li class="flexrow">
<label class="item-field-label-long">Sustained?</label>
<input type="checkbox" class="item-field-label-short" name="system.sustained" {{checked system.sustained}} />
</li>
</ul>
</div>
</div>

View File

@ -0,0 +1,31 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
</div>
</header>
{{> systems/fvtt-avd12/templates/items/partial-item-nav.hbs}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-avd12/templates/items/partial-item-description.hbs}}
<div class="tab details" data-group="primary" data-tab="details">
<div class="tab" data-group="primary">
<ul>
<li class="flexrow">
<label class="item-field-label-long">Active</label>
<input type="checkbox" class="item-field-label-short" name="system.active" {{checked system.active}} />
</li>
</ul>
</div>
</div>
</section>
</form>

View File

@ -0,0 +1,53 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
</div>
</header>
{{> systems/fvtt-avd12/templates/items/partial-item-nav.hbs}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-avd12/templates/items/partial-item-description.hbs}}
<div class="tab details" data-group="primary" data-tab="details">
<div class="tab" data-group="primary">
<ul>
<li class="flexrow">
<label class="item-field-label-long">Bonus automation</label>
<input type="checkbox" class="item-field-label-short" name="system.computebonus" {{checked system.computebonus}} />
</li>
{{#if system.computebonus}}
<li class="flexrow">
<label class="item-field-label-long">Bonus path</label>
<select class="item-field-label-long" type="text" name="system.bonusdata" value="{{system.bonusdata}}" data-dtype="String">
{{#select system.bonusdata}}
{{#each bonusList as |bonus idx|}}
<option value="{{bonus}}">{{bonus}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow">
<label class="item-field-label-long">Bonus value</label>
<input type="text" class="item-field-label-short" name="system.bonusvalue" value="{{system.bonusvalue}}" data-dtype="Number"/>
</li>
{{/if}}
<li class="flexrow">
<label class="item-field-label-long">Selected</label>
<input type="checkbox" class="item-field-label-short" name="system.selected" {{checked system.selected}} />
</li>
</ul>
</div>
</div>
</section>
</form>

View File

@ -90,7 +90,11 @@
<label class="item-field-label-long">{{upperFirst key}}</label>
<div class="flexrow">
<label class="item-field-label-short">Type</label>
<input type="text" class="item-field-label-short" name="system.damages.{{key}}.damagetype" value="{{damage.damagetype}}" data-dtype="Number"/>
<select class="item-field-label-long" type="text" name="system.damages.{{key}}.damagetype" value="{{system.damagetype}}" data-dtype="String">
{{#select system.damagetype}}
{{> systems/fvtt-avd12/templates/items/partial-options-damage-types.hbs}}
{{/select}}
</select>
</div>
<div class="flexrow">
<label class="item-field-label-short">Dice</label>

View File

@ -91,6 +91,33 @@
{{/each}}
</li>
<li class='flexrow'>
<h3 class='item-field-label-long'>
Focus
</h3>
<input type="checkbox" class="item-field-label-short" name="system.focus.isfocus" {{checked system.focus.isfocus}} />
</li>
{{#if system.focus.isfocus}}
<li class='flexrow'>
<select class="item-field-label-long" type="text" name="system.focus.core" value="{{system.focus.core}}" data-dtype="String">
{{#select system.focus.core}}
{{> systems/fvtt-avd12/templates/items/partial-options-focus-core.hbs}}
{{/select}}
</select>
<select class="item-field-label-long" type="text" name="system.focus.treatment" value="{{system.focus.treatment}}" data-dtype="String">
{{#select system.focus.treatment}}
{{> systems/fvtt-avd12/templates/items/partial-options-focus-treatment.hbs}}
{{/select}}
</select>
<select class="item-field-label-long" type="text" name="system.focus.bond" value="{{system.focus.bond}}" data-dtype="String">
{{#select system.focus.bond}}
{{> systems/fvtt-avd12/templates/items/partial-options-focus-bond.hbs}}
{{/select}}
</select>
</li>
{{/if}}
<li class='flexrow'>
<h3 class='item-field-label-long'>
Various

View File

@ -2,4 +2,7 @@
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="description">Description</a>
<a class="item" data-tab="details">Details</a>
{{#if builder}}
<a class="item" data-tab="builder">Builder (GM only)</a>
{{/if}}
</nav>

View File

@ -0,0 +1,8 @@
<option value="physical">Physical</option>
<option value="psychic">Psychic</option>
<option value="fire">Fire</option>
<option value="lightning">Lightning</option>
<option value="cold">Cold</option>
<option value="dark">Dark</option>
<option value="divine">Divine</option>
<option value="arcane">Arcane</option>

View File

@ -0,0 +1,8 @@
<option value="bondnone">Bond: None</option>
<option value="bondeasy">Bond: Easy</option>
<option value="bondcommon">Bond: Common</option>
<option value="bonduncommon">Bond: Uncommon</option>
<option value="bondrare">Bond: Rare</option>
<option value="bondlegendary">Bond: Legendary</option>
<option value="bondmythic">Bond: Mythic</option>
<option value="bonddivine">Bond: Divine</option>

View File

@ -0,0 +1,9 @@
<option value="corenone">Core: None</option>
<option value="core1gp">Core: 1GP</option>
<option value="core5gp">Core: 5GP</option>
<option value="core50gp">Core: 50GP</option>
<option value="core100gp">Core: 100GP</option>
<option value="core300gp">Core: 300GP</option>
<option value="core500gp">Core: 500GP</option>
<option value="core800gp">Core: 800GP</option>
<option value="core1000gp">Core: 1000GP</option>

View File

@ -0,0 +1,9 @@
<option value="treatmentnone">Treatment: None</option>
<option value="treatment1gp">Treatment: Tin [1 GP]</option>
<option value="treatment4gp">Treatment: Copper [4 GP]</option>
<option value="treatment20gp">Treatment: Iron [20 GP]</option>
<option value="treatment50gp">Treatment: Silver [50 GP]</option>
<option value="treatment500gp">Treatment: Gold [500 GP]</option>
<option value="treatment1000gp">Treatment: Platinum [1000 GP]</option>
<option value="treatment5000gp">Treatment: Mithral [5000 GP]</option>
<option value="treatment10000gp">Treatment: Starsteel [10000 GP]</option>

View File

@ -0,0 +1,12 @@
<option value="abjuration">Abjuration</option>
<option value="evocation">Evocation</option>
<option value="tansmutation">Transmutation</option>
<option value="divine">Divine</option>
<option value="druidic">Druidic</option>
<option value="necromancy">Necromancy</option>
<option value="auguration">Auguration</option>
<option value="illusion">Illusion</option>
<option value="draconic">Draconic</option>
<option value="cosmic">Cosmic</option>
<option value="fiend">Fiend</option>
<option value="fey">Fey</option>

View File

@ -5,3 +5,4 @@
<option value="sonic">Sonic</option>
<option value="vision">Vision</option>
<option value="touchmelee">Touch/Melee Attack</option>
<option value="utility">Utility</option>

View File

@ -1,3 +1,4 @@
<option value="unarmed">Unarmed</option>
<option value="ranged">Ranged</option>
<option value="blunt">Blunt</option>
<option value="slash">Slash</option>