New Character Sheet

Uploaded a new character sheet for Ghosts of Vietnam and deleted the failed version.
This commit is contained in:
GorgonsGrimoireLLC
2026-03-18 12:09:51 -04:00
parent 74b185b9ba
commit 3e5a12f315
7 changed files with 1068 additions and 762 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

@@ -1,280 +0,0 @@
.sheet-gov-sheet{
font-family: serif;
max-width:1100px;
margin:auto;
}
/* GLOBAL INPUT STYLE */
.sheet-gov-sheet input,
.sheet-gov-sheet textarea{
width:100%;
border:none;
background:transparent;
text-align:center;
}
.sheet-gov-sheet textarea{
height:60px;
}
/* TABLE BASE */
.sheet-gov-sheet table{
width:100%;
border-collapse:collapse;
margin-bottom:8px;
}
.sheet-gov-sheet th,
.sheet-gov-sheet td{
border:1px solid #444;
padding:3px;
text-align:center;
}
.sheet-gov-sheet th{
background:#d0d0d0;
font-weight:bold;
}
/* TITLE */
.sheet-title{
font-size:34px;
font-weight:bold;
line-height:1.1;
text-align:center;
}
/* HEADER GRID */
.sheet-header-grid{
display:grid;
grid-template-columns:220px 1fr 300px;
gap:10px;
margin-bottom:8px;
}
.sheet-center-top{
display:flex;
flex-direction:column;
gap:6px;
}
.sheet-right-top{
display:flex;
flex-direction:column;
gap:6px;
}
/* META ROWS */
.sheet-meta-row{
display:grid;
grid-template-columns:2fr 1fr 2fr 1fr 1fr;
gap:6px;
margin-bottom:6px;
}
.sheet-meta-row2{
display:grid;
grid-template-columns:2fr 1fr 2fr;
gap:6px;
margin-bottom:6px;
}
/* DESCRIPTION */
.sheet-description-row{
display:grid;
grid-template-columns:4fr 1fr;
gap:8px;
margin-bottom:10px;
}
/* MAIN BODY */
.sheet-main-body{
display:grid;
grid-template-columns:3fr 1.4fr;
gap:12px;
}
/* LEFT SIDE */
.sheet-left-side{
display:flex;
flex-direction:column;
gap:8px;
}
/* MOVE DEROS RANK */
.sheet-move-deros-rank{
display:grid;
grid-template-columns:1fr 1fr 2fr;
gap:6px;
}
/* ATTRIBUTE TABLE */
.sheet-attr-table th{
font-size:12px;
}
/* SAVING THROWS */
.sheet-saving-table th{
font-size:12px;
}
/* ARMOR TABLE */
.sheet-armor-table{
width:250px;
}
/* RIGHT SIDE */
.sheet-right-side{
display:flex;
flex-direction:column;
gap:10px;
}
/* ATTACK TABLE */
.sheet-attack-table td,
.sheet-attack-table th{
font-size:12px;
}
.sheet-note-cell{
font-size:11px;
}
/* ARMOR CLASS */
.sheet-ac-table textarea{
height:50px;
}
/* WEAPONS FULL WIDTH */
.sheet-weapons-full{
margin-top:10px;
border:1px solid #444;
padding:6px;
}
.sheet-weapons-title{
text-align:center;
font-weight:bold;
margin-bottom:4px;
}
.sheet-weapons-header{
display:grid;
grid-template-columns:3fr 1fr 1fr 1fr 1fr 2fr 1fr 1fr;
font-weight:bold;
border-bottom:1px solid #444;
margin-bottom:4px;
}
.sheet-weapons-row{
display:grid;
grid-template-columns:3fr 1fr 1fr 1fr 1fr 2fr 1fr 1fr;
gap:2px;
margin-bottom:2px;
}
/* PAGE 2 */
.sheet-page2{
margin-top:20px;
}
.sheet-page2-grid{
display:grid;
grid-template-columns:2fr 1.3fr;
gap:20px;
}
/* EQUIPMENT */
.sheet-section-title{
text-align:center;
font-weight:bold;
background:#d0d0d0;
border:1px solid #444;
padding:3px;
}
.sheet-equip-header{
display:grid;
grid-template-columns:3fr 1fr;
border-left:1px solid #444;
border-right:1px solid #444;
border-bottom:1px solid #444;
font-weight:bold;
}
.sheet-equip-row{
display:grid;
grid-template-columns:3fr 1fr;
border-left:1px solid #444;
border-right:1px solid #444;
border-bottom:1px solid #444;
}
.sheet-equip-total{
display:grid;
grid-template-columns:3fr 1fr;
border:1px solid #444;
margin-top:4px;
}
/* NWP */
.sheet-nwp-header{
display:grid;
grid-template-columns:3fr 1fr 1fr 1fr 1fr;
border:1px solid #444;
font-weight:bold;
}
.sheet-nwp-row{
display:grid;
grid-template-columns:3fr 1fr 1fr 1fr 1fr;
border-left:1px solid #444;
border-right:1px solid #444;
border-bottom:1px solid #444;
}
/* WP */
.sheet-wp-title{
margin-top:12px;
}
.sheet-wp-header{
display:grid;
grid-template-columns:3fr 1fr;
border:1px solid #444;
font-weight:bold;
}
.sheet-wp-row{
display:grid;
grid-template-columns:3fr 1fr;
border-left:1px solid #444;
border-right:1px solid #444;
border-bottom:1px solid #444;
}
/* ROGUE TABLE */
.sheet-rogue-table th{
font-size:11px;
}
@@ -1,474 +0,0 @@
<div class="sheet-gov-sheet">
<input type="hidden" name="attr_sheet_type" value="character">
<!-- PAGE 1 -->
<div class="sheet-page1">
<!-- TOP HEADER AREA -->
<div class="sheet-header-grid">
<!-- TITLE -->
<div class="sheet-title-block">
<div class="sheet-title">GHOSTS OF<br>VIETNAM</div>
</div>
<!-- CENTER TOP -->
<div class="sheet-center-top">
<table class="sheet-box-table">
<tr>
<th>Name</th>
</tr>
<tr>
<td><input type="text" name="attr_character_name"></td>
</tr>
</table>
<table class="sheet-box-table">
<tr>
<th>Branch</th>
</tr>
<tr>
<td><input type="text" name="attr_branch"></td>
</tr>
</table>
</div>
<!-- RIGHT TOP -->
<div class="sheet-right-top">
<table class="sheet-box-table">
<tr>
<th>Campaign Max Level</th>
</tr>
<tr>
<td><input type="text" name="attr_campaign_max_level"></td>
</tr>
</table>
<table class="sheet-box-table sheet-hp-table">
<tr>
<th colspan="2">Hit Points</th>
</tr>
<tr>
<th>Current</th>
<th>Maximum</th>
</tr>
<tr>
<td><input type="text" name="attr_hp_current"></td>
<td><input type="text" name="attr_hp_max"></td>
</tr>
</table>
</div>
</div>
<!-- SECOND ROW -->
<div class="sheet-meta-row">
<table class="sheet-box-table"><tr><th>Class (MOS)</th></tr><tr><td><input type="text" name="attr_class_mos"></td></tr></table>
<table class="sheet-box-table"><tr><th>Level</th></tr><tr><td><input type="text" name="attr_level"></td></tr></table>
<table class="sheet-box-table"><tr><th>Nationality</th></tr><tr><td><input type="text" name="attr_nationality"></td></tr></table>
<table class="sheet-box-table"><tr><th>Height</th></tr><tr><td><input type="text" name="attr_height"></td></tr></table>
<table class="sheet-box-table"><tr><th>Weight</th></tr><tr><td><input type="text" name="attr_weight"></td></tr></table>
</div>
<!-- THIRD ROW -->
<div class="sheet-meta-row2">
<table class="sheet-box-table"><tr><th>Alignment</th></tr><tr><td><input type="text" name="attr_alignment"></td></tr></table>
<table class="sheet-box-table"><tr><th>Religion</th></tr><tr><td><input type="text" name="attr_religion"></td></tr></table>
<table class="sheet-box-table"><tr><th>Experience Points</th></tr><tr><td><input type="text" name="attr_experience_points"></td></tr></table>
</div>
<!-- DESCRIPTION ROW -->
<div class="sheet-description-row">
<table class="sheet-box-table sheet-physical-table">
<tr><th>Physical Description</th></tr>
<tr><td><textarea name="attr_physical_description"></textarea></td></tr>
</table>
<table class="sheet-box-table sheet-age-table">
<tr><th>Age</th></tr>
<tr><td><input type="text" name="attr_age"></td></tr>
</table>
</div>
<!-- MAIN BODY -->
<div class="sheet-main-body">
<!-- LEFT SIDE -->
<div class="sheet-left-side">
<!-- MOVEMENT / DEROS / RANK -->
<div class="sheet-move-deros-rank">
<table class="sheet-box-table"><tr><th>Movement</th></tr><tr><td><input type="text" name="attr_movement"></td></tr></table>
<table class="sheet-box-table"><tr><th>DEROS</th></tr><tr><td><input type="text" name="attr_deros"></td></tr></table>
<table class="sheet-box-table"><tr><th>Rank</th></tr><tr><td><input type="text" name="attr_rank"></td></tr></table>
</div>
<!-- ATTRIBUTE MATRIX -->
<table class="sheet-attr-table">
<tr>
<th>Strength</th>
<th>To Hit Bonus</th>
<th>Damage Bonus</th>
<th>Weight Allow</th>
<th>Max Press</th>
<th>Brute Force Entry</th>
<th>Defeat Obstacles</th>
</tr>
<tr>
<td><input type="text" name="attr_strength"></td>
<td><input type="text" name="attr_strength_to_hit_bonus"></td>
<td><input type="text" name="attr_strength_damage_bonus"></td>
<td><input type="text" name="attr_strength_weight_allow"></td>
<td><input type="text" name="attr_strength_max_press"></td>
<td><input type="text" name="attr_strength_brute_force_entry"></td>
<td><input type="text" name="attr_strength_defeat_obstacles"></td>
</tr>
<tr>
<th>Dexterity</th>
<th>Reaction Adj.</th>
<th>Ranged Attack Bonus</th>
<th>Defense Adj.</th>
<th colspan="3"></th>
</tr>
<tr>
<td><input type="text" name="attr_dexterity"></td>
<td><input type="text" name="attr_dexterity_reaction_adj"></td>
<td><input type="text" name="attr_dexterity_ranged_attack_bonus"></td>
<td><input type="text" name="attr_dexterity_defense_adj"></td>
<td colspan="3"></td>
</tr>
<tr>
<th>Constitution</th>
<th>Hit Point Adj.</th>
<th>System Shock</th>
<th>Resurrection Survival</th>
<th>Poison Save Bonus</th>
<th colspan="2"></th>
</tr>
<tr>
<td><input type="text" name="attr_constitution"></td>
<td><input type="text" name="attr_constitution_hit_point_adj"></td>
<td><input type="text" name="attr_constitution_system_shock"></td>
<td><input type="text" name="attr_constitution_resurrection_survival"></td>
<td><input type="text" name="attr_constitution_poison_save_bonus"></td>
<td colspan="2"></td>
</tr>
<tr>
<th>Intelligence</th>
<th># Languages</th>
<th>Technical Knowledge</th>
<th>Shock Adj.</th>
<th colspan="3"></th>
</tr>
<tr>
<td><input type="text" name="attr_intelligence"></td>
<td><input type="text" name="attr_intelligence_languages"></td>
<td><input type="text" name="attr_intelligence_technical_knowledge"></td>
<td><input type="text" name="attr_intelligence_shock_adj"></td>
<td colspan="3"></td>
</tr>
<tr>
<th>Wisdom</th>
<th>Resolve Adj.</th>
<th colspan="5"></th>
</tr>
<tr>
<td><input type="text" name="attr_wisdom"></td>
<td><input type="text" name="attr_wisdom_resolve_adj"></td>
<td colspan="5"></td>
</tr>
<tr>
<th>Charisma</th>
<th>Max Henchmen</th>
<th>Loyalty Adj.</th>
<th>Reaction Adj.</th>
<th colspan="3"></th>
</tr>
<tr>
<td><input type="text" name="attr_charisma"></td>
<td><input type="text" name="attr_charisma_max_henchmen"></td>
<td><input type="text" name="attr_charisma_loyalty_adj"></td>
<td><input type="text" name="attr_charisma_reaction_adj"></td>
<td colspan="3"></td>
</tr>
<tr>
<th>Appearance</th>
<th>Reaction Adj.</th>
<th colspan="5"></th>
</tr>
<tr>
<td><input type="text" name="attr_appearance"></td>
<td><input type="text" name="attr_appearance_reaction_adj"></td>
<td colspan="5"></td>
</tr>
</table>
<!-- SAVING THROWS -->
<table class="sheet-saving-table">
<tr>
<th colspan="7">Saving Throws</th>
</tr>
<tr>
<th>Paralyzation</th>
<th>Poison</th>
<th>Death</th>
<th>Shock</th>
<th>Transformation</th>
<th>Evasion</th>
<th>Resolve</th>
</tr>
<tr>
<td><input type="text" name="attr_save_paralyzation"></td>
<td><input type="text" name="attr_save_poison"></td>
<td><input type="text" name="attr_save_death"></td>
<td><input type="text" name="attr_save_shock"></td>
<td><input type="text" name="attr_save_transformation"></td>
<td><input type="text" name="attr_save_evasion"></td>
<td><input type="text" name="attr_save_resolve"></td>
</tr>
</table>
<!-- ARMOR -->
<table class="sheet-armor-table">
<tr>
<th>Armor</th>
<th>AC</th>
</tr>
<tr>
<td><input type="text" name="attr_armor_1"></td>
<td><input type="text" name="attr_armor_1_ac"></td>
</tr>
<tr>
<td><input type="text" name="attr_armor_2"></td>
<td><input type="text" name="attr_armor_2_ac"></td>
</tr>
</table>
</div>
<!-- RIGHT SIDE -->
<div class="sheet-right-side">
<!-- ATTACK TABLE -->
<table class="sheet-attack-table">
<tr>
<th colspan="4">Attack Table</th>
</tr>
<tr>
<th>Melee</th>
<th>THAC0</th>
<th>Ranged</th>
<th></th>
</tr>
<tr>
<td><input type="text" name="attr_attack_melee"></td>
<td><input type="text" name="attr_thaco"></td>
<td><input type="text" name="attr_attack_ranged"></td>
<td></td>
</tr>
<tr>
<th>AC</th>
<th>To Hit</th>
<th>AC</th>
<th>To Hit</th>
</tr>
<tr><td>1</td><td><input type="text" name="attr_to_hit_ac_1"></td><td>-1</td><td><input type="text" name="attr_to_hit_ac_neg1"></td></tr>
<tr><td>2</td><td><input type="text" name="attr_to_hit_ac_2"></td><td>-2</td><td><input type="text" name="attr_to_hit_ac_neg2"></td></tr>
<tr><td>3</td><td><input type="text" name="attr_to_hit_ac_3"></td><td>-3</td><td><input type="text" name="attr_to_hit_ac_neg3"></td></tr>
<tr><td>4</td><td><input type="text" name="attr_to_hit_ac_4"></td><td>-4</td><td><input type="text" name="attr_to_hit_ac_neg4"></td></tr>
<tr><td>5</td><td><input type="text" name="attr_to_hit_ac_5"></td><td>-5</td><td><input type="text" name="attr_to_hit_ac_neg5"></td></tr>
<tr><td>6</td><td><input type="text" name="attr_to_hit_ac_6"></td><td>-6</td><td><input type="text" name="attr_to_hit_ac_neg6"></td></tr>
<tr><td>7</td><td><input type="text" name="attr_to_hit_ac_7"></td><td>-7</td><td><input type="text" name="attr_to_hit_ac_neg7"></td></tr>
<tr><td>8</td><td><input type="text" name="attr_to_hit_ac_8"></td><td>-8</td><td><input type="text" name="attr_to_hit_ac_neg8"></td></tr>
<tr><td>9</td><td><input type="text" name="attr_to_hit_ac_9"></td><td>-9</td><td><input type="text" name="attr_to_hit_ac_neg9"></td></tr>
<tr><td>10</td><td><input type="text" name="attr_to_hit_ac_10"></td><td>-10</td><td><input type="text" name="attr_to_hit_ac_neg10"></td></tr>
<tr>
<td colspan="4" class="sheet-note-cell">Attack success requires an equal to or above roll to hit.</td>
</tr>
</table>
<!-- ARMOR CLASS -->
<table class="sheet-ac-table">
<tr><th colspan="3">Armor Class</th></tr>
<tr><th colspan="3">Armored</th></tr>
<tr><td colspan="3"><input type="text" name="attr_ac_armored"></td></tr>
<tr>
<th>Surprised</th>
<th>Natural</th>
<th>Rear</th>
</tr>
<tr>
<td><input type="text" name="attr_ac_surprised"></td>
<td><input type="text" name="attr_ac_natural"></td>
<td><input type="text" name="attr_ac_rear"></td>
</tr>
<tr><th colspan="3">Other Defenses</th></tr>
<tr><td colspan="3"><textarea name="attr_other_defenses"></textarea></td></tr>
</table>
</div>
</div>
<!-- WEAPONS FULL WIDTH -->
<div class="sheet-weapons-full">
<div class="sheet-weapons-title">Weapons</div>
<div class="sheet-weapons-header">
<span>Weapon</span>
<span># Attacks</span>
<span>ROF</span>
<span>Att Adj.</span>
<span>Dmg Adj.</span>
<span>Ranges</span>
<span>Damage</span>
<span>Mag.</span>
</div>
<fieldset class="repeating_weapons">
<div class="sheet-weapons-row">
<input type="text" name="attr_weapon_name">
<input type="text" name="attr_weapon_attacks">
<input type="text" name="attr_weapon_rof">
<input type="text" name="attr_weapon_att_adj">
<input type="text" name="attr_weapon_dmg_adj">
<input type="text" name="attr_weapon_ranges">
<input type="text" name="attr_weapon_damage">
<input type="text" name="attr_weapon_mag">
</div>
</fieldset>
</div>
</div>
<!-- PAGE 2 -->
<div class="sheet-page2">
<div class="sheet-page2-grid">
<!-- LEFT PAGE 2 -->
<div class="sheet-page2-left">
<div class="sheet-section-title">Carried Equipment</div>
<div class="sheet-equip-header">
<span>Carried Item</span>
<span>Weight</span>
</div>
<fieldset class="repeating_equipment">
<div class="sheet-equip-row">
<input type="text" name="attr_item_name">
<input type="number" name="attr_item_weight" value="0" step="0.01">
</div>
</fieldset>
<div class="sheet-equip-total">
<span>Total Weight</span>
<input type="number" name="attr_total_weight" value="0" step="0.01">
</div>
<table class="sheet-box-table sheet-wealth-table">
<tr>
<th>Wealth</th>
<td><input type="text" name="attr_wealth"></td>
</tr>
</table>
<table class="sheet-rogue-table">
<tr><th colspan="8">Rogue Abilities</th></tr>
<tr>
<th>Pick Pockets</th>
<th>Open Locks</th>
<th>Find/Remove Traps</th>
<th>Move Silently</th>
<th>Hide in Shadows</th>
<th>Detect Noise</th>
<th>Climb Walls</th>
<th>Read Languages</th>
</tr>
<tr>
<td><input type="text" name="attr_rogue_pick_pockets"></td>
<td><input type="text" name="attr_rogue_open_locks"></td>
<td><input type="text" name="attr_rogue_find_remove_traps"></td>
<td><input type="text" name="attr_rogue_move_silently"></td>
<td><input type="text" name="attr_rogue_hide_in_shadows"></td>
<td><input type="text" name="attr_rogue_detect_noise"></td>
<td><input type="text" name="attr_rogue_climb_walls"></td>
<td><input type="text" name="attr_rogue_read_languages"></td>
</tr>
</table>
</div>
<!-- RIGHT PAGE 2 -->
<div class="sheet-page2-right">
<div class="sheet-section-title">Nonweapon Proficiencies</div>
<div class="sheet-nwp-header">
<span>Name</span>
<span>Ability</span>
<span>Mod</span>
<span>Slots</span>
<span>Roll</span>
</div>
<fieldset class="repeating_nwp">
<div class="sheet-nwp-row">
<input type="text" name="attr_nwp_name">
<input type="text" name="attr_nwp_ability">
<input type="text" name="attr_nwp_mod">
<input type="text" name="attr_nwp_slots">
<input type="text" name="attr_nwp_roll">
</div>
</fieldset>
<div class="sheet-section-title sheet-wp-title">Weapon Proficiencies</div>
<div class="sheet-wp-header">
<span>Weapon Name</span>
<span>Slots</span>
</div>
<fieldset class="repeating_wp">
<div class="sheet-wp-row">
<input type="text" name="attr_wp_name">
<input type="text" name="attr_wp_slots">
</div>
</fieldset>
</div>
</div>
</div>
</div>
<script type="text/worker">
const updateEquipmentWeight = () => {
getSectionIDs("repeating_equipment", function(ids) {
let fields = [];
let total = 0;
ids.forEach(id => {
fields.push(`repeating_equipment_${id}_item_weight`);
});
getAttrs(fields, function(values) {
ids.forEach(id => {
let weight = parseFloat(values[`repeating_equipment_${id}_item_weight`]) || 0;
total += weight;
});
setAttrs({
total_weight: total
});
});
});
};
on("change:repeating_equipment sheet:opened remove:repeating_equipment", updateEquipmentWeight);
</script>
@@ -0,0 +1,410 @@
.sheet-gvn {
font-family: "Times New Roman", Georgia, serif;
font-size: 12px;
max-width: 1200px;
margin: 0 auto;
background: #f7f7f7;
color: #000;
}
.sheet-gvn,
.sheet-gvn *,
.sheet-gvn *:before,
.sheet-gvn *:after {
box-sizing: border-box;
color: #000 !important;
}
/* BASE INPUTS */
.sheet-gvn input,
.sheet-gvn textarea,
.sheet-gvn select {
font-family: inherit;
font-size: 12px;
line-height: 1.2;
}
.sheet-gvn input:not([type="checkbox"]),
.sheet-gvn textarea,
.sheet-gvn select {
width: 100%;
max-width: 100%;
border: 1px solid #666;
background: #fff;
padding: 2px 4px;
}
.sheet-gvn textarea {
resize: vertical;
min-height: 60px;
}
.sheet-gvn label {
display: block;
font-weight: bold;
text-align: center;
margin-bottom: 2px;
font-size: 11px;
}
/* TITLES */
.sheet-title {
text-align: center;
font-size: 28px;
font-weight: bold;
margin: 6px 0 10px 0;
}
.sheet-subtitle {
text-align: center;
font-size: 18px;
font-weight: bold;
margin-bottom: 6px;
}
/* TABS */
.sheet-tabbar {
display: flex;
gap: 4px;
margin-bottom: 10px;
}
.sheet-tab-button {
flex: 1;
border: 2px solid #444;
background: #d8d8d8;
font-weight: bold;
padding: 5px;
cursor: pointer;
}
.sheet-tab {
display: none;
}
.sheet-gvn input[name="attr_sheetTab"][value="core"] ~ .sheet-core {
display: block;
}
.sheet-gvn input[name="attr_sheetTab"][value="equipment"] ~ .sheet-equipment {
display: block;
}
.sheet-gvn input[name="attr_sheetTab"][value="proficiencies"] ~ .sheet-proficiencies {
display: block;
}
.sheet-gvn input[name="attr_sheetTab"][value="command"] ~ .sheet-command {
display: block;
}
.sheet-gvn input[name="attr_sheetTab"][value="notes"] ~ .sheet-notes {
display: block;
}
/* SECTIONS */
.sheet-section {
border: 2px solid #444;
background: #ececec;
padding: 6px;
margin-bottom: 10px;
}
/* GRID SYSTEM */
.sheet-grid {
display: grid;
gap: 5px;
align-items: start;
}
.sheet-grid-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sheet-grid-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sheet-grid-4 {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.sheet-grid-5 {
grid-template-columns: repeat(5, minmax(0, 1fr));
}
.sheet-grid-6 {
grid-template-columns: repeat(6, minmax(0, 1fr));
}
.sheet-grid-7 {
grid-template-columns: repeat(7, minmax(0, 1fr));
}
.sheet-grid-10 {
grid-template-columns: repeat(10, minmax(0, 1fr));
}
.sheet-grid-gov-weapons {
grid-template-columns: minmax(0, 2fr) minmax(0, .6fr) minmax(0, .6fr) minmax(0, .8fr) minmax(0, .8fr) minmax(0, 1fr) minmax(0, .8fr) minmax(0, .6fr);
}
.sheet-grid-armor {
grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
}
/* ALIGNMENT IN GRID AREAS */
.sheet-grid input:not([type="checkbox"]),
.sheet-grid select {
text-align: center;
}
/* HEADER ROWS */
.sheet-mount-header {
font-weight: bold;
text-align: center;
border-bottom: 1px solid #555;
padding-bottom: 2px;
}
.sheet-mount-header div {
font-size: 11px;
}
/* TWO COLUMN CORE LAYOUT */
.sheet-two-col {
display: grid;
grid-template-columns: minmax(0, 2.15fr) minmax(280px, 1fr);
gap: 10px;
align-items: start;
}
.sheet-maincol,
.sheet-sidecol {
min-width: 0;
}
.sheet-sidecol {
display: flex;
flex-direction: column;
gap: 10px;
}
.sheet-fullwidth {
width: 100%;
}
/* HP BOX */
.sheet-hp-box {
border: 2px solid #444;
background: #f4f4f4;
padding: 5px;
}
.sheet-hp-box input:not([type="checkbox"]) {
text-align: center;
font-size: 13px;
}
/* TABLES */
.sheet-table {
width: 100%;
border-collapse: collapse;
table-layout: fixed;
background: #fdfdfd;
}
.sheet-table th,
.sheet-table td {
border: 1px solid #555;
padding: 2px;
text-align: center;
vertical-align: middle;
}
.sheet-table th {
background: #d9d9d9;
font-weight: bold;
font-size: 11px;
}
.sheet-table input:not([type="checkbox"]) {
width: 100%;
max-width: 100%;
border: none;
background: transparent;
text-align: center;
padding: 1px 2px;
font-size: 11px;
}
/* RIGHT PANEL */
.sheet-sidecol .sheet-grid-3 {
align-items: end;
}
.sheet-sidecol .sheet-grid-3 > div,
.sheet-sidecol .sheet-grid-2 > div {
min-width: 0;
}
.sheet-sidecol .sheet-grid-3 input:not([type="checkbox"]) {
width: 58px;
max-width: 100%;
margin: 0 auto;
display: block;
padding: 2px 3px;
}
.sheet-sidecol .sheet-grid-2 input:not([type="checkbox"]) {
width: 90px;
max-width: 100%;
margin: 0 auto;
display: block;
padding: 2px 3px;
}
.sheet-sidecol .sheet-table {
font-size: 11px;
}
.sheet-sidecol .sheet-table td {
padding: 1px 2px;
}
.sheet-sidecol .sheet-table input:not([type="checkbox"]) {
width: 44px;
max-width: 100%;
margin: 0 auto;
display: block;
padding: 1px 2px;
font-size: 11px;
}
.sheet-gvn textarea[name="attr_other_defenses"] {
min-height: 100px;
max-height: 100px;
}
/* WEAPONS SECTION */
.sheet-grid-gov-weapons {
gap: 4px;
}
.sheet-grid-gov-weapons input:not([type="checkbox"]) {
width: 100%;
max-width: 100%;
min-width: 0;
padding: 2px 3px;
font-size: 11px;
}
/* ROGUE ABILITIES */
.sheet-grid-10 {
gap: 4px;
}
.sheet-grid-10 > div,
.sheet-grid-7 > div {
min-width: 0;
}
.sheet-grid-10 label {
font-size: 10px;
}
.sheet-grid-10 input:not([type="checkbox"]),
.sheet-grid-10 select {
width: 100%;
max-width: 100%;
min-width: 0;
padding: 2px 3px;
font-size: 10px;
}
.sheet-grid-10 input[type="checkbox"] {
width: auto;
display: block;
margin: 0 auto;
}
/* SAVING THROWS */
.sheet-grid-7 {
gap: 4px;
}
.sheet-grid-7 input:not([type="checkbox"]) {
width: 100%;
max-width: 100%;
min-width: 0;
padding: 2px 3px;
font-size: 11px;
text-align: center;
}
/* REPEATING CONTROLS */
.repcontrol {
margin-top: 4px;
}
.repcontrol .btn {
border: 1px solid #444;
background: #d8d8d8;
font-size: 10px;
font-weight: bold;
padding: 2px 6px;
}
.repcontainer .repitem {
border-bottom: 1px solid #bbb;
padding-bottom: 4px;
margin-bottom: 4px;
}
/* NOTES */
.sheet-notes-area {
min-height: 500px;
}
/* MOBILE */
@media screen and (max-width: 1000px) {
.sheet-two-col {
grid-template-columns: 1fr;
}
.sheet-grid,
.sheet-grid-10,
.sheet-grid-7,
.sheet-grid-6,
.sheet-grid-5,
.sheet-grid-4,
.sheet-grid-3,
.sheet-grid-2,
.sheet-grid-gov-weapons,
.sheet-grid-armor {
grid-template-columns: 1fr;
}
.sheet-sidecol .sheet-grid-3 input:not([type="checkbox"]),
.sheet-sidecol .sheet-grid-2 input:not([type="checkbox"]),
.sheet-sidecol .sheet-table input:not([type="checkbox"]) {
width: 100%;
}
}
@@ -0,0 +1,658 @@
<div class="sheet-gvn">
<input type="hidden" name="attr_sheetTab" value="core">
<div class="sheet-tabbar">
<button type="action" name="act_core" class="sheet-tab-button">Core</button>
<button type="action" name="act_equipment" class="sheet-tab-button">Equipment</button>
<button type="action" name="act_proficiencies" class="sheet-tab-button">Proficiencies</button>
<button type="action" name="act_command" class="sheet-tab-button">Command Authority/Field Protocols</button>
<button type="action" name="act_notes" class="sheet-tab-button">Notes</button>
</div>
<!-- CORE TAB -->
<div class="sheet-tab sheet-core">
<div class="sheet-title">Ghosts of Vietnam</div>
<!-- HEADER -->
<div class="sheet-section">
<div class="sheet-grid sheet-grid-3">
<div class="sheet-field">
<label>Name</label>
<input type="text" name="attr_character_name">
</div>
<div class="sheet-field">
<label>Branch</label>
<input type="text" name="attr_branch">
</div>
<div class="sheet-field">
<label>Campaign Max Level</label>
<input type="text" name="attr_campaign_max_level">
</div>
</div>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field sheet-hp-box">
<label>Hit Points</label>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>Current</label>
<input type="text" name="attr_hp_current">
</div>
<div class="sheet-field">
<label>Maximum</label>
<input type="text" name="attr_hp_max">
</div>
</div>
</div>
<div class="sheet-field">
<label>Experience Points</label>
<input type="text" name="attr_experience_points">
</div>
</div>
<div class="sheet-grid sheet-grid-6">
<div class="sheet-field">
<label>Class (MOS)</label>
<input type="text" name="attr_class_mos">
</div>
<div class="sheet-field">
<label>Level</label>
<input type="text" name="attr_level">
</div>
<div class="sheet-field">
<label>Nationality</label>
<input type="text" name="attr_nationality">
</div>
<div class="sheet-field">
<label>Height</label>
<input type="text" name="attr_height">
</div>
<div class="sheet-field">
<label>Weight</label>
<input type="text" name="attr_weight">
</div>
<div class="sheet-field">
<label>Age</label>
<input type="text" name="attr_age">
</div>
</div>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>Alignment</label>
<input type="text" name="attr_alignment">
</div>
<div class="sheet-field">
<label>Religion</label>
<input type="text" name="attr_religion">
</div>
</div>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>DEROS</label>
<input type="text" name="attr_deros">
</div>
<div class="sheet-field">
<label>Rank</label>
<input type="text" name="attr_rank">
</div>
</div>
<div class="sheet-field">
<label>Movement</label>
<input type="text" name="attr_movement">
</div>
<div class="sheet-field">
<label>Physical Description</label>
<textarea name="attr_physical_description"></textarea>
</div>
</div>
<!-- MAIN + RIGHT PANEL -->
<div class="sheet-two-col">
<!-- LEFT -->
<div class="sheet-maincol">
<div class="sheet-section">
<div class="sheet-subtitle">Ability Scores</div>
<table class="sheet-table">
<tr>
<th>Strength</th>
<th>To Hit Bonus</th>
<th>Damage Bonus</th>
<th>Weight Allow</th>
<th>Max Press</th>
<th>Brute Force Entry</th>
<th>Defeat Obstacles</th>
</tr>
<tr>
<td><input type="text" name="attr_strength"></td>
<td><input type="text" name="attr_str_to_hit_bonus"></td>
<td><input type="text" name="attr_str_damage_bonus"></td>
<td><input type="text" name="attr_str_weight_allowance"></td>
<td><input type="text" name="attr_str_max_press"></td>
<td><input type="text" name="attr_str_brute_force_entry"></td>
<td><input type="text" name="attr_str_defeat_obstacles"></td>
</tr>
<tr>
<th>Dexterity</th>
<th>Reaction Adj.</th>
<th>Ranged Attack Bonus</th>
<th>Defense Adj.</th>
<th colspan="3"></th>
</tr>
<tr>
<td><input type="text" name="attr_dexterity"></td>
<td><input type="text" name="attr_dex_reaction_adjustment"></td>
<td><input type="text" name="attr_dex_ranged_attack_bonus"></td>
<td><input type="text" name="attr_dex_defense_adjustment"></td>
<td colspan="3"></td>
</tr>
<tr>
<th>Constitution</th>
<th>Hit Point Adj.</th>
<th>System Shock</th>
<th>Resurrection Survival</th>
<th>Poison Save Bonus</th>
<th colspan="2"></th>
</tr>
<tr>
<td><input type="text" name="attr_constitution"></td>
<td><input type="text" name="attr_con_hit_point_adjustment"></td>
<td><input type="text" name="attr_con_system_shock"></td>
<td><input type="text" name="attr_con_resurrection_survival"></td>
<td><input type="text" name="attr_con_poison_save_bonus"></td>
<td colspan="2"></td>
</tr>
<tr>
<th>Intelligence</th>
<th># Languages</th>
<th>Technical Knowledge</th>
<th>Shock Adj.</th>
<th colspan="3"></th>
</tr>
<tr>
<td><input type="text" name="attr_intelligence"></td>
<td><input type="text" name="attr_int_languages"></td>
<td><input type="text" name="attr_int_technical_knowledge"></td>
<td><input type="text" name="attr_int_shock_adjustment"></td>
<td colspan="3"></td>
</tr>
<tr>
<th>Wisdom</th>
<th>Resolve Adj.</th>
<th colspan="5"></th>
</tr>
<tr>
<td><input type="text" name="attr_wisdom"></td>
<td><input type="text" name="attr_wis_resolve_adjustment"></td>
<td colspan="5"></td>
</tr>
<tr>
<th>Charisma</th>
<th>Max Henchmen</th>
<th>Loyalty Adj.</th>
<th>Reaction Adj.</th>
<th colspan="3"></th>
</tr>
<tr>
<td><input type="text" name="attr_charisma"></td>
<td><input type="text" name="attr_cha_max_henchmen"></td>
<td><input type="text" name="attr_cha_loyalty_adjustment"></td>
<td><input type="text" name="attr_cha_reaction_adjustment"></td>
<td colspan="3"></td>
</tr>
<tr>
<th>Appearance</th>
<th>Reaction Adj.</th>
<th colspan="5"></th>
</tr>
<tr>
<td><input type="text" name="attr_appearance"></td>
<td><input type="text" name="attr_app_reaction_adjustment"></td>
<td colspan="5"></td>
</tr>
</table>
</div>
<div class="sheet-section">
<div class="sheet-subtitle">Armor</div>
<div class="sheet-grid sheet-grid-armor sheet-mount-header">
<div>Armor</div>
<div>AC</div>
</div>
<fieldset class="repeating_armor">
<div class="sheet-grid sheet-grid-armor">
<input type="text" name="attr_armor_name">
<input type="text" name="attr_armor_ac">
</div>
</fieldset>
</div>
</div>
<!-- RIGHT SIDE -->
<div class="sheet-sidecol">
<div class="sheet-section">
<div class="sheet-subtitle">Attack Table</div>
<div class="sheet-grid sheet-grid-3">
<div class="sheet-field">
<label>Melee</label>
<input type="text" name="attr_attack_table_melee">
</div>
<div class="sheet-field">
<label>THAC0</label>
<input type="text" name="attr_attack_table_thaco">
</div>
<div class="sheet-field">
<label>Ranged</label>
<input type="text" name="attr_attack_table_ranged">
</div>
</div>
<div class="sheet-attack-grid">
<div class="sheet-attack-col">
<div class="sheet-field"><label>AC 1</label><input type="text" name="attr_to_hit_ac_1"></div>
<div class="sheet-field"><label>AC 2</label><input type="text" name="attr_to_hit_ac_2"></div>
<div class="sheet-field"><label>AC 3</label><input type="text" name="attr_to_hit_ac_3"></div>
<div class="sheet-field"><label>AC 4</label><input type="text" name="attr_to_hit_ac_4"></div>
<div class="sheet-field"><label>AC 5</label><input type="text" name="attr_to_hit_ac_5"></div>
<div class="sheet-field"><label>AC 6</label><input type="text" name="attr_to_hit_ac_6"></div>
<div class="sheet-field"><label>AC 7</label><input type="text" name="attr_to_hit_ac_7"></div>
<div class="sheet-field"><label>AC 8</label><input type="text" name="attr_to_hit_ac_8"></div>
<div class="sheet-field"><label>AC 9</label><input type="text" name="attr_to_hit_ac_9"></div>
<div class="sheet-field"><label>AC 10</label><input type="text" name="attr_to_hit_ac_10"></div>
</div>
<div class="sheet-attack-col">
<div class="sheet-field"><label>AC -1</label><input type="text" name="attr_to_hit_ac_neg1"></div>
<div class="sheet-field"><label>AC -2</label><input type="text" name="attr_to_hit_ac_neg2"></div>
<div class="sheet-field"><label>AC -3</label><input type="text" name="attr_to_hit_ac_neg3"></div>
<div class="sheet-field"><label>AC -4</label><input type="text" name="attr_to_hit_ac_neg4"></div>
<div class="sheet-field"><label>AC -5</label><input type="text" name="attr_to_hit_ac_neg5"></div>
<div class="sheet-field"><label>AC -6</label><input type="text" name="attr_to_hit_ac_neg6"></div>
<div class="sheet-field"><label>AC -7</label><input type="text" name="attr_to_hit_ac_neg7"></div>
<div class="sheet-field"><label>AC -8</label><input type="text" name="attr_to_hit_ac_neg8"></div>
<div class="sheet-field"><label>AC -9</label><input type="text" name="attr_to_hit_ac_neg9"></div>
<div class="sheet-field"><label>AC -10</label><input type="text" name="attr_to_hit_ac_neg10"></div>
</div>
</div>
<div class="sheet-help">Attack success requires an equal to or above roll to hit.</div>
</div>
<div class="sheet-section">
<div class="sheet-subtitle">Armor Class</div>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>Natural</label>
<input type="text" name="attr_ac_natural">
</div>
<div class="sheet-field">
<label>Armored</label>
<input type="text" name="attr_ac_armored">
</div>
<div class="sheet-field">
<label>Surprised</label>
<input type="text" name="attr_ac_surprised">
</div>
<div class="sheet-field">
<label>Rear</label>
<input type="text" name="attr_ac_rear">
</div>
</div>
<div class="sheet-field">
<label>Other Defenses</label>
<textarea name="attr_other_defenses"></textarea>
</div>
</div>
</div>
</div>
<!-- WEAPONS -->
<div class="sheet-section sheet-fullwidth">
<div class="sheet-subtitle">Weapons</div>
<div class="sheet-grid sheet-grid-gov-weapons sheet-mount-header">
<div>Weapon</div>
<div>#</div>
<div>ROF</div>
<div>Att</div>
<div>Dmg</div>
<div>Range</div>
<div>Damage</div>
<div>Mag</div>
</div>
<fieldset class="repeating_weapons">
<div class="sheet-grid sheet-grid-gov-weapons">
<input type="text" name="attr_weapon">
<input type="text" name="attr_attacks_num">
<input type="text" name="attr_rof">
<input type="text" name="attr_attack_adjustment">
<input type="text" name="attr_damage_adjustment">
<input type="text" name="attr_ranges">
<input type="text" name="attr_damage">
<input type="text" name="attr_magazine">
</div>
</fieldset>
</div>
<!-- ROGUE -->
<div class="sheet-section sheet-fullwidth">
<div class="sheet-subtitle">Rogue Abilities</div>
<div class="sheet-grid sheet-grid-10 sheet-mount-header">
<div>Pick Pockets</div>
<div>Open Locks</div>
<div>Find/Remove Traps</div>
<div>Move Silently</div>
<div>Hide in Shadows</div>
<div>Detect Noise</div>
<div>Climb Walls</div>
<div>Read Languages</div>
<div>Dual Wield</div>
<div>Kill Shot</div>
</div>
<div class="sheet-grid sheet-grid-10">
<input type="text" name="attr_rogue_pick_pockets">
<input type="text" name="attr_rogue_open_locks">
<input type="text" name="attr_rogue_find_remove_traps">
<input type="text" name="attr_rogue_move_silently">
<input type="text" name="attr_rogue_hide_in_shadows">
<input type="text" name="attr_rogue_detect_noise">
<input type="text" name="attr_rogue_climb_walls">
<input type="text" name="attr_rogue_read_languages">
<input type="checkbox" name="attr_dual_wield">
<select name="attr_kill_shot">
<option value=""></option>
<option value="x2">x2</option>
<option value="x3">x3</option>
<option value="x4">x4</option>
<option value="x5">x5</option>
</select>
</div>
</div>
<!-- SAVING THROWS -->
<div class="sheet-section sheet-fullwidth">
<div class="sheet-subtitle">Saving Throws</div>
<div class="sheet-grid sheet-grid-7 sheet-mount-header">
<div>Paralyzation</div>
<div>Poison</div>
<div>Death</div>
<div>Shock</div>
<div>Transformation</div>
<div>Evasion</div>
<div>Resolve</div>
</div>
<div class="sheet-grid sheet-grid-7">
<input type="text" name="attr_save_paralyzation">
<input type="text" name="attr_save_poison">
<input type="text" name="attr_save_death">
<input type="text" name="attr_save_shock">
<input type="text" name="attr_save_transformation">
<input type="text" name="attr_save_evasion">
<input type="text" name="attr_save_resolve">
</div>
</div>
</div>
<!-- EQUIPMENT TAB -->
<div class="sheet-tab sheet-equipment">
<div class="sheet-section">
<div class="sheet-subtitle">Carried Equipment</div>
<div class="sheet-grid sheet-grid-equipment-gov sheet-mount-header">
<div>Carried Item</div>
<div>Weight</div>
</div>
<fieldset class="repeating_equipment">
<div class="sheet-grid sheet-grid-equipment-gov">
<input type="text" name="attr_carried_item">
<input type="text" name="attr_item_weight">
</div>
</fieldset>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>Total Weight</label>
<input type="text" name="attr_total_weight" readonly>
</div>
<div class="sheet-field">
<label>Wealth</label>
<input type="text" name="attr_wealth">
</div>
</div>
</div>
</div>
<!-- PROFICIENCIES TAB -->
<div class="sheet-tab sheet-proficiencies">
<div class="sheet-two-col">
<div class="sheet-maincol">
<div class="sheet-section">
<div class="sheet-subtitle">Nonweapon Proficiencies</div>
<div class="sheet-grid sheet-grid-nwp sheet-mount-header">
<div>Name</div>
<div>Ability</div>
<div>Mod</div>
<div>Slots</div>
<div>Roll</div>
</div>
<fieldset class="repeating_nwp">
<div class="sheet-grid sheet-grid-nwp">
<input type="text" name="attr_nwp_name">
<input type="text" name="attr_nwp_ability">
<input type="text" name="attr_nwp_mod">
<input type="text" name="attr_nwp_slots">
<input type="text" name="attr_nwp_roll">
</div>
</fieldset>
</div>
</div>
<div class="sheet-sidecol">
<div class="sheet-section">
<div class="sheet-subtitle">Weapon Proficiencies</div>
<div class="sheet-grid sheet-grid-wp sheet-mount-header">
<div>Weapon Name</div>
<div>Slots</div>
</div>
<fieldset class="repeating_wp">
<div class="sheet-grid sheet-grid-wp">
<input type="text" name="attr_wp_weapon_name">
<input type="text" name="attr_wp_slots">
</div>
</fieldset>
</div>
</div>
</div>
</div>
<!-- COMMAND TAB -->
<div class="sheet-tab sheet-command">
<div class="sheet-section">
<div class="sheet-subtitle">Command Authority/Field Protocols</div>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>Clearance Level</label>
<input type="text" name="attr_command_clearance_level">
</div>
<div class="sheet-field">
<label>Daily Slots Available</label>
<input type="text" name="attr_command_daily_slots">
</div>
</div>
<div class="sheet-grid sheet-grid-2">
<div class="sheet-field">
<label>Routine Clearance / Basic Issue</label>
<input type="text" name="attr_command_routine_basic">
</div>
<div class="sheet-field">
<label>Priority / Section Allocation</label>
<input type="text" name="attr_command_priority_section">
</div>
<div class="sheet-field">
<label>Immediate / Command Directive</label>
<input type="text" name="attr_command_immediate_directive">
</div>
<div class="sheet-field">
<label>Flash / Special Authorization</label>
<input type="text" name="attr_command_flash_special">
</div>
<div class="sheet-field">
<label>Top Secret / MACV Compartmentalized</label>
<input type="text" name="attr_command_topsecret_macv">
</div>
</div>
</div>
<div class="sheet-section">
<div class="sheet-subtitle">Request Log</div>
<div class="sheet-grid sheet-grid-command-log sheet-mount-header">
<div>Slot Tier</div>
<div>Command Calls / Kits</div>
<div>Used (Y/N)</div>
</div>
<fieldset class="repeating_command_log">
<div class="sheet-grid sheet-grid-command-log">
<input type="text" name="attr_command_slot_tier">
<input type="text" name="attr_command_request">
<select name="attr_command_used">
<option value=""></option>
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</fieldset>
</div>
</div>
<!-- NOTES TAB -->
<div class="sheet-tab sheet-notes">
<div class="sheet-section">
<div class="sheet-subtitle">Character Notes</div>
<textarea class="sheet-notes-area" name="attr_character_notes"></textarea>
</div>
</div>
</div>
<script type="text/worker">
on("clicked:core", function() {
setAttrs({ sheetTab: "core" });
});
on("clicked:equipment", function() {
setAttrs({ sheetTab: "equipment" });
});
on("clicked:proficiencies", function() {
setAttrs({ sheetTab: "proficiencies" });
});
on("clicked:command", function() {
setAttrs({ sheetTab: "command" });
});
on("clicked:notes", function() {
setAttrs({ sheetTab: "notes" });
});
const updateTotalWeight = function() {
getSectionIDs("repeating_equipment", function(ids) {
const fields = ids.map(function(id) {
return "repeating_equipment_" + id + "_item_weight";
});
getAttrs(fields, function(values) {
let total = 0;
ids.forEach(function(id) {
total += parseFloat(values["repeating_equipment_" + id + "_item_weight"]) || 0;
});
setAttrs({
total_weight: total
});
});
});
};
const updateAttackTable = function() {
getAttrs(["attack_table_thaco"], function(values) {
const thaco = parseInt(values.attack_table_thaco, 10);
if (isNaN(thaco)) return;
const updates = {
to_hit_ac_1: thaco - 1,
to_hit_ac_2: thaco - 2,
to_hit_ac_3: thaco - 3,
to_hit_ac_4: thaco - 4,
to_hit_ac_5: thaco - 5,
to_hit_ac_6: thaco - 6,
to_hit_ac_7: thaco - 7,
to_hit_ac_8: thaco - 8,
to_hit_ac_9: thaco - 9,
to_hit_ac_10: thaco - 10,
to_hit_ac_neg1: thaco + 1,
to_hit_ac_neg2: thaco + 2,
to_hit_ac_neg3: thaco + 3,
to_hit_ac_neg4: thaco + 4,
to_hit_ac_neg5: thaco + 5,
to_hit_ac_neg6: thaco + 6,
to_hit_ac_neg7: thaco + 7,
to_hit_ac_neg8: thaco + 8,
to_hit_ac_neg9: thaco + 9,
to_hit_ac_neg10: thaco + 10
};
setAttrs(updates);
});
};
on("sheet:opened", function() {
updateTotalWeight();
updateAttackTable();
});
on("remove:repeating_equipment", updateTotalWeight);
on("change:repeating_equipment", updateTotalWeight);
on("change:attack_table_thaco", updateAttackTable);
</script>
Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB

-8
View File
@@ -1,8 +0,0 @@
{
"html": "Ghosts_of_Vietnam_Character_Sheet.html",
"css": "Ghosts_of_Vietnam_Character_Sheet.css",
"authors": "Richard L. Littles",
"roll20userid": "17745109",
"preview": "Ghosts of Vietnam.jpg",
"instructions": "A fully functional character sheet for Ghosts of Vietnam."
}