diff --git a/Runequest_6_ES/Runequest_6.png b/Runequest_6_ES/Runequest_6.png
new file mode 100644
index 0000000000..41363077a8
Binary files /dev/null and b/Runequest_6_ES/Runequest_6.png differ
diff --git a/Runequest_6_ES/Runequest_6_ES.css b/Runequest_6_ES/Runequest_6_ES.css
new file mode 100644
index 0000000000..20640f3868
--- /dev/null
+++ b/Runequest_6_ES/Runequest_6_ES.css
@@ -0,0 +1,767 @@
+/* Remove margin from selects in webkit browsers, same for textareas, and remove spinners */
+select {
+ margin: 0px;
+}
+textarea {
+ margin: 0px;
+}
+input[type='number']::-webkit-inner-spin-button,
+input[type='number']::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+input[type='number'] {
+ -moz-appearance: textfield;
+}
+
+/* Tweak repeating section buttons so they have a bottom margin and dont overflow when in edit mode. */
+div[class^="repcontrol"] {
+ margin-bottom: 5px;
+}
+div[class="repcontainer editmode"] ~ div[class^="repcontrol"] button[class="btn repcontrol_add"] {
+ display: inline-block!important;
+ visibility: hidden;
+}
+
+
+/* Layout CSS */
+div.sheet-wrapper {
+ min-width: 850px;
+}
+
+div.sheet-section {
+ border-radius: 15px;
+ border: 1px solid black;
+ padding: 4px;
+}
+div.sheet-column-1of1 {
+ margin-bottom: 1%;
+ width: 100%;
+}
+div.sheet-column-1of2 {
+ margin-right: 0.5%;
+ margin-bottom: 1%;
+ width: 49.5%;
+ float: left;
+}
+div.sheet-column-2of2 {
+ margin-left: 0.5%;
+ margin-bottom: 1%;
+ float: left;
+ width: 49.5%;
+}
+
+div.sheet-column-1of3 {
+ margin-right: 0.5%;
+ margin-bottom: 1%;
+ float: left;
+ width: 32.666666%;
+}
+div.sheet-column-1n2of3 {
+ margin-right: 0.5%;
+ margin-bottom: 1%;
+ float: left;
+ width: 66.333333%;
+}
+div.sheet-column-2of3 {
+ margin-left: 0.5%;
+ margin-right: 0.5%
+ margin-bottom: 1%;
+ float: left;
+ width: 32.666666%;
+}
+div.sheet-column-2n3of3 {
+ margin-left: 0.5%;
+ margin-bottom: 1%;
+ float: left;
+ width: 66.333333%;
+}
+div.sheet-column-3of3 {
+ margin-left: 0.5%;
+ margin-bottom: 1%;
+ float: left;
+ width: 32.666666%;
+}
+
+/* Generic CSS */
+.sheet-autocalc {
+ cursor: not-allowed;
+ background: #F5F5F5;
+}
+table.sheet-full {
+ width: 100%;
+}
+table.sheet-full_fixed {
+ width: 100%;
+ table-layout: fixed;
+}
+tr.sheet-head {
+ text-align: center;
+}
+input.sheet-full {
+ width: 100%;
+}
+input.sheet-value_full {
+ width: 100%;
+ text-align: center;
+}
+input[type="number"].sheet-full {
+ width: 100%;
+}
+input[type="number"].sheet-value_full {
+ width: 100%;
+ text-align: center;
+}
+input[type="number"].sheet-total_full {
+ width: 100%;
+ text-align: center;
+ font-size: 120%;
+ font-weight: bold;
+}
+input.sheet-value {
+ width: 35px;
+ text-align: center;
+}
+input[type="number"].sheet-value {
+ width: 35px;
+ text-align: center;
+}
+input[type="number"].sheet-total {
+ width: 40px;
+ text-align: center;
+ font-size: 120%;
+ font-weight: bold;
+}
+input.sheet-damage {
+ width: 55px;
+ text-align: right;
+}
+select.sheet-diff {
+ width: 45px;
+ padding: 0px;
+}
+select.sheet-db {
+ padding: 0px;
+ width: 52px;
+}
+input.sheet-skill_base {
+ width: 60px;
+ font-size: 75%;
+}
+select.sheet-full {
+ width: 100%;
+}
+
+/* Info CSS */
+td.sheet-info-label {
+ white-space: nowrap;
+}
+input.sheet-info-number {
+ width: 50px;
+ text-align: center;
+}
+
+/* Tab CSS */
+input.sheet-tab {
+ position: relative;
+ z-index: 9999;
+ cursor: pointer;
+ opacity: 0;
+ width: 19.5%;
+ margin-bottom: 2px;
+}
+span.sheet-tab {
+ display: inline-block;
+ position: relative;
+ width: 19.5%;
+ text-align: center;
+ background: #B30201;
+ color: #F59111;
+ font-weight: bold;
+ border-radius: 4px;
+ cursor: pointer;
+ margin-left: -19.5%;
+}
+
+input.sheet-vitals-tab:checked + span.sheet-vitals-tab,
+input.sheet-combat-tab:checked + span.sheet-combat-tab,
+input.sheet-skills-tab:checked + span.sheet-skills-tab,
+input.sheet-equipment-tab:checked + span.sheet-equipment-tab,
+input.sheet-notes-tab:checked + span.sheet-notes-tab,
+input.sheet-folk_magic-tab:checked + span.sheet-folk_magic-tab,
+input.sheet-animism-tab:checked + span.sheet-animism-tab,
+input.sheet-mysticism-tab:checked + span.sheet-mysticism-tab,
+input.sheet-sorcery-tab:checked + span.sheet-sorcery-tab,
+input.sheet-theism-tab:checked + span.sheet-theism-tab {
+ background: #BEBEBE;
+ color: black;
+}
+
+/* Page CSS */
+div.sheet-page {
+ visibility: hidden;
+ opacity: 0;
+ max-height: 0;
+ overflow: hidden;
+}
+input.sheet-vitals-tab:checked ~ div.sheet-vitals-page,
+input.sheet-combat-tab:checked ~ div.sheet-combat-page,
+input.sheet-skills-tab:checked ~ div.sheet-skills-page,
+input.sheet-equipment-tab:checked ~ div.sheet-equipment-page,
+input.sheet-notes-tab:checked ~ div.sheet-notes-page,
+input.sheet-folk_magic-tab:checked ~ div.sheet-folk_magic-page,
+input.sheet-animism-tab:checked ~ div.sheet-animism-page,
+input.sheet-mysticism-tab:checked ~ div.sheet-mysticism-page,
+input.sheet-sorcery-tab:checked ~ div.sheet-sorcery-page,
+input.sheet-theism-tab:checked ~ div.sheet-theism-page {
+ visibility: visible;
+ opacity: 1;
+ max-height: 999999px;
+ overflow: auto;
+}
+
+/* Characteristics */
+div.sheet-characteristic-column {
+ text-align: center;
+ float: left;
+ width: 25%;
+}
+table.sheet-char {
+ margin-left: auto;
+ margin-right: auto;
+}
+td.sheet-char-label {
+ text-align: right;
+ font-weight: bold;
+}
+
+/* Hit Locations */
+table.sheet-hit_locations {
+ width: 100%;
+}
+td.sheet-hit_locations_roll {
+ width: 50px;
+}
+input.sheet-hit_locations_long {
+ width: 100%;
+}
+input.sheet-hit_locations_short {
+ width: 47px;
+ text-align: center;
+}
+
+/* Attributes */
+td.sheet-attribute-label {
+ white-space: nowrap;
+}
+td.sheet-attribute_value {
+ text-align: center;
+}
+input.sheet-attribute-current {
+ text-align: center;
+ width: 35px;
+ font-weight: bold;
+}
+
+/* Fatigue */
+select.sheet-fatigue-select {
+ width: 140px;
+}
+td.sheet-fatigue_skillgrade {
+ width: 16.666%;
+}
+td.sheet-fatigue_movement {
+ width: 16.666%;
+}
+td.sheet-fatigue_strike_rank {
+ width: 16.666%;
+}
+td.sheet-fatigue_action_points {
+ width: 16.666%;
+}
+td.sheet-fatigue_recovery_period {
+ width: 16.666%;
+}
+td.sheet-fatigue_recovery_time {
+ white-space: nowrap;
+ width: 16.666%;
+ text-align: center;
+}
+
+/* Combat Styles */
+table.sheet-combat_styles {
+ width: 100%;
+}
+td.sheet-cs_style {
+ width: 16%;
+}
+td.sheet-cs_calc {
+ white-space: nowrap;
+ text-align: center;
+ width: 18%
+}
+td.sheet-cs_number {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-cs_symbol {
+ text-align: center;
+ width: 2%;
+}
+td.sheet-cs_roll {
+ width: 9%;
+}
+td.sheet-cs_weapons {
+ width: 33%;
+}
+td.sheet-cs_benifits {
+ width: 17%;
+}
+
+/* Shields and Weapons */
+td.sheet-shield {
+ width: 15%;
+ text-align: center;
+}
+td.sheet-shield_damage {
+ width: 17%;
+ text-align: center;
+}
+td.sheet-shield_size {
+ width: 8%;
+ text-align: center;
+}
+td.sheet-shield_reach {
+ width: 10%;
+ text-align: center;
+}
+td.sheet-shield_enc {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-shield_ap {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-shield_hp {
+ width: 10%;
+ text-align: center;
+}
+td.sheet-shield_effects {
+ width: 20%;
+ text-align: center;
+}
+td.sheet-shield_blocks {
+ width: 11%;
+ text-align: center;
+}
+
+td.sheet-weapon {
+ width: 15%;
+ text-align: center;
+}
+td.sheet-weapon_damage {
+ width: 17%;
+ text-align: center;
+}
+td.sheet-weapon_size {
+ width: 8%;
+ text-align: center;
+}
+td.sheet-weapon_reach {
+ width: 10%;
+ text-align: center;
+}
+td.sheet-weapon_enc {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-weapon_ap {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-weapon_hp {
+ width: 10%;
+ text-align: center;
+}
+td.sheet-weapon_impalesize {
+ width: 6%;
+ text-align: center;
+}
+td.sheet-weapon_effects {
+ width: 20%;
+ text-align: center;
+}
+td.sheet-weapon_load {
+ width: 5%;
+ text-align: center;
+}
+
+/* SKill CSS */
+td.sheet-skill {
+ width: 30%;
+}
+td.sheet-skill_calc_label {
+ width: 38%;
+ text-align: center;
+}
+td.sheet-skill_calc {
+ width: 38%;
+ text-align: right;
+}
+td.sheet-profskill {
+ width: 31%;
+}
+td.sheet-profskill_calc_label {
+ width: 37%;
+ text-align: center;
+}
+td.sheet-profskill_calc {
+ width: 37%;
+ text-align: right;
+}
+td.sheet-skill_total {
+ width: 10%;
+ text-align: center;
+}
+td.sheet-skill_symbol {
+ text-align: center;
+ width: 3%;
+}
+td.sheet-skill_roll {
+ width: 19%;
+ text-align: center;
+}
+
+/* Passions */
+td.sheet-passion {
+ width: 33%;
+}
+td.sheet-passion_calc_label {
+ width: 46%;
+ text-align: center;
+}
+td.sheet-passion_calc {
+ width: 46%;
+ text-align: right;
+}
+
+/* Cults */
+td.sheet-cult {
+ width: 35%;
+}
+td.sheet-cult_rank {
+ width: 27%;
+}
+td.sheet-cult_notes {
+ width: 38%;
+}
+
+/* Equipment */
+td.sheet-item {
+ width: 70%;
+}
+td.sheet-item_qnty {
+ width: 15%;
+}
+td.sheet-item_end {
+ width: 15%;
+}
+
+/* Wealth */
+textarea.sheet-wealth {
+ width: 97%;
+ height: 75px;
+}
+
+/* Load */
+td.sheet-load_label {
+ width: 25%;
+}
+td.sheet-load_value {
+ width: 25%;
+}
+
+/* Notes */
+textarea.sheet-notes {
+ width: 96%;
+ height: 425px;
+}
+
+/* Folk Magic */
+textarea.sheet-folk_magic_spells {
+ width: 98.5%;
+ height: 350px;
+}
+
+/* Animism */
+table.sheet-animism_table {
+ margin-left: auto;
+ margin-right: auto;
+}
+td.sheet-animism_cult {
+ width: 12%;
+}
+td.sheet-animism_max_spirits {
+ width: 18%;
+}
+td.sheet-animism_max_spirit_pow {
+ width: 20%;
+}
+td.sheet-animism_ap {
+ width: 11%;
+}
+td.sheet-animism_sr {
+ width: 9%;
+}
+td.sheet-animism_spirit_damage {
+ width: 15%;
+}
+td.sheet-animism_roll {
+ width: 4%;
+}
+td.sheet-animism_tenacity {
+ width: 11%;
+}
+textarea.sheet-animism_fetishes {
+ width: 98.5%;
+ height: 300px;
+}
+
+/* Mysticism */
+td.sheet-mysticism_label {
+ width: 17%;
+}
+td.sheet-mysticism_calc_label {
+ width: 19%;
+ text-align: center;
+}
+td.sheet-mysticism_calc {
+ width: 19%;
+ text-align: right;
+}
+td.sheet-mysticism_total {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-mysticism_symbol {
+ text-align: center;
+ width: 2%;
+}
+td.sheet-mysticism_roll {
+ width: 9%;
+ text-align: center;
+}
+td.sheet-mysticism_intensity {
+ width: 7%;
+ text-align: center;
+}
+td.sheet-mysticism_talents {
+ width: 41%;
+ text-align: center;
+}
+textarea.sheet-mysticism_practiced_talents {
+ width: 98.5%;
+ height: 300px;
+}
+
+/* Sorcery */
+td.sheet-sorcery_label {
+ width: 17%;
+}
+td.sheet-sorcery_calc_label {
+ width: 16%;
+ text-align: center;
+}
+td.sheet-sorcery_calc {
+ width: 16%;
+ text-align: right;
+}
+td.sheet-sorcery_total {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-sorcery_symbol {
+ text-align: center;
+ width: 2%;
+}
+td.sheet-sorcery_roll {
+ width: 9%;
+ text-align: center;
+}
+td.sheet-sorcery_intensity {
+ width: 7%;
+ text-align: center;
+}
+td.sheet-sorcery_spells {
+ width: 44%;
+ text-align: center;
+}
+textarea.sheet-sorcery_memorized_spells {
+ width: 98.5%;
+ height: 300px;
+}
+
+/* Theism */
+td.sheet-theism_label {
+ width: 28%;
+}
+td.sheet-theism_calc_label {
+ width: 19%;
+ text-align: center;
+}
+td.sheet-theism_calc {
+ width: 19%;
+ text-align: right;
+}
+td.sheet-theism_total {
+ width: 5%;
+ text-align: center;
+}
+td.sheet-theism_symbol {
+ text-align: center;
+ width: 2%;
+}
+td.sheet-theism_roll {
+ width: 9%;
+ text-align: center;
+}
+td.sheet-theism_intensity {
+ width: 8%;
+ text-align: center;
+}
+td.sheet-theism_magnitude {
+ width: 8%;
+ text-align: center;
+}
+td.sheet-theism_cult {
+ width: 10%;
+ text-align: center;
+}
+td.sheet-theism_pool {
+ width: 11%;
+ text-align: center;
+}
+td.sheet-theism_pool_symbol {
+ width: 1%;
+ text-align: center;
+}
+td.sheet-theism_pool_value {
+ width: 5%;
+ text-align: center;
+}
+textarea.sheet-theism_miracles {
+ width: 98.5%;
+ height: 300px;
+}
+
+/* Active Effects */
+td.sheet-effect_label {
+ width: 15%;
+}
+td.sheet-effect_duration {
+ width: 8%;
+}
+td.sheet-effect_magnitude {
+ width: 8%;
+}
+td.sheet-effect_intensity {
+ width: 8%;
+}
+td.sheet-effect_range {
+ width: 8%;
+}
+td.sheet-effect_targets {
+ width: 8%;
+}
+td.sheet-effect_desc {
+ width: 37%;
+}
+td.sheet-effect_mp_cost {
+ width: 8%;
+}
+
+
+/* Roll Templates */
+.sheet-rolltemplate-runequest table {
+ width: 100%;
+ border: 1px solid black;
+ color: black;
+ background: #FFFFFF;
+}
+.sheet-rolltemplate-runequest caption {
+ text-align: center;
+ background: url(http://i.imgur.com/VnqY9Kh.png);
+ color: #F59111;
+ font-weight: bold;
+ padding: 2px;
+ border: 1px solid black;
+ line-height: 1.5em;
+}
+.sheet-rolltemplate-runequest td {
+ padding: 2px;
+ border-bottom: 1px solid black;
+}
+.sheet-rolltemplate-runequest td.sheet-template_value {
+ text-align: center;
+}
+.sheet-rolltemplate-runequest .inlinerollresult {
+ display: inline-block;
+ text-align: center;
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+.sheet-rolltemplate-runequest .inlinerollresult.fullcrit {
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+.sheet-rolltemplate-runequest .inlinerollresult.fullfail {
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+.sheet-rolltemplate-runequest .inlinerollresult.importantroll {
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+
+.sheet-rolltemplate-runequest-weapon table {
+ width: 100%;
+ border: 1px solid black;
+ color: black;
+ background: #FFFFFF;
+}
+.sheet-rolltemplate-runequest-weapon caption {
+ text-align: center;
+ background: url(http://i.imgur.com/VnqY9Kh.png);
+ color: #F59111;
+ font-weight: bold;
+ padding: 2px;
+ border: 1px solid black;
+ line-height: 1.5em;
+}
+.sheet-rolltemplate-runequest-weapon td {
+ padding: 2px;
+ border-bottom: 1px solid black;
+}
+.sheet-rolltemplate-runequest-weapon td.sheet-template_value {
+ text-align: center;
+}
+.sheet-rolltemplate-runequest-weapon .inlinerollresult {
+ display: inline-block;
+ text-align: center;
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+.sheet-rolltemplate-runequest-weapon .inlinerollresult.fullcrit {
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+.sheet-rolltemplate-runequest-weapon .inlinerollresult.fullfail {
+ border: 1px solid black;
+ background: #BEBEBE;
+}
+.sheet-rolltemplate-runequest-weapon .inlinerollresult.importantroll {
+ border: 1px solid black;
+ background: #BEBEBE;
+}
diff --git a/Runequest_6_ES/Runequest_6_ES.html b/Runequest_6_ES/Runequest_6_ES.html
new file mode 100644
index 0000000000..1e176d0ef0
--- /dev/null
+++ b/Runequest_6_ES/Runequest_6_ES.html
@@ -0,0 +1,2310 @@
+
+
+-
++
+ Standard
+ Hard
+ Formidable
+@@ -520,7 +520,7 @@
+
+
+
+-
++
+ No penalties
+ -1 metres
+ -2 metres
+@@ -529,7 +529,7 @@
+
+
+
+-
++
+ No penalties
+ -2
+ -4
+@@ -539,7 +539,7 @@
+
+
+
+-
++
+ No penalties
+ -1
+ -2
+@@ -548,7 +548,7 @@
+
+
+
+-
++
+ N/A
+ 15 minutes
+ 3 hours
+@@ -1795,7 +1795,7 @@
+
+ Str & Dex Skills:
+
+-
++
+ Standard
+ 1 Grade Harder
+ 2 Grades Harder
+@@ -1806,7 +1806,7 @@
+
+ Movement Rate:
+
+-
++
+ Standard
+ -2 Metres*
+ Halved*
+@@ -1817,7 +1817,7 @@
+
+ Carrying load is:
+
+-
++
+ Light
+ Medium
+ Strenuous
+@@ -2056,7 +2056,7 @@
+
+
+
+-
++
+ 1d2
+ 1d4
+ 1d6
diff --git a/Runequest_6_ES/extended_autocalc.js b/Runequest_6_ES/extended_autocalc.js
new file mode 100644
index 0000000000..c75ce169c2
--- /dev/null
+++ b/Runequest_6_ES/extended_autocalc.js
@@ -0,0 +1,373 @@
+// Fix buggy issues, thanks Steve D., https://app.roll20.net/forum/post/1462045/help-with-setting-attribute-values
+createObjFix = function() {
+ //Create Object Fix - Firebase.set failed
+
+ var obj = createObj.apply(this, arguments);
+ var id = obj.id;
+ var characterID = obj.get('characterid');
+ var type = obj.get('type');
+
+ if (obj && !obj.fbpath && obj.changed) {
+ obj.fbpath = obj.changed._fbpath.replace(/([^\/]*\/){4}/, "/");
+ } else if (obj && !obj.changed && type == 'attribute') {
+ //fix for dynamic attribute after character created in game
+ // /char-attribs/char/characterID/attributeID
+ obj.fbpath = '/char-attribs/char/'+ characterID +'/'+ id;
+ }
+ return obj;
+}
+
+// Addes don't count as changes so we need to handle the first change here
+on("add:attribute", function(obj) {
+ var attributeName = obj.get("name");
+ var attributeNameLastFour = attributeName.slice(-4);
+ var attributeNameLastFive = attributeName.slice(-5);
+
+ if (attributeName == "fatigue") {
+ setFatigueEffects(obj.get('_characterid'), obj.get('current'));
+ } else if (attributeName == "pow_std" || attributeName == "pow_temp" || attributeName == "cha_std" || attributeName == "cha_temp" || attributeName == "binding_points" || attributeName == "binding_temp" || attributeName == "binding_diff") {
+ setSpiritDamage(obj.get('_characterid'));
+ } else if (attributeName == "str_std" || attributeName == "str_temp" || attributeName == "siz_std" || attributeName == "siz_temp") {
+ setStdDamageModifier(obj.get('_characterid'));
+ } else if (attributeNameLastFour == '_enc' || attributeNameLastFive == '_qnty') {
+ setLoadEffects(obj.get('_characterid'));
+ }
+});
+
+// Handle all other changes to key values
+on("change:attribute", function(obj) {
+ var attributeName = obj.get("name");
+ var attributeNameLastFour = attributeName.slice(-4);
+ var attributeNameLastFive = attributeName.slice(-5);
+
+ if (attributeName == "fatigue") {
+ setFatigueEffects(obj.get('_characterid'), obj.get('current'));
+ } else if (attributeName == "pow_std" || attributeName == "pow_temp" || attributeName == "cha_std" || attributeName == "cha_temp" || attributeName == "binding_points" || attributeName == "binding_temp" || attributeName == "binding_diff") {
+ setSpiritDamage(obj.get('_characterid'));
+ } else if (attributeName == "str_std" || attributeName == "str_temp" || attributeName == "siz_std" || attributeName == "siz_temp") {
+ setStdDamageModifier(obj.get('_characterid'));
+ } else if (attributeNameLastFour == '_enc' || attributeNameLastFive == '_qnty') {
+ setLoadEffects(obj.get('_characterid'));
+ }
+});
+
+function setLoadEffects(characterID) {
+ var encSkillMod = findObjs({_type: 'attribute', _characterid: characterID, name: 'enc_skill_mod'})[0];
+ if (! encSkillMod) {
+ var encSkillMod = createObjFix('attribute', {
+ name: 'enc_skill_mod',
+ characterid: characterID,
+ current: 'Standard'
+ });
+ }
+
+ var encMoveRateMod = findObjs({_type: 'attribute', _characterid: characterID, name: 'enc_move_rate_mod'})[0];
+ if (! encMoveRateMod) {
+ var encMoveRateMod = createObjFix('attribute', {
+ name: 'enc_move_rate_mod',
+ characterid: characterID,
+ current: '-0'
+ });
+ }
+
+ var encCarryingLoad = findObjs({_type: 'attribute', _characterid: characterID, name: 'enc_carrying_load'})[0];
+ if (! encCarryingLoad) {
+ var encCarryingLoad = createObjFix('attribute', {
+ name: 'enc_carrying_load',
+ characterid: characterID,
+ current: 'Light'
+ });
+ }
+
+ var encTotal = 0;
+
+ // Add up hit location enc
+ for (i = 1; i <= 11; i++) {
+ iValue = parseInt(getAttrByName(characterID, "hitloc"+i+"_enc"));
+ encTotal = encTotal + iValue;
+ }
+
+ // Add shield enc
+ encTotal = encTotal + parseInt(getAttrByName(characterID, "shield_enc"));
+
+ // Add up weapon enc
+ for (i = 1; i <= 8; i++) {
+ iValue = parseInt(getAttrByName(characterID, "weapon"+i+"_enc"));
+ encTotal = encTotal + iValue;
+ }
+
+ // Add up item enc
+ for (i = 1; i <= 20; i++) {
+ iValue = parseInt(getAttrByName(characterID, "item"+i+"_enc")) * parseInt(getAttrByName(characterID, "item"+i+"_qnty"));
+ encTotal = encTotal + iValue;
+ }
+
+ var strStd = parseInt(getAttrByName(characterID, "str_std"));
+ var strTemp = parseInt(getAttrByName(characterID, "str_temp"));
+ var str = strStd + strTemp;
+ var encBurdened = str * 2;
+ var encOverloaded = str * 3;
+ var encMax = str * 4;
+
+ if (encTotal >= encMax) {
+ encSkillMod.set({current: 'Impossible'});
+ encMoveRateMod.set({current: '*0'});
+ encCarryingLoad.set({current: 'Too Much'});
+ } else if (encTotal >= encOverloaded) {
+ encSkillMod.set({current: '2 Grades Harder'});
+ encMoveRateMod.set({current: '*.5'});
+ encCarryingLoad.set({current: 'Strenuous'});
+ } else if (encTotal >= encBurdened) {
+ encSkillMod.set({current: '1 Grade Harder'});
+ encMoveRateMod.set({current: '-2'});
+ encCarryingLoad.set({current: 'Medium'});
+ } else {
+ encSkillMod.set({current: 'Standard'});
+ encMoveRateMod.set({current: '-0'});
+ encCarryingLoad.set({current: 'Light'});
+ }
+}
+
+function setFatigueEffects(characterID, currentFatigueValue) {
+ var fatigueSkillGrade = findObjs({_type: 'attribute', _characterid: characterID, name: 'fatigue_skillgrade'})[0];
+ if (! fatigueSkillGrade) {
+ var fatigueSkillGrade = createObjFix('attribute', {
+ name: 'fatigue_skillgrade',
+ characterid: characterID,
+ current: 'Standard'
+ });
+ }
+
+ var fatigueMovement = findObjs({_type: 'attribute', _characterid: characterID, name: 'fatigue_movement'})[0];
+ if (! fatigueMovement) {
+ var fatigueMovement = createObjFix('attribute', {
+ name: 'fatigue_movement',
+ characterid: characterID,
+ current: '+0'
+ });
+ }
+
+ var fatigueStrikeRank = findObjs({_type: 'attribute', _characterid: characterID, name: 'fatigue_strike_rank'})[0];
+ if (! fatigueStrikeRank) {
+ var fatigueStrikeRank = createObjFix('attribute', {
+ name: 'fatigue_strike_rank',
+ characterid: characterID,
+ current: '0'
+ });
+ }
+
+ var fatigueActionPoints = findObjs({_type: 'attribute', _characterid: characterID, name: 'fatigue_action_points'})[0];
+ if (! fatigueActionPoints) {
+ var fatigueActionPoints = createObjFix('attribute', {
+ name: 'fatigue_action_points',
+ characterid: characterID,
+ current: '+0'
+ });
+ }
+
+ var fatigueRecoveryPeroid = findObjs({_type: 'attribute', _characterid: characterID, name: 'fatigue_recovery_peroid'})[0];
+ if (! fatigueRecoveryPeroid) {
+ var fatigueRecoveryPeroid = createObjFix('attribute', {
+ name: 'fatigue_recovery_peroid',
+ characterid: characterID,
+ current: '0'
+ });
+ }
+
+ if (currentFatigueValue == 'Fresh') {
+ fatigueSkillGrade.set({current: 'Standard'});
+ fatigueMovement.set({current: '+0'});
+ fatigueStrikeRank.set({current: '0'});
+ fatigueActionPoints.set({current: '+0'});
+ fatigueRecoveryPeroid.set({current: '0'});
+ } else if (currentFatigueValue == 'Winded') {
+ fatigueSkillGrade.set({current: 'Hard'});
+ fatigueMovement.set({current: '+0'});
+ fatigueStrikeRank.set({current: '0'});
+ fatigueActionPoints.set({current: '+0'});
+ fatigueRecoveryPeroid.set({current: '.25'});
+ } else if (currentFatigueValue == 'Tired') {
+ fatigueSkillGrade.set({current: 'Hard'});
+ fatigueMovement.set({current: '-1'});
+ fatigueStrikeRank.set({current: '0'});
+ fatigueActionPoints.set({current: '+0'});
+ fatigueRecoveryPeroid.set({current: '3'});
+ } else if (currentFatigueValue == 'Wearied') {
+ fatigueSkillGrade.set({current: 'Formidable'});
+ fatigueMovement.set({current: '-2'});
+ fatigueStrikeRank.set({current: '-2'});
+ fatigueActionPoints.set({current: '+0'});
+ fatigueRecoveryPeroid.set({current: '6'});
+ } else if (currentFatigueValue == 'Exhausted') {
+ fatigueSkillGrade.set({current: 'Formidable'});
+ fatigueMovement.set({current: '*.5'});
+ fatigueStrikeRank.set({current: '-4'});
+ fatigueActionPoints.set({current: '-1'});
+ fatigueRecoveryPeroid.set({current: '12'});
+ } else if (currentFatigueValue == 'Debilitated') {
+ fatigueSkillGrade.set({current: 'Herculean'});
+ fatigueMovement.set({current: '*.5'});
+ fatigueStrikeRank.set({current: '-6'});
+ fatigueActionPoints.set({current: '-2'});
+ fatigueRecoveryPeroid.set({current: '18'});
+ } else if (currentFatigueValue == 'Incapacitated') {
+ fatigueSkillGrade.set({current: 'Herculean'});
+ fatigueMovement.set({current: '*0'});
+ fatigueStrikeRank.set({current: '-8'});
+ fatigueActionPoints.set({current: '-3'});
+ fatigueRecoveryPeroid.set({current: '24'});
+ } else if (currentFatigueValue == 'Semi-Conscious') {
+ fatigueSkillGrade.set({current: 'Hopeless'});
+ fatigueMovement.set({current: '*0'});
+ fatigueStrikeRank.set({current: '-99'});
+ fatigueActionPoints.set({current: '*0'});
+ fatigueRecoveryPeroid.set({current: '36'});
+ } else if (currentFatigueValue == 'Comatose') {
+ fatigueSkillGrade.set({current: 'No activity possible'});
+ fatigueMovement.set({current: '*0'});
+ fatigueStrikeRank.set({current: '-99'});
+ fatigueActionPoints.set({current: '*0'});
+ fatigueRecoveryPeroid.set({current: '48'});
+ } else if (currentFatigueValue == 'Dead') {
+ fatigueSkillGrade.set({current: 'Dead'});
+ fatigueMovement.set({current: '*0'});
+ fatigueStrikeRank.set({current: '-99'});
+ fatigueActionPoints.set({current: '*0'});
+ fatigueRecoveryPeroid.set({current: 'Never'});
+ } else {
+ log("Unknown value for fatigue, setting effects to default values.");
+ fatigueSkillGrade.set({current: 'Standard'});
+ fatigueMovement.set({current: '+0'});
+ fatigueStrikeRank.set({current: '0'});
+ fatigueActionPoints.set({current: '+0'});
+ fatigueRecoveryPeroid.set({current: '0'});
+ }
+}
+
+function setSpiritDamage(characterID) {
+ var spiritDamage = findObjs({_type: 'attribute', _characterid: characterID, name: 'spirit_damage'})[0];
+ if (! spiritDamage) {
+ var spiritDamage = createObjFix('attribute', {
+ name: 'spirit_damage',
+ characterid: characterID,
+ current: '1d2'
+ });
+ }
+
+ var bindingDiff = findObjs({_type: 'attribute', _characterid: characterID, name: 'binding_diff'})[0];
+ if (! bindingDiff) {
+ var bindingDiff = createObjFix('attribute', {
+ name: 'binding_diff',
+ characterid: characterID,
+ current: '1'
+ });
+ }
+
+ var powStd = parseInt(getAttrByName(characterID, "pow_std"));
+ var powTemp = parseInt(getAttrByName(characterID, "pow_temp"));
+ var chaStd = parseInt(getAttrByName(characterID, "cha_std"));
+ var chaTemp = parseInt(getAttrByName(characterID, "cha_temp"));
+ var bindingPoints = parseInt(getAttrByName(characterID, "binding_points"));
+ var bindingTemp = parseInt(getAttrByName(characterID, "binding_temp"));
+ var bindingDiff = parseFloat(getAttrByName(characterID, "binding_diff"));
+ var bindingTotal = Math.round((powStd + powTemp + chaStd + chaTemp + bindingPoints + bindingTemp) * bindingDiff);
+
+ if (bindingTotal >= 301) {
+ spiritDamage.set({current: '2d10+2d6'});
+ } else if (bindingTotal >= 281) {
+ spiritDamage.set({current: '3d10'});
+ } else if (bindingTotal >= 261) {
+ spiritDamage.set({current: '2d10+1d8'});
+ } else if (bindingTotal >= 241) {
+ spiritDamage.set({current: '2d10+1d6'});
+ } else if (bindingTotal >= 221) {
+ spiritDamage.set({current: '2d10+1d4'});
+ } else if (bindingTotal >= 201) {
+ spiritDamage.set({current: '2d10+1d2'});
+ } else if (bindingTotal >= 181) {
+ spiritDamage.set({current: '2d10'});
+ } else if (bindingTotal >= 161) {
+ spiritDamage.set({current: '1d10+1d8'});
+ } else if (bindingTotal >= 141) {
+ spiritDamage.set({current: '2d8'});
+ } else if (bindingTotal >= 121) {
+ spiritDamage.set({current: '1d8+1d6'});
+ } else if (bindingTotal >= 101) {
+ spiritDamage.set({current: '2d6'});
+ } else if (bindingTotal >= 81) {
+ spiritDamage.set({current: '1d10'});
+ } else if (bindingTotal >= 61) {
+ spiritDamage.set({current: '1d8'});
+ } else if (bindingTotal >= 41) {
+ spiritDamage.set({current: '1d6'});
+ } else if (bindingTotal >= 21) {
+ spiritDamage.set({current: '1d4'});
+ } else {
+ spiritDamage.set({current: '1d2'});
+ }
+}
+
+function setStdDamageModifier(characterID) {
+ var stdDamageModifier = findObjs({_type: 'attribute', _characterid: characterID, name: 'damage_mod_std'})[0];
+ if (! stdDamageModifier) {
+ var stdDamageModifier = createObjFix('attribute', {
+ name: 'damage_mod_std',
+ characterid: characterID,
+ current: '0'
+ });
+ }
+
+ var strStd = parseInt(getAttrByName(characterID, "str_std"));
+ var strTemp = parseInt(getAttrByName(characterID, "str_temp"));
+ var sizStd = parseInt(getAttrByName(characterID, "siz_std"));
+ var sizTemp = parseInt(getAttrByName(characterID, "siz_temp"));
+ var total = strStd + strTemp + sizStd + sizTemp;
+
+ if (total >= 171) {
+ stdDamageModifier.set({current: '2d10+2d6'});
+ } else if (total >= 161) {
+ stdDamageModifier.set({current: '2d10+1d12'});
+ } else if (total >= 151) {
+ stdDamageModifier.set({current: '3d10'});
+ } else if (total >= 141) {
+ stdDamageModifier.set({current: '2d10+1d8'});
+ } else if (total >= 131) {
+ stdDamageModifier.set({current: '2d10+1d6'});
+ } else if (total >= 121) {
+ stdDamageModifier.set({current: '2d10+1d4'});
+ } else if (total >= 111) {
+ stdDamageModifier.set({current: '2d10+1d2'});
+ } else if (total >= 101) {
+ stdDamageModifier.set({current: '2d10'});
+ } else if (total >= 91) {
+ stdDamageModifier.set({current: '1d10+1d8'});
+ } else if (total >= 81) {
+ stdDamageModifier.set({current: '2d8'});
+ } else if (total >= 71) {
+ stdDamageModifier.set({current: '1d8+1d6'});
+ } else if (total >= 61) {
+ stdDamageModifier.set({current: '2d6'});
+ } else if (total >= 51) {
+ stdDamageModifier.set({current: '1d12'});
+ } else if (total >= 46) {
+ stdDamageModifier.set({current: '1d10'});
+ } else if (total >= 41) {
+ stdDamageModifier.set({current: '1d8'});
+ } else if (total >= 36) {
+ stdDamageModifier.set({current: '1d6'});
+ } else if (total >= 31) {
+ stdDamageModifier.set({current: '1d4'});
+ } else if (total >= 26) {
+ stdDamageModifier.set({current: '1d2'});
+ } else if (total >= 21) {
+ stdDamageModifier.set({current: '0'});
+ } else if (total >= 16) {
+ stdDamageModifier.set({current: '-1d2'});
+ } else if (total >= 11) {
+ stdDamageModifier.set({current: '-1d4'});
+ } else if (total >= 6) {
+ stdDamageModifier.set({current: '-1d6'});
+ } else {
+ stdDamageModifier.set({current: '-1d8'});
+ }
+}
diff --git a/Runequest_6_ES/sheet.json b/Runequest_6_ES/sheet.json
new file mode 100644
index 0000000000..3c28edbc46
--- /dev/null
+++ b/Runequest_6_ES/sheet.json
@@ -0,0 +1,8 @@
+{
+ "html": "Runequest_6_ES.html",
+ "css": "Runequest_6_ES.css",
+ "authors": "Néstor Ch.",
+ "roll20userid": "33133",
+ "preview": "Runequest_6.png",
+ "instructions": "(Work In progess) Based on Romain Herault french translation from Runequest 6 Character Sheet made by Matthew Carpenter."
+}