Add skill assistance

This commit is contained in:
Vlyan
2021-02-04 11:22:36 +01:00
parent 84b160b50d
commit 6a9e84f126
8 changed files with 53 additions and 6 deletions

View File

@@ -97,6 +97,7 @@
"difficulty_hidden_label": "Hide TN",
"use_void_point_label": "Spend a",
"void_point_tooltip": "Void point",
"skill_assistance_label": "Assistance",
"roll_label": "Roll",
"bt_add_macro": "Add a macro"
},

View File

@@ -97,6 +97,7 @@
"difficulty_hidden_label": "Ocultar NO",
"use_void_point_label": "Gasta un",
"void_point_tooltip": "Punto de vacío",
"skill_assistance_label": "Assistance",
"roll_label": "Tirar",
"bt_add_macro": "Añadir una macro"
},

View File

@@ -97,6 +97,7 @@
"difficulty_hidden_label": "ND Caché",
"use_void_point_label": "Dépenser un",
"void_point_tooltip": "Point de Vide",
"skill_assistance_label": "Assistance",
"roll_label": "Lancer",
"bt_add_macro": "Ajouter une macro"
},

View File

@@ -104,12 +104,13 @@ export class CombatL5r5e extends Combat {
? messageOptions.difficultyHidden
: cfg.difficultyHidden;
roll.l5r5e.voidPointUsed = !!messageOptions.useVoidPoint;
roll.l5r5e.skillAssistance = messageOptions.skillAssistance;
roll.roll();
rnkMessage = await roll.toMessage({ flavor });
}
// Ugly but work... i need the new messageId
// Ugly but work... i need the new message
if (ids.length === 1) {
combatant.actor.rnkMessage = rnkMessage;
}

View File

@@ -30,6 +30,7 @@ export class DicePickerDialog extends FormApplication {
defaultValue: 0,
cat: "",
name: "",
assistance: 0,
},
difficulty: {
value: 2,
@@ -184,6 +185,7 @@ export class DicePickerDialog extends FormApplication {
}
this.object.skill = {
...this.object.skill,
id: skillId.toLowerCase().trim(),
value: 0,
cat: "",
@@ -323,11 +325,27 @@ export class DicePickerDialog extends FormApplication {
this.render(false);
});
// Skill assistance
html.find(".assistance").on("click", async (event) => {
event.preventDefault();
event.stopPropagation();
const assistanceAdd = $(event.currentTarget).data("value");
if (this.object.skill.assistance > 0 || assistanceAdd > 0) {
this._quantityChange("skill", assistanceAdd);
}
this.object.skill.assistance = Math.max(
Math.min(parseInt(this.object.skill.assistance) + assistanceAdd, 9),
0
);
this.render(false);
});
// Click on the Default Skill Dice
html.find("#skill_default_value").on("click", async (event) => {
event.preventDefault();
event.stopPropagation();
this.object.skill.value = this.object.skill.defaultValue;
this.object.skill.assistance = 0;
this.render(false);
});
@@ -427,6 +445,7 @@ export class DicePickerDialog extends FormApplication {
difficulty: this.object.difficulty.value,
difficultyHidden: this.object.difficulty.hidden,
useVoidPoint: this.object.useVoidPoint,
skillAssistance: this.object.skill.assistance,
},
},
});
@@ -444,6 +463,7 @@ export class DicePickerDialog extends FormApplication {
roll.l5r5e.difficulty = this.object.difficulty.value;
roll.l5r5e.difficultyHidden = this.object.difficulty.hidden;
roll.l5r5e.voidPointUsed = this.object.useVoidPoint;
roll.l5r5e.skillAssistance = this.object.skill.assistance;
await roll.roll();
message = await roll.toMessage();

View File

@@ -659,7 +659,13 @@ export class RollnKeepDialog extends FormApplication {
const card = button.parents(".l5r5e.item-display.dices-l5r");
const messageId = card.parents(".chat-message").data("message-id");
new RollnKeepDialog(messageId).render(true);
// Already open ? close it
const app = Object.values(ui.windows).find((e) => e.id === `l5r5e-roll-n-keep-dialog-${messageId}`);
if (app) {
app.close();
} else {
new RollnKeepDialog(messageId).render(true);
}
// Re-enable the button
button.attr("disabled", false);

View File

@@ -18,6 +18,7 @@ export class RollL5r5e extends Roll {
voidPointUsed: false,
keepLimit: null,
isInitiativeRoll: false,
skillAssistance: 0,
dicesTypes: {
std: false,
l5r: false,
@@ -106,10 +107,9 @@ export class RollL5r5e extends Roll {
summary.totalBonus = Math.max(0, summary.totalSuccess - this.l5r5e.difficulty);
if (!this.l5r5e.keepLimit) {
this.l5r5e.keepLimit = this.dice.reduce(
(acc, term) => (term instanceof game.l5r5e.RingDie ? acc + term.number : acc),
0
);
this.l5r5e.keepLimit =
this.dice.reduce((acc, term) => (term instanceof game.l5r5e.RingDie ? acc + term.number : acc), 0) +
Math.max(0, this.l5r5e.skillAssistance);
}
}

View File

@@ -164,6 +164,23 @@
{{/if}}
</td>
<td>
<div class="third">
<i class="assistance pointer-choice fa fa-minus-square" data-item="assistance" data-value="-1"></i>
</div>
<div class="third">
<i class="i_skill"></i> {{localize 'l5r5e.dicepicker.skill_assistance_label'}}
<div class="dice-container">
<img src="systems/l5r5e/assets/dices/default/3d/blank.png" alt="1">
<div class="dice-value">
<input class="input-dice" type="text" name="skill.assistance" value="{{data.skill.assistance}}" readonly="readonly">
</div>
</div>
</div>
<div class="third">
<i class="assistance pointer-choice fa fa-plus-square" data-item="assistance" data-value="1"></i>
</div>
</td>
</tr>