- Added Auto and Auto Mode fields for weapons to allow for Single, Burst and Full-Auto weapons

This commit is contained in:
Simon Brooke
2024-06-28 16:07:46 +01:00
parent 32542576f6
commit 2cfaf4a56f
3 changed files with 203 additions and 53 deletions
+11 -3
View File
@@ -1920,8 +1920,13 @@ sheet-vehicle h3 {
margin-bottom: 3px;
}
/* Do not know why I've had to do this but header spans just do not line up */
.sheet-laf-header-offset span:nth-child(n + 3) {
margin-left: -10px;
}
.sheet-laf-weaponlist {
grid-template-columns: 0.3fr 2.5fr 1.25fr 1fr 1fr 1fr 1fr 1fr 1fr;
grid-template-columns: 0.3fr 2fr 0.75fr 1fr 1fr 0.5fr 0.5fr 0.5fr 0.5fr 0.5fr 0.7fr;
margin-bottom: 3px;
}
@@ -1930,14 +1935,17 @@ sheet-vehicle h3 {
}
.sheet-laf-weaponlist textarea {
grid-column: 1 / 10;
/* height: 30px !important; */
grid-column: 1 / 12;
}
.sheet-laf-weaponlist select {
width: 85px;
}
.sheet-laf-weaponlist input {
width: 100% !important;
}
.sheet-laf-ship {
grid-template-columns: 2fr 5fr 1fr 5fr 1fr 1fr 1fr;
margin-bottom: 3px;
+188 -48
View File
@@ -1956,14 +1956,21 @@
<div class="sheet-row-panel">
<br>
<h3 data-i18n="weaponstitle-u">Weapons</h3>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-bold">
<span data-i18n="weaponroll-u">Roll</span> <span data-i18n="weaponweapon-u">Weapon</span>
<span data-i18n="weaponskilltotal-u">Skill Total</span> <span data-i18n="weapondicemod-u">DM</span>
<span data-i18n="weapondamage-u">Damage</span> <span data-i18n="weapontechlevel-u">TL</span>
<span data-i18n="weaponrange-u">Range</span> <span data-i18n="weaponweight-u">KG</span>
<span data-i18n="weaponmagazine-u">Magazine</span>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-bold sheet-redborder sheet-laf-header-offset">
<span data-i18n="weaponroll-u">Roll</span>
<span data-i18n="weaponweapon-u">Weapon</span>
<span data-i18n="weaponskilltotal-u">Skill Total</span>
<span data-i18n="weapondicemod-u">DM</span>
<span data-i18n="weapondamage-u">Damage</span>
<span data-i18n="weapontechlevel-u">TL</span>
<span data-i18n="weaponrange-u">Range</span>
<span data-i18n="weaponweight-u">KG</span>
<span data-i18n="weaponmagazine-u">Mag.</span>
<span data-i18n="weaponauto-u">Auto</span>
<span data-i18n="weaponautomode-u">Mode</span>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
<button class="sheet-weaponroll" name="act_roll-weapon-1" type="action">
<div class="sheet-weaponrollbutton">b</div>
</button>
@@ -1978,6 +1985,12 @@
<input class="sheet-input" type="text" name="attr_weapon_range-1" value="0"/>
<input class="sheet-input" type="number" name="attr_weapon_weight-1" value="0" step="0.05"/>
<input class="sheet-input" type="text" name="attr_weapon_magazine-1" value="0"/>
<input class="sheet-input" type="number" name="attr_weapon_auto-1" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-1">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-1"></textarea>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
@@ -1995,6 +2008,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-2" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-2" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-2" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-2" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-2">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-2"></textarea>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
@@ -2012,6 +2031,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-3" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-3" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-3" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-3" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-3">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-3"></textarea>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
@@ -2029,6 +2054,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-4" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-4" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-4" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-4" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-4">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-4"></textarea>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
@@ -2046,6 +2077,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-5" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-5" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-5" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-5" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-5">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-5"></textarea>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
@@ -2063,6 +2100,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-6" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-6" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-6" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-6" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-6">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-6"></textarea>
</div>
<fieldset class="repeating_weapons">
@@ -2082,6 +2125,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-rep" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-rep" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-rep" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-rep" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-rep">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-rep"></textarea>
</div>
</fieldset>
@@ -2670,7 +2719,7 @@
<div class="sheet-redborder">
<h3 data-i18n="shipweapons-u">Weapons</h3>
<div class="sheet-weaponlist">
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-bold">
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-bold sheet-laf-header-offset">
<span data-i18n="weaponroll-u">Roll</span>
<span data-i18n="weaponweapon-u">Weapon</span>
<span data-i18n="weaponskilltotal-u">Skill Total</span>
@@ -2680,8 +2729,10 @@
<span data-i18n="weaponrange-u">Range</span>
<span data-i18n="weaponweight-u">KG</span>
<span data-i18n="weaponmagazine-u">Magazine</span>
<span data-i18n="weaponauto-u">Auto</span>
<span data-i18n="weaponautomode-u">Mode</span>
</div>
<div class="sheet-laf-centredgrid sheet-laf-weaponlist">
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
<button class="sheet-weaponroll" name="act_roll-weapon-1" type="action">
<div class="sheet-weaponrollbutton">b</div>
</button>
@@ -2695,10 +2746,16 @@
<input class="sheet-input" type="text" name="attr_weapon_range-1" value="0"/>
<input class="sheet-input" type="number" name="attr_weapon_weight-1" value="0" step="0.05"/>
<input class="sheet-input" type="text" name="attr_weapon_magazine-1" value="0"/>
<input class="sheet-input" type="number" name="attr_weapon_auto-1" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-1">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-1"></textarea>
</div>
<fieldset class="repeating_weapons">
<div class="sheet-laf-centredgrid sheet-laf-weaponlist">
<div class="sheet-laf-centredgrid sheet-laf-weaponlist sheet-redborder">
<button class="sheet-weaponroll" name="act_roll-weapon-rep" type="action">
<div class="sheet-weaponrollbutton">b</div>
</button>
@@ -2714,6 +2771,12 @@
<input class="sheet-weaponrange sheet-input" type="text" name="attr_weapon_range-rep" value="0"/>
<input class="sheet-weaponweight sheet-input" type="number" name="attr_weapon_weight-rep" value="0" step="0.05"/>
<input class="sheet-weaponmag sheet-input" type="text" name="attr_weapon_magazine-rep" value="0"/>
<input class="sheet-weaponmag sheet-input" type="number" name="attr_weapon_auto-rep" value="0"/>
<select class="sheet-input" name="attr_weapon_automode-rep">
<option>Single</option>
<option>Burst</option>
<option>Full-Auto</option>
</select>
<textarea class="sheet-input sheet-laf-wauto" name="attr_weapon_note-rep"></textarea>
</div>
</fieldset>
@@ -6212,15 +6275,122 @@
console.log("MgT2E: Roll weapon: " + JSON.stringify(info));
getAttrs(["weapon_damage-" + weapon], values => {
getAttrs(["weapon_damage-" + weapon, "weapon_auto-" + weapon, "weapon_automode-" + weapon], values => {
// Check if auto is set,
let autoValue = +values["weapon_auto-" + weapon];
console.log("MgT2E: Auto: " + autoValue);
let burstDamage = 0;
let weaponSuffix = "";
let fullAuto = false;
if(autoValue > 0) {
// Need to check the mode, single, burst or full-auto, if full auto then need to run the
// roll template multiple times
switch(values["weapon_automode-" + weapon]) {
case "Single":
// normal combat rules
autoValue = 1;
break;
case "Burst":
// Add auto value to damage
burstDamage = autoValue;
autoValue = 1;
break;
case "Full-Auto":
fullAuto = true;
break;
default:
console.log("Unknown value for auto-mode: " + values["weapon_damage-automode-" + weapon]);
}
}
else {
autoValue = 1;
}
const wD = formatWeaponDamage(values["weapon_damage-" + weapon]);
startRoll("@{whispertoggle}&{template:combat@{alt_rolltemplate_val}} {{character=@{character_name}}} {{weapon=@{weapon_name-" + weapon + "}}} {{effect=[[0D6]]}} @{ro_default_rolltype} + @{weapon_DM-" + weapon + "}[DM] + @{weapon_skill-" + weapon + "}[Skill] @{ro_default_mod}]]}} {{damage=[[" + wD.weaponDamage + "]]}} {{effect=''}} {{range=@{weapon_range-" + weapon + "}}}", (results) => {
for(let i=1; i<=autoValue; i++) {
// If doing Full-Auto then add a suffix
weaponSuffix = fullAuto ? " [" + i + "]" : "";
startRoll("@{whispertoggle}&{template:combat@{alt_rolltemplate_val}} {{character=@{character_name}}} {{weapon=@{weapon_name-" + weapon + "}" + weaponSuffix + "}} {{effect=[[0D6]]}} @{ro_default_rolltype} + @{weapon_DM-" + weapon + "}[DM] + @{weapon_skill-" + weapon + "}[Skill] @{ro_default_mod}]]}} {{damage=[[" + wD.weaponDamage + "+" + burstDamage + "]]}} {{effect=''}} {{range=@{weapon_range-" + weapon + "}}}", (results) => {
const toHit = results.results.roll.result;
var damage = results.results.damage.result
console.log("MgT2E: Roll weapon: " + JSON.stringify(results.results.damage));
var effect = 0;
if(toHit > 8 && !wD.isDestructive) {
damage += (toHit - 8);
effect = toHit - 8;
}
finishRoll(
results.rollId,
{
roll: toHit,
damage: damage,
effect: effect
}
);
});
}
});
});
});
on("clicked:repeating_weapons:roll-weapon-rep", (info) => {
const rowId = info.sourceAttribute.split('_')[2];
const weaponName = "repeating_weapons_" + rowId + "_weapon_name-rep";
const weaponDM = "repeating_weapons_" + rowId + "_weapon_DM-rep";
const weaponSkill = "repeating_weapons_" + rowId + "_weapon_skill-rep";
const weaponDamage = "repeating_weapons_" + rowId + "_weapon_damage-rep";
const weaponRange = "repeating_weapons_" + rowId + "_weapon_range-rep";
const weaponAuto = "repeating_weapons_" + rowId + "_weapon_auto-rep";
const weaponAutoMode = "repeating_weapons_" + rowId + "_weapon_automode-rep";
getAttrs([weaponDamage, weaponAuto, weaponAutoMode], values => {
// Check if auto is set,
let autoValue = +values[weaponAuto];
console.log("MgT2E: Auto: " + autoValue);
let burstDamage = 0;
let weaponSuffix = "";
let fullAuto = false;
if(autoValue > 0) {
// Need to check the mode, single, burst or full-auto, if full auto then need to run the
// roll template multiple times
switch(values[weaponAutoMode]) {
case "Single":
// normal combat rules
autoValue = 1;
break;
case "Burst":
// Add auto value to damage
burstDamage = autoValue;
autoValue = 1;
break;
case "Full-Auto":
fullAuto = true;
break;
default:
console.log("Unknown value for auto-mode: " + values[weaponAutoMode]);
}
}
else {
autoValue = 1;
}
const wD = formatWeaponDamage(values[weaponDamage]);
for(let i=1; i<=autoValue; i++) {
// If doing Full-Auto then add a suffix
weaponSuffix = fullAuto ? " [" + i + "]" : "";
startRoll("@{whispertoggle}&{template:combat@{alt_rolltemplate_val}} {{character=@{character_name}}} {{weapon=@{" + weaponName + "}" + weaponSuffix + "}} {{effect=[[0D6]]}} @{ro_default_rolltype} + @{" + weaponDM + "}[DM] + @{" + weaponSkill + "}[Skill] @{ro_default_mod}]]}} {{damage=[[" + wD.weaponDamage + "+" + burstDamage + "]]}} {{range=@{" + weaponRange + "}}}", (results) => {
const toHit = results.results.roll.result;
var damage = results.results.damage.result
console.log("MgT2E: Roll weapon: " + JSON.stringify(results.results.damage));
var effect = 0;
if(toHit > 8 && !wD.isDestructive) {
damage += (toHit - 8);
@@ -6236,41 +6406,7 @@
}
);
});
});
});
});
on("clicked:repeating_weapons:roll-weapon-rep", (info) => {
const rowId = info.sourceAttribute.split('_')[2];
const weaponName = "repeating_weapons_" + rowId + "_weapon_name-rep";
const weaponDM = "repeating_weapons_" + rowId + "_weapon_DM-rep";
const weaponSkill = "repeating_weapons_" + rowId + "_weapon_skill-rep";
const weaponDamage = "repeating_weapons_" + rowId + "_weapon_damage-rep";
const weaponRange = "repeating_weapons_" + rowId + "_weapon_range-rep";
getAttrs([weaponDamage], values => {
const wD = formatWeaponDamage(values[weaponDamage]);
startRoll("@{whispertoggle}&{template:combat@{alt_rolltemplate_val}} {{character=@{character_name}}} {{weapon=@{" + weaponName + "}}} {{effect=[[0D6]]}} @{ro_default_rolltype} + @{" + weaponDM + "}[DM] + @{" + weaponSkill + "}[Skill] @{ro_default_mod}]]}} {{damage=[[" + wD.weaponDamage + "]]}} {{range=@{" + weaponRange + "}}}", (results) => {
const toHit = results.results.roll.result;
var damage = results.results.damage.result
var effect = 0;
if(toHit > 8 && !wD.isDestructive) {
damage += (toHit - 8);
effect = toHit - 8;
}
finishRoll(
results.rollId,
{
roll: toHit,
damage: damage,
effect: effect
}
);
});
}
});
});
@@ -9790,6 +9926,10 @@
</script>
</div>
+4 -2
View File
@@ -87,13 +87,15 @@
"weaponstitle-u": "Weapons",
"weaponroll-u": "Roll",
"weaponweapon-u": "Weapon",
"weaponskilltotal-u": "Skill Total",
"weaponskilltotal-u": "Skill",
"weapondicemod-u": "DM",
"weapondamage-u": "Damage",
"weapontechlevel-u": "TL",
"weaponrange-u": "Range",
"weaponweight-u": "KG",
"weaponmagazine-u": "Magazine",
"weaponmagazine-u": "Mag.",
"weaponauto-u": "Auto",
"weaponautomode-u": "Mode",
"powerstitle-u": "Powers",
"notestitle-u": "Notes",
"legacy-u": "Legacy",