ENH: Template rework, more settings, Tweaks
parent
d55ec24342
commit
cb7fd49d55
|
@ -57,6 +57,7 @@
|
|||
"OSE.InitiativeShort": "INIT",
|
||||
"OSE.Attacks": "Attacks Usable per Round",
|
||||
"OSE.AttacksShort": "ATT",
|
||||
"OSE.Spellcaster": "Spellcaster",
|
||||
|
||||
|
||||
"OSE.category.attributes": "Attributes",
|
||||
|
@ -74,5 +75,7 @@
|
|||
"OSE.Setting.Morale": "Enable Monster Morale checks",
|
||||
"OSE.Setting.MoraleHint": "Morale Rating is shown on monster sheets",
|
||||
"OSE.Setting.THAC0Attacks": "Attacks with THAC0",
|
||||
"OSE.Setting.THAC0AttacksHint": "Attacks are resolved using the THAC0 value"
|
||||
"OSE.Setting.THAC0AttacksHint": "Attacks are resolved using the THAC0 value, not compatible with AAC",
|
||||
"OSE.Setting.VariableWeaponDamage": "Variable Weapon Damage",
|
||||
"OSE.Setting.VariableWeaponDamageHint": "Weapons have different damage dice"
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
import { OseActor } from "./entity.js";
|
||||
import { OseEntityTweaks } from "../dialog/entity-tweaks.js";
|
||||
|
||||
export class OseActorSheet extends ActorSheet {
|
||||
constructor(...args) {
|
||||
|
@ -6,6 +7,13 @@ export class OseActorSheet extends ActorSheet {
|
|||
}
|
||||
/* -------------------------------------------- */
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
html.find('.saving-throw .attribute-name').click(ev => {
|
||||
console.log('hey');
|
||||
})
|
||||
}
|
||||
|
||||
// Override to set resizable initial size
|
||||
async _renderInner(...args) {
|
||||
const html = await super._renderInner(...args);
|
||||
|
@ -32,4 +40,35 @@ export class OseActorSheet extends ActorSheet {
|
|||
el.style.height = `${heightDelta + parseInt(el.dataset.baseSize)}px`;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
_onConfigureActor(event) {
|
||||
event.preventDefault();
|
||||
new OseEntityTweaks(this.actor, {
|
||||
top: this.position.top + 40,
|
||||
left: this.position.left + (this.position.width - 400) / 2,
|
||||
}).render(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extend and override the sheet header buttons
|
||||
* @override
|
||||
*/
|
||||
_getHeaderButtons() {
|
||||
let buttons = super._getHeaderButtons();
|
||||
|
||||
// Token Configuration
|
||||
const canConfigure = game.user.isGM || this.actor.owner;
|
||||
if (this.options.editable && canConfigure) {
|
||||
buttons = [
|
||||
{
|
||||
label: 'Tweaks',
|
||||
class: 'configure-actor',
|
||||
icon: 'fas fa-dice',
|
||||
onclick: (ev) => this._onConfigureActor(ev),
|
||||
},
|
||||
].concat(buttons);
|
||||
}
|
||||
return buttons;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
// eslint-disable-next-line no-unused-vars
|
||||
import { OseActor } from '../actor/entity.js';
|
||||
|
||||
export class OseEntityTweaks extends FormApplication {
|
||||
static get defaultOptions() {
|
||||
const options = super.defaultOptions;
|
||||
options.id = 'sheet-tweaks';
|
||||
options.template =
|
||||
'systems/ose/templates/actors/dialogs/tweaks-dialog.html';
|
||||
options.width = 380;
|
||||
return options;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Add the Entity name into the window title
|
||||
* @type {String}
|
||||
*/
|
||||
get title() {
|
||||
return `${this.object.name}: OSE Tweaks`;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Construct and return the data object used to render the HTML template for this form application.
|
||||
* @return {Object}
|
||||
*/
|
||||
getData() {
|
||||
let data = this.object.data;
|
||||
if (this.object.data.type === 'character') {
|
||||
data.isCharacter = true;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called upon form submission after form data is validated
|
||||
* @param event {Event} The initial triggering submission event
|
||||
* @param formData {Object} The object of validated form data with which to update the object
|
||||
* @private
|
||||
*/
|
||||
async _updateObject(event, formData) {
|
||||
event.preventDefault();
|
||||
// Update the actor
|
||||
this.object.update(formData);
|
||||
// Re-draw the updated sheet
|
||||
this.object.sheet.render(true);
|
||||
}
|
||||
}
|
|
@ -34,5 +34,14 @@ export const registerSettings = function () {
|
|||
type: Boolean,
|
||||
config: true
|
||||
});
|
||||
|
||||
game.settings.register('ose', 'variableDamage', {
|
||||
name: game.i18n.localize('OSE.Setting.VariableWeaponDamage'),
|
||||
hint: game.i18n.localize('OSE.Setting.VariableWeaponDamageHint'),
|
||||
default: false,
|
||||
scope: 'world',
|
||||
type: Boolean,
|
||||
config: true
|
||||
});
|
||||
}
|
||||
|
|
@ -1,7 +1,40 @@
|
|||
{
|
||||
"Actor": {
|
||||
"types": ["character", "monster"],
|
||||
"templates": {
|
||||
"spellcaster": {
|
||||
"spells": {
|
||||
"enabled": false,
|
||||
"dc": 0,
|
||||
"lvl1": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl2": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl3": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl4": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl5": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl6": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"character": {
|
||||
"templates": ["spellcaster"],
|
||||
"details": {
|
||||
"biography": "",
|
||||
"class": "",
|
||||
|
@ -43,33 +76,6 @@
|
|||
"silver": 0,
|
||||
"copper": 0
|
||||
},
|
||||
"spells": {
|
||||
"dc": 0,
|
||||
"lvl1": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl2": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl3": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl4": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl5": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl6": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
}
|
||||
},
|
||||
"hp": {
|
||||
"hd": "",
|
||||
"value": 20,
|
||||
|
@ -103,6 +109,7 @@
|
|||
"languages": []
|
||||
},
|
||||
"monster": {
|
||||
"templates": ["spellcaster"],
|
||||
"details": {
|
||||
"biography": "",
|
||||
"alignment": "",
|
||||
|
@ -138,33 +145,6 @@
|
|||
"movement": {
|
||||
"base": 0,
|
||||
"encounter": 0
|
||||
},
|
||||
"spells": {
|
||||
"dc": 0,
|
||||
"lvl1": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl2": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl3": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl4": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl5": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"lvl6": {
|
||||
"value": 0,
|
||||
"max": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -12,9 +12,11 @@
|
|||
<a class="item" data-tab="inventory">
|
||||
{{localize "OSE.category.inventory"}}
|
||||
</a>
|
||||
{{#if data.spells.enabled}}
|
||||
<a class="item" data-tab="spells">
|
||||
{{localize "OSE.category.spells"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
<a class="item" data-tab="notes">
|
||||
{{localize "OSE.category.notes"}}
|
||||
</a>
|
||||
|
@ -28,9 +30,11 @@
|
|||
<div class="tab" data-group="primary" data-tab="inventory">
|
||||
{{> "systems/ose/templates/actors/partials/character-inventory-tab.html"}}
|
||||
</div>
|
||||
{{#if data.spells.enabled}}
|
||||
<div class="tab" data-group="primary" data-tab="spells">
|
||||
{{> "systems/ose/templates/actors/partials/character-spells-tab.html"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="tab" data-group="primary" data-tab="notes">
|
||||
{{editor content=data.details.biography target="data.details.biography"
|
||||
button=true owner=owner editable=editable}}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<form autocomplete="off">
|
||||
<div class="form-group">
|
||||
<label for="spellcaster">{{localize "OSE.Spellcaster"}}</label>
|
||||
<div class="form-fields">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="data.spells.enabled"
|
||||
id="spellcaster"
|
||||
{{checked
|
||||
data.spells.enabled}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="sheet-footer">
|
||||
<button type="submit">
|
||||
<i class="fas fa-save"></i>{{localize "Save Changes"}}
|
||||
</button>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
@ -9,9 +9,11 @@
|
|||
<a class="item" data-tab="attributes">
|
||||
{{localize "OSE.category.attributes"}}
|
||||
</a>
|
||||
{{#if data.spells.enabled}}
|
||||
<a class="item" data-tab="spells">
|
||||
{{localize "OSE.category.spells"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
<a class="item" data-tab="notes">
|
||||
{{localize "OSE.category.notes"}}
|
||||
</a>
|
||||
|
@ -22,9 +24,11 @@
|
|||
<div class="tab" data-group="primary" data-tab="attributes">
|
||||
{{> "systems/ose/templates/actors/partials/monster-attributes-tab.html"}}
|
||||
</div>
|
||||
{{#if data.spells.enabled}}
|
||||
<div class="tab" data-group="primary" data-tab="spells">
|
||||
{{> "systems/ose/templates/actors/partials/character-spells-tab.html"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="tab" data-group="primary" data-tab="notes">
|
||||
{{editor content=data.details.biography target="data.details.biography"
|
||||
button=true owner=owner editable=editable}}
|
||||
|
|
|
@ -129,32 +129,32 @@
|
|||
{{!-- Saving throws --}}
|
||||
<div class="attribute-group">
|
||||
<ul class="attributes">
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.death.long' }}">{{ localize "OSE.saves.death.short" }}</h4>
|
||||
<li class="attribute saving-throw">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.death.long' }}"><a>{{ localize "OSE.saves.death.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.d.value" type="text" value="{{data.saves.d.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.wands.long' }}">{{ localize "OSE.saves.wands.short" }}</h4>
|
||||
<li class="attribute saving-throw">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.wands.long' }}"><a>{{ localize "OSE.saves.wands.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.w.value" type="text" value="{{data.saves.w.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.paralysis.long' }}">{{ localize "OSE.saves.paralysis.short" }}</h4>
|
||||
<li class="attribute saving-throw">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.paralysis.long' }}"><a>{{ localize "OSE.saves.paralysis.short" }</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.p.value" type="text" value="{{data.saves.p.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.breath.long' }}">{{ localize "OSE.saves.breath.short" }}</h4>
|
||||
<li class="attribute saving-throw">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.breath.long' }}"><a>{{ localize "OSE.saves.breath.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.b.value" type="text" value="{{data.saves.b.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.spells.long' }}">{{ localize "OSE.saves.spells.short" }}</h4>
|
||||
<li class="attribute saving-throw">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.spells.long' }}"><a>{{ localize "OSE.saves.spells.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.s.value" type="text" value="{{data.saves.s.value}}" placeholder="0" />
|
||||
</li>
|
||||
|
|
|
@ -113,31 +113,31 @@
|
|||
<div class="attribute-group">
|
||||
<ul class="attributes">
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.death.long' }}">{{ localize "OSE.saves.death.short" }}</h4>
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.death.long' }}"><a>{{ localize "OSE.saves.death.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.d.value" type="text" value="{{data.saves.d.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.wands.long' }}">{{ localize "OSE.saves.wands.short" }}</h4>
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.wands.long' }}"><a>{{ localize "OSE.saves.wands.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.w.value" type="text" value="{{data.saves.w.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.paralysis.long' }}">{{ localize "OSE.saves.paralysis.short" }}</h4>
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.paralysis.long' }}"><a>{{ localize "OSE.saves.paralysis.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.p.value" type="text" value="{{data.saves.p.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.breath.long' }}">{{ localize "OSE.saves.breath.short" }}</h4>
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.breath.long' }}"><a>{{ localize "OSE.saves.breath.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.b.value" type="text" value="{{data.saves.b.value}}" placeholder="0"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="attribute">
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.spells.long' }}">{{ localize "OSE.saves.spells.short" }}</h4>
|
||||
<h4 class="attribute-name box-title" title="{{ localize 'OSE.saves.spells.long' }}"><a>{{ localize "OSE.saves.spells.short" }}</a></h4>
|
||||
<div class="attribute-value">
|
||||
<input name="data.saves.s.value" type="text" value="{{data.saves.s.value}}" placeholder="0" />
|
||||
</li>
|
||||
|
|
Loading…
Reference in New Issue