changes to allow a 'custom' skill for item attacks

This commit is contained in:
TheLastScrub
2023-09-17 17:01:25 -07:00
parent e23deec0ca
commit 4b34057ca7
15 changed files with 152 additions and 36 deletions
+1 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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"
}
+46 -3
View File
@@ -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
+4
View File
@@ -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,
+3
View File
@@ -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);
}
+1 -1
View File
@@ -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
View File
@@ -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": "",
+12 -2
View File
@@ -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">
+14 -3
View File
@@ -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}}
+11 -1
View File
@@ -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}}
+33 -17
View File
@@ -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>