Adds Rollable Attributes
parent
9e261b5b34
commit
68d1fd1477
|
|
@ -7,4 +7,21 @@ export class Character extends Actor {
|
||||||
this.prepareEmbeddedDocuments();
|
this.prepareEmbeddedDocuments();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getRollData() {
|
||||||
|
const data = super.getRollData();
|
||||||
|
|
||||||
|
if (this.type !== 'character') return;
|
||||||
|
|
||||||
|
// Copy the ability scores to the top level, so that rolls can use
|
||||||
|
// formulas like `@str.mod + 4`.
|
||||||
|
if (data.attribute) {
|
||||||
|
for (let [k, v] of Object.entries(data.attribute)) {
|
||||||
|
data[k] = foundry.utils.deepClone(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(data);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -34,6 +34,49 @@ export class CharacterSheet extends ActorSheet {
|
||||||
// Add the actor's data to context.data for easier access, as well as flags.
|
// Add the actor's data to context.data for easier access, as well as flags.
|
||||||
context.system = actorData.system;
|
context.system = actorData.system;
|
||||||
context.flags = actorData.flags;
|
context.flags = actorData.flags;
|
||||||
|
context.attributs = [
|
||||||
|
{
|
||||||
|
attribut: "mu",
|
||||||
|
name: "Mut",
|
||||||
|
wert: actorData.system.attribute.mu ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "kl",
|
||||||
|
name: "Klugheit",
|
||||||
|
wert: actorData.system.attribute.kl ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "in",
|
||||||
|
name: "Intuition",
|
||||||
|
wert: actorData.system.attribute.in ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "ch",
|
||||||
|
name: "Charisma",
|
||||||
|
wert: actorData.system.attribute.ch ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "ff",
|
||||||
|
name: "Fingerfertigkeit",
|
||||||
|
wert: actorData.system.attribute.ff ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "ge",
|
||||||
|
name: "Geschicklichkeit",
|
||||||
|
wert: actorData.system.attribute.ge ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "ko",
|
||||||
|
name: "Konstitution",
|
||||||
|
wert: actorData.system.attribute.ko ?? 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
attribut: "kk",
|
||||||
|
name: "Körperkraft",
|
||||||
|
wert: actorData.system.attribute.kk ?? 0,
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
context.skills = [];
|
context.skills = [];
|
||||||
if ( context.system.talente?.length >= 0) {
|
if ( context.system.talente?.length >= 0) {
|
||||||
context.system.talente.forEach(talent => {
|
context.system.talente.forEach(talent => {
|
||||||
|
|
@ -51,9 +94,31 @@ export class CharacterSheet extends ActorSheet {
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_onRoll(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
const dataset = event.currentTarget.dataset;
|
||||||
|
console.log(dataset)
|
||||||
|
if (dataset.roll) {
|
||||||
|
let label = dataset.label ? `[Attribut] ${dataset.label}` : '';
|
||||||
|
console.log(this.actor.getRollData());
|
||||||
|
let roll = new Roll(dataset.roll, this.actor.getRollData());
|
||||||
|
roll.toMessage({
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
|
||||||
|
flavor: label,
|
||||||
|
rollMode: game.settings.get('core', 'rollMode'),
|
||||||
|
});
|
||||||
|
return roll;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
|
|
||||||
|
html.on('click', '.attribut.rollable', (evt) => {
|
||||||
|
console.log(evt);
|
||||||
|
this._onRoll(evt);
|
||||||
|
});
|
||||||
|
|
||||||
// Everything below here is only needed if the sheet is editable
|
// Everything below here is only needed if the sheet is editable
|
||||||
if (!this.isEditable) return;
|
if (!this.isEditable) return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,18 @@
|
||||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
|
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
|
||||||
<div class="header-fields">
|
<div class="header-fields">
|
||||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
|
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
|
||||||
|
<div class="attribute">
|
||||||
|
{{#each attributs}}
|
||||||
|
<button class="attribut rollable" data-label="{{this.name}}" data-roll="1d20cs<=@{{this.attribut}}">
|
||||||
|
<span class="attribut-wert">
|
||||||
|
{{this.wert}}
|
||||||
|
</span>
|
||||||
|
<span class="attribut-name">
|
||||||
|
{{this.name}}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
@ -34,7 +46,7 @@
|
||||||
<div class="tab skills" data-group="primary" data-tab="skills">
|
<div class="tab skills" data-group="primary" data-tab="skills">
|
||||||
<ul>
|
<ul>
|
||||||
{{#each skills}}
|
{{#each skills}}
|
||||||
<li><div>
|
<li><div class="talent rollable" data-roll="1d20cs<=@{{this.p1}}">
|
||||||
<b>{{this.talentName}}</b>
|
<b>{{this.talentName}}</b>
|
||||||
{{this.probe}}
|
{{this.probe}}
|
||||||
</div></li>
|
</div></li>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue