roll modifier working for skill & lethality tests
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
.skill-modify-grid{
|
||||
display: grid;
|
||||
grid-template-columns: auto auto;
|
||||
align-content: left;
|
||||
justify-content: left;
|
||||
align-items: left;
|
||||
padding: 10px;
|
||||
grid-gap: 10px 15px;
|
||||
}
|
||||
|
||||
.numeric-label-field{
|
||||
width: 50px !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
+6
-1
@@ -200,5 +200,10 @@
|
||||
"DG.ItemWindow.Weapons.ArmorPiercing": "Armor Piercing",
|
||||
"DG.ItemWindow.Weapons.Ammo": "Ammo (Amount/Type)",
|
||||
"DG.ItemWindow.Weapons.Range": "Range",
|
||||
"DG.ItemWindow.Weapons.KillRadius": "Kill Radius"
|
||||
"DG.ItemWindow.Weapons.KillRadius": "Kill Radius",
|
||||
|
||||
"DG.ModifySkillRollDialogue.Title": "Modify Roll",
|
||||
"DG.ModifySkillRollDialogue.Test": "Test:",
|
||||
"DG.ModifySkillRollDialogue.OriginalTarget": "Original Target:",
|
||||
"DG.ModifySkillRollDialogue.TargetModifier": "Modify Target:"
|
||||
}
|
||||
+6
-1
@@ -200,5 +200,10 @@
|
||||
"DG.ItemWindow.Weapons.ArmorPiercing": "武具貫通",
|
||||
"DG.ItemWindow.Weapons.Ammo": "弾 (量/種類/など)",
|
||||
"DG.ItemWindow.Weapons.Range": "距離",
|
||||
"DG.ItemWindow.Weapons.KillRadius": "致命の半径"
|
||||
"DG.ItemWindow.Weapons.KillRadius": "致命の半径",
|
||||
|
||||
"DG.ModifySkillRollDialogue.Title": "ロールの変更",
|
||||
"DG.ModifySkillRollDialogue.Test": "テスト:",
|
||||
"DG.ModifySkillRollDialogue.OriginalTarget": "元のターゲット:",
|
||||
"DG.ModifySkillRollDialogue.TargetModifier": "変換:"
|
||||
}
|
||||
+30
-64
@@ -1,4 +1,4 @@
|
||||
import { sendPercentileTestToChat, sendLethalityTestToChat, sendDamageRollToChat } from "../roll/roll.js"
|
||||
import { sendPercentileTestToChat, sendLethalityTestToChat, sendDamageRollToChat, showModifyPercentileTestDialogue } from "../roll/roll.js"
|
||||
/**
|
||||
* Extend the basic ActorSheet with some very simple modifications
|
||||
* @extends {ActorSheet}
|
||||
@@ -300,18 +300,20 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
const dataset = element.dataset;
|
||||
|
||||
if(event && event.which === 2){
|
||||
// probably don't want rolls to trigger from a middle mouse click
|
||||
// probably don't want rolls to trigger from a middle mouse click so just kill it here
|
||||
return;
|
||||
}
|
||||
|
||||
if (dataset.roll) {
|
||||
let roll = new Roll(dataset.roll, this.actor.data.data);
|
||||
//let roll = new Roll(dataset.roll, this.actor.data.data);
|
||||
let key = dataset.label ? dataset.label : '';
|
||||
//let label = dataset.label ? `Rolling ${dataset.label.toUpperCase()}` : '';
|
||||
let label = dataset.label ? `${dataset.label}` : '';
|
||||
let targetVal = "";
|
||||
let rollType = dataset.rolltype ? dataset.rolltype : '';
|
||||
|
||||
let isDamageRoll = false;
|
||||
let isLethalityRoll = false;
|
||||
|
||||
// if shift-click or right click, bring up roll editor dialog
|
||||
let requestedModifyRoll = (event && event.shiftKey || event.which === 3); //(event && (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey));
|
||||
|
||||
@@ -319,87 +321,51 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
if(rollType === "skill" || rollType === "typeskill"){
|
||||
targetVal = dataset.target;
|
||||
label = game.i18n.localize(label).toUpperCase();
|
||||
|
||||
if(requestedModifyRoll){
|
||||
this._showModifyPercentileTestDialogue(this.actor, label, targetVal);
|
||||
}
|
||||
else{
|
||||
sendPercentileTestToChat(this.actor, label, targetVal);
|
||||
}
|
||||
}
|
||||
else if(dataset.target === "statistic.x5"){
|
||||
let stat = this.actor.data.data.statistics[key];
|
||||
targetVal = stat.x5;
|
||||
label = game.i18n.localize("DG.Attributes." + key).toUpperCase();
|
||||
|
||||
if(requestedModifyRoll){
|
||||
this._showModifyPercentileTestDialogue(this.actor, label, targetVal);
|
||||
}
|
||||
else{
|
||||
sendPercentileTestToChat(this.actor, label, targetVal);
|
||||
}
|
||||
}
|
||||
else if(rollType === "sanity"){
|
||||
targetVal = this.actor.data.data.sanity.value;
|
||||
label = game.i18n.localize("DG.Attributes.SAN").toUpperCase();
|
||||
|
||||
if(requestedModifyRoll){
|
||||
this._showModifyPercentileTestDialogue(this.actor, label, targetVal);
|
||||
}
|
||||
else{
|
||||
sendPercentileTestToChat(this.actor, label, targetVal);
|
||||
}
|
||||
}
|
||||
else if(rollType === "damage"){
|
||||
// damage roll, not a skill check
|
||||
isDamageRoll = true;
|
||||
label = dataset.label ? dataset.label : '';
|
||||
sendDamageRollToChat(this.actor, label, dataset.roll);
|
||||
}
|
||||
else if(rollType === "lethality"){
|
||||
// a lethality roll
|
||||
isLethalityRoll = true;
|
||||
targetVal = dataset.target;
|
||||
sendLethalityTestToChat(this.actor, label, targetVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async _showModifyPercentileTestDialogue(actor, label, originalTarget){
|
||||
|
||||
let template = "systems/deltagreen/templates/dialog/modify-percentile-roll.html";
|
||||
let backingData = {
|
||||
data:{
|
||||
label: label,
|
||||
originalTarget: originalTarget,
|
||||
targetModifier: 20
|
||||
},
|
||||
};
|
||||
|
||||
let html = await renderTemplate(template, backingData);
|
||||
|
||||
new Dialog({
|
||||
content: html,
|
||||
title: "Modify Roll",
|
||||
default: "roll",
|
||||
buttons: {
|
||||
roll:{
|
||||
label: game.i18n.translations.DG.Roll.Roll,
|
||||
callback: html => {
|
||||
let targetModifier = html.find("[name='targetModifier']").val();
|
||||
|
||||
let newTarget = parseInt(originalTarget);
|
||||
|
||||
try{
|
||||
newTarget += parseInt(targetModifier);
|
||||
}
|
||||
catch(ex){
|
||||
console.log(ex);
|
||||
}
|
||||
|
||||
sendPercentileTestToChat(actor, label, newTarget);
|
||||
}
|
||||
if(isDamageRoll){
|
||||
if(requestedModifyRoll){
|
||||
// TO DO: Damage roll modifier dialogue
|
||||
}
|
||||
else{
|
||||
sendDamageRollToChat(this.actor, label, dataset.roll);
|
||||
}
|
||||
}
|
||||
}).render(true);
|
||||
else{
|
||||
if(requestedModifyRoll){
|
||||
showModifyPercentileTestDialogue(this.actor, label, targetVal, isLethalityRoll);
|
||||
}
|
||||
else{
|
||||
if(isLethalityRoll)
|
||||
{
|
||||
sendLethalityTestToChat(this.actor, label, targetVal);
|
||||
}
|
||||
else{
|
||||
sendPercentileTestToChat(this.actor, label, targetVal);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_resetBreakingPoint(event){
|
||||
|
||||
@@ -187,4 +187,50 @@ export function sendPercentileTestToChat(actor, skill, target){
|
||||
roll: roll,
|
||||
rollMode: game.settings.get("core", "rollMode")
|
||||
});
|
||||
}
|
||||
|
||||
export async function showModifyPercentileTestDialogue(actor, label, originalTarget, isLethalityTest){
|
||||
|
||||
let template = "systems/deltagreen/templates/dialog/modify-percentile-roll.html";
|
||||
let backingData = {
|
||||
data:{
|
||||
label: label,
|
||||
originalTarget: originalTarget,
|
||||
targetModifier: 20
|
||||
},
|
||||
};
|
||||
|
||||
let html = await renderTemplate(template, backingData);
|
||||
|
||||
new Dialog({
|
||||
content: html,
|
||||
title: game.i18n.localize("DG.ModifySkillRollDialogue.Title"),
|
||||
default: "roll",
|
||||
buttons: {
|
||||
roll:{
|
||||
label: game.i18n.translations.DG.Roll.Roll,
|
||||
|
||||
callback: html => {
|
||||
try{
|
||||
let targetModifier = html.find("[name='targetModifier']").val(); // this is text as a heads up
|
||||
|
||||
let newTarget = parseInt(originalTarget); // this should be an int, but technically the incoming value is text, so parse it just to be safe
|
||||
|
||||
newTarget += parseInt(targetModifier);
|
||||
|
||||
if(isLethalityTest){
|
||||
sendLethalityTestToChat(actor, label, newTarget);
|
||||
}
|
||||
else{
|
||||
sendPercentileTestToChat(actor, label, newTarget);
|
||||
}
|
||||
}
|
||||
catch(ex){
|
||||
console.log(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
).render(true);
|
||||
}
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
"templateVersion": 2,
|
||||
"author": "TheLastScrub (https://github.com/TheLastScrub)",
|
||||
"esmodules": ["module/deltagreen.js"],
|
||||
"styles": ["css/deltagreen.css"],
|
||||
"styles": ["css/deltagreen.css", "css/dialogue.css"],
|
||||
"scripts": [],
|
||||
"packs": [
|
||||
{
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<form>
|
||||
<div>
|
||||
<div>
|
||||
<p>Skill: {{data.label}}</p>
|
||||
</div>
|
||||
<br>
|
||||
<label>Original Target: {{data.originalTarget}}</label>
|
||||
<label>Modify Target<label>
|
||||
<input id="test" type="number" name="targetModifier" value="{{data.targetModifier}}" />
|
||||
<div class="skill-modify-grid">
|
||||
<span>{{localize 'DG.ModifySkillRollDialogue.Test'}}</span>
|
||||
<span>{{data.label}}</span>
|
||||
|
||||
<span>{{localize 'DG.ModifySkillRollDialogue.OriginalTarget'}}</span>
|
||||
<input class="numeric-label-field" disabled value="{{data.originalTarget}}" />
|
||||
|
||||
<span>{{localize 'DG.ModifySkillRollDialogue.TargetModifier'}}</span>
|
||||
<input class="numeric-label-field" type="number" name="targetModifier" value="{{data.targetModifier}}" />
|
||||
</div>
|
||||
</form>
|
||||
Reference in New Issue
Block a user