mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
Updated README with screenshots.
This commit is contained in:
@@ -243,7 +243,7 @@ select {
|
||||
|
||||
.custom-select-propulsion {
|
||||
min-width: 76px;
|
||||
text-align-last: center;
|
||||
text-align-last: left;
|
||||
border: none;
|
||||
background-color: #f4ec7a;
|
||||
border-radius: 0px;
|
||||
@@ -520,14 +520,12 @@ select:focus + .focus {
|
||||
|
||||
/* Style the buttons inside the tab */
|
||||
.tab button {
|
||||
/* background-color: #c6d2f6; */
|
||||
background-color: #b3c3f3;
|
||||
float: left;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
padding: 10px 10px;
|
||||
margin-right: 0px;
|
||||
/* transition: 0.3s; */
|
||||
font-size: 18px;
|
||||
border: none;
|
||||
border-bottom: solid 3px #2e4a9e;
|
||||
@@ -1423,6 +1421,10 @@ select:focus + .focus {
|
||||
}
|
||||
|
||||
.item-characteristics-propulsion-system-more .item-characteristics-propulsion-system-row .custom-select-propulsion {
|
||||
min-width: 90px;
|
||||
}
|
||||
|
||||
.item-characteristics-propulsion-system-more .item-characteristics-propulsion-system-row:nth-child(3) .custom-select-propulsion {
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
@@ -1486,6 +1488,10 @@ select:focus + .focus {
|
||||
min-height: 68px;
|
||||
}
|
||||
|
||||
.item-characteristics-propulsion-system-more .item-characteristics-propulsion-system-row:first-child {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* Show additional modifiers for propulsion systems */
|
||||
.show-primary-propulsion[value="essentials"] ~ div.item-characteristics-propulsion-system-essentials,
|
||||
.show-primary-propulsion[value="more"] ~ div.item-characteristics-propulsion-system-more,
|
||||
|
||||
@@ -429,19 +429,16 @@
|
||||
|
||||
<div class="item-characteristics-propulsion-system-more">
|
||||
<div class="item-characteristics-propulsion-system-row">
|
||||
<div class="subitem-characteristics-system-value">
|
||||
<h2>MPf</h2>
|
||||
<label class="container-checkbox-small">
|
||||
<input type="checkbox" name="attr_primaryPropulsionMPf">
|
||||
<span class="checkmark-small"></span>
|
||||
</label>
|
||||
<div class="custom-select-propulsion">
|
||||
<select name="attr_primaryPropulsionSlotType" title="@{attr_primaryPropulsionSlotType}" tabindex="-1">
|
||||
<option value="single" selected>Single Power</option>
|
||||
<option value="variableSlot">Variable Slot</option>
|
||||
<option value="fixedSlot">Fixed Slot</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="subitem-characteristics-system-value">
|
||||
<h2>MPv</h2>
|
||||
<label class="container-checkbox-small">
|
||||
<input type="checkbox" name="attr_primaryPropulsionMPv">
|
||||
<span class="checkmark-small"></span>
|
||||
</label>
|
||||
<div class="subitem-characteristics-system-cost">
|
||||
<h2>CP</h2>
|
||||
<input type="text" value="0" name="attr_primaryPropulsionCP" readonly tabindex="-1" title="@{primaryPropulsionCP"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-characteristics-propulsion-system-row">
|
||||
@@ -522,19 +519,16 @@
|
||||
|
||||
<div class="item-characteristics-propulsion-system-more">
|
||||
<div class="item-characteristics-propulsion-system-row">
|
||||
<div class="subitem-characteristics-system-value">
|
||||
<h2>MPf</h2>
|
||||
<label class="container-checkbox-small">
|
||||
<input type="checkbox" name="attr_secondaryPropulsionMPf">
|
||||
<span class="checkmark-small"></span>
|
||||
</label>
|
||||
<div class="custom-select-propulsion">
|
||||
<select name="attr_secondaryPropulsionSlotType" title="@{attr_secondaryPropulsionSlotType}" tabindex="-1">
|
||||
<option value="single" selected>Single Power</option>
|
||||
<option value="variableSlot">Variable Slot</option>
|
||||
<option value="fixedSlot">Fixed Slot</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="subitem-characteristics-system-value">
|
||||
<h2>MPv</h2>
|
||||
<label class="container-checkbox-small">
|
||||
<input type="checkbox" name="attr_secondaryPropulsionMPv">
|
||||
<span class="checkmark-small"></span>
|
||||
</label>
|
||||
<div class="subitem-characteristics-system-cost">
|
||||
<h2>CP</h2>
|
||||
<input type="text" value="0" name="attr_secondaryPropulsionCP" readonly tabindex="-1" title="@{secondaryPropulsionCP"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-characteristics-propulsion-system-row">
|
||||
@@ -15644,14 +15638,6 @@
|
||||
<div class="grid-container-tab-options">
|
||||
<div class="item-options">
|
||||
|
||||
<div class="item-options-row">
|
||||
<label class="container-checkbox">
|
||||
<input type="checkbox" name="attr_useVehicleAttributes">
|
||||
<span class="checkmark" title="@{useVehicleAttributes}"></span>
|
||||
</label>
|
||||
<h1>Use Vehicle Attributes</h1>
|
||||
</div>
|
||||
|
||||
<div class="item-options-row">
|
||||
<label class="container-checkbox">
|
||||
<input type="checkbox" name="attr_useCharacteristicMaximums">
|
||||
@@ -15724,6 +15710,14 @@
|
||||
<h1>Carry all Gear Sets</h1>
|
||||
</div>
|
||||
|
||||
<div class="item-options-row">
|
||||
<label class="container-checkbox">
|
||||
<input type="checkbox" name="attr_useVehicleAttributes">
|
||||
<span class="checkmark" title="@{useVehicleAttributes}"></span>
|
||||
</label>
|
||||
<h1>Use Vehicle Attributes</h1>
|
||||
</div>
|
||||
|
||||
<div class="item-thematic-break">
|
||||
</div>
|
||||
|
||||
@@ -18683,8 +18677,8 @@
|
||||
|
||||
|
||||
// Update primary propulsion mode for vehicles.
|
||||
on("change:primaryPropulsionMode change:primaryPropulsion change:primaryPropulsionMod change:primaryNoncombatMultiple change:primaryPropulsionLim change:primaryPropulsionAdv change:weightMovePenalty change:primaryPropulsionMPf change:primaryPropulsionMPv change:primaryPropulsionCostsEND", function() {
|
||||
getAttrs(["primaryPropulsionMode", "primaryPropulsion", "primaryPropulsionMod", "primaryNoncombatMultiple", "primaryPropulsionAdv", "primaryPropulsionLim", "primaryPropulsionMPf", "primaryPropulsionMPv", "primaryPropulsionCostsEND", "weightMovePenalty"], function(values) {
|
||||
on("change:primaryPropulsionMode change:primaryPropulsion change:primaryPropulsionMod change:primaryNoncombatMultiple change:primaryPropulsionLim change:primaryPropulsionAdv change:weightMovePenalty change:primaryPropulsionSlotType change:primaryPropulsionCostsEND", function() {
|
||||
getAttrs(["primaryPropulsionMode", "primaryPropulsion", "primaryPropulsionMod", "primaryNoncombatMultiple", "primaryPropulsionAdv", "primaryPropulsionLim", "primaryPropulsionSlotType", "primaryPropulsionCostsEND", "weightMovePenalty"], function(values) {
|
||||
|
||||
const statValue = Math.max(0, parseInt(values.primaryPropulsion)||0);
|
||||
const statMod = parseInt(values.primaryPropulsionMod)||0;
|
||||
@@ -18693,13 +18687,12 @@
|
||||
const theMode = values.primaryPropulsionMode||"ground";
|
||||
let statNet = 0;
|
||||
let statCP = 0;
|
||||
const advantages = Math.max(0, parseFloat(values.primaryPropulsionAdv)||0);
|
||||
const costsEND = (values.primaryPropulsionCostsEND === "noEND") ? 0 : ((values.primaryPropulsionCostsEND === "costsENDhalf") ? 0.25 : 0.5);
|
||||
const advantages = Math.max(0, parseFloat(values.primaryPropulsionAdv)||0);
|
||||
const limitations = Math.max(0, parseFloat(values.primaryPropulsionLim)||0) + costsEND;
|
||||
let endurance = 0;
|
||||
let netMove = "NA";
|
||||
const isMPv = (values.primaryPropulsionMPv === "on" ) ? true : false;
|
||||
const isMPf = (values.primaryPropulsionMPf === "on" ) ? true : false;
|
||||
const slotType = values.primaryPropulsionSlotType;
|
||||
|
||||
switch (theMode) {
|
||||
case "ground": statNet = Math.max(0, statValue + statMod + penalty);
|
||||
@@ -18735,16 +18728,16 @@
|
||||
|
||||
statCP = heroRoundLow( (1+advantages) * statCP );
|
||||
|
||||
if (costsEND !== 0) {
|
||||
endurance = Math.max(1, heroRoundLow( statCP/((costsEND === 0.25) ? 20 : 10 )));
|
||||
if (costsEND === 0.25) {
|
||||
endurance = Math.max(1, heroRoundLow(statCP/20));
|
||||
} else if (costsEND === 0.5) {
|
||||
endurance = Math.max(1, heroRoundLow(statCP/10));
|
||||
}
|
||||
|
||||
statCP = heroRoundLow( statCP/(1+limitations) );
|
||||
|
||||
if (isMPf) {
|
||||
statCP = Math.max(1, heroRoundLow( statCP/10 ));
|
||||
} else if (isMPv) {
|
||||
statCP = Math.max(1, heroRoundLow( statCP/5 ));
|
||||
if (slotType !== "single") {
|
||||
statCP = (slotType === "variableSlot") ? Math.max(1, heroRoundLow( statCP/5 )) : Math.max(1, heroRoundLow( statCP/10 ));
|
||||
}
|
||||
|
||||
// Update cost and net movement
|
||||
@@ -18761,8 +18754,8 @@
|
||||
|
||||
|
||||
// Update secondary propulsion mode for vehicles.
|
||||
on("change:secondaryPropulsionMode change:secondaryPropulsion change:secondaryPropulsionMod change:secondaryNoncombatMultiple change:secondaryPropulsionAdv change:secondaryPropulsionLim change:primaryPropulsionMPf change:primaryPropulsionMPv change:secondaryPropulsionCostsEND change:weightMovePenalty", function() {
|
||||
getAttrs(["secondaryPropulsionMode", "secondaryPropulsion", "secondaryPropulsionMod", "secondaryNoncombatMultiple", "secondaryPropulsionAdv", "secondaryPropulsionLim", "secondaryPropulsionMPf", "secondaryPropulsionMPv", "secondaryPropulsionCostsEND", "weightMovePenalty"], function(values) {
|
||||
on("change:secondaryPropulsionMode change:secondaryPropulsion change:secondaryPropulsionMod change:secondaryNoncombatMultiple change:secondaryPropulsionAdv change:secondaryPropulsionLim change:secondaryPropulsionSlotType change:secondaryPropulsionCostsEND change:weightMovePenalty", function() {
|
||||
getAttrs(["secondaryPropulsionMode", "secondaryPropulsion", "secondaryPropulsionMod", "secondaryNoncombatMultiple", "secondaryPropulsionAdv", "secondaryPropulsionLim", "secondaryPropulsionSlotType", "secondaryPropulsionCostsEND", "weightMovePenalty"], function(values) {
|
||||
|
||||
const statValue = Math.max(0, parseInt(values.secondaryPropulsion)||0);
|
||||
const statMod = parseInt(values.secondaryPropulsionMod)||0;
|
||||
@@ -18771,13 +18764,12 @@
|
||||
const theMode = values.secondaryPropulsionMode||"ground";
|
||||
let statNet = 0;
|
||||
let statCP = 0;
|
||||
let advantages = Math.max(0, parseFloat(values.secondaryPropulsionAdv)||0);
|
||||
let limitations = Math.max(0, parseFloat(values.secondaryPropulsionLim)||0);
|
||||
let costsEND = (values.secondaryPropulsionCostsEND === "noEND") ? 0 : ((values.secondaryPropulsionCostsEND === "costsENDhalf") ? 0.25 : 0.5);
|
||||
let advantages = Math.max(0, parseFloat(values.secondaryPropulsionAdv)||0);
|
||||
let limitations = Math.max(0, parseFloat(values.secondaryPropulsionLim)||0) + costsEND;
|
||||
let endurance = 0;
|
||||
let netMove = "NA";
|
||||
const isMPv = (values.secondaryPropulsionMPv === "on" ) ? true : false;
|
||||
const isMPf = (values.secondaryPropulsionMPf === "on" ) ? true : false;
|
||||
const slotType = values.secondaryPropulsionSlotType;
|
||||
|
||||
switch (theMode) {
|
||||
case "ground": statNet = Math.max(0, statValue + statMod + penalty);
|
||||
@@ -18813,16 +18805,16 @@
|
||||
|
||||
statCP = heroRoundLow( (1+advantages) * statCP );
|
||||
|
||||
if (costsEND !== 0) {
|
||||
endurance = Math.max(1, heroRoundLow( statCP/((costsEND === 0.25) ? 20 : 10 )));
|
||||
if (costsEND === 0.25) {
|
||||
endurance = Math.max(1, heroRoundLow(statCP/20));
|
||||
} else if (costsEND === 0.5) {
|
||||
endurance = Math.max(1, heroRoundLow(statCP/10));
|
||||
}
|
||||
|
||||
statCP = heroRoundLow( statCP/(1+limitations) );
|
||||
|
||||
if (isMPf) {
|
||||
statCP = Math.max(1, heroRoundLow( statCP/10 ));
|
||||
} else if (isMPv) {
|
||||
statCP = Math.max(1, heroRoundLow( statCP/5 ));
|
||||
if (slotType !== "single") {
|
||||
statCP = (slotType === "variableSlot") ? Math.max(1, heroRoundLow( statCP/5 )) : Math.max(1, heroRoundLow( statCP/10 ));
|
||||
}
|
||||
|
||||
// Update cost and net movement
|
||||
|
||||
@@ -26,6 +26,8 @@ The number of skills (50 general skills, up to 12 combat skills, 9 maneuvers, an
|
||||
|
||||
  [Page 6: Options](#page-6)
|
||||
|
||||
  [Vehicles](#vehicles)
|
||||
|
||||
  [Mod Support](#mods)
|
||||
|
||||
  [Tokens](#tokens)
|
||||
@@ -293,6 +295,24 @@ This option activates or deactivates the line item deletion mode for gear, skill
|
||||
>[!CAUTION]
|
||||
> Use of the Delete Mode may lead to unwanted data loss. Deleted items are not recoverable.
|
||||
|
||||
# <a id="vehicles">Vehicles</a>
|
||||
|
||||

|
||||
|
||||
The "Use Vehicle Attributes" option reconfigures the first page for use with vehicle characters. This option adds the *Size* attribute, which determines secondary characteristics like length, mass, and the OCV bonus to hit the vehicle (*OCV+*). Size also adds to strength, reflected in the strength modifier. Many characteristics like *CON*, *INT*, *EGO*, and *PRE* aren't used for vehicles and are hidden (but not deleted).
|
||||
|
||||
This configuration has four tailored power sections that would commonly used by vehicles: two movement powers (propulsion systems) and two endurance reserves (power systems).
|
||||
|
||||

|
||||
|
||||
Note that HERO System vehicles typically start with 12 m of running and 4 m of swimming. Since most vehicles add modifies to or buyback these attributes, this sheet assumes zero for each and refunds the character 14 points.
|
||||
|
||||

|
||||
|
||||
The primary and auxiliary endurance reserves replace the *END* and *STUN* attributes in the Health Status widget (as *END* and *AUX*). Endurance costs will be subtracted from one of these two attributes, selected by the adjacent radio buttons as shown below.
|
||||
|
||||

|
||||
|
||||
# <a id="mods">Mod Support</a>
|
||||
|
||||
### HERO System 6e Heroic HD Importer
|
||||
@@ -311,7 +331,9 @@ If you would like more flexibility in creating macros you might consider adding
|
||||
|
||||

|
||||
|
||||
Roll20 tokens can display numeric values of three attributes as well as three status bars. Let me suggest the attributes *currentDCV,* *currentBODY,* and *currentEND* these should automatically be coupled with their maximum values. The hidden attribute *currentDCV* is presently equal to the character's DCV + Shield DCV Bonus - DCV Weight Penalty + DCV Modifier.
|
||||
Roll20 tokens can display numeric values of three attributes as well as three status bars. Let me suggest the attributes *CurrentDCV,* *CurrentBODY,* and *CurrentEND* these should automatically be coupled with their maximum values. The hidden attribute *currentDCV* is presently equal to the character's DCV + Shield DCV Bonus - DCV Weight Penalty + DCV Modifier.
|
||||
|
||||
Vehicles do not have *STUN* and don't use the *END* attribute. For vehicles, I suggest using *CurrentPrimaryEND* and *CurrentAuxiliaryEND*, which point to the two vehicle endurance reserves.
|
||||
|
||||

|
||||
|
||||
@@ -341,6 +363,7 @@ During play, add the Turn Token to the Turn Tracker using the "Tracker" button o
|
||||
|
||||
*First version by Villain In Glasses, August 1, 2021.*
|
||||
*Recent updates:*
|
||||
*February 5, 2025 adds vehicle support (Version 4.40).*
|
||||
*January 25, 2025 adds damage type (killing, normal, and power) to the weapon worksheet (Version 4.10).*
|
||||
*January 3, 2025 to represent the sheet as of Version 4.02.*
|
||||
*November 21, 2024 to represent the sheet as of Version 3.81 and updated support in Hero Roller 1.3.0.*
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 8.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 179 KiB |
Reference in New Issue
Block a user