FIX: Roll mods concatenation, Added GetExperience
parent
881ab7f8f0
commit
b609b673e6
|
@ -10,7 +10,7 @@
|
|||
"OSE.SitMod": "Situational Modifier",
|
||||
"OSE.Modifier": "Modifier",
|
||||
"OSE.RollMode": "Roll Mode",
|
||||
"OSE.RollExample": "Roll Example",
|
||||
"OSE.RollExample": "e.g. +1d4",
|
||||
|
||||
"OSE.Name": "Name",
|
||||
"OSE.Class": "Class",
|
||||
|
@ -161,5 +161,7 @@
|
|||
"OSE.exploration.sd.long": "Find Secret Door",
|
||||
"OSE.exploration.sd.short": "Secret Door",
|
||||
"OSE.exploration.ft.long": "Find Room Trap",
|
||||
"OSE.exploration.ft.short": "Find Trap"
|
||||
"OSE.exploration.ft.short": "Find Trap",
|
||||
|
||||
"OSE.messages.getExperience": "{name} gained {value} experience points!"
|
||||
}
|
|
@ -25,7 +25,20 @@ export class OseActor extends Actor {
|
|||
/* -------------------------------------------- */
|
||||
/* Socket Listeners and Handlers
|
||||
/* -------------------------------------------- */
|
||||
|
||||
getExperience(value, options = {}) {
|
||||
console.log(this.data);
|
||||
if (this.data.type != 'character') {
|
||||
return;
|
||||
}
|
||||
let modified = value + (this.data.data.details.xp.bonus * value) / 100;
|
||||
console.log(modified);
|
||||
return this.update({
|
||||
"data.details.xp.value": modified + this.data.data.details.xp.value
|
||||
}).then(() => {
|
||||
const speaker = ChatMessage.getSpeaker({actor: this});
|
||||
ChatMessage.create({content: game.i18n.format("OSE.messages.getExperience", {name: this.name, value: modified}), speaker});
|
||||
});
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
/* Rolls */
|
||||
/* -------------------------------------------- */
|
||||
|
@ -89,7 +102,7 @@ export class OseActor extends Actor {
|
|||
...{
|
||||
rollData: {
|
||||
type: "Check",
|
||||
stat: score,
|
||||
target: this.data.data.scores[score].value,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -178,7 +191,7 @@ export class OseActor extends Actor {
|
|||
|
||||
// Add Str to damage
|
||||
if (attData.type == 'melee') {
|
||||
dmgParts.push("+", data.scores.str.mod);
|
||||
dmgParts.push(data.scores.str.mod);
|
||||
}
|
||||
|
||||
// Damage roll
|
||||
|
@ -199,21 +212,17 @@ export class OseActor extends Actor {
|
|||
|
||||
if (attData.type == "missile") {
|
||||
rollParts.push(
|
||||
"+",
|
||||
data.scores.dex.mod.toString(),
|
||||
"+",
|
||||
data.thac0.mod.missile.toString()
|
||||
);
|
||||
} else if (attData.type == "melee") {
|
||||
rollParts.push(
|
||||
"+",
|
||||
data.scores.str.mod.toString(),
|
||||
"+",
|
||||
data.thac0.mod.melee.toString()
|
||||
);
|
||||
}
|
||||
if (game.settings.get("ose", "ascendingAC")) {
|
||||
rollParts.push("+", this.data.data.thac0.bba.toString());
|
||||
rollParts.push(this.data.data.thac0.bba.toString());
|
||||
}
|
||||
|
||||
const rollData = {
|
||||
|
|
|
@ -53,7 +53,7 @@ export class OseDice {
|
|||
}
|
||||
} else if (data.rollData.type == "Check") {
|
||||
// SCORE CHECKS
|
||||
let sc = data.data.scores[data.rollData.stat].value;
|
||||
let sc = data.rollData.target;
|
||||
if (die == 1 || (roll.total <= sc && die < 20)) {
|
||||
details = `<div class='roll-result roll-success'><b>Success!</b> (${sc})</div>`;
|
||||
} else {
|
||||
|
@ -95,8 +95,8 @@ export class OseDice {
|
|||
// Optionally include a situational bonus
|
||||
if (form !== null) data["bonus"] = form.bonus.value;
|
||||
if (data["bonus"]) parts.push(data["bonus"]);
|
||||
|
||||
const roll = new Roll(parts.join(""), data).roll();
|
||||
|
||||
const roll = new Roll(parts.join("+"), data).roll();
|
||||
|
||||
// Convert the roll to a chat message and return the roll
|
||||
let rollMode = game.settings.get("core", "rollMode");
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
|
||||
<section class="header-details flexrow">
|
||||
<h1 class="charname">
|
||||
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'OSE.Name'}}" />
|
||||
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'OSE.Name'}}" data-dtype="String" />
|
||||
</h1>
|
||||
<ul class="summary flexrow">
|
||||
<li>
|
||||
<input type="text" name="data.details.title" value="{{data.details.title}}"
|
||||
<input type="text" name="data.details.title" value="{{data.details.title}}" data-dtype="String"
|
||||
/>
|
||||
<label>{{localize 'OSE.Title'}}</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}"
|
||||
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}" data-dtype="String"
|
||||
/>
|
||||
<label>{{localize 'OSE.Alignment'}}</label>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="summary flexrow">
|
||||
<li class="flex3">
|
||||
<input type="text" name="data.details.class" value="{{data.details.class}}"
|
||||
<input type="text" name="data.details.class" value="{{data.details.class}}" data-dtype="String"
|
||||
/>
|
||||
<label>{{localize 'OSE.Class'}}</label>
|
||||
</li>
|
||||
<li>
|
||||
<input type="text" name="data.details.level" value="{{data.details.level}}"
|
||||
<input type="text" name="data.details.level" value="{{data.details.level}}" data-dtype="Number"
|
||||
/>
|
||||
<label>{{localize 'OSE.Level'}}</label>
|
||||
</li>
|
||||
<li class="flex2">
|
||||
<input type="text" name="data.details.xp.value" value="{{data.details.xp.value}}"
|
||||
<input type="text" name="data.details.xp.value" value="{{data.details.xp.value}}" data-dtype="Number"
|
||||
/>
|
||||
<label>{{localize 'OSE.Experience'}}</label>
|
||||
{{#if data.details.xp.bonus}}
|
||||
|
|
Loading…
Reference in New Issue