diff --git a/HeroSystem6eHeroic/HeroSystem6eHeroic.css b/HeroSystem6eHeroic/HeroSystem6eHeroic.css index 8ccb2a667a97..6773911251e7 100644 --- a/HeroSystem6eHeroic/HeroSystem6eHeroic.css +++ b/HeroSystem6eHeroic/HeroSystem6eHeroic.css @@ -5224,9 +5224,9 @@ select:focus + .focus { /* Switch weapon sets */ -.set-AtoB-button button { +.set-AtoB-button button, +.set-AtoB-button-light button { color: white; - background-color: #f2cf7f; width: 29px; height: 17px; font-size: 12px; @@ -5237,9 +5237,24 @@ select:focus + .focus { cursor: pointer; border-radius: 2px; line-height: 1.4; +} + +.set-AtoB-button button { + background-color: #f2cf7f; :hover { background-color: #ddf0fa; + border-radius: 2px; + color: black; + } +} + +.set-AtoB-button-light button { + background-color: #9aceff; + + :hover { + background-color: #fcf9d9; + border-radius: 2px; color: black; } } @@ -5467,6 +5482,15 @@ select:focus + .focus { gap: 4px; } +.subitem-tab-gear-flex-container-equipment-heading .set-AtoB-button-light { + display: flex; + flex-direction: row; + justify-content: space-between; + align-content: center; + min-width: 31px; + margin-right: 52px; +} + .subitem-tab-gear-flex-container-equipment { display: flex; flex-direction: row; @@ -5482,10 +5506,10 @@ select:focus + .focus { } .subitem-tab-gear-flex-container-equipment-heading h1:nth-child(3) { - min-width: 157px; + min-width: 70px; } -.subitem-tab-gear-flex-container-equipment-heading h1:nth-child(4) { +.subitem-tab-gear-flex-container-equipment-heading h1:nth-child(5) { min-width: 54px; text-align: right; } @@ -5916,6 +5940,22 @@ select:focus + .focus { display: none; } +.equipment-checks[value="delete"] ~ div.subitem-tab-gear-flex-container-equipment-heading .set-AtoB-button-light button { + background-color: #d0d0d0; + color: white; + cursor: default; + + :hover { + color: white; + background-color: #d0d0d0; + } + + :focus { + color: white; + background-color: #d0d0d0; + } +} + /* Martial Skill Delete Boxes */ .item-martial-skill-delete-panel { display: flex; diff --git a/HeroSystem6eHeroic/HeroSystem6eHeroic.html b/HeroSystem6eHeroic/HeroSystem6eHeroic.html index f878a07abe44..12275a1a3ccb 100644 --- a/HeroSystem6eHeroic/HeroSystem6eHeroic.html +++ b/HeroSystem6eHeroic/HeroSystem6eHeroic.html @@ -1728,6 +1728,9 @@

Mass

Equipment

+
+ +

Mass

@@ -5123,7 +5126,7 @@

-8

- +
@@ -7328,6 +7331,7 @@

CP

+ @@ -7406,6 +7411,7 @@

CP

+ @@ -7484,6 +7491,7 @@

CP

+ @@ -7562,6 +7571,7 @@

CP

+ @@ -7640,6 +7651,7 @@

CP

+
@@ -13696,9 +13708,9 @@

Version:

- - - + + + @@ -13771,7 +13783,7 @@

Version:

- + @@ -13782,7 +13794,7 @@

Version:

- + @@ -13793,7 +13805,7 @@

Version:

- + @@ -13804,7 +13816,7 @@

Version:

- + @@ -13930,6 +13942,71 @@

Version:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -14574,10 +14651,10 @@

Version:

version = 3.50; } - if (version < 3.71) { + if (version < 3.8) { // No updates needed. - version = 3.71; + version = 3.8; } if (version != origVersion) { @@ -15310,7 +15387,7 @@

Version:

"perceptionHearing": calculateRoll(Math.max(0, statValue + statMod)) + enhancedPerceptionMod+perceptionModHearing, "perceptionSmell": calculateRoll(Math.max(0, statValue + statMod)) + enhancedPerceptionMod+perceptionModSmell }); - + // Update costs sumCharacteristicPoints(); }); @@ -15889,7 +15966,7 @@

Version:

// Update cost and net movement setAttrs({ - "leapingCP":heroRoundLow(statCP), + "leapingCP":heroRoundHigh(statCP), "leapingNet":netMove }); @@ -15938,7 +16015,7 @@

Version:

// Update cost and net movement setAttrs({ - "swimmingCP":heroRoundLow(statCP), + "swimmingCP":heroRoundHigh(statCP), "swimmingNet":netMove }); @@ -16688,6 +16765,9 @@

Version:

case "native": languageCP = literacyCP; break; + case "nativePlus": languageCP = literacyCP + 1; + break; + case "none": languageCP = literacyCP; break; @@ -16705,7 +16785,8 @@

Version:

case "imitate": languageCP = 5+literacyCP-enhancerBonus; break; - } + } + return languageCP; } @@ -17503,7 +17584,7 @@

Version:

// Language skills are relatively simple without levels or roll calculations. The linguist enhancer is the only complication. // All calculations handled by the function calculateLanguageSkillCost(...). - getAttrs(["enhancerLing", "skillFluency41","skillLiteracy41", "skillFluency42","skillLiteracy42", "skillFluency43","skillLiteracy43", "skillFluency44","skillLiteracy44", "skillFluency45","skillLiteracy45", "skillFluency46","skillLiteracy46", "skillFluency47","skillLiteracy47", "skillFluency48","skillLiteracy48", "skillFluency49","skillLiteracy49","optionLiteracyCostsPoints"], function(values) { + getAttrs(["enhancerLing", "skillFluency41", "skillLiteracy41", "skillFluency42","skillLiteracy42", "skillFluency43","skillLiteracy43", "skillFluency44","skillLiteracy44", "skillFluency45","skillLiteracy45", "skillFluency46","skillLiteracy46", "skillFluency47","skillLiteracy47", "skillFluency48", "skillLiteracy48", "skillFluency49", "skillLiteracy49", "optionLiteracyCostsPoints"], function(values) { const linguist = values.enhancerLing; let literacyCost = 0; @@ -18700,12 +18781,12 @@

Version:

// Add the masses of all items of equipment. // Determine END used per turn, DCV/DEX roll penalty, and Movement Penalty. - getAttrs(["liftWeight", "optionCarryAllSets", "armorEND01", "armorEND02", "armorEND03", "armorEND04", "armorCarried01", "armorCarried02", "armorCarried03", "armorCarried04", "armorCarried11", "armorCarried12", "armorCarried13", "armorCarried14", "armorMass01", "armorMass02", "armorMass03", "armorMass04", "armorMass11", "armorMass12", "armorMass13", "armorMass14", "shieldCarried", "shieldMass", "weaponCarried01", "weaponCarried02", "weaponCarried03", "weaponCarried04", "weaponCarried05", "weaponCarried11", "weaponCarried12", "weaponCarried13", "weaponCarried14", "weaponCarried15", "weaponMass01", "weaponMass02", "weaponMass03", "weaponMass04", "weaponMass05", "weaponMass11", "weaponMass12", "weaponMass13", "weaponMass14", "weaponMass15", "equipMass01", "equipMass02", "equipMass03", "equipMass04", "equipMass05", "equipMass06", "equipMass07", "equipMass08", "equipMass09", "equipMass10", "equipMass11", "equipMass12", "equipMass13", "equipMass14", "equipMass15", "equipMass16", "equipCarried01", "equipCarried02", "equipCarried03", "equipCarried04", "equipCarried05", "equipCarried06", "equipCarried07", "equipCarried08", "equipCarried09", "equipCarried10", "equipCarried11", "equipCarried12", "equipCarried13", "equipCarried14", "equipCarried15", "equipCarried16"], function(values) { + getAttrs(["liftWeight", "optionCarryAllSets", "armorEND01", "armorEND02", "armorEND03", "armorEND04", "armorCarried01", "armorCarried02", "armorCarried03", "armorCarried04", "armorCarried11", "armorCarried12", "armorCarried13", "armorCarried14", "armorMass01", "armorMass02", "armorMass03", "armorMass04", "armorMass11", "armorMass12", "armorMass13", "armorMass14", "shieldCarried", "shieldMass", "weaponCarried01", "weaponCarried02", "weaponCarried03", "weaponCarried04", "weaponCarried05", "weaponCarried11", "weaponCarried12", "weaponCarried13", "weaponCarried14", "weaponCarried15", "weaponMass01", "weaponMass02", "weaponMass03", "weaponMass04", "weaponMass05", "weaponMass11", "weaponMass12", "weaponMass13", "weaponMass14", "weaponMass15", "equipMass01", "equipMass02", "equipMass03", "equipMass04", "equipMass05", "equipMass06", "equipMass07", "equipMass08", "equipMass09", "equipMass10", "equipMass11", "equipMass12", "equipMass13", "equipMass14", "equipMass15", "equipMass16", "equipMass17", "equipMass18", "equipMass19", "equipMass20", "equipMass21", "equipMass22", "equipMass23", "equipMass24", "equipMass25", "equipMass26", "equipMass27", "equipMass28", "equipMass29", "equipMass30", "equipMass31", "equipMass32", "equipCarried01", "equipCarried02", "equipCarried03", "equipCarried04", "equipCarried05", "equipCarried06", "equipCarried07", "equipCarried08", "equipCarried09", "equipCarried10", "equipCarried11", "equipCarried12", "equipCarried13", "equipCarried14", "equipCarried15", "equipCarried16", "equipCarried17", "equipCarried18", "equipCarried19", "equipCarried20", "equipCarried21", "equipCarried22", "equipCarried23", "equipCarried24", "equipCarried25", "equipCarried26", "equipCarried27", "equipCarried28", "equipCarried29", "equipCarried30", "equipCarried31", "equipCarried32"], function(values) { const carryAll = (values.optionCarryAllSets === "on") ? true : false; - const stepId = 10; var itemId = ''; + let stepId = 10; let armorCarried = 0; let weaponsCarried = 0; let equipCarried = 0; @@ -18743,17 +18824,25 @@

Version:

} } - // Equipment + // Set A equipment for (let i=1; i<=maxEquipmentNum; i++) { itemId = String(i).padStart(2,'0'); equipCarried += (values["equipCarried"+itemId] === "on") ? (parseFloat(values["equipMass"+itemId])||0) : 0; } - carriedWeight=armorCarried+weaponsCarried+equipCarried; - // carriedWeight=Math.floor(10*carriedWeight)/10; + // Set B equipment + stepId = 16; + if (carryAll) { + for (let i=stepId+1; i<=stepId+maxEquipmentNum; i++) { + itemId = String(i).padStart(2,'0'); + equipCarried += (values["equipCarried"+itemId] === "on") ? (parseFloat(values["equipMass"+itemId])||0) : 0; + } + } - // Determine penalties + carriedWeight=armorCarried+weaponsCarried+equipCarried; + + // Determine encumbrance penalty const lift=(parseFloat(values.liftWeight)||0); const armorENDcost = (parseInt(values.armorEND01)||0)+(parseInt(values.armorEND02)||0)+(parseInt(values.armorEND03)||0)+(parseInt(values.armorEND04)||0); let enduranceCost = 0; @@ -21519,43 +21608,91 @@

Version:

/* ---------------- */ arrayOf(maxEquipmentNum).forEach(num => { + // For equipment 01 and 16 we need to swap with the alternates 17 and 32. + + const stepId = 16; + var lowId = String(num).padStart(2,'0'); - var highId = String(num == maxEquipmentNum ? 1 : num + 1).padStart(2,'0'); + var highId = String(num === (maxEquipmentNum) ? maxEquipmentNum + stepId : num + 1).padStart(2,'0'); + + on("clicked:equipDown"+lowId, function() { + swapEquipmentPositions(lowId, highId); + }); + }); + + + arrayOf(maxEquipmentNum).forEach(num => { + // For equipment 01 and 16 we need to swap with the alternates 17 and 32. + + const stepId = 16; - swapEquipmentPositions(lowId, highId); + var lowId = String(num === 1 ? stepId + 1 : num - 1).padStart(2,'0'); + var highId = String(num).padStart(2,'0'); + + on("clicked:equipUp"+highId, function() { + swapEquipmentPositions(lowId, highId); + }); }); function swapEquipmentPositions(lowId, highId) { - on("clicked:equipDown"+lowId+" clicked:equipUp"+highId, function () { - getAttrs(["equipText"+lowId, "equipText"+highId, "equipCarried"+lowId, "equipCarried"+highId, "equipMass"+lowId, "equipMass"+highId], function(values) { - var attributes = new Object(); - - let theString = values["equipText"+lowId]; - if ( (theString.length === 0) || (theString === null) ) { - attributes["equipText"+highId] = ""; - } else { - attributes["equipText"+highId] = values["equipText"+lowId]; - } - - theString = values["equipText"+highId]; - if ( (theString.length === 0) || (theString === null) ) { - attributes["equipText"+lowId] = ""; - } else { - attributes["equipText"+lowId] = values["equipText"+highId]; - } - - attributes["equipCarried"+lowId] = values["equipCarried"+highId]; - attributes["equipCarried"+highId] = values["equipCarried"+lowId]; - attributes["equipMass"+lowId] = values["equipMass"+highId]; - attributes["equipMass"+highId] = values["equipMass"+lowId]; - - setAttrs(attributes); - }); + getAttrs(["equipText"+lowId, "equipText"+highId, "equipCarried"+lowId, "equipCarried"+highId, "equipMass"+lowId, "equipMass"+highId], function(values) { + var attributes = new Object(); + + let theString = values["equipText"+lowId]; + if ( (theString.length === 0) || (theString === null) ) { + attributes["equipText"+highId] = ""; + } else { + attributes["equipText"+highId] = values["equipText"+lowId]; + } + + theString = values["equipText"+highId]; + if ( (theString.length === 0) || (theString === null) ) { + attributes["equipText"+lowId] = ""; + } else { + attributes["equipText"+lowId] = values["equipText"+highId]; + } + + attributes["equipCarried"+lowId] = values["equipCarried"+highId]; + attributes["equipCarried"+highId] = values["equipCarried"+lowId]; + attributes["equipMass"+lowId] = values["equipMass"+highId]; + attributes["equipMass"+highId] = values["equipMass"+lowId]; + + setAttrs(attributes); }); } + // Exchange all equipment by set. + on("clicked:equipSetAtoB", function() { + getAttrs(["activateDeleteChecks"], function(values) { + if (values.activateDeleteChecks !== "on") { + swapEquipmentSet(); + } + }); + }); + + + function swapEquipmentSet() { + const stepId = 16; + + for (let i=1; i <= maxEquipmentNum; i++) { + lowId = String(i).padStart(2,'0'); + highId = String(i+stepId).padStart(2,'0'); + + if (i===1) { + setAttrs({ + "complicationsTextRight":lowId + " " + highId + }); + } + + swapEquipmentPositions(lowId, highId); + } + + + } + + /* ---------------- */ /* Talent Functions */ /* ---------------- */ diff --git a/HeroSystem6eHeroic/HeroSystem6eHeroic.png b/HeroSystem6eHeroic/HeroSystem6eHeroic.png index 898f3a6ca468..e884057d738b 100644 Binary files a/HeroSystem6eHeroic/HeroSystem6eHeroic.png and b/HeroSystem6eHeroic/HeroSystem6eHeroic.png differ diff --git a/HeroSystem6eHeroic/README.md b/HeroSystem6eHeroic/README.md index 2dc73717014e..4d41ee782514 100644 --- a/HeroSystem6eHeroic/README.md +++ b/HeroSystem6eHeroic/README.md @@ -115,7 +115,7 @@ With the Weapon Worksheet open, begin by entering a weapon's base damage (the sh HERO System 6th Edition considers certain power advantages when determining enhancements to damage (e.g., armor piercing, see 6E2 98-100). HS6eH uses an algorithm that duplicates the *Damage Classes Quick-Reference Tables* found on 6E2 101 plus a best attempt to expand them using the *Expanded Damage Class Tables* available for a small fee separately from Hero Games. The expanded tables were used only as guidance since they do not always agree with the rulebook (and are missing some important common values). -![A/B Button](/HeroSystem6eHeroic/images/ABButton.png) The "A/B" buttons in the Weapons and Armor title bars swap the visible set with an alternate set. One set could be an adventurer's traveling kit and the second a heavier battlefield loadout. Alternatively, a hero such as Neo in the Matrix might just need as many weapons as they can carry. The "up" mover button of the top item exchanges the top items of each set. The "down" mover button of the bottom item likewise exchanges the bottom items of each set. +![A/B Button](/HeroSystem6eHeroic/images/ABButton.png) The "A/B" buttons in the Armor, Weapons, and Equipment title bars swap the visible set with an alternate set. One set could be an adventurer's traveling kit and the second a heavier battlefield loadout. Alternatively, a hero such as Neo in the Matrix might just need as many weapons as they can carry. The "up" mover button of the top item exchanges the top items of each set. The "down" mover button of the bottom item likewise exchanges the bottom items of each set. ![Weapons Table A](/HeroSystem6eHeroic/images/weaponsAB.png) @@ -331,4 +331,4 @@ During play, add the Turn Token to the Turn Tracker using the "Tracker" button o ![Turn Tracker](/HeroSystem6eHeroic/images/TurnTracker.png) *First version by Villain In Glasses, August 1, 2021.* -*Last updated by Villain in Glasses on October 31, 2024 to represent the sheet as of version 3.61.* +*Last updated by Villain in Glasses on November 12, 2024 to represent the sheet as of Version 3.80.* diff --git a/HeroSystem6eHeroic/images/screenshot-01-scaled.png b/HeroSystem6eHeroic/images/screenshot-01-scaled.png index fb7eb12bfe73..e884057d738b 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-01-scaled.png and b/HeroSystem6eHeroic/images/screenshot-01-scaled.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-01.png b/HeroSystem6eHeroic/images/screenshot-01.png index ed8c6410176d..290a75ef8d4e 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-01.png and b/HeroSystem6eHeroic/images/screenshot-01.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-02-scaled.png b/HeroSystem6eHeroic/images/screenshot-02-scaled.png index 51f07da11628..8c8f88a58ca7 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-02-scaled.png and b/HeroSystem6eHeroic/images/screenshot-02-scaled.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-02.png b/HeroSystem6eHeroic/images/screenshot-02.png index cde19115caa5..ef0ae3a56e3d 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-02.png and b/HeroSystem6eHeroic/images/screenshot-02.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-03-scaled.png b/HeroSystem6eHeroic/images/screenshot-03-scaled.png index dd68d915f92c..aa7bba615e32 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-03-scaled.png and b/HeroSystem6eHeroic/images/screenshot-03-scaled.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-03.png b/HeroSystem6eHeroic/images/screenshot-03.png index 685148abe72a..0b53ddbdbb21 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-03.png and b/HeroSystem6eHeroic/images/screenshot-03.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-04-scaled.png b/HeroSystem6eHeroic/images/screenshot-04-scaled.png index 6f30b79055fa..725ae724ac5b 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-04-scaled.png and b/HeroSystem6eHeroic/images/screenshot-04-scaled.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-04.png b/HeroSystem6eHeroic/images/screenshot-04.png index 5d8daebdbb24..bfd1f89f2ee1 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-04.png and b/HeroSystem6eHeroic/images/screenshot-04.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-05-scaled.png b/HeroSystem6eHeroic/images/screenshot-05-scaled.png index 8ff4bdde9a6c..86014c6bc893 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-05-scaled.png and b/HeroSystem6eHeroic/images/screenshot-05-scaled.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-05.png b/HeroSystem6eHeroic/images/screenshot-05.png index 026aaa51d59c..992f3671647a 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-05.png and b/HeroSystem6eHeroic/images/screenshot-05.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-06-scaled.png b/HeroSystem6eHeroic/images/screenshot-06-scaled.png index bc746f0ac13e..31ab585e2eac 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-06-scaled.png and b/HeroSystem6eHeroic/images/screenshot-06-scaled.png differ diff --git a/HeroSystem6eHeroic/images/screenshot-06.png b/HeroSystem6eHeroic/images/screenshot-06.png index be1cdafca435..0b1629b32391 100644 Binary files a/HeroSystem6eHeroic/images/screenshot-06.png and b/HeroSystem6eHeroic/images/screenshot-06.png differ