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", "difficulty_hidden_label": "Hide TN",
"use_void_point_label": "Spend a", "use_void_point_label": "Spend a",
"void_point_tooltip": "Void point", "void_point_tooltip": "Void point",
"skill_assistance_label": "Assistance",
"roll_label": "Roll", "roll_label": "Roll",
"bt_add_macro": "Add a macro" "bt_add_macro": "Add a macro"
}, },

View File

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

View File

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

View File

@@ -104,12 +104,13 @@ export class CombatL5r5e extends Combat {
? messageOptions.difficultyHidden ? messageOptions.difficultyHidden
: cfg.difficultyHidden; : cfg.difficultyHidden;
roll.l5r5e.voidPointUsed = !!messageOptions.useVoidPoint; roll.l5r5e.voidPointUsed = !!messageOptions.useVoidPoint;
roll.l5r5e.skillAssistance = messageOptions.skillAssistance;
roll.roll(); roll.roll();
rnkMessage = await roll.toMessage({ flavor }); 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) { if (ids.length === 1) {
combatant.actor.rnkMessage = rnkMessage; combatant.actor.rnkMessage = rnkMessage;
} }

View File

@@ -30,6 +30,7 @@ export class DicePickerDialog extends FormApplication {
defaultValue: 0, defaultValue: 0,
cat: "", cat: "",
name: "", name: "",
assistance: 0,
}, },
difficulty: { difficulty: {
value: 2, value: 2,
@@ -184,6 +185,7 @@ export class DicePickerDialog extends FormApplication {
} }
this.object.skill = { this.object.skill = {
...this.object.skill,
id: skillId.toLowerCase().trim(), id: skillId.toLowerCase().trim(),
value: 0, value: 0,
cat: "", cat: "",
@@ -323,11 +325,27 @@ export class DicePickerDialog extends FormApplication {
this.render(false); 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 // Click on the Default Skill Dice
html.find("#skill_default_value").on("click", async (event) => { html.find("#skill_default_value").on("click", async (event) => {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
this.object.skill.value = this.object.skill.defaultValue; this.object.skill.value = this.object.skill.defaultValue;
this.object.skill.assistance = 0;
this.render(false); this.render(false);
}); });
@@ -427,6 +445,7 @@ export class DicePickerDialog extends FormApplication {
difficulty: this.object.difficulty.value, difficulty: this.object.difficulty.value,
difficultyHidden: this.object.difficulty.hidden, difficultyHidden: this.object.difficulty.hidden,
useVoidPoint: this.object.useVoidPoint, 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.difficulty = this.object.difficulty.value;
roll.l5r5e.difficultyHidden = this.object.difficulty.hidden; roll.l5r5e.difficultyHidden = this.object.difficulty.hidden;
roll.l5r5e.voidPointUsed = this.object.useVoidPoint; roll.l5r5e.voidPointUsed = this.object.useVoidPoint;
roll.l5r5e.skillAssistance = this.object.skill.assistance;
await roll.roll(); await roll.roll();
message = await roll.toMessage(); 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 card = button.parents(".l5r5e.item-display.dices-l5r");
const messageId = card.parents(".chat-message").data("message-id"); 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 // Re-enable the button
button.attr("disabled", false); button.attr("disabled", false);

View File

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

View File

@@ -164,6 +164,23 @@
{{/if}} {{/if}}
</td> </td>
<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> </td>
</tr> </tr>