changes to allow a 'custom' skill for item attacks
This commit is contained in:
+1
-2
@@ -752,7 +752,6 @@ div.motivation-editor-container div.editor{
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
|
||||
.deltagreen .tox-editor-header {
|
||||
background: none !important;
|
||||
}
|
||||
@@ -945,7 +944,7 @@ input.item-sheet-short-input{
|
||||
|
||||
.weapon-sheet-horizontal-grid-left-2col{
|
||||
display: grid;
|
||||
grid-template-columns: 40% 60%;
|
||||
grid-template-columns: 50% 50%;
|
||||
align-items: center;
|
||||
text-align: left;
|
||||
padding-bottom: 10px;
|
||||
|
||||
+5
-1
@@ -249,5 +249,9 @@
|
||||
"DG.Generic.CheckDamagedBondsBoxUntilNextHomeScene": "Check a damaged Bond's box until the next Home Scene ends.",
|
||||
"DG.Generic.ClearAll": "Clear All",
|
||||
|
||||
"DG.Generic.SanDamage": "SAN Damage"
|
||||
"DG.Generic.SanDamage": "SAN Damage",
|
||||
|
||||
"DG.ItemWindow.Weapons.CustomSkillTarget": "Target",
|
||||
"DG.ItemWindow.Weapons.SkillModifier": "Skill Modifier",
|
||||
"DG.ItemWindow.Custom": "Custom"
|
||||
}
|
||||
|
||||
+6
-2
@@ -253,7 +253,11 @@
|
||||
"DG.VehicleSheet.DescriptionPlaceHolder": "Vehicle Description",
|
||||
|
||||
"DG.Generic.CheckDamagedBondsBoxUntilNextHomeScene": "Check a damaged Bond's box until the next Home Scene ends.",
|
||||
"DG.Generic.ClearAll": "Clear All",
|
||||
"DG.Generic.ClearAll": "Clear Checks",
|
||||
|
||||
"DG.Generic.SanDamage": "SAN Damage"
|
||||
"DG.Generic.SanDamage": "SAN Damage",
|
||||
|
||||
"DG.ItemWindow.Weapons.CustomSkillTarget": "Target",
|
||||
"DG.ItemWindow.Weapons.SkillModifier": "Skill Modifier",
|
||||
"DG.ItemWindow.Custom": "Custom"
|
||||
}
|
||||
+5
-1
@@ -260,5 +260,9 @@
|
||||
"DG.Generic.CheckDamagedBondsBoxUntilNextHomeScene": "Check a damaged Bond's box until the next Home Scene ends.",
|
||||
"DG.Generic.ClearAll": "Clear All",
|
||||
|
||||
"DG.Generic.SanDamage": "SAN Damage"
|
||||
"DG.Generic.SanDamage": "SAN Damage",
|
||||
|
||||
"DG.ItemWindow.Weapons.CustomSkillTarget": "Target",
|
||||
"DG.ItemWindow.Weapons.SkillModifier": "Skill Modifier",
|
||||
"DG.ItemWindow.Custom": "Custom"
|
||||
}
|
||||
+5
-1
@@ -249,5 +249,9 @@
|
||||
"DG.Generic.CheckDamagedBondsBoxUntilNextHomeScene": "すぎのホーム・シーヌまで、傷つけた絆のボックスにチェクを",
|
||||
"DG.Generic.ClearAll": "全てのチェックを消す",
|
||||
|
||||
"DG.Generic.SanDamage": "SAN ダメージ"
|
||||
"DG.Generic.SanDamage": "SAN ダメージ",
|
||||
|
||||
"DG.ItemWindow.Weapons.CustomSkillTarget": "ターゲット",
|
||||
"DG.ItemWindow.Weapons.SkillModifier": "ターゲットに加えて",
|
||||
"DG.ItemWindow.Custom": "カスタム"
|
||||
}
|
||||
+3
-1
@@ -215,5 +215,7 @@
|
||||
"DG.Generic.CheckDamagedBondsBoxUntilNextHomeScene": "Check a damaged Bond's box until the next Home Scene ends.",
|
||||
"DG.Generic.ClearAll": "Clear All",
|
||||
|
||||
"DG.Generic.SanDamage": "SAN Damage"
|
||||
"DG.Generic.SanDamage": "SAN Damage",
|
||||
|
||||
"DG.Generic.Custom": "Custom"
|
||||
}
|
||||
@@ -577,6 +577,18 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
return this.actor.createEmbeddedDocuments("Item", [itemData]);
|
||||
}
|
||||
|
||||
_formatStringWithLeadingPlus(number){
|
||||
let s = "";
|
||||
|
||||
if(number > 0){
|
||||
s += "+"
|
||||
}
|
||||
|
||||
s += number.toString();
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle clickable rolls.
|
||||
* @param {Event} event The originating click event
|
||||
@@ -598,10 +610,22 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
let label = dataset.label ? `${dataset.label}` : '';
|
||||
let targetVal = "";
|
||||
let rollType = dataset.rolltype ? dataset.rolltype : '';
|
||||
|
||||
|
||||
//let customTarget = dataset.customtarget ? parseInt(dataset.customtarget, 10) : 50;
|
||||
//let skillModifier = dataset.skillmodifier ? parseInt(dataset.skillmodifier, 10) : 0; // allow adding a fixed modifier, for example if a weapon has a scope
|
||||
//let itemName = dataset.itemname ? `${dataset.itemname}` : '';
|
||||
|
||||
let itemId = dataset.iid;
|
||||
|
||||
let isDamageRoll = false;
|
||||
let isLethalityRoll = false;
|
||||
let isSanityDamageRoll = false;
|
||||
|
||||
let item = this.actor.items.get(itemId);
|
||||
|
||||
let customTarget = item.system.customSkillTarget;
|
||||
let skillModifier = item.system.skillModifier;
|
||||
let itemName = item.name;
|
||||
|
||||
// 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));
|
||||
@@ -609,14 +633,23 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
// check the 'data-target="something" property to determine how to grab the target for the roll
|
||||
if(rollType === "skill" || rollType === "typeskill"){
|
||||
targetVal = dataset.target;
|
||||
targetVal += skillModifier;
|
||||
label = game.i18n.localize(label).toUpperCase();
|
||||
|
||||
if(skillModifier !== 0){
|
||||
label += " (" + skillModifier.toString() + ")"
|
||||
}
|
||||
}
|
||||
else if(rollType === "weaponskill"){
|
||||
targetVal = dataset.target;
|
||||
|
||||
if(targetVal === "custom"){
|
||||
label = itemName.toUpperCase();
|
||||
targetVal = customTarget;
|
||||
}
|
||||
// some weapons randomly can just use dexterity x5, so try to trap on that
|
||||
// otherwise roll a regular skill test
|
||||
if(targetVal === "dex"){
|
||||
else if(targetVal === "dex"){
|
||||
label = game.i18n.localize("DG.Attributes.dex").toUpperCase() + "x5";
|
||||
targetVal = this.actor.system.statistics.dex.x5;
|
||||
}
|
||||
@@ -644,11 +677,21 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
label = game.i18n.localize("DG.Skills." + targetVal).toUpperCase();
|
||||
targetVal = this.actor.system.skills[targetVal].proficiency;
|
||||
}
|
||||
|
||||
targetVal += skillModifier;
|
||||
if(skillModifier !== 0){
|
||||
label += " (" + this._formatStringWithLeadingPlus(skillModifier) + ")";
|
||||
}
|
||||
}
|
||||
else if(dataset.target === "statistic.x5"){
|
||||
let stat = this.actor.system.statistics[key];
|
||||
targetVal = stat.x5;
|
||||
label = game.i18n.localize("DG.Attributes." + key).toUpperCase() + "x5";
|
||||
|
||||
targetVal += skillModifier;
|
||||
if(skillModifier !== 0){
|
||||
label += " (" + this._formatStringWithLeadingPlus(skillModifier) + ")";
|
||||
}
|
||||
}
|
||||
else if(rollType === "sanity"){
|
||||
targetVal = this.actor.system.sanity.value;
|
||||
@@ -657,7 +700,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
|
||||
else if(rollType === "damage"){
|
||||
// damage roll, not a skill check
|
||||
isDamageRoll = true;
|
||||
label = dataset.label ? dataset.label : '';
|
||||
label += " (" + this._formatStringWithLeadingPlus(skillModifier) + ")";
|
||||
}
|
||||
else if(rollType === "lethality"){
|
||||
// a lethality roll
|
||||
|
||||
@@ -73,6 +73,10 @@ export class DeltaGreenActor extends Actor {
|
||||
|
||||
system.sanity.max = 99 - system.skills.unnatural.proficiency;
|
||||
|
||||
system.wp.max = system.statistics.pow.value;
|
||||
|
||||
system.health.max = Math.ceil((system.statistics.con.value + system.statistics.str.value) / 2);
|
||||
|
||||
system.skills.ritual = {
|
||||
label: "Ritual",
|
||||
proficiency: 99 - system.sanity.value,
|
||||
|
||||
@@ -179,6 +179,9 @@ Hooks.once('init', async function() {
|
||||
if(skill === 'dex'){
|
||||
label = game.i18n.localize("DG.Attributes.dex");
|
||||
}
|
||||
if(skill === 'DG.Skills.custom'){
|
||||
label = game.i18n.localize('DG.ItemWindow.Custom');
|
||||
}
|
||||
else{
|
||||
label = game.i18n.localize("DG.Skills." + skill);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ export class DeltaGreenItemSheet extends ItemSheet {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["deltagreen", "sheet", "item"],
|
||||
width: 520,
|
||||
height: 480,
|
||||
height: 600,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "attributes" }]
|
||||
});
|
||||
}
|
||||
|
||||
+3
-1
@@ -537,10 +537,12 @@
|
||||
"base"
|
||||
],
|
||||
"skill": "",
|
||||
"skillModifier": 0,
|
||||
"customSkillTarget": 50,
|
||||
"range": "10M",
|
||||
"damage": "1D8",
|
||||
"armorPiercing": 0,
|
||||
"lethality": 0,
|
||||
"lethality": 10,
|
||||
"isLethal": false,
|
||||
"killRadius": "N/A",
|
||||
"ammo": "",
|
||||
|
||||
@@ -321,11 +321,17 @@
|
||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
||||
<div
|
||||
class="item-image rollable"
|
||||
|
||||
data-roll="d100"
|
||||
data-rolltype="weaponskill"
|
||||
data-target="{{item.system.skill}}"
|
||||
data-target="{{item.system.skill}}"
|
||||
data-itemname="{{item.name}}"
|
||||
data-label="{{localizeWeaponSkill item.system.skill}}"
|
||||
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
|
||||
|
||||
data-skillmodifier="{{item.system.skillModifier}}"
|
||||
data-customtarget="{{item.system.customSkillTarget}}"
|
||||
data-iid="{{item._id}}"
|
||||
><img src="{{item.img}}" width="24" height="24"/></div>
|
||||
|
||||
<h4 style="word-wrap: break-word;"
|
||||
@@ -336,6 +342,10 @@
|
||||
data-target="{{item.system.skill}}"
|
||||
data-label="{{localizeWeaponSkill item.system.skill}}"
|
||||
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
|
||||
|
||||
data-skillmodifier="{{item.system.skillModifier}}"
|
||||
data-customtarget="{{item.system.customSkillTarget}}"
|
||||
data-iid="{{item._id}}"
|
||||
>
|
||||
{{item.name}}
|
||||
</h4>
|
||||
@@ -349,6 +359,7 @@
|
||||
data-label="{{toUpperCase item.name}}"
|
||||
data-roll="{{toUpperCase item.system.damage}}"
|
||||
data-skill="{{item.system.skill}}"
|
||||
data-iid="{{item._id}}"
|
||||
>
|
||||
{{toUpperCase item.system.damage}}{{#if_eq item.system.skill 'unarmed_combat'}}{{actor.system.statistics.str.meleeDamageBonusFormula}}{{/if_eq}}{{#if_eq item.system.skill 'melee_weapons'}}{{actor.system.statistics.str.meleeDamageBonusFormula}}{{/if_eq}}</span>
|
||||
{{/unless}}
|
||||
@@ -369,7 +380,6 @@
|
||||
{{/if}}
|
||||
</span>
|
||||
|
||||
|
||||
<span class="centered-item-property">{{item.system.armorPiercing}}</span>
|
||||
|
||||
<div class="item-controls">
|
||||
|
||||
@@ -25,7 +25,10 @@
|
||||
<div class="resource-inner-grid-3col">
|
||||
<input type="text" name="system.health.value" value="{{actor.system.health.value}}" data-dtype="Number"/>
|
||||
<span> / </span>
|
||||
<input type="text" name="system.health.max" value="{{actor.system.health.max}}" data-dtype="Number"/>
|
||||
<!-- <input type="text" name="system.health.max" value="{{actor.system.health.max}}" data-dtype="Number"/> -->
|
||||
<div class="max-resource-value" title="{{localize 'DG.Tooltip.MaximumHP'}}">
|
||||
<div>{{numberFormat actor.system.health.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -35,7 +38,10 @@
|
||||
<div class="resource-inner-grid-3col">
|
||||
<input type="text" name="system.wp.value" value="{{actor.system.wp.value}}" data-dtype="Number"/>
|
||||
<span> / </span>
|
||||
<input type="text" name="system.wp.max" value="{{actor.system.wp.max}}" data-dtype="Number"/>
|
||||
<!-- <input type="text" name="system.wp.max" value="{{actor.system.wp.max}}" data-dtype="Number"/> -->
|
||||
<div class="max-resource-value" title="{{localize 'DG.Tooltip.MaximumWP'}}">
|
||||
<div>{{numberFormat actor.system.wp.max decimals=0 sign=false}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -182,9 +188,13 @@
|
||||
class="item-name rollable"
|
||||
data-roll="d100"
|
||||
data-rolltype="weaponskill"
|
||||
data-target="{{item.system.skill}}"
|
||||
data-target="{{item.system.skill}}"
|
||||
data-customtarget="{{item.system.customSkillTarget}}"
|
||||
data-skillmodifier="{{item.system.skillModifier}}"
|
||||
data-itemname="{{item.name}}"
|
||||
data-label="{{localizeWeaponSkill item.system.skill}}"
|
||||
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
|
||||
data-iid="{{item._id}}"
|
||||
>
|
||||
{{item.name}}
|
||||
</h4>
|
||||
@@ -197,6 +207,7 @@
|
||||
data-label="{{toUpperCase item.name}}"
|
||||
data-roll="{{toUpperCase item.system.damage}}"
|
||||
data-skill="{{item.system.skill}}"
|
||||
data-iid="{{item._id}}"
|
||||
>
|
||||
{{toUpperCase item.system.damage}}</span>
|
||||
{{/unless}}
|
||||
|
||||
@@ -179,9 +179,15 @@
|
||||
class="item-name rollable"
|
||||
data-roll="d100"
|
||||
data-rolltype="weaponskill"
|
||||
data-target="{{item.system.skill}}"
|
||||
data-target="{{item.system.skill}}"
|
||||
|
||||
data-label="{{localizeWeaponSkill item.system.skill}}"
|
||||
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
|
||||
|
||||
data-itemname="{{item.name}}"
|
||||
data-skillmodifier="{{item.system.skillModifier}}"
|
||||
data-customtarget="{{item.system.customSkillTarget}}"
|
||||
data-iid="{{item._id}}"
|
||||
>
|
||||
{{item.name}}
|
||||
</h4>
|
||||
@@ -194,6 +200,10 @@
|
||||
data-label="{{toUpperCase item.name}}"
|
||||
data-roll="{{toUpperCase item.system.damage}}"
|
||||
data-skill="{{item.system.skill}}"
|
||||
data-itemname="{{item.name}}"
|
||||
data-skillmodifier="{{item.system.skillModifier}}"
|
||||
data-customtarget="{{item.system.customSkillTarget}}"
|
||||
data-iid="{{item._id}}"
|
||||
>
|
||||
{{toUpperCase item.system.damage}}</span>
|
||||
{{/unless}}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="weapon-sheet-outer-grid-2col">
|
||||
|
||||
<div class="weapon-sheet-horizontal-grid-left-2col">
|
||||
@@ -44,22 +44,41 @@
|
||||
<option {{#if_eq item.system.skill 'int'}}selected{{/if_eq}} value="int">{{localize 'DG.Attributes.int'}}x5</option>
|
||||
<option {{#if_eq item.system.skill 'pow'}}selected{{/if_eq}} value="pow">{{localize 'DG.Attributes.pow'}}x5</option>
|
||||
<option {{#if_eq item.system.skill 'cha'}}selected{{/if_eq}} value="cha">{{localize 'DG.Attributes.cha'}}x5</option>
|
||||
</select>
|
||||
<option {{#if_eq item.system.skill 'custom'}}selected{{/if_eq}} value="custom">{{localize 'DG.ItemWindow.Custom'}}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="weapon-sheet-horizontal-grid-right-2col">
|
||||
{{#if_eq item.system.skill 'custom'}}
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.CustomSkillTarget'}}:</span>
|
||||
<input type="text" name="system.customSkillTarget" value="{{item.system.customSkillTarget}}" data-dtype="Number"/>
|
||||
{{/if_eq}}
|
||||
</div>
|
||||
|
||||
<!-- left 'column' (label and value)-->
|
||||
<div class="weapon-sheet-horizontal-grid-left-2col">
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.ArmorPiercing'}}:</span>
|
||||
<input type="text" name="system.armorPiercing" value="{{item.system.armorPiercing}}" data-dtype="Number"/>
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.SkillModifier'}}:</span>
|
||||
<input type="text" name="system.skillModifier" value="{{item.system.skillModifier}}" data-dtype="Number"/>
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.IsLethality'}}:</span>
|
||||
<input class="labeled-resource-checkbox" type="checkbox" name="system.isLethal" {{checked item.system.isLethal}} data-dtype="Boolean"
|
||||
title="{{localize 'DG.ItemWindow.Weapons.IsLethalityTooltip'}}"
|
||||
/>
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- right 'column' (label and value)-->
|
||||
<div class="weapon-sheet-horizontal-grid-right-2col">
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Range'}}:</span>
|
||||
<input type="text" name="system.range" value="{{item.system.range}}" data-dtype="String"/>
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.KillRadius'}}:</span>
|
||||
<input type="text" name="system.killRadius" value="{{item.system.killRadius}}" data-dtype="String"/>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="weapon-sheet-horizontal-grid-right-2col">
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Range'}}:</span>
|
||||
<input type="text" name="system.range" value="{{item.system.range}}" data-dtype="String"/>
|
||||
|
||||
{{!-- If a weapon is 'Lethal', need to show the d100% Lethality input, otherwise only show the regular Damage formula (e.g. 1D6, 1D4+2, etc...) --}}
|
||||
|
||||
@@ -78,10 +97,7 @@
|
||||
/>
|
||||
|
||||
{{/if}}
|
||||
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.ArmorPiercing'}}:</span>
|
||||
<input type="text" name="system.armorPiercing" value="{{item.system.armorPiercing}}" data-dtype="Number"/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -90,7 +106,7 @@
|
||||
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Ammo'}}:</span>
|
||||
<input type="text" name="system.ammo" value="{{item.system.ammo}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
@@ -100,10 +116,10 @@
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<section class="sheet-body" style="max-height: 25%;">
|
||||
|
||||
{{!-- Description Tab --}}
|
||||
<div class="tab top-div-border" data-group="primary" data-tab="description">
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user