parent
71f6c9fda3
commit
a14bd9fd42
|
@ -85,21 +85,6 @@ export class OseActorSheetCharacter extends OseActorSheet {
|
|||
this._calculateMovement(data, totalWeight);
|
||||
}
|
||||
|
||||
// Compute AC
|
||||
let baseAc = 9;
|
||||
let baseAac = 10;
|
||||
let shield = 0;
|
||||
data.owned.armors.forEach((a) => {
|
||||
if (a.data.equipped && a.data.type != "shield") {
|
||||
baseAc = a.data.ac.value;
|
||||
baseAac = a.data.aac.value;
|
||||
} else if (a.data.equipped && a.data.type == "shield") {
|
||||
shield = a.data.ac.value;
|
||||
}
|
||||
});
|
||||
data.data.aac.value = baseAac + data.data.scores.dex.mod + shield;
|
||||
data.data.ac.value = baseAc - data.data.scores.dex.mod - shield;
|
||||
data.data.shield = shield;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ export class OseActor extends Actor {
|
|||
// Compute modifiers from actor scores
|
||||
this.computeModifiers();
|
||||
this._isSlow();
|
||||
this.computeAC();
|
||||
|
||||
// Determine Initiative
|
||||
if (game.settings.get("ose", "individualInit")) {
|
||||
|
@ -23,6 +24,7 @@ export class OseActor extends Actor {
|
|||
data.initiative.value = 0;
|
||||
}
|
||||
data.movement.encounter = data.movement.base / 3;
|
||||
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
/* Socket Listeners and Handlers
|
||||
|
@ -448,6 +450,31 @@ export class OseActor extends Actor {
|
|||
});
|
||||
}
|
||||
|
||||
computeAC() {
|
||||
if (this.data.type != "character") {
|
||||
return;
|
||||
}
|
||||
// Compute AC
|
||||
let baseAc = 9;
|
||||
let baseAac = 10;
|
||||
let shield = 0;
|
||||
const data = this.data.data;
|
||||
data.aac.naked = baseAc + data.scores.dex.mod;
|
||||
data.ac.naked = baseAc - data.scores.dex.mod;
|
||||
const armors = this.data.items.filter(i => i.type == 'armor');
|
||||
armors.forEach((a) => {
|
||||
if (a.data.equipped && a.data.type != "shield") {
|
||||
baseAc = a.data.ac.value;
|
||||
baseAac = a.data.aac.value;
|
||||
} else if (a.data.equipped && a.data.type == "shield") {
|
||||
shield = a.data.ac.value;
|
||||
}
|
||||
});
|
||||
data.aac.value = baseAac + data.scores.dex.mod + shield;
|
||||
data.ac.value = baseAc - data.scores.dex.mod - shield;
|
||||
data.shield = shield;
|
||||
}
|
||||
|
||||
computeModifiers() {
|
||||
if (this.data.type != "character") {
|
||||
return;
|
||||
|
@ -489,6 +516,9 @@ export class OseActor extends Actor {
|
|||
data.scores.con.value
|
||||
);
|
||||
|
||||
data.ac.naked = 9 + data.scores.dex.mod;
|
||||
data.aac.naked = 10 - data.scores.dex.mod;
|
||||
|
||||
const capped = {
|
||||
0: -2,
|
||||
3: -2,
|
||||
|
|
|
@ -104,7 +104,7 @@ export class OsePartySheet extends FormApplication {
|
|||
},
|
||||
},
|
||||
},
|
||||
}).render(true);
|
||||
}, {height: "auto"}).render(true);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
"retainer": {
|
||||
"enabled": false,
|
||||
"loyalty": 0,
|
||||
"wage": 0,
|
||||
"upkeep": 0
|
||||
"wage": ""
|
||||
},
|
||||
"hp": {
|
||||
"hd": "1d8",
|
||||
|
|
|
@ -81,11 +81,11 @@
|
|||
{{#if config.ascendingAC}}
|
||||
<div class="health-value health-top" title="{{localize 'OSE.ArmorClass'}}">{{data.aac.value}}</div>
|
||||
<div class="health-value health-bottom" title="{{localize 'OSE.ArmorClassNaked'}}">
|
||||
{{add 10 data.scores.dex.mod}}</div>
|
||||
{{data.aac.naked}}</div>
|
||||
{{else}}
|
||||
<div class="health-value health-top" title="{{localize 'OSE.ArmorClass'}}">{{data.ac.value}}</div>
|
||||
<div class="health-value health-bottom" title="{{localize 'OSE.ArmorClassNaked'}}">
|
||||
{{subtract data.scores.dex.mod 9}}</div>
|
||||
{{data.ac.naked}}</div>
|
||||
{{/if}}
|
||||
{{#if data.shield}}<div class="shield" title="{{localize 'OSE.items.hasShield'}} ({{data.shield}})"><i
|
||||
class="fas fa-shield-alt"></i></div>{{/if}}
|
||||
|
|
|
@ -6,15 +6,10 @@
|
|||
<ul class="summary flexrow">
|
||||
{{#if data.retainer.enabled}}
|
||||
<li>
|
||||
<input type="text" name="data.retainer.wage" value="{{data.retainer.wage}}" data-dtype="Number"
|
||||
<input type="text" name="data.retainer.wage" value="{{data.retainer.wage}}" data-dtype="String"
|
||||
/>
|
||||
<label>{{localize 'OSE.RetainerWage'}}</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="text" name="data.retainer.upkeep" value="{{data.retainer.upkeep}}" data-dtype="Number"
|
||||
/>
|
||||
<label>{{localize 'OSE.RetainerUpkeep'}}</label>
|
||||
</li>
|
||||
{{else}}
|
||||
<li>
|
||||
<input type="text" name="data.details.title" value="{{data.details.title}}" data-dtype="String"
|
||||
|
|
|
@ -35,14 +35,17 @@
|
|||
<div class="field-name">
|
||||
{{e.name}}
|
||||
</div>
|
||||
<div class="item-controls field-long">
|
||||
<div class="item-control reaction-roll" title="Reaction Roll"><a><i class="fas fa-user"></i></a></div>
|
||||
</div>
|
||||
<div class="field-long">
|
||||
{{e.data.data.hp.value}}/{{e.data.data.hp.max}}
|
||||
</div>
|
||||
<div class="field-short">
|
||||
{{e.data.data.ac.value}}
|
||||
<strong>{{e.data.data.ac.value}}</strong> <sub>{{e.data.data.ac.naked}}</sub>
|
||||
</div>
|
||||
<div class="field-short">
|
||||
{{e.data.data.thac0.value}}
|
||||
<sub>{{e.data.data.thac0.mod.melee}}</sub> <strong>{{e.data.data.thac0.value}}</strong> <sub>{{e.data.data.thac0.mod.missile}}</sub>
|
||||
</div>
|
||||
<div class="field-short">
|
||||
{{e.data.data.movement.encounter}}
|
||||
|
|
Loading…
Reference in New Issue