diff --git a/Heavy Gear 4e/HeavyGear4e.css b/Heavy Gear 4e/HeavyGear4e.css index 2032413c70f..075f72ccf77 100644 --- a/Heavy Gear 4e/HeavyGear4e.css +++ b/Heavy Gear 4e/HeavyGear4e.css @@ -1,4 +1,13 @@ /* change roll20 defaults */ + /* Style the header */ + +.charsheet div.sticky { + position: sticky; + top: 0; + border: #000 1px solid; + background-color: #FFF; + z-index: 100; +} h1,h2,h3,h4 { text-align: center; @@ -297,21 +306,18 @@ select.size{ } /* show the selected tab */ -.charsheet .sheet-tabstoggle[value="character"]~div.sheet-character, -.charsheet .sheet-tabstoggle[value="gear"]~div.sheet-gear, -.charsheet .sheet-tabstoggle[value="admin"]~div.sheet-admin, -.charsheet .sheet-tabstoggle[value="npc"]~div.sheet-npc +.charsheet .sheet-tabstoggle[value="character"]~.sheet-character, +.charsheet .sheet-tabstoggle[value="gear"]~.sheet-gear, +.charsheet .sheet-tabstoggle[value="admin"]~.sheet-admin, +.charsheet .sheet-tabstoggle[value="npc"]~.sheet-npc { display: flex; } -.charsheet .sheet-buttons-npc, -.charsheet .sheet-buttons-pc{ + +.charsheet .sheet-buttonstoggle:not([value="pc"]) ~.sheet-buttons-pc, +.charsheet .sheet-buttonstoggle:not([value="npc"])~.sheet-buttons-npc { display: none; } -.charsheet .sheet-buttonstoggle[value="pc"] ~.sheet-buttons-pc, -.charsheet .sheet-buttonstoggle[value="npc"]~.sheet-buttons-npc { - display: flex; -} .sheet-posture-stationary, .sheet-posture-braced, .sheet-posture-dugIn, @@ -348,7 +354,7 @@ input[value="topSpeed"].sheet-posture~.sheet-posture-topSpeed { } -.sheet-block-a, +.charsheet .sheet-block-a, .charsheet .sheet-block-switch:checked ~ .sheet-block-b { display: contents; } diff --git a/Heavy Gear 4e/HeavyGear4e.html b/Heavy Gear 4e/HeavyGear4e.html index 8491d91ca36..31e1e948cda 100644 --- a/Heavy Gear 4e/HeavyGear4e.html +++ b/Heavy Gear 4e/HeavyGear4e.html @@ -3,22 +3,29 @@ - - - - - - - - - - - - - - - - + +
+

+ + + + + + + + + + Bonus f: + TN: + Reliable f: + + + +

+
@@ -122,29 +129,53 @@

Posture

-

Damage Results

-
- Total: - [Shell: - System:] -
+
+

Damage Results

+
+ Shell:/ + System: / + Total: +
-

Damage

-
- - -d6 -
- ( shell - system) - i: -
- Effect: - Deterioration: - Fix: +

Damage

+
+ + -d6 +
+ ( shell + system) + i: +
+ Effect: + Deterioration: + Fix: +
-
-
-

Damage Notes

+ + Add Damage type: lv: + +

Damage Notes

+
@@ -227,7 +258,7 @@

- +
@@ -290,7 +321,7 @@

Weapons Ammo

- + @@ -385,6 +416,8 @@

Bonus f: Public + Expertise

Athletics : @@ -1094,18 +1127,28 @@

Misc

Crew: - Movement Rate (MR): + + + + + I: + G: + W: + H: + F: + A: + Armour (Arm): - Hull Integrity (HI): + Hull Integrity (HI):

TN Bonus:

- Gunnery + Gunnery

(GU): - Bonus: - Total:

+ Bonus: + Total:

Skills @@ -1118,11 +1161,12 @@

TN Bonus:

- Pilot + Pilot

(PI): - Bonus: - Total: -

+ Bonus: + Total: +

+
Skills:
@@ -1133,12 +1177,13 @@

TN Bonus:

- Electronic Warfare -

(EW): - Bonus: - Total: -

+ Electronic Warfare +

(EW): + Bonus: + Total: +

+
Skills
@@ -1188,8 +1233,8 @@

Posture

Damage results

- Hull Integrity(/) + Hull Integrity(/)
@@ -1229,7 +1274,7 @@

Bonus Dice: D: - + R: @@ -1251,9 +1296,10 @@

Bonus Dice: - + - / + / i: @@ -1280,8 +1326,8 @@

Bonus Dice: Skill Level: - - ( F) + + ( F)
@@ -1308,7 +1354,7 @@

Bonus Dice: / in - +

Arc: - Bomb @@ -1412,6 +1457,17 @@

Bonus Dice: + + Brace + + + | + + + + Corrosion Bonus Dice: + + Salvo + + + | + + + + Silent Bonus Dice:
AoE: m + value="0" min="0">m @@ -1573,7 +1640,7 @@

Bonus Dice: - AP: + AP: @@ -1620,7 +1687,7 @@

Bonus Dice: Burst: + value="0" min="0"> Bonus Dice: Fire: + value="0" min="0"> @@ -1690,7 +1757,7 @@

Bonus Dice: Reach: + value="0" min="0"> @@ -1855,6 +1922,8 @@

Traits & Equipment

+ +
@@ -1865,30 +1934,35 @@

Misc

- NPC GEAR SHEET IN PROGRESS -
- Vehicle: Name: - Type: - TV - Crew: - HT in - MR: - Armour - HI : +
+
+ +
+

Image

+
+
+
Vehicle Name: + Type: + TV + Crew: + HT in + MR: + Armour + HI : +
+
- GU: + GU: - - - Bonus: - + Bonus: Total TN: - Skill - Expertise: + Skill + Expertise:
@@ -1896,18 +1970,19 @@

Misc

Bonus Total TN: - Skill - Expertise: + Skill + Expertise:
- EW: + EW: Bonus - Total TN: + Total TN: - Skill - Expertise: + Skill + Expertise:
@@ -1947,8 +2022,8 @@

Posture

Damage results

- Hull Integrity(/) + Hull Integrity(/)
@@ -1956,15 +2031,30 @@

Damage results

style="width: 2em;">d6
- Hull Integrity Damage: + Hull Integrity Damage: Effect: Deterioration: Fix:
+ Add Damage type: lv: +

Gear Damage Notes

@@ -1991,7 +2081,7 @@

Bonus Dice: Dam: - + Traits: @@ -2007,7 +2097,7 @@

Bonus Dice: - / + / i: @@ -2034,7 +2124,6 @@

Bonus Dice: Skill Level: - ( F)
@@ -2158,7 +2247,6 @@

Bonus Dice: - Bomb @@ -2169,6 +2257,17 @@

Bonus Dice: + + Brace + + + | + + + + Corrosion @@ -2282,6 +2381,17 @@

Bonus Dice: name="attr_gear_weapon_traits_precise_selector"> + + Salvo + + + | + + + + Silent Bonus Dice:
AoE: m + value="0" min="0">m @@ -2365,9 +2475,8 @@

Bonus Dice: - Brawler: - + Brawler: @@ -2378,8 +2487,8 @@

Bonus Dice: class="digit" value="0">/ - - + + @@ -2392,10 +2501,8 @@

Bonus Dice: - Burst: - + value="0" min="0"> @@ -2441,7 +2548,7 @@

Bonus Dice: Fire: + value="0" min="0"> @@ -2464,7 +2571,7 @@

Bonus Dice: Reach: + value="0" min="0"> @@ -2549,7 +2656,7 @@

hidden>

- + Range: km @@ -2612,13 +2719,12 @@

Current Issues

To be added: Personal Armor list.

- Gear Weapon Rolls: - Link - incomplete +

- Formatting: Gear Weapons. +

-

{{#rollGreater() reliable 0}} @@ -2791,11 +2897,12 @@

Current Issues

+ const domains = ['athletics','awareness','business','craft','culture','electronicwarfare','electronics','gunnery','hardscience','influence', 'institutions','investigation','mechanics','medicine','melee','pilot','showmanship','socialscience','survival','tactics']; const gearSkills = ['gunnery','pilot','electronicwarfare']; -const gearWeaponTraits = ['ammo','advanced','aoe','ap','apex','attachment','auto','backup','blast','bomb','brawler','burst','corrosion','demo', - 'fire','flak','forearm','frag','guided','haywire','limited_ammo','link','precise','reach','silent','smoke','spray','see_desc']; +const gearWeaponTraits = ['ammo','advanced','aoe','ap','apex','attachment','auto','backup','blast','bomb','brace','brawler','burst','corrosion','demo', + 'fire','flak','forearm','frag','guided','haywire','limited_ammo','link','precise','reach','salvo','silent','smoke','spray','see_desc']; const gearWeaponTraitsX = ['aoe','ap','brawler','burst','demo','fire','reach']; @@ -3041,6 +3148,7 @@

Current Issues

setAttrs(newrowattrs, {silent: true}, underslungcheck(gearweapon,arm,lvl)); } + function underslungcheck(gearweapon,arm,lvl) { if (gearweapon.underslung != "" && gearweapon.underslung != undefined) { @@ -3048,7 +3156,6 @@

Current Issues

} } - on('clicked:gear_weapon_stat', function() { getAttrs(["gear_weapon_code","gear_arm","gear_weapon_lvl"], function(v) { let input = v["gear_weapon_code"]; @@ -3058,19 +3165,6 @@

Current Issues

}); }); -// on change repeating gear weapon traits ammo, change repeating gear weapon selector to match -/*on("change:repeating_gearweapon:gear_weapon_traits_ammo", function() { - getAttrs(["repeating_gearweapon_gear_weapon_traits_ammo"], function(v) { - console.log("repeating_gearweapon_gear_weapon_traits_ammo:"+v["repeating_gearweapon_gear_weapon_traits_ammo"]); - let checked = "on"; - if (v["repeating_gearweapon_gear_weapon_traits_ammo"] == "0") { - checked = "off"; - } - setAttrs({ - "repeating_gearweapon_gear_weapon_traits_selector": checked - }); - }); -});*/ //lookup table for gear weapon attributes @@ -3119,207 +3213,214 @@

Current Issues

sizeletter = " "; } switch (weaponcode) { - + case "AAC": + gearweapon = {type:"Anti-Air Cannon ", range :"60-180/360",size: sizeletter, l:6,m:7, h:8, traits:["Burst:1","Flak"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:5, pl:1, desc:""}; + break; case "AAM": - gearweapon = {type:"Anti-Air Missile", range :"120-360/720",size: sizeletter, l:7,m:8, h:9, traits:["Flak"," Guided"," Limited Ammo"], mode:"D, I", slots:3, aux:0, location:"Shoulder, Torso", ammunition:3, pl:3, desc:""}; + gearweapon = {type:"Anti-Air Missile", range :"60-360/720",size: sizeletter, l:7,m:8, h:9, traits:["Flak"," Guided","Limited Ammo"], mode:"D,I", slots:3, aux:0, location:"Shoulder, Torso", ammunition:3, pl:3, desc:""}; break; case "ABM": - gearweapon = {type:"Air Burst Missile", range :"240-480/960",size: sizeletter, l:6,m:7, h:8, traits:["AoE: 15"," Blast"," Guided",""], mode:"I", slots:4, aux:0, location:"Shoulder, Torso", ammunition:3, pl:4, desc:""}; + gearweapon = {type:"Air Burst Missile", range :"120-480/960",size: sizeletter, l:6,m:7, h:8, traits:["AoE:15","Blast","Guided","Limited Ammo"], mode:"I", slots:4, aux:0, location:"Shoulder, Torso", ammunition:3, pl:4, desc:""}; break; case "ARM": - gearweapon = {type:"Anti-Armor Mine", range :"-",size: sizeletter, l:7,m:8, h:9, traits:["AP:3/4/5"," Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:3, desc:""}; + gearweapon = {type:"Anti-Armor Mine", range :"-",size: sizeletter, l:7,m:8, h:9, traits:["AP:3/4/5","Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:3, desc:""}; break; case "APGL": gearweapon = {type:"Anti-Per. Grenade Launcher", range :"15 (3in)",size: sizeletter, l:4,m:5, h:6, traits:["Frag"], mode:"P", slots:1, aux:0, location:"Torso", ammunition:4, pl:1, desc:""}; break; case "APM": - gearweapon = {type:"Anti-Personnel Mines", range :"-",size: sizeletter, l:4,m:5, h:6, traits:["AoE: 5"," Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:1, desc:""}; + gearweapon = {type:"Anti-Personnel Mines", range :"-",size: sizeletter, l:4,m:5, h:6, traits:["AoE:5","Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:1, desc:""}; break; case "APR": - gearweapon = {type:"Anti-Personnel Rockets", range :"60-180/360",size: sizeletter, l:6,m:7, h:8, traits:["AoE: 15"], mode:"D, I", slots:2, aux:0, location:"Shoulder, Torso", ammunition:4, pl:1, desc:""}; + gearweapon = {type:"Anti-Personnel Rockets", range :"60-180/360",size: sizeletter, l:6,m:7, h:8, traits:["AoE:15m","Salvo", "Blast","Limited Ammo"], mode:"D,I", slots:2, aux:0, location:"Shoulder, Torso", ammunition:4, pl:1, desc:""}; break; case "ATM": - gearweapon = {type:"Anti-Tank Missile", range :"120-360/720",size: sizeletter, l:8,m:9, h:10, traits:["AP:2/3/4"," Guided"," Limited Ammo"], mode:"D, I", slots:2, aux:2, location:"Shoulder, Torso", ammunition:2, pl:5, desc:""}; + gearweapon = {type:"Anti-Tank Missile", range :"60-360/720",size: sizeletter, l:8,m:9, h:10, traits:["AP:2/3/4","Guided","Limited Ammo"], mode:"D,I", slots:2, aux:2, location:"Shoulder, Torso", ammunition:2, pl:5, desc:""}; break; case "VG": - gearweapon = {type:"Anti-Vehicle Grenade", range :"30-60/90",size: sizeletter, l:4,m:5, h:6, traits:["AP: 2/4/6"," Limited Ammo"], mode:"D", slots:2, aux:0, location:"Manip", ammunition:4, pl:3, desc:""}; + gearweapon = {type:"Anti-Vehicle Grenade", range :"30-60/90",size: sizeletter, l:4,m:5, h:6, traits:["AP:2/4/6","Limited Ammo"], mode:"D", slots:2, aux:0, location:"Manip", ammunition:4, pl:3, desc:""}; break; case "AVM": - gearweapon = {type:"Anti-Vehicle Missile", range :"60-180/360",size: sizeletter, l:5,m:6, h:7, traits:["AP:1"," Guided"," Limited Ammo"], mode:"D, I", slots:2, aux:0, location:"Shoulder, Torso", ammunition:2, pl:3, desc:""}; + gearweapon = {type:"Anti-Vehicle Missile", range :"60-180/360",size: sizeletter, l:5,m:6, h:7, traits:["AP:1","Guided","Limited Ammo"], mode:"D,I", slots:2, aux:0, location:"Shoulder, Torso", ammunition:2, pl:3, desc:""}; break; case "AG": - gearweapon = {type:"Artillery Gun", range :"240-480/960",size: sizeletter, l:9,m:10, h:11, traits:["AoE: 15"," Blast"," AP:1"," Demo:2"], mode:"I", slots:6, aux:4, location:"Manip, Torso", ammunition:1, pl:6, desc:""}; + gearweapon = {type:"Artillery Gun", range :"120-480/960",size: sizeletter, l:9,m:10, h:11, traits:["AoE:15","Blast","AP:1","Demo:2"], mode:"I", slots:6, aux:4, location:"Manip, Torso", ammunition:1, pl:6, desc:""}; break; case "AM": - gearweapon = {type:"Artillery Missile", range :"120-360/960",size: sizeletter, l:7,m:8, h:9, traits:["AoE: 15"," Blast"," Demo: 2"," Guided"," AP:1"," Limited Ammo"], mode:"I", slots:3, aux:2, location:"Torso", ammunition:4, pl:6, desc:""}; + gearweapon = {type:"Artillery Missile", range :"120-480/960",size: sizeletter, l:7,m:8, h:9, traits:["AoE:15","Blast","Demo:2","Guided","AP:1"," Limited Ammo"], mode:"I", slots:3, aux:2, location:"Torso", ammunition:4, pl:6, desc:""}; break; case "AR": - gearweapon = {type:"Artillery Rockets", range :"120-360/720",size: sizeletter, l:7,m:8, h:9, traits:["AoE: 15"," Demo:2"," See Desc"," Limited Ammo"], mode:"D, I", slots:3, aux:2, location:"Torso", ammunition:4, pl:3, - desc:"When attacking with this weapon, the user may increase the ammo used on the attack by 1 to add +1d6 to the attack roll against a single target. This may be done multiple times but can only be used once per target."}; + gearweapon = {type:"Artillery Rockets", range :"120-360/720",size: sizeletter, l:7,m:8, h:9, traits:["AoE:15","Demo:2","Limited Ammo","Salvo"], mode:"D,I", slots:3, aux:2, location:"Torso", ammunition:4, pl:3, desc:""}; break; case "AC": gearweapon = {type:"Autocannon", range :"60-180/360",size: sizeletter, l:6,m:7, h:8, traits:["Ammo","Burst:1","or","Precise"], selector:[2,2,1,3], mode:"D", slots:2, aux:1, location:"Manip", ammunition:6, pl:1, desc:""}; break; case "BA": - gearweapon = {type:"Bayonet", range :"3 (0in)",size: sizeletter, l:5,m:6, h:7, traits:["Attachment"," See Desc"], mode:"M", slots:0, aux:0, location:"-", ammunition:0, pl:1, desc:"Swapping to or from a weapon with a bayonet counts as an additional action"}; + gearweapon = {type:"Bayonet", range :"3 (0in)",size: sizeletter, l:5,m:6, h:7, traits:["Attachment","See Desc"], mode:"M", slots:0, aux:0, location:"-", ammunition:0, pl:1, desc:"Swapping to or from a weapon with a bayonet counts as an additional action"}; break; case "BZ": - gearweapon = {type:"Bazooka", range :"30-120/240",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/3/4"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:6, pl:1, desc:""}; + gearweapon = {type:"Bazooka", range :"60-120/240",size: sizeletter, l:7,m:8, h:9, traits:["Ammo","AP:2/3/4","or","AoE:10","Blast"], selector:[2,2,1,3,3], mode:"D", slots:2, aux:1, location:"Manip", ammunition:6, pl:1, desc:""}; break; case "BM": - gearweapon = {type:"Bomb", range :"-",size: sizeletter, l:7,m:8, h:9, traits:["AoE:15/20/25"," Bomb 15/20/25"," Bomb"], mode:"D", slots:0, aux:0, location:"-", ammunition:1, pl:1, desc:""}; + gearweapon = {type:"Bomb", range :"-",size: sizeletter, l:7,m:8, h:9, traits:["AoE:15/20/25","Bomb","Limited Ammo"], mode:"D", slots:0, aux:0, location:"-", ammunition:1, pl:1, desc:""}; break; case "CB": - gearweapon = {type:"Chain Bayonet", range :"3 (0in)",size: sizeletter, l:5,m:6, h:7, traits:["Attachment"," Demo:2"," Brawler:1"," See Desc"], mode:"M", slots:1, aux:0, location:"-", ammunition:0, pl:4, + gearweapon = {type:"Chain Bayonet", range :"3 (0in)",size: sizeletter, l:5,m:6, h:7, traits:["Attachment","Demo:2","Brawler:1","See Desc"], mode:"M", slots:1, aux:0, location:"-", ammunition:0, pl:4, desc:"Swapping to or from a weapon with a bayonet counts as an additional action"}; break; case "CBL": - gearweapon = {type:"Chain Blade", range :"6 (1in)",size: sizeletter, l:7,m:8, h:9, traits:["Demo:2/4/6"," Brawler:1"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:4, desc:""}; + gearweapon = {type:"Chain Blade", range :"6 (1in)",size: sizeletter, l:7,m:8, h:9, traits:["Demo:2/4/6","Brawler:1"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:4, desc:""}; break; case "CL": gearweapon = {type:"Claws", range :"3 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["Forearm"], mode:"M", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; break; case "CW": - gearweapon = {type:"Combat Weapon", range :"3 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["Demo: 2/3/4"," Backup"], mode:"M", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; + gearweapon = {type:"Combat Weapon", range :"3 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["Demo:2/3/4","Backup"], mode:"M", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; break; case "EM": - gearweapon = {type:"EM Mines", range :"-",size: sizeletter, l:4,m:5, h:6, traits:["Mine"," Haywire"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:4, desc:""}; + gearweapon = {type:"EM Mines", range :"-",size: sizeletter, l:4,m:5, h:6, traits:["Mine","Haywire"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:4, desc:""}; break; case "EL": - gearweapon = {type:"Explosive Lance", range :"8 (2in)",size: sizeletter, l:7,m:8, h:9, traits:["AP: 2/3/4"," Demo: 3/5/7"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; + gearweapon = {type:"Explosive Lance", range :"8 (2in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/3/4","Demo:3/5/7"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; break; case "FG": - gearweapon = {type:"Field Gun", range :"120-240/480",size: sizeletter, l:9,m:10, h:11, traits:["Ammo","AoE: 15"," Blast","or","AP:3/4/5"],selector:[2,2,2,1,3], mode:"D, I", slots:4, aux:4, location:"Manip,Torso", ammunition:1, pl:6, desc:""}; + gearweapon = {type:"Field Gun", range :"60-240/480",size: sizeletter, l:9,m:10, h:11, traits:["Ammo","AoE:15","Blast","or","AP:3/4/5"],selector:[2,2,2,1,3], mode:"D,I", slots:4, aux:4, location:"Manip,Torso", ammunition:1, pl:6, desc:""}; break; case "FM": - gearweapon = {type:"Field Mortar", range :"180-360/720",size: sizeletter, l:8,m:9, h:10, traits:["AoE: 20"," Blast"], mode:"I", slots:3, aux:2, location:"Shoulder,Torso", ammunition:1, pl:4, desc:""}; + gearweapon = {type:"Field Mortar", range :"120-360/720",size: sizeletter, l:8,m:9, h:10, traits:["AoE:20","Blast"], mode:"I", slots:3, aux:2, location:"Shoulder,Torso", ammunition:1, pl:4, desc:""}; break; case "FS": gearweapon = {type:"Fist", range :"0 (0in)",size: " ", l:0,m:0, h:0, traits:["See Desc"], mode:"M", slots:0, aux:0, location:"-", ammunition:0, pl:0, desc:"A Gear or Strider with the Hands equipment that has an open hand is counted as having a fist. This is not counted as a weapon for any rules interaction. The Damage of a Fist is equal to the Arm - 2 of the vehicle."}; break; - case "FLA": - gearweapon = {type:"Flail", range :"5 (1in)",size: sizeletter, l:6,m:7, h:8, traits:[" See Desc"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:2, desc:"Attacks from flails do not allow the effects of shields or bucklers."}; + case "FAI": + gearweapon = {type:"Flail", range :"5 (1in)",size: sizeletter, l:6,m:7, h:8, traits:["See Desc"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:2, desc:"Attacks from flails do not allow the effects of shields or bucklers."}; break; case "FL": - gearweapon = {type:"Flamer", range :"0-90/180",size: sizeletter, l:3,m:4, h:5, traits:["Fire:2/3/4"," Spray"," Burst:1"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:4, pl:3, desc:""}; + gearweapon = {type:"Flamer", range :"0-90/180",size: sizeletter, l:3,m:4, h:5, traits:["Fire:1/2/3","Spray","Burst:1"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:4, pl:3, desc:""}; break; case "FC": - gearweapon = {type:"Frag Cannon", range :"0-90/180",size: sizeletter, l:5,m:6, h:7, traits:["Ammo","Precise"," AP:1/2/3","or","Frag"],selector:[2,2,2,1,3], mode:"D", slots:2, aux:1, location:"Manip", ammunition:6, pl:1, desc:""}; + gearweapon = {type:"Frag Cannon", range :"0-90/180",size: sizeletter, l:5,m:6, h:7, traits:["Ammo","Precise","AP:1/2/3","or","Frag"],selector:[2,2,2,1,3], mode:"D", slots:2, aux:1, location:"Manip", ammunition:6, pl:1, desc:""}; break; case "FRG": - gearweapon = {type:"Frag Grenades", range :"0-60/90",size: sizeletter, l:3,m:4, h:5, traits:["AoE: 15"," Blast"," Frag"," Limited Ammo"], mode:"D, I", slots:1, aux:0, location:"Manip", ammunition:4, pl:1, desc:""}; + gearweapon = {type:"Frag Grenades", range :"0-60/90",size: sizeletter, l:3,m:4, h:5, traits:["AoE:15","Blast","Frag","Limited Ammo"], mode:"D,I", slots:1, aux:0, location:"Manip", ammunition:4, pl:1, desc:""}; break; case "GL": - gearweapon = {type:"Grenade Launcher", range :"60-120/240",size: sizeletter, l:0,m:0, h:0, traits:["Burst:1"," See Desc"], mode:"D, I", slots:2, aux:1, location:"Manip", ammunition:4, pl:1, + gearweapon = {type:"Grenade Launcher", range :"60-120/240",size: sizeletter, l:0,m:0, h:0, traits:["Burst:1","See Desc"], mode:"D,I", slots:2, aux:1, location:"Manip", ammunition:4, pl:1, desc:"Grenade Launchers may fire Anti-Vehicle, Frag, Incendiary, Haywire, White Sand and Smoke Grenades using those Grenade’s damage but the Grenade Launcher’s \ stats for everything else (this includes range and Ammo. Attacks with the Grenade and Grenade Launcher use the combined traits of both. When selecting the weapon,\ the user must select 2 of the available grenade types to be available to use (these are still restricted by PL). The user may only use those 2 types when attacking.\ A Grenade Launcher may fire grenades the same size as it or lower (A MGL can fire Medium or Light grenades). Ignore the LA:X trait on any Grenades used."}; break; case "GM": - gearweapon = {type:"Guided Mortar", range :"180-360/72",size: sizeletter, l:7,m:8, h:9, traits:["AoE: 15"," Blast"," Guided"], mode:"I", slots:3, aux:2, location:"Shoulder,Torso", ammunition:1, pl:5, desc:""}; + gearweapon = {type:"Guided Mortar", range :"120-360/720",size: sizeletter, l:7,m:8, h:9, traits:["AoE:15","Blast","Guided"], mode:"I", slots:3, aux:2, location:"Shoulder,Torso", ammunition:1, pl:5, desc:""}; break; case "HYG": - gearweapon = {type:"Haywire Grenades", range :"0-60/90",size: sizeletter, l:4,m:5, h:6, traits:["Haywire"," Limited Ammo"], mode:"D, I", slots:1, aux:0, location:"Manip", ammunition:4, pl:5, desc:""}; + gearweapon = {type:"Haywire Grenades", range :"0-60/90",size: sizeletter, l:4,m:5, h:6, traits:["Haywire","Limited Ammo"], mode:"D,I", slots:1, aux:0, location:"Manip", ammunition:4, pl:5, desc:""}; break; case "HW": gearweapon = {type:"Haywire Whip", range :"7 (2in)",size: sizeletter, l:5,m:6, h:7, traits:["Haywire"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; break; case "IG": - gearweapon = {type:"Incendiary Grenades", range :"0-60/90",size: sizeletter, l:5,m:6, h:7, traits:["Fire: 1/2/3"," AE:15m"," Limited Ammo"], mode:"D, I", slots:1, aux:0, location:"Manip", ammunition:4, pl:4, desc:""}; + gearweapon = {type:"Incendiary Grenades", range :"0-60/90",size: sizeletter, l:5,m:6, h:7, traits:["Fire:1/2/3","AoE:15","Limited Ammo"], mode:"D,I", slots:1, aux:0, location:"Manip", ammunition:4, pl:4, desc:""}; break; case "IM": - gearweapon = {type:"Incendiary Mines", range :"-",size: sizeletter, l:5,m:6, h:7, traits:["Fire: 2/3/4"," AE: 5m"," Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:4, desc:""}; + gearweapon = {type:"Incendiary Mines", range :"-",size: sizeletter, l:5,m:6, h:7, traits:["Fire:2/3/4","AoE:5","Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:4, desc:""}; + break; + case "IAR": + gearweapon = {type:"Incendiary Artillery Rockets", range :"120-360/720",size: sizeletter, l:7,m:8, h:9, traits:["AoE:15","Demo:2","Limited Ammo","Salvo","Fire:1/2/3"], mode:"D,I", slots:3, aux:2, location:"Torso", ammunition:4, pl:5, desc:""}; + break; + case "IRP": + gearweapon = {type:"Incendiary Rocket Pack", range :"60-180/360",size: sizeletter, l:4,m:5, h:6, traits:["AoE:15","Limited Ammo","Salvo","Fire:1/2/3"], mode:"D,I", slots:2, aux:0, location:"Shoulder,Torso", ammunition:4, pl:4, desc:""}; break; case "LA": - gearweapon = {type:"Lance", range :"8 (2In)",size: sizeletter, l:7,m:8, h:9, traits:["AP: 3/4/5"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; + gearweapon = {type:"Lance", range :"8 (2In)",size: sizeletter, l:7,m:8, h:9, traits:["AP:3/4/5"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; break; case "LC": - gearweapon = {type:"Laser Cannon", range :"120-360/720",size: sizeletter, l:6,m:7, h:8, traits:["Precise"," Adv"], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; + gearweapon = {type:"Laser Cannon", range :"30-360/720",size: sizeletter, l:6,m:7, h:8, traits:["Precise","Advanced"], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; break; case "MG": - gearweapon = {type:"Machine Gun", range :"30-90/180",size: sizeletter, l:3,m:4, h:5, traits:["Burst:2"," Backup"], mode:"D", slots:1, aux:1, location:"Manip,Torso, Shoulder", ammunition:6, pl:1, desc:""}; + gearweapon = {type:"Machine Gun", range :"30-90/180",size: sizeletter, l:4,m:5, h:6, traits:["Burst:2","Backup"], mode:"D", slots:1, aux:1, location:"Manip,Torso,Shoulder", ammunition:6, pl:1, desc:""}; break; case "MS": gearweapon = {type:"Morningstar", range :"5 (1in)",size: sizeletter, l:9,m:10, h:11, traits:[""], mode:"M", slots:3, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; break; case "PZ": - gearweapon = {type:"Panzerfaust", range :"30-60/90",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/3/4"," Limited Ammo"," See Desc"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:2, pl:2, + gearweapon = {type:"Panzerfaust", range :"30-60/120",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/3/4","Limited Ammo","See Desc"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:2, pl:2, desc:"Panzerfausts are always assumed to be stored on the torso if they are listed on a vehicle’s profile"}; break; case "PA": - gearweapon = {type:"Particle Accelerator", range :"60-240/480",size: sizeletter, l:7,m:8, h:9, traits:["Haywire"," Advanced"], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:6, desc:""}; + gearweapon = {type:"Particle Accelerator", range :"30-240/480",size: sizeletter, l:7,m:8, h:9, traits:["Haywire","Precise","Advanced"], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:6, desc:""}; break; case "P": - gearweapon = {type:"Pistol", range :"0-120/240",size: sizeletter, l:6,m:7, h:8, traits:["Precise"," Backup"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; + gearweapon = {type:"Pistol", range :"0-120/240",size: sizeletter, l:6,m:7, h:8, traits:["Precise","Backup"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:6, pl:1, desc:""}; break; case "PL": - gearweapon = {type:"Pulse Laser", range :"60-240/480",size: sizeletter, l:6,m:7, h:8, traits:["Ammo","Burst: 1"," Advanced","or","AP: 2/3/4","Apex"," Advanced"],selector:[2,2,2,1,3,3,3], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:7, desc:""}; + gearweapon = {type:"Pulse Laser", range :"30-180/480",size: sizeletter, l:6,m:7, h:8, traits:["Advanced","Ammo","Burst:1",,"or","AP:1/2/3","Apex"],selector:[1,2,2,1,3,3], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:7, desc:""}; break; case "RG": - gearweapon = {type:"Railgun", range :"120-480/960",size: sizeletter, l:4,m:5, h:6, traits:["AP:4/5/6"," Advanced"," Precise"], mode:"D", slots:4, aux:2, location:"Manip", ammunition:1, pl:6, desc:""}; + gearweapon = {type:"Railgun", range :"60-480/960",size: sizeletter, l:4,m:5, h:6, traits:["AP:3/4/5","Advanced","Precise"], mode:"D", slots:4, aux:2, location:"Manip", ammunition:1, pl:6, desc:""}; break; case "RBZ": - gearweapon = {type:"Rapid Fire Bazooka", range :"60-120/240",size: sizeletter, l:7,m:8, h:9, traits:["AP:1/2/3"," Burst:1"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:3, pl:2, desc:""}; + gearweapon = {type:"Rapid Fire Bazooka", range :"60-120/240",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/3/4","Burst:1"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:3, pl:2, desc:""}; break; case "RS": - gearweapon = {type:"Revisionist Staff", range :"6 (2in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:2"," Brawler:1"], mode:"M", slots:3, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; + gearweapon = {type:"Revisionist Staff", range :"6 (2in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:2","Brawler:1"], mode:"M", slots:3, aux:0, location:"Manip", ammunition:0, pl:5, desc:""}; break; case "RF": - gearweapon = {type:"Rifle", range :"120-360/720",size: sizeletter, l:6,m:7, h:8, traits:["Precise"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:5, pl:2, desc:""}; + gearweapon = {type:"Rifle", range :"60-360/720",size: sizeletter, l:6,m:7, h:8, traits:["Precise"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:5, pl:2, desc:""}; break; case "RP": - gearweapon = {type:"Rocket Pack", range :"60-180/360",size: sizeletter, l:7,m:8, h:9, traits:["AoE: 15"," AP:1"," Limited Ammo"," See Desc"], mode:"D, I", slots:2, aux:0, location:"Shoulder,Torso", ammunition:4, pl:3, - desc:"When attacking with this weapon, the user may increase the ammo used on the attack by 1 to add +1d6 to the attack roll against a single target. This may be done multiple times but can only be used once per target."}; + gearweapon = {type:"Rocket Pack", range :"60-180/360",size: sizeletter, l:7, m:8, h:9, traits:["AoE:15","AP:1","Limited Ammo","Salvo"], mode:"D,I", slots:2, aux:0, location:"Shoulder,Torso", ammunition:4, pl:3, + desc:"When reloaded at a base or supply vehicle, a rocket pack can be loaded with torpedos. These work exactly like a rocket pack but can only fire at targets in the water."}; break; case "RC": - gearweapon = {type:"Rotary Cannon", range :"60-180/360",size: sizeletter, l:5,m:6, h:7, traits:["Burst:2"], mode:"D", slots:3, aux:1, location:"Manip", ammunition:5, pl:2, desc:""}; + gearweapon = {type:"Rotary Cannon", range :"60-180/360",size: sizeletter, l:6, m:7, h:8, traits:["Burst:2"], mode:"D", slots:3, aux:1, location:"Manip", ammunition:5, pl:2, desc:""}; break; case "RL": - gearweapon = {type:"Rotary Laser", range :"60-180/360",size: sizeletter, l:5,m:6, h:7, traits:["Burst:2"," Advanced"," Forearm"], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:6, desc:""}; + gearweapon = {type:"Rotary Laser", range :"30-180/360",size: sizeletter, l:7,m:8, h:9, traits:["Burst:2","Advanced","Forearm"], mode:"D", slots:3, aux:0, location:"Manip", ammunition:0, pl:6, desc:""}; break; case "SY": gearweapon = {type:"Scythe", range :"6 (2in)",size: sizeletter, l:6,m:7, h:8, traits:["AP:2/3/4"], mode:"M", slots:3, aux:0, location:"Manip", ammunition:0, pl:3, desc:""}; break; case "SE": - gearweapon = {type:"Shaped Explosives", range :"0 (0in)",size: sizeletter, l:8,m:9, h:10, traits:["AP:2/3/4"," Demo:4"," Brawler:-1"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; + gearweapon = {type:"Shaped Explosives", range :"0 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/3/4","Demo:4"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:2, pl:2, desc:""}; break; case "SM": - gearweapon = {type:"Smoke Grenades", range :"0-60/90",size: sizeletter, l:0,m:0, h:0, traits:["AoE: 5/20/25"," Smoke"," Limited Ammo"," See Desc"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:4, pl:1, desc:"Any AoE attack made by this weapon is Smoke and does no damage."}; + gearweapon = {type:"Smoke Grenades", range :"0-60/90",size: sizeletter, l:0,m:0, h:0, traits:["AoE:5/20/25","Smoke","Limited Ammo","See Desc"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:4, pl:1, desc:"Any AoE attack made by this weapon is Smoke and does no damage."}; break; case "SC": - gearweapon = {type:"Snub Cannon", range :"30-90/180",size: sizeletter, l:8,m:9, h:10, traits:["AP:2/3/4"," Demo:3"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:3, pl:2, desc:""}; + gearweapon = {type:"Snub Cannon", range :"30-120/180",size: sizeletter, l:8,m:9, h:10, traits:["AP:2/3/4","Demo:3","Precise"], mode:"D", slots:2, aux:1, location:"Manip", ammunition:3, pl:2, desc:""}; break; case "SG": - gearweapon = {type:"Spike Gun", range :"3 (0in)",size: sizeletter, l:6,m:7, h:8, traits:["AP:2/4/6"," Forearm"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; + gearweapon = {type:"Spike Gun", range :"3 (0in)",size: sizeletter, l:6,m:7, h:8, traits:["AP:2/4/6","Forearm"], mode:"D", slots:1, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; break; case "ST": gearweapon = {type:"Staff", range :"6 (2in)",size: sizeletter, l:6,m:7, h:8, traits:[""], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; break; case "SMG": - gearweapon = {type:"Submachine Gun", range :"0-90/180",size: sizeletter, l:5,m:6, h:7, traits:["Burst:2"," Backup"], mode:"D", slots:1, aux:1, location:"Manip", ammunition:4, pl:1, desc:""}; + gearweapon = {type:"Submachine Gun", range :"0-120/180",size: sizeletter, l:5,m:6, h:7, traits:["Burst:2","Backup"], mode:"D", slots:1, aux:1, location:"Manip", ammunition:4, pl:1, desc:""}; break; case "TG": - gearweapon = {type:"Tank Gun", range :"120-360/72",size: sizeletter, l:9,m:10, h:11, traits:["AP:3/4/5"," Demo:2"], mode:"D", slots:6, aux:4, location:"Manip, Torso", ammunition:1, pl:6, desc:""}; + gearweapon = {type:"Tank Gun", range :"120-360/720",size: sizeletter, l:9,m:10, h:11, traits:["AP:3/4/5","Demo:2"], mode:"D", slots:6, aux:4, location:"Manip, Torso", ammunition:1, pl:6, desc:""}; break; case "VC": - gearweapon = {type:"Vehicle Claymore", range :"-",size: sizeletter, l:7,m:8, h:9, traits:["Spray"," Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:3, desc:""}; + gearweapon = {type:"Vehicle Claymore", range :"-",size: sizeletter, l:7,m:8, h:9, traits:["Spray","Mine"], mode:"-", slots:0, aux:0, location:"-", ammunition:0, pl:3, desc:""}; break; case "VB": - gearweapon = {type:"Vibro-Blade", range :"3 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:1/3/5"," Backup"], mode:"M", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; + gearweapon = {type:"Vibro-Blade", range :"3 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:1/3/5","Backup"], mode:"M", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; break; case "VK": gearweapon = {type:"Vibro-Katana", range :"3 (0in)",size: sizeletter, l:7,m:8, h:9, traits:["AP:2/4/6"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; break; case "VR": - gearweapon = {type:"Vibro-Rapier", range :"3 (0in)",size: sizeletter, l:6,m:7, h:8, traits:["Precise"," AP:1/3/5"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; + gearweapon = {type:"Vibro-Rapier", range :"3 (0in)",size: sizeletter, l:6,m:7, h:8, traits:["Precise","AP:1/3/5"], mode:"M", slots:2, aux:0, location:"Manip", ammunition:0, pl:2, desc:""}; break; case "WH": gearweapon = {type:"Whip", range :"6 (2in)",size: sizeletter, l:5,m:6, h:7, traits:[""], mode:"M", slots:1, aux:0, location:"Manip", ammunition:0, pl:1, desc:""}; break; case "WS": - gearweapon = {type:"White Sand Grenade", range :"0-60/90",size: sizeletter, l:4,m:5, h:6, traits:["AoE:15"," Corrosion"," Limited Ammo"], mode:"D, I", slots:2, aux:0, location:"Manip", ammunition:4, pl:6, desc:""}; + gearweapon = {type:"White Sand Grenade", range :"0-60/90",size: sizeletter, l:4,m:5, h:6, traits:["AoE:15","Corrosion","Limited Ammo"], mode:"D,I", slots:2, aux:0, location:"Manip", ammunition:4, pl:6, desc:""}; break; case "default": gearweapon = {type:" ", range :"",size: sizeletter, l:0,m:0, h:0, traits:[""], mode:"", slots:0, aux:0, location:"", ammunition:0, pl:0, desc:""}; @@ -3489,6 +3590,266 @@

Current Issues

return newArray; }; +on('clicked:damage_stat', function() { + getAttrs(["damage_type_add","damage_lvl"], function(v) { + let input = v["damage_type_add"]; + let lvl = parseInt(v["damage_lvl"]); + statDamage(input,lvl); + }); +}); + +on('clicked:gear_damage_stat', function() { + getAttrs(["gear_damage_type_add","gear_damage_lvl"], function(v) { + let input = v["gear_damage_type_add"]; + let lvl = parseInt(v["gear_damage_lvl"]); + statGearDamage(input,lvl); + }); +}); + +const statDamage = (input,lvl) => { + let damage = damageLookup(input); + var newrowid = generateRowID(); + var newrowattrs = {}; + newrowattrs["repeating_damage_" + newrowid + "_damage_level"] = lvl; + newrowattrs["repeating_damage_" + newrowid + "_damage_name"] = damage.name; + newrowattrs["repeating_damage_" + newrowid + "_damage_effect"] = damage.penalty; + newrowattrs["repeating_damage_" + newrowid + "_damage_deterioration"] = damage.deterioration; + newrowattrs["repeating_damage_" + newrowid + "_damage_fix"] = damage.fix; + if (damage.type == "SYSTEM") { + newrowattrs["repeating_damage_" + newrowid + "_damage_system_check"] = 1; + } else if (damage.type == "SHELL") { + newrowattrs["repeating_damage_" + newrowid + "_damage_shell_check"] = 1; + } + setAttrs(newrowattrs); +} +const statGearDamage = (input,lvl) => { + let damage = damageLookup(input); + var newrowid = generateRowID(); + var newrowattrs = {}; + newrowattrs["repeating_gear-damage_" + newrowid + "_gear_damage_level"] = lvl; + newrowattrs["repeating_gear-damage_" + newrowid + "_gear_damage_name"] = damage.name; + newrowattrs["repeating_gear-damage_" + newrowid + "_gear_damage_effect"] = damage.penalty; + newrowattrs["repeating_gear-damage_" + newrowid + "_gear_damage_deterioration"] = damage.deterioration; + newrowattrs["repeating_gear-damage_" + newrowid + "_gear_damage_fix"] = damage.fix; + if (damage.type == "NONE") { + newrowattrs["repeating_damage_" + newrowid + "_gear_damage_integrity"] = 0; + } else { + newrowattrs["repeating_damage_" + newrowid + "_gear_damage_integrity"] = 1; + } + setAttrs(newrowattrs); +} + +const damageLookup = (input) => { + let damage = {}; + switch (input) { + case "Anger": + damage = {name:"Anger",type:"SHELL", + penalty: "Past trauma, an injury, or slights (real or imagined) have\ + caused the character to lose their cool. They suffer a -1d6\ + penalty to actions that require them to think before acting\ + but will only face half the penalty (round down) when\ + committing a violent act.", + deterioration:"The character suffers an additional -1d6 each time the same stimulus happens.", + fix:" Removing the cause of the anger will take away -1d6 immediately. A character can also take a\ + round to try and calm themselves down and make\ + an Endependent Roll at Difficulty 4, but failure will\ + add another -1d6. For disagreements the character\ + may need to have a third-party help calm things\ + down. Other characters can “talk them down”, with\ + a successful skill roll Numbing -1d6 of penalty\ + for that game session. Generally, any anger that\ + reaches -3d6 or more will not be solved simply\ + by stepping out of the room and regaining their\ + composure, and will require some catalyst to solve\ + it such as an apology, mediation, or counseling.\ + Lashing out at the target will Numb the damage\ + entirely for the remainder of that scene and the\ + next, but if the same stimulus happens again\ + without some kind of intervention the character\ + immediately returns to their highest anger damage result."}; + break; + + case "Bleeding": + damage = {name:"Bleeding",type:"SYSTEM", + penalty: "The character will feel weak and drained. The action\ + penalty applies to phyiscal actions or motion.", + deterioration:"The damage result increases by 1 for\ + every 30 minutes this is not treated", + fix:" Any charater can apply pressure to the wound,\ + so long as this is applied the Deteroration will not\ + occur."}; + break; + + case "Blinded": + damage = {name:"Blinded",type:"SYSTEM", + penalty: "A partially blinded character suffers the action penalty\ + to anything that requires sight, and cannot attempt\ + some skills at all. One advantage of Datagloves and HUI\ + systems is that they allow users to make gesture-based\ + commands, so it may still be possible for a character to\ + take some actions while “fighting blind”.", + deterioration:"", + fix:"characters blinded by bright lights (be it a\ + spotlight, or a laser aimed at them while using an\ + IR visor) will have to remove the stimulus or shield\ + their eyes. After this they will recover -1d6 of this\ + result per round. A character blinded by chemicals,\ + dirt, or sand, will have to wash or wipe their eyes\ + clean before recovering. Characters blinded by\ + damage to their eyes will have to seek medical\ + help. Permanent blinding can be healed in a genetic\ + therapy clinic but will take a full season."}; + break; + + case "Brain Injury": + damage = {name:"Brain Injury*",type:"SYSTEM", + penalty: "The character suffers the damage result to all skill tests\ + involving thinking or problem solving. A penalty of 3d6\ + is applied to all motion related actions in addition to\ + this. This result cannot be healed during an intermission\ + action.", + deterioration:"If not treated, the action penalty and\ + penatly to motion increase by 1d6 every hour", + fix:" Brain injuries are not easy to treat. A [W] is not\ + sufficent to address a brain injury; a surgeon and\ + hospital is required. Even then it will take months\ + or years to fully recover. The rate of recovery is 1d6\ + per season"}; + break; + + case "Burned": + damage = {name:"Burned*",type:"SYSTEM", + penalty: "The character suffers the damage results to all skill\ + tests involving motion. Multiple instances of this result\ + combine for a single large damage result", + deterioration:" -1d6 or -2d6 burns will Deteriorate\ + in 24 hours. -3d6 and above will deteriorate hourly\ + without dressings", + fix:" Dressings, antiseptics, and pain medication.\ + For -2d6 or -3d6 burns, skin grafts will be needed\ + for healing. Burns will heal in a hospital at a rate\ + of five days per d6 of burn for each dice removed,\ + so a -2d6 burn requires ten days to be reduced to\ + -1d6, and five more to be healed entirely. Outside of\ + hospital conditions, a character may be left scarred\ + by burns and could even gain the Ugly flaw if the\ + damage is bad enough."}; + break; + + case "Combat Fatigue": + damage = {name:"Combat Fatigue",type:"SHELL", + penalty: "The character gains an adversity called Combat Fatigue.\ + It is applied to every skill test and has a penalty of 3d6\ + instead of the normal 1d6 for an adversity. The character\ + is extemely irritable, depressed, and generally seems less\ + alert overall.", + deterioration:"", + fix:"Combat fatigue will improve by 1d6 every 2\ + weeks with rest and removal from the situation."}; + break; + + case "Concussion": + damage = {name:"Concussion",type:"SYSTEM", + penalty: "The character suffers an action penalty to their thought\ + processes and any skill tests that requires knowlege or\ + memory. Muscle memory actions such as attacking are\ + unafffected.", + deterioration:"", + fix:"Concussions will go away after a week per\ + action penalty."}; + break; + + + case "Deafened": + damage = {name:"Deafened",type:"SYSTEM", + penalty: "The character suffers a -1d6 penalty to all actions that\ + benefit from sound such as seeking a hidden foe, treating\ + a patient, or haggling with a trader. actions that are entirely\ + dependent on hearing, such as radio conversations,\ + are impossible. While they won’t suffer a penalty when\ + fighting, they do suffer a loss of combat awareness and\ + will take the deafened action penalty to their initiative.", + deterioration:"", + fix:"A character temporarily deafened - such as\ + from a flash bang grenade - will have their hearing\ + come back in 1 minute per MoS of the action that\ + deafened them. Permanent hearing damage will\ + require care in a hospital and a week of regenerative\ + therapy to remove."}; + break; + + case "Dehydrated": + damage = {name:"Dehydrated",type:"SYSTEM", + penalty: "The character suffers -1d6 when they fail a survival roll\ + in high heat conditions or are denied access to water\ + for a prolonged period. People can become dehydrated\ + even in wet environments or when drinking water “if\ + they overexert themselves.. A well-made desert suit will\ + prevent this result, but someone foolish with their water\ + can still get into trouble in the harsh sands.", + deterioration:"Each additional 24 hours dehydration\ + is not fixed, the character will suffer another -1d6\ + penalty.", + fix:"Hydrate with water or other liquid. Each liter\ + taken (slowly) will remove one dice of penalty. At\ + -4d6 the character will need intravenous fluids to\ + recover."}; + break; + + case "ENCUMBURED": + damage = {name:"ENCUMBURED",type:"SYSTEM", + penalty: "", + deterioration:"", + fix:""}; + break; + + case "default": + damage = {name:"",type:"", + penalty: "", + deterioration:"", + fix:""}; + break; + + case "default": + damage = {name:"",type:"", + penalty: "", + deterioration:"", + fix:""}; + break; + + case "default": + damage = {name:"",type:"", + penalty: "", + deterioration:"", + fix:""}; + break; + + case "default": + damage = {name:"",type:"", + penalty: "", + deterioration:"", + fix:""}; + break; + + case "default": + damage = {name:"",type:"", + penalty: "", + deterioration:"", + fix:""}; + break; + + + case "default": + damage = {name:"",type:"", + penalty: "", + deterioration:"", + fix:""}; + break; + } + return damage; +} + + //calculators @@ -3563,8 +3924,15 @@

Current Issues

}; } else if (traitList[trait] < 0) {// if triat is less than 0, make it trait:-x traitString += capitalise(`${trait}:${traitList[trait]}, `); + if (selectList[trait] == 1) { + select1 += capitalise(`${trait}:${traitList[trait]}, `); + } else if (selectList[trait] == 2) { + select2 += capitalise(`${trait}:${traitList[trait]}, `); + } else if (selectList[trait] == 3) { + select3 += capitalise(`${trait}:${traitList[trait]}, `); + } if (trait == 'aoe') {//change , to m, - traitString = traitString.replace(/,/g, "m, "); + traitString = traitString.replace(/,/g, "m, "); }; } //console.log("select 1 "+select1); @@ -3589,12 +3957,13 @@

Current Issues

// --- Damage Calulations --- on('change:repeating_damage remove:repeating_damage sheet:opened', function() { //calculates total damage - repeatingSum(["damage_shell","damage_system"],"damage",["damage_shell_check","damage_system_check", "damage_level"]); + repeatingSum("damage_shell","damage",["damage_shell_check", "damage_level"],'multiplier:damage_shell_check|-1','damage_shell_max'); + repeatingSum("damage_system","damage",["damage_system_check", "damage_level"],'multiplier:damage_system_check|-1','damage_system_max'); }); on('change:repeating_gear-damage remove:repeating_gear-damage sheet:opened', function() { //calculates gear damage - repeatingSum("gear_damage_total","gear-damage",["gear_damage_level", "gear_damage_integrity"]); -}); + repeatingSum("gear_hi","gear-damage",["gear_damage_level", "gear_damage_integrity"],'multiplier:gear_damage_level|-1','gear_hi_max'); +}); // ----- Burden Calculations ----- @@ -3602,7 +3971,7 @@

Current Issues

repeatingSum("weapon_burden_total","weapon",["weapon_burden"]); //calculate weapon burden }); - + on('change:repeating_personal-equipment sheet:opened', function() { //calculates burden repeatingSum("personal_equipment_burden_total","personal-equipment",["personal_equipment_burden"]); }); @@ -3611,10 +3980,14 @@

Current Issues

domains.forEach(function (domain) { // roll buttons for skill section on("clicked:repeating_skills-" + domain + ":tumble", function () { getAttrs(["whisper","repeating_skills-"+domain+"_skill_name","name_"+domain,"repeating_skills-" +domain+"_skill_level", - "expertise_"+domain,"bonus_dice","tn","tn_bonus","reliable","repeating_skills-"+domain+"_skill_familiar"], (values) => { + "expertise_"+domain,"expertise_check","bonus_dice","tn","tn_bonus","reliable","repeating_skills-"+domain+"_skill_familiar"], (values) => { let whisper = values["whisper"]; let names = [values["repeating_skills-"+domain+"_skill_name"],values["name_"+domain]]; let expertise = parseInt(values["expertise_"+domain]); + let expertiseCheck = parseInt(values["expertise_check"]); + if (expertiseCheck != 1) { + expertise = 0; + } let dice = parseIntArray([values["repeating_skills-" +domain+"_skill_level"],values["bonus_dice"]]); let tn = parseIntArray([values["tn"],values["tn_bonus"]]); let reliabledice = parseIntArray([values["reliable"],values["repeating_skills-"+domain+"_skill_familiar"]]) ; @@ -3627,10 +4000,14 @@

Current Issues

gearSkills.forEach(function (gearSkills) { // roll buttons for gear skills on("clicked:repeating_skills-"+ gearSkills + ":geartumble", function () { getAttrs(["whisper","repeating_skills-"+gearSkills+"_skill_name","name_"+gearSkills,"repeating_skills-" +gearSkills+"_skill_level", - "expertise_"+gearSkills,"bonus_dice","tn","tn_bonus","gear_"+gearSkills,"reliable","repeating_skills-"+gearSkills+"_skill_familiar"], (values) => { + "expertise_"+gearSkills,"expertise_check","bonus_dice","tn","tn_bonus","gear_"+gearSkills,"reliable","repeating_skills-"+gearSkills+"_skill_familiar"], (values) => { let whisper = values["whisper"]; let names = [values["repeating_skills-"+gearSkills+"_skill_name"],values["name_"+gearSkills]]; let expertise = parseInt(values["expertise_"+gearSkills]); + let expertiseCheck = parseInt(values["expertise_check"]); + if (expertiseCheck != 1) { + expertise = 0; + } let dice = parseIntArray([values["repeating_skills-" +gearSkills+"_skill_level"],values["bonus_dice"]]); let tn = parseIntArray([values["tn"],values["gear_"+gearSkills],values["tn_bonus"]]); let reliabledice = parseIntArray([values["reliable"],values["repeating_skills-"+gearSkills+"_skill_familiar"]]) ; @@ -3642,10 +4019,14 @@

Current Issues

gearSkills.forEach(function (gearSkills) { // roll buttons for gear skills NPC on("clicked:geartumble_"+ gearSkills, function () { getAttrs(["whisper","gear_"+gearSkills+"_skill", - "gear_"+gearSkills+"_expertise","bonus_dice","tn","tn_bonus","gear_"+gearSkills,"reliable"], (values) => { + "gear_"+gearSkills+"_expertise","expertise_check","bonus_dice","tn","tn_bonus","gear_"+gearSkills,"reliable"], (values) => { let whisper = values["whisper"]; let names = [capitalise(gearSkills) ,gearSkills]; let expertise = parseInt(values["gear_"+gearSkills+"_expertise"]); + let expertiseCheck = parseInt(values["expertise_check"]); + if (expertiseCheck != 1) { + expertise = 0; + } let dice = parseIntArray([values["gear_"+gearSkills+"_skill"],values["bonus_dice"]]); let tn = parseIntArray([values["tn"],values["gear_"+gearSkills],values["tn_bonus"]]); let reliabledice = parseIntArray([values["reliable"]]) ; @@ -3657,10 +4038,14 @@

Current Issues

on("clicked:repeating_weapon:tumble", function () { //roll for personal weapons getAttrs(["whisper","repeating_weapon_weapon_name","repeating_weapon_weapon_domain","repeating_weapon_skill_level", - "repeating_weapon_weapon_expertise","bonus_dice","tn","tn_bonus","reliable","repeating_weapon_skill_familiar"], (values) => { + "repeating_weapon_weapon_expertise","expertise_check" ,"bonus_dice","tn","tn_bonus","reliable","repeating_weapon_skill_familiar"], (values) => { let whisper = values["whisper"]; let names = [values["repeating_weapon_weapon_name"],values["repeating_weapon_weapon_domain"]]; let expertise = parseInt(values["repeating_weapon_weapon_expertise"]); + let expertiseCheck = parseInt(values["expertise_check"]); + if (expertiseCheck != 1) { + expertise = 0; + } let dice = parseIntArray([values["repeating_weapon_skill_level"],values["bonus_dice"]]); let tn = parseIntArray([values["tn"],values["tn_bonus"]]); let reliabledice = parseIntArray([values["reliable"],values["repeating_weapon_skill_familiar"]]) ; @@ -3671,7 +4056,7 @@

Current Issues

on("clicked:repeating_gearweapon:tumble", function () {//roller for gear weapons getAttrs(["whisper","repeating_gearweapon_gear_weapon_type","repeating_gearweapon_gear_weapon_domain", - "repeating_gearweapon_gear_skill_level","bonus_dice","tn","tn_bonus", + "repeating_gearweapon_gear_skill_level","bonus_dice","tn","tn_bonus","expertise_check", "reliable","repeating_gearweapon_gear_weapon_skill_familiar", "repeating_gearweapon_gear_weapon_damage", "repeating_gearweapon_gear_weapon_traits", "repeating_gearweapon_gear_weapon_traits_ammo_selector", "repeating_gearweapon_gear_weapon_traits_selector_2" , "repeating_gearweapon_gear_weapon_traits_selector_3","repeating_gearweapon_gear_weapon_traits_ammo","repeating_gearweapon_gear_weapon_ammo","repeating_gearweapon_gear_weapon_ammo_max", @@ -3691,6 +4076,10 @@

Current Issues

expertise = parseInt(values["expertise_electronicwarfare"]); geartn = (values["gear_electronicwarfare"]); } + let expertiseCheck = parseInt(values["expertise_check"]); + if (expertiseCheck != 1) { + expertise = 0; + } let whisper = values["whisper"]; let names = [values["repeating_gearweapon_gear_weapon_type"],values["repeating_gearweapon_gear_weapon_domain"]]; let dice = parseIntArray([values["repeating_gearweapon_gear_skill_level"],values["bonus_dice"]]); @@ -4022,12 +4411,11 @@

Current Issues

} else { blast = 0; } - let advancedindex = traitcalcs.indexOf("Advanced");//'corrosion', targets gain corrosion condition, take 1 damage at end of turn + let advancedindex = traitcalcs.indexOf("Advanced");//'advanced', cannot pickup and used let advanced = 0; - let advancedroll = ""; if (advancedindex > 0) { advanced = 1; - advancedroll = "+1"; + traittext = traittext.concat("Advanced: This weapon but must be connected to a power source, usually the vehicle’s engine. If not connected it cannot be fired. This connection takes 1 hour of time working on the vehicle and is not something that can be done in combat.\n") ; } else { advanced = 0; } @@ -4110,7 +4498,19 @@

Current Issues

} else { burst = 0; } - + //brace + let braceindex = traitcalcs.indexOf("Brace");//'brace', free aim if Stationary, Dug in, or Braced + let brace = 0; + let bracequestion = ""; + let braceexpression = ""; + let braceroll = ""; + if (braceindex > 0) { + brace = 1; + traittext = traittext.concat("Brace: Free aim if Stationary, Dug in, or Braced\n") ; + } else { + brace = 0; + } + let corrosionindex = traitcalcs.indexOf("Corrosion");//'corrosion', targets gain corrosion condition, take 1 damage at end of turn let corrosion = 0; if (corrosionindex > 0) { @@ -4131,9 +4531,9 @@

Current Issues

demoquestion = ""; } - let fireindex = traitcalcs.indexOf("Fire");//'fire', The first damage result this weapon deals is either Burned or On Fire. In addition, if the attack hit, roll Xd6 after the attack is resolved. For each 4+ the target sustains 1 additional damage. Any area of effect hit by this attack is now on fire. + let fireindex = traitcalcs.indexOf("Fire");//'fire', The first damage result this weapon deals is either Burned or On Fire. In addition, if the attack hit, roll Xd6 after the attack is resolved. For each 4+ the target sustains 1 additional damage. let fire = 0; - let fireroll = "0"; + let fireroll = "-1"; if (fireindex > 0) { fireindex += 5; console.log("fireindex:"+traitcalcs.charAt(fireindex)); @@ -4260,26 +4660,30 @@

Current Issues

} else { spray = 0; } - //'see_desc' not used - let salvo = 0; - let salvoexpression = ""; + let salvoindex = traitcalcs.indexOf("Salvo");//'salvo' + let salvoexpression = ""; let salvoquestion = ""; - let salvoroll = ""; + let salvoroll = ""; + + let salvo = 0; + if (salvoindex > 0) { + salvo = 1; + salvoquestion = "?{Rocket Salvo: Use extra ammo?\nAmmo Remaining "+currentAmmunition+"|0}"; + salvoexpression = "+"+salvoquestion+"(Salvo)"; + salvoroll = "+"+salvoquestion; + traittext = traittext.concat("Salvo: When attacking with this weapon, the user may increase the ammo used on the attack by 1 to \ + add +1d6 to the attack roll against a single target. This may be done multiple times, but can only be used once per target.\n") ; + } else { + salvo = 0; + } + +//'see_desc' not used let seedescindex = traitcalcs.indexOf("See desc");//'see_desc', not used\ console.log("seedescindex:"+seedescindex); let seedesc = 0; if (seedescindex > 0) { - seedesc = 1; - if (weaponname == "Rocket Pack" || weaponname == "Rocket Pod"){//can change see desc according to weapon name - salvo = 1; - salvoquestion = "?{Rocket Salvo: Use extra ammo?\nAmmo Remaining "+currentAmmunition+"|0}"; - salvoexpression = "+"+salvoquestion+"(Salvo)"; - salvoroll = "+"+salvoquestion; - traittext = traittext.concat("See Description for more details.\n") ; - } else { - traittext = traittext.concat("See Description for more details.\n") ; - } + traittext = traittext.concat("See Description for more details.\n") ; } else { seedesc = 0; } @@ -4349,7 +4753,7 @@

Current Issues

console.log(weaponname, domain, "lv:"+ skilllevel, "Ex:"+ expertise,bonus,"tn:"+ tn,tnBonus,"Rel:"+ reliable); startRoll(whisper+"&{template:weapondiceroll} {{title=@{character_name} using "+weaponname+" }} \ {{subtitle= Expertise ("+domain+"):"+expertise+" TN("+tn+") "+ammunitionString+"\n ("+skilllevel+"(Skill) +"+bonus+"(Bonus))+ "+reliable+"(Reliable)"+traitexpression+"+1(Base) \n Traits="+traitstring+" }} \ - {{roll=[[("+diceRoll+"+"+traitroll+"+1)"+rollexpression+""+preciseroll+""+advancedroll+"]] }} {{MOS=[[0]]}} {{doubles=[["+expertise+"]]}} {{reliable=[["+reliable+"]]}} \ + {{roll=[[("+diceRoll+"+"+traitroll+"+1)"+rollexpression+""+preciseroll+"]] }} {{MOS=[[0]]}} {{doubles=[["+expertise+"]]}} {{reliable=[["+reliable+"]]}} \ {{six=[[6]]}} {{five=[[5]]}} {{four=[[4]]}} {{three=[[3]]}} {{two=[[2]]}} {{one=[[1]]}} \ {{changedsix=[[6]]}} {{changedfive=[[5]]}} {{changedfour=[[4]]}} {{changedthree=[[3]]}} {{changedtwo=[[2]]}} {{changedone=[[1]]}} \ {{damageroll=[["+damage+"+"+apex+"]]}} {{firedamage=[["+fireroll+"]]}} {{precice=[["+preciseroll+"+0]]}} {{AP=[["+ap+"]]}} {{traits="+traittext+"}} \ @@ -4451,7 +4855,7 @@

Current Issues

}; }; }; - total = total + MOS + advanced+ precicerolldice;//precise is only in optimalrange + total = total + MOS + precicerolldice;//precise is only in optimalrange MOS = total - tn; console.log("temp:"+tempArray,"reliable+:"+reliableArray);