diff --git a/Beacon/beacon.css b/Beacon/beacon.css
index 2905a415c8..ee47e7221d 100644
--- a/Beacon/beacon.css
+++ b/Beacon/beacon.css
@@ -765,6 +765,10 @@ div[data-groupname^="repeating_spellbook"] .repitem,
vertical-align: middle;
text-align: center;
}
+
+.charsheet input.sheet-highlight {
+ background-color: #ccffff;
+}
/* Header section */
diff --git a/Beacon/beacon.html b/Beacon/beacon.html
index bb8845049d..592e55962a 100644
--- a/Beacon/beacon.html
+++ b/Beacon/beacon.html
@@ -76,7 +76,7 @@
Rules available at: https://beacond20.blogspot.com/p/get-beacon.html
@@ -959,11 +981,11 @@ on("change:Race sheet:opened", function() {
var ACB = "0";
//race sets HD
switch (v.Race) {
- case "Dwarf" : HD = "d8"; specials="Dark sight and direction finding, cannot swim."; skills="Starts with +2 Strength and +1 Crafting."; racespeed=50; break;
+ case "Dwarf" : HD = "d8"; specials="Dark sight, direction finding, larger die for initiative. Cannot swim."; skills="Starts with +2 Strength and +1 Crafting. Dark sight, direction finding, larger die for initiative. Cannot swim."; racespeed=50; break;
case "Human" : HD = "d8"; specials="Found everywhere. Adaptable"; skills="Starts with +1 point in 4 different skills."; break;
- case "Elf" : HD = "d6"; specials="Excellent night vision, immune to charm and sleep effects."; skills="+1 to Mind, Charisma, Knowledge and Survival."; racespeed=70; break;
- case "Halfling" : HD = "d6"; ACB = "1"; specials="Small, quick and nimble"; skills="AC Bonus, +1 Dex & Subterfuge. +1 to any skill."; break;
- case "Beastman" : HD = "d10"; specials = "Cannot cast arcane spells, use scrolls."; skills="Starts with -2 Charisma, +2 Survival."; break;
+ case "Elf" : HD = "d6"; specials="Excellent night vision, immune to charm and sleep effects."; skills="+1 to Mind, Charisma, Knowledge and Survival. Night vision, immune to charm and sleep effects."; racespeed=70; break;
+ case "Halfling" : HD = "d6"; ACB = "1"; specials="Small, quick and nimble."; skills="AC Bonus, +1 Dex & Subterfuge. +1 to any skill."; break;
+ case "Beastman" : HD = "d10"; specials = "Cannot cast arcane spells or scrolls, +1 spell cost."; skills="Starts with -2 Charisma, +2 Survival. Cannot cast arcane spells or scrolls, +1 spell cost."; break;
case "Other" : HD = "?"; specials = "See Notes."; skills="See Notes."; break;
}
setAttrs({RaceHD : HD, RaceSpecials : specials, raceACbonus : ACB, raceProg : skills, Speed : racespeed});
@@ -983,43 +1005,42 @@ on("change:Class change:Level sheet:opened", function() {
var skills = "";
switch (v.Class) {
- case "Fighter" : attack=level; damage=Math.floor(level/3)+1; numAttacks=Math.floor(level/5)+1; skills1="Starts with +3 Physical."; skills2="+1 Physical at 3/6/9/12."; break;
- case "Cleric" : attack=Math.floor(level/2); numAttacks=Math.floor(level/10)+1; skills1="Starts with +3 Communication."; skills2="+1 Communication at 4/8/12."; break;
- case "Rogue" : attack=Math.floor(level/2); numAttacks=Math.floor(level/10)+1; skills1="Split 3 points between Subterfuge and Survival."; skills2="+1 Subterfuge or Survival at 3/6/9/12."; break;
- case "Non-classed" : attack=Math.floor(level/2); numAttacks=Math.floor(level/10)+1; skills1="Starts with 4 points in at least 2 Skills."; skills2="+1 any skill at 2/4/6/8/10/12."; break;
- case "Mage" : attack=Math.floor(level/3); skills1="Starts with +3 Knowledge."; skills2="+1 Knowledge at 4/8/12."; break;
- case "Druid" : attack=Math.floor(level/3); skills1="Starts with +1 Knowledge, +2 Survival."; skills2="+1 Knowledge or Surival at 4/8/12."; break;
- case "Enchanter" : attack=Math.floor(level/3); skills1="Starts with +1 Communication, +2 Subterfuge."; skills2="+1 Communication or Subterfuge at 4/8/12."; break;
+ case "Fighter" : attack=level; damage=Math.floor((1+level)/2); numAttacks=Math.floor(level/5)+1; skills1="Fighters start with +3 Physical and +1 to attack and damage and 1 Bonus HP."; skills2="+1 Physical at levels 3/6/9/12. +1 attack, +1 Bonus HP every level. +1 damage every 2 levels."; break;
+ case "Cleric" : attack=Math.floor(level/2); numAttacks=Math.floor(level/10)+1; skills1="The Cleric starts with +3 points in Communication. They cast Divine magic."; skills2="+1 Communication at levels 4/8/12."; break;
+ case "Rogue" : attack=Math.floor(level/2); numAttacks=Math.floor(level/10)+1; skills1="Rogues start with +2 points Subterfuge and +1 in any other skill."; skills2="+1 any skill at levels 2/4/6/8/10/12."; break;
+ case "Hunter" : attack=Math.floor((level)/2)+1; numAttacks=Math.floor(level/8)+1; skills1="The Hunter starts with +2 points in Survival,+1 Physical and +1 to attack."; skills2="+1 Survival at levels 3/6/9/12. +1 attack every 2 levels."; break;
+ case "Mage" : attack=Math.floor(level/3); skills1="Mages start with +3 Knowledge. They cast Arcane magic."; skills2="+1 Knowledge at levels 4/8/12."; break;
+ case "Druid" : attack=Math.floor(level/2); skills1="The Druid starts with +1 Communication and +2 Survival. They cast Divine magic."; skills2="+1 Communication or Surival at levels 3/6/9/12."; break;
+ case "Enchanter" : attack=Math.floor(level/3); skills1="Enchanter starts with +2 Communication and +1 Subterfuge. They cast Arcane magic."; skills2="+1 Communication or Subterfuge at levels 4/8/12."; break;
}
setAttrs({ATK : attack, DAM : damage, numATK : numAttacks, classStart: skills1, classProg : skills2});
- });
+ })
});
//calc fields on melee weapons
on("sheet:opened remove:repeating_meleeweapon change:repeating_meleeweapon:meleeEquip change:repeating_meleeweapon:meleeWeaponsize change:repeating_meleeweapon:meleeMagic change:dexPenalty change:dexBonus change:strCurrent change:ATK change:DAM change:Class", function() {
getAttrs(["repeating_meleeweapon_meleeWeaponsize","repeating_meleeweapon_meleeMagic","strCurrent","strBonus","dexBonus","ATK","DAM","Class"], function(v) {
- var Dam = "d6";
- var DamBonus = parseInt(0);
+ var Dam = 3;
+ //var DamBonus = parseInt(0);
var STRBonus = parseInt(v.strBonus)||0;
var DEXBonus = parseInt(v.dexBonus)||0;
var magicBonus= parseInt(v.repeating_meleeweapon_meleeMagic)||0;
var Attack = parseInt(v.ATK)||0;
var Damage = parseInt(v.DAM)||0;
- //var calcHitbonus = Attack + DEXBonus + magicBonus;
if (v.repeating_meleeweapon_meleeWeaponsize == "light-rogue") {calcHitbonus = Attack + DEXBonus + magicBonus;}
else {calcHitbonus = Attack + STRBonus + magicBonus;}
- if (v.repeating_meleeweapon_meleeWeaponsize == "heavy-2hand") {DamBonus = STRBonus+1;}
- else {DamBonus = Math.floor(STRBonus);}
-
- if (v.repeating_meleeweapon_meleeWeaponsize == "heavy" || v.repeating_meleeweapon_meleeWeaponsize == "heavy-2hand") {Dam = "d8";}
- else {Dam = "d6";}
-
+ switch (v.repeating_meleeweapon_meleeWeaponsize) {
+ case "heavy-2hand" : Dam = 5; break;
+ case "heavy" : Dam = 4; break;
+ default: Dam = 3;
+ }
+ var calcDambonus = Damage + STRBonus + magicBonus;
setAttrs({ repeating_meleeweapon_meleeDam : Dam,
repeating_meleeweapon_meleeToHit : calcHitbonus,
- repeating_meleeweapon_meleeDamBonus : Damage + DamBonus + magicBonus
+ repeating_meleeweapon_meleeDamBonus : calcDambonus
});
});
});
@@ -1028,7 +1049,7 @@ on("sheet:opened remove:repeating_meleeweapon change:repeating_meleeweapon:melee
on("sheet:opened remove:repeating_rangedweapon change:repeating_rangedweapon:rangedequip change:repeating_rangedweapon:rangedWeaponsize change:repeating_rangedweapon:rangedDistance change:dexBonus change:repeating_rangedweapon:rangedWeaponType change:repeating_rangedweapon:rangedMagic change:strCurrent change:ATK change:DAM change:Class", function() {
getAttrs(["repeating_rangedweapon_rangedWeaponsize","repeating_rangedweapon_rangedWeaponType","repeating_rangedweapon_rangedDistance","strCurrent","repeating_rangedweapon_rangedMagic","strBonus","dexBonus","ATK","DAM","Class"], function(v) {
- var Dam = "d6";
+ var Dam = 3;
var DamBonus = parseInt(0);
var maxrange = parseInt(3);
var DEXBonus = parseInt(v.dexBonus)||0;
@@ -1039,8 +1060,8 @@ on("sheet:opened remove:repeating_rangedweapon change:repeating_rangedweapon:ran
if (v.repeating_rangedweapon_rangedWeaponType == "missile") {maxrange=5*range;}
else {maxrange=3*range;}
- if (v.repeating_rangedweapon_rangedWeaponsize == "heavy") {Dam = "d8";}
- else {Dam = "d6";}
+ if (v.repeating_rangedweapon_rangedWeaponsize == "heavy") {Dam = 4;}
+ else {Dam = 3;}
var calcHitbonus = Attack + DEXBonus + magicBonus;
var calcDambonus = Damage + DamBonus + magicBonus;
@@ -1091,7 +1112,7 @@ on("sheet:opened remove:repeating_armor change:repeating_armor:armorType change:
});
});
- getAttrs(["acCalc","armorCheck","armorSpeedTotal","dexPenalty","dexBonus","raceACbonus","Class"], function(values) {
+ getAttrs(["acCalc","armorSpeedTotal","dexPenalty","dexBonus","raceACbonus","Class"], function(values) {
var baseAc = parseInt(10);
var raceBonus = parseInt(values.raceACbonus)||0;
@@ -1103,7 +1124,6 @@ on("sheet:opened remove:repeating_armor change:repeating_armor:armorType change:
setAttrs({
acCalc: startAc,
- armorCheck: parseInt(0),
dexPenalty: parseInt(0),
armorSpeedTotal: parseInt(0)
});
@@ -1111,7 +1131,7 @@ on("sheet:opened remove:repeating_armor change:repeating_armor:armorType change:
TAS.repeating("armor")
.attrs("acCalc", "armorCheck", "armorSpeedTotal","dexPenalty")
- .fields("armorAcBase","armorMagicBonus","armorCheck","armorSpeed","armorActive","armorDexPen")
+ .fields("armorAcBase","armorMagicBonus","armorSpeed","armorActive","armorDexPen")
.map(function(row, attrSet, id, rowSet) {
var speed = parseInt(row.armorSpeed)||0;
@@ -1123,7 +1143,6 @@ on("sheet:opened remove:repeating_armor change:repeating_armor:armorType change:
if ((checkArmor) == true) {
console.log("1");
attrSet.acCalc += acBase + acBonus;
- attrSet.armorCheck += acBase;
attrSet.armorSpeedTotal += speed;
attrSet.dexPenalty += dexPenalty;
console.log("Current Worn AC="+ attrSet.acCalc);