Files
roll20-character-sheets/Mythras/src/scripts/autocalc.js
T
aa1f64f329 [Mythras] minor bugfixes (#6382)
* Spanish translation and minor fixes

* Rounding movement measurements

* Adding linguistics option to campaign settings

* Removing NPC stuff from the json options

* Saving Mythras v2 progress

* Modify mythras sheet.json for new options

* stash

* Restored tranlastions and all but mook css

* Automation script added to help building Mythras sheets

* Autocalc migration up to skills, Mythras

* sheetwork autocalc for standard skills

* Auto calc up to passions

* Fix tenacity

* Finish migrating skills to shett workers

* Finished skills auto calc

* Half done with compat tab

* Stash work up to mostly finish mook skills

* Fixed percent symbol on Athletics mook btn

* Added up to psionic powers for mooks and added collapse to magic sections

* Stash mook sup to animism

* more stashed edits

* Stash commits

* v2 Mythras

* A few edits to Mythras changelog, typos and spelling

* Style adjustments for Firefox

* Small bugfixes for the Mythras v2 conversion scripts

* Small bugfixes for the Mythras v2 conversion scripts

* Some minor CSS adjustments to support Firefox better

* Mythras: fix styling issues with fetish tenacity

* v2.1 of Mythras sheet and reduce M-Space to a stub with notes to use the Mythras sheet

* Remove line from Mythras change log which wasn't meant for publishing

* v2.2 of Mythras sheet

* Added missing Worlds United setting from Default Sheet Settings

* v2.3 of Mythras Sheet

* Add missing v2.3 version update

* Mythras v2.4 and Odd Soot stub

* Update Odd Soot Logo

* Removing Odd Soot sheet per clevett's recommendation

* Restore M-Space to previous versions per clevett's recommendation

* Added deprecation notice to top of M-Space sheet

* Mythras v2.5

* Added equipment and money to compact/mook sheets

* Added Social Conflict Support

* Update changelop for v2.6

* Update de.json

* Mythras - switching over to gradle based build with automated uploading of srcs to roll20

* Mythras v2.7

* Updated Mythras Changlog

* Mythras: Fixed issue with weapons in macro quick bar

* Mythras: Fixed bad calculation for run speed

Co-authored-by: xalabin <xalabin@github.com>
Co-authored-by: Malcoth <35173271+Malcoth@users.noreply.github.com>
2020-05-11 11:02:17 -04:00

3120 lines
182 KiB
JavaScript

// ##### Auto Calc #####
// STR Auto Calc
var calc_str = function() {
getAttrs(["str_base", "str_training", "str_ageing", "str_other", "str_temp"], function(v) {
setAttrs({str: parseInt(v.str_base) + parseInt(v.str_training) + parseInt(v.str_ageing) + parseInt(v.str_other) + parseInt(v.str_temp)});
});
};
on("change:str_base change:str_training change:str_ageing change:str_other change:str_temp", function() { calc_str(); });
// CON Auto Calc
var calc_con = function() {
getAttrs(["con_base", "con_training", "con_ageing", "con_other", "con_temp"], function(v) {
setAttrs({con: parseInt(v.con_base) + parseInt(v.con_training) + parseInt(v.con_ageing) + parseInt(v.con_other) + parseInt(v.con_temp)});
});
};
on("change:con_base change:con_training change:con_ageing change:con_other change:con_temp", function() { calc_con(); });
// SIZ Auto Calc
var calc_siz = function() {
getAttrs(["siz_base", "siz_other", "siz_temp"], function(v) {
setAttrs({siz: parseInt(v.siz_base) + parseInt(v.siz_other) + parseInt(v.siz_temp)});
});
};
on("change:siz_base change:siz_other change:siz_temp", function() { calc_siz(); });
// DEX Auto Calc
var calc_dex = function() {
getAttrs(["dex_base", "dex_training", "dex_ageing", "dex_other", "dex_temp"], function(v) {
setAttrs({dex: parseInt(v.dex_base) + parseInt(v.dex_training) + parseInt(v.dex_ageing) + parseInt(v.dex_other) + parseInt(v.dex_temp)});
});
};
on("change:dex_base change:dex_training change:dex_ageing change:dex_other change:dex_temp", function() { calc_dex(); });
// INT Auto Calc
var calc_int = function() {
getAttrs(["int_base", "int_training", "int_ageing", "int_other", "int_temp"], function(v) {
setAttrs({int: parseInt(v.int_base) + parseInt(v.int_training) + parseInt(v.int_ageing) + parseInt(v.int_other) + parseInt(v.int_temp)});
});
};
on("change:int_base change:int_training change:int_ageing change:int_other change:int_temp", function() { calc_int(); });
// POW Auto Calc
var calc_pow = function() {
getAttrs(["pow_base", "pow_training", "pow_ageing", "pow_other", "pow_temp"], function(v) {
setAttrs({pow: parseInt(v.pow_base) + parseInt(v.pow_training) + parseInt(v.pow_ageing) + parseInt(v.pow_other) + parseInt(v.pow_temp)});
});
};
on("change:pow_base change:pow_training change:pow_ageing change:pow_other change:pow_temp", function() { calc_pow(); });
// CHA Auto Calc
var calc_cha = function() {
getAttrs(["cha_base", "cha_training", "cha_ageing", "cha_other", "cha_temp"], function(v) {
setAttrs({cha: parseInt(v.cha_base) + parseInt(v.cha_training) + parseInt(v.cha_ageing) + parseInt(v.cha_other) + parseInt(v.cha_temp)});
});
};
on("change:cha_base change:cha_training change:cha_ageing change:cha_other change:cha_temp", function() { calc_cha(); });
// Composure Auto Calc
var calc_composure = function() {
getAttrs(["pow", "composure", "composure_max", "composure_other", "composure_temp"], function(v) {
var base_value = Math.ceil(parseInt(v.pow)/3);
var new_composure_max = base_value + parseInt(v.composure_other) + parseInt(v.composure_temp);
var diff_composure_max = new_composure_max - parseInt(v.composure_max);
setAttrs({
composure_base: base_value,
composure_max: new_composure_max,
composure: parseInt(v.composure) + diff_composure_max
});
});
}
on("change:pow change:composure_other change:composure_temp", function() { calc_composure(); });
// Integrity Auto Calc
var calc_integrity = function() {
getAttrs(["cha", "integrity", "integrity_max", "integrity_other", "integrity_temp"], function(v) {
var base_value = Math.ceil(parseInt(v.cha)/3);
var new_integrity_max = base_value + parseInt(v.integrity_other) + parseInt(v.integrity_temp);
var diff_integrity_max = new_integrity_max - parseInt(v.integrity_max);
setAttrs({
integrity_base: base_value,
integrity_max: new_integrity_max,
integrity: parseInt(v.integrity) + diff_integrity_max
});
});
}
on("change:cha change:integrity_other change:integrity_temp", function() { calc_integrity(); });
// Resolve Auto Calc
var calc_resolve = function() {
getAttrs(["int", "resolve", "resolve_max", "resolve_other", "resolve_temp"], function(v) {
var base_value = Math.ceil(parseInt(v.int)/3);
var new_resolve_max = base_value + parseInt(v.resolve_other) + parseInt(v.resolve_temp);
var diff_resolve_max = new_resolve_max - parseInt(v.resolve_max);
setAttrs({
resolve_base: base_value,
resolve_max: new_resolve_max,
resolve: parseInt(v.resolve) + diff_resolve_max
});
});
}
on("change:int change:resolve_other change:resolve_temp", function() { calc_resolve(); });
// Action Points Auto Calc
var calc_action_points = function() {
getAttrs(["dex", "int", "pow", "action_points_temp", "action_points_other", "action_points_add_one", "fatigue", "spirit", "spirit_ap", "spirit_ap_max", "action_points_calc", "action_points", "action_points_max", "action_points_mook1", "action_points_mook2", "action_points_mook3", "action_points_mook4", "action_points_mook5", "action_points_mook6", "action_points_mook7", "action_points_mook8", "action_points_mook9", "action_points_mook10"], function(v) {
if (v["action_points_calc"] == "set_2") {
var base_value = 2;
var spirit_ap_base = 2;
} else if (v["action_points_calc"] == "set_3") {
var base_value = 3;
var spirit_ap_base = 3;
} else {
if(v["spirit"] == "1") {
var spirit_ap_base = Math.ceil((parseInt(v.int) + parseInt(v.pow)) / 12);
var base_value = spirit_ap_base;
} else {
var base_value = Math.ceil((parseInt(v.int) + parseInt(v.dex)) / 12);
var spirit_ap_base = Math.ceil((parseInt(v.int) + parseInt(v.pow)) / 12);
}
}
var new_spirit_ap = spirit_ap_base + parseInt(v.action_points_add_one) + parseInt(v.action_points_temp) + parseInt(v.action_points_other);
var fatigue = parseInt(v.fatigue);
if (fatigue > 5) {
var action_points_fatigue = getTranslationByKey("no-penalty-u");
var new_action_points_max = base_value + parseInt(v.action_points_add_one) + parseInt(v.action_points_temp) + parseInt(v.action_points_other);
} else if (fatigue == 5) {
var action_points_fatigue = "-1";
var new_action_points_max = base_value + parseInt(v.action_points_add_one) + parseInt(v.action_points_temp) + parseInt(v.action_points_other) - 1;
} else if (fatigue == 4) {
var action_points_fatigue = "-2";
var new_action_points_max = base_value + parseInt(v.action_points_add_one) + parseInt(v.action_points_temp) + parseInt(v.action_points_other) - 2;
} else if (fatigue == 3) {
var action_points_fatigue = "-3";
var new_action_points_max = base_value + parseInt(v.action_points_add_one) + parseInt(v.action_points_temp) + parseInt(v.action_points_other) - 3;
} else {
var action_points_fatigue = getTranslationByKey("no-activities-possible-u");
var new_action_points_max = 0;
}
if (new_action_points_max < 0) {
new_action_points_max = 0;
}
if (new_spirit_ap < 0) {
new_spirit_ap = 0;
}
diff_action_points_max = new_action_points_max - parseInt(v.action_points_max);
diff_spirit_ap = new_spirit_ap - parseInt(v.spirit_ap_max);
setAttrs({
action_points_max: new_action_points_max,
action_points_fatigue: action_points_fatigue,
action_points_base: base_value,
action_points: parseInt(v.action_points) + diff_action_points_max,
action_points_mook1: parseInt(v.action_points_mook1) + diff_action_points_max,
action_points_mook2: parseInt(v.action_points_mook2) + diff_action_points_max,
action_points_mook3: parseInt(v.action_points_mook3) + diff_action_points_max,
action_points_mook4: parseInt(v.action_points_mook4) + diff_action_points_max,
action_points_mook5: parseInt(v.action_points_mook5) + diff_action_points_max,
action_points_mook6: parseInt(v.action_points_mook6) + diff_action_points_max,
action_points_mook7: parseInt(v.action_points_mook7) + diff_action_points_max,
action_points_mook8: parseInt(v.action_points_mook8) + diff_action_points_max,
action_points_mook9: parseInt(v.action_points_mook9) + diff_action_points_max,
action_points_mook10: parseInt(v.action_points_mook10) + diff_action_points_max,
spirit_ap: parseInt(v.spirit_ap) + diff_spirit_ap,
spirit_ap_max: new_spirit_ap,
});
});
};
on("change:dex change:int change:pow change:action_points_temp change:action_points_add_one change:action_points_other change:fatigue change:spirit change:action_points_calc", function() { calc_action_points(); });
// Confidence Auto Calc
var calc_confidence = function() {
getAttrs(["willpower_experience", "willpower_other", "willpower_temp", "pow"], function(v) {
var pow = parseInt(v.pow);
var willpower = pow + pow + parseInt(v.willpower_experience) + parseInt(v.willpower_other) + parseInt(v.willpower_temp);
setAttrs({
confidence: Math.floor(willpower/20)
});
});
};
on("change:willpower_experience change:willpower_other change:willpower_temp change:pow", function() { calc_confidence(); });
// Spirit Damage Auto Calc + spirit_pow_max
var calc_spirit_damage = function() {
getAttrs(["willpower_experience", "willpower_other", "willpower_temp", "binding_learned", "binding_base", "binding_experience", "binding_other", "binding_temp", "pow", "cha"], function(values) {
var pow = parseInt(values.pow);
var cha = parseInt(values.cha);
var binding = (parseInt(values.binding_learned) * (pow + cha)) + parseInt(values.binding_experience) + parseInt(values.binding_other) + parseInt(values.binding_temp);
var willpower = pow + pow + parseInt(values.willpower_experience) + parseInt(values.willpower_other) + parseInt(values.willpower_temp);
if ((willpower/2) > binding) {
var spirit_damage_table_value = Math.ceil((willpower/2)/20);
} else {
var spirit_damage_table_value = Math.ceil(binding/20);
}
var spirit_damage_result = '0';
if (spirit_damage_table_value == 1) {
spirit_damage_result = '1d2';
} else if (spirit_damage_table_value == 2) {
spirit_damage_result = '1d4';
} else if (spirit_damage_table_value == 3) {
spirit_damage_result = '1d6';
} else if (spirit_damage_table_value == 4) {
spirit_damage_result = '1d8';
} else if (spirit_damage_table_value == 5) {
spirit_damage_result = '1d10';
} else if (spirit_damage_table_value == 6) {
spirit_damage_result = '2d6';
} else if (spirit_damage_table_value == 7) {
spirit_damage_result = '1d8+1d6';
} else if (spirit_damage_table_value == 8) {
spirit_damage_result = '2d8';
} else if (spirit_damage_table_value == 9) {
spirit_damage_result = '1d10+1d8';
} else if (spirit_damage_table_value == 10) {
spirit_damage_result = '2d10';
} else if (spirit_damage_table_value == 11) {
spirit_damage_result = '2d10+1d2';
} else if (spirit_damage_table_value == 12) {
spirit_damage_result = '2d10+1d4';
} else if (spirit_damage_table_value == 13) {
spirit_damage_result = '2d10+1d6';
} else if (spirit_damage_table_value == 14) {
spirit_damage_result = '2d10+1d8';
} else if (spirit_damage_table_value == 15) {
spirit_damage_result = '3d10';
} else {
spirit_damage_result = '0';
}
setAttrs({
spirit_damage: spirit_damage_result,
spirit_pow_max: Math.ceil(binding/10)*3,
});
});
};
on("change:willpower_experience change:willpower_other change:willpower_temp change:binding_learned change:binding_base change:binding_experience change:binding_other change:binding_temp change:pow change:cha", function() { calc_spirit_damage(); });
// Damage Mod Auto Calc
var calc_damage_mod = function() {
getAttrs(["str", "siz", "con", "pow", "damage_mod_calc", "damage_mod_other", "damage_mod_temp"], function(v) {
if (v.damage_mod_calc == 1) {
var damage_mod_table_value = parseInt(v.str) + parseInt(v.siz) + parseInt(v.pow);
} else if (v.damage_mod_calc == 2) {
var damage_mod_table_value = parseInt(v.str) + parseInt(v.siz) + parseInt(v.con);
} else {
var damage_mod_table_value = parseInt(v.str) + parseInt(v.siz);
}
var base_damage_mod_step = find_damage_mod_step(damage_mod_table_value);
var base_damage_mod_value = find_damage_mod(base_damage_mod_step);
var damage_mod_step = parseInt(base_damage_mod_step) + parseInt(v.damage_mod_other) + parseInt(v.damage_mod_temp);
var damage_mod_value = find_damage_mod(damage_mod_step);
setAttrs({
damage_mod_base: base_damage_mod_value,
damage_mod: damage_mod_value
});
});
};
on("change:str change:siz change:con change:pow change:damage_mod_calc change:damage_mod_other change:damage_mod_temp", function() { calc_damage_mod(); });
// Experience Mod Auto Calc
var calc_experience_mod = function() {
getAttrs(["cha", "int", "experience_mod_calc", "experience_mod_other", "experience_mod_temp"], function(v) {
if(v.experience_mod_calc == "1") {
var base_value = Math.ceil(parseInt(v.int)/6)-2;
} else {
var base_value = Math.ceil(parseInt(v.cha)/6)-2;
}
setAttrs({
experience_mod_base: base_value,
experience_mod: base_value + parseInt(v.experience_mod_other) + parseInt(v.experience_mod_temp)
});
});
};
on("change:cha change:int change:experience_mod_calc change:experience_mod_temp change:experience_mod_other", function() { calc_experience_mod(); });
// Healing Rate Auto Calc
var calc_healing_rate = function() {
getAttrs(["con", "pow", "healing_rate_calc", "healing_rate_other", "healing_rate_temp", "healing_rate_double"], function(v) {
if (v.healing_rate_double == "1") {
var base_multiplier = 2;
} else {
var base_multiplier = 1;
}
if (v.healing_rate_calc == "1") {
var base_value = Math.ceil(Math.ceil(parseInt(v.con)+(parseInt(v.pow)/2))/6) * base_multiplier;
} else {
var base_value = Math.ceil(parseInt(v.con)/6) * base_multiplier;
}
setAttrs({
healing_rate_base: base_value,
healing_rate: base_value + parseInt(v.healing_rate_other) + parseInt(v.healing_rate_temp)
});
});
};
on("change:healing_rate_calc change:healing_rate_temp change:healing_rate_other change:con change:pow change:healing_rate_double", function() { calc_healing_rate(); });
// Initiative Auto Calc
var calc_initiative = function() {
getAttrs(["athletics_experience", "athletics_other", "athletics_temp", "initiative_add_one_tenth_athletics", "str", "dex", "int", "cha", "initiative_bonus_temp", "armor_penalty", "fatigue", "initiative_bonus_other", "spirit"], function(v) {
if(v["initiative_add_one_tenth_athletics"] == "1") {
var athletics_bonus = Math.ceil((parseInt(v.str)+parseInt(v.dex)+parseInt(v.athletics_experience)+parseInt(v.athletics_other)+parseInt(v.athletics_temp))/10);
} else {
var athletics_bonus = 0;
}
if(v["spirit"] == "1") {
var spirit_athletics_bonus = 0;
var base_value = Math.ceil((parseInt(v.int) + parseInt(v.cha)) / 2);
var spirit_ib = base_value;
} else {
var spirit_athletics_bonus = athletics_bonus;
var base_value = Math.ceil((parseInt(v.int) + parseInt(v.dex)) / 2);
var spirit_ib = Math.ceil((parseInt(v.int) + parseInt(v.cha)) / 2);
}
var fatigue = parseInt(v.fatigue);
if (fatigue > 6) {
var initiative_bonus_fatigue = getTranslationByKey("no-penalty-u");
var initiative_bonus = base_value + spirit_athletics_bonus + parseInt(v.initiative_bonus_other) + parseInt(v.initiative_bonus_temp) + parseInt(v.armor_penalty);
} else if (fatigue == 6) {
var initiative_bonus_fatigue = "-2";
var initiative_bonus = base_value + spirit_athletics_bonus + parseInt(v.initiative_bonus_other) + parseInt(v.initiative_bonus_temp) + parseInt(v.armor_penalty) - 2;
} else if (fatigue == 5) {
var initiative_bonus_fatigue = "-4";
var initiative_bonus = base_value + spirit_athletics_bonus + parseInt(v.initiative_bonus_other) + parseInt(v.initiative_bonus_temp) + parseInt(v.armor_penalty) - 4;
} else if (fatigue == 4) {
var initiative_bonus_fatigue = "-6";
var initiative_bonus = base_value + spirit_athletics_bonus + parseInt(v.initiative_bonus_other) + parseInt(v.initiative_bonus_temp) + parseInt(v.armor_penalty) - 6;
} else if (fatigue == 3) {
var initiative_bonus_fatigue = "-8";
var initiative_bonus = base_value + spirit_athletics_bonus + parseInt(v.initiative_bonus_other) + parseInt(v.initiative_bonus_temp) + parseInt(v.armor_penalty) - 8;
} else {
var initiative_bonus_fatigue = getTranslationByKey("no-activities-possible-u");
var initiative_bonus = base_value + spirit_athletics_bonus + parseInt(v.initiative_bonus_other) + parseInt(v.initiative_bonus_temp) + parseInt(v.armor_penalty) - 99;
}
setAttrs({
initiative_athletics_bonus: athletics_bonus,
initiative_bonus_base: base_value,
initiative_bonus_fatigue: initiative_bonus_fatigue,
initiative_bonus: initiative_bonus,
spirit_ib: spirit_ib,
});
});
};
on("change:dex change:str change:int change:cha change:athletics_experience change:athletics_other change:athletics_temp change:initiative_add_one_tenth_athletics change:initiative_bonus_temp change:armor_penalty change:fatigue change:initiative_bonus_other change:spirit", function() { calc_initiative(); });
// Social Initiative Auto Calc
var calc_social_initiative = function() {
getAttrs(["int", "cha", "social_initiative_temp", "social_initiative_other"], function(v) {
var base_value = Math.ceil((parseInt(v.int) + parseInt(v.cha)) / 2);
var social_initiative = base_value + parseInt(v.social_initiative_temp) + parseInt(v.social_initiative_other);
setAttrs({
social_initiative_base: base_value,
social_initiative: social_initiative,
});
});
};
on("change:int change:cha change:social_initiative_temp change:social_initiative_other", function() { calc_social_initiative(); });
// Spirit Intensity Auto Calc
var calc_spirit_intensity = function() {
getAttrs(["pow"], function(v) {
setAttrs({ spirit_intensity: Math.ceil(parseInt(v.pow)/6) });
});
};
on("change:pow", function() { calc_spirit_intensity(); });
// Luck Points Auto Calc
var calc_luck_points = function() {
getAttrs(["pow", "cha", "luck_points_temp", "luck_points_other", "luck_points_rank", "rank", "luck_points", "luck_points_max", "luck_points_calc"], function(v) {
if (v.luck_points_rank == "1") {
var rank_bonus = parseInt(v.rank);
} else {
var rank_bonus = 0;
}
if (v.luck_points_calc == "1") {
var base_value = Math.ceil(Math.ceil(parseInt(v.cha)+(parseInt(v.pow)/2))/6) + rank_bonus;
} else {
var base_value = Math.ceil(parseInt(v.pow)/6) + rank_bonus;
}
var new_luck_points_max = base_value + parseInt(v.luck_points_temp) + parseInt(v.luck_points_other);
var diff_luck_points_max = new_luck_points_max - parseInt(v.luck_points_max);
setAttrs({
luck_points_base: base_value,
luck_points_max: new_luck_points_max,
luck_points: parseInt(v.luck_points) + diff_luck_points_max,
});
});
};
on("change:pow change:cha change:luck_points_calc change:luck_points_temp change:luck_points_other change:luck_points_rank change:rank", function() { calc_luck_points(); });
// Magic Points Auto Calc
var calc_magic_points = function() {
getAttrs(["pow", "magic_points_temp", "magic_points_other", "magic_points", "magic_points_max", "magic_points_mook1", "magic_points_mook2", "magic_points_mook3", "magic_points_mook4", "magic_points_mook5", "magic_points_mook6", "magic_points_mook7", "magic_points_mook8", "magic_points_mook9", "magic_points_mook10"], function(v) {
var new_magic_points_max = parseInt(v.pow) + parseInt(v.magic_points_temp) + parseInt(v.magic_points_other);
var diff_magic_points_max = new_magic_points_max - parseInt(v.magic_points_max);
setAttrs({
magic_points_base: parseInt(v.pow),
magic_points_max: new_magic_points_max,
magic_points: parseInt(v.magic_points) + diff_magic_points_max,
magic_points_mook1: parseInt(v.magic_points_mook1) + diff_magic_points_max,
magic_points_mook2: parseInt(v.magic_points_mook2) + diff_magic_points_max,
magic_points_mook3: parseInt(v.magic_points_mook3) + diff_magic_points_max,
magic_points_mook4: parseInt(v.magic_points_mook4) + diff_magic_points_max,
magic_points_mook5: parseInt(v.magic_points_mook5) + diff_magic_points_max,
magic_points_mook6: parseInt(v.magic_points_mook6) + diff_magic_points_max,
magic_points_mook7: parseInt(v.magic_points_mook7) + diff_magic_points_max,
magic_points_mook8: parseInt(v.magic_points_mook8) + diff_magic_points_max,
magic_points_mook9: parseInt(v.magic_points_mook9) + diff_magic_points_max,
magic_points_mook10: parseInt(v.magic_points_mook10) + diff_magic_points_max,
});
});
};
on("change:pow change:magic_points_temp change:magic_points_other", function() { calc_magic_points(); });
// Movement Auto Calc
var calc_movement = function() {
getAttrs(["height", "fatigue", "movement_rate_species", "movement_rate_enc", "movement_rate_species_swim", "movement_rate_species_fly", "movement_rate_other", "movement_rate_temp", "armor_penalty", "athletics_experience", "athletics_other", "athletics_temp", "str", "dex", "con", "swim_experience", "swim_other", "swim_temp"], function(v) {
var swim_no_penalty = (parseInt(v.str) + parseInt(v.con) + parseInt(v.swim_experience)+parseInt(v.swim_other)+parseInt(v.swim_temp));
var step1_land_movement = parseInt(v.movement_rate_species) + parseInt(v.movement_rate_other) + parseInt(v.movement_rate_temp);
var step1_swim_movement = parseInt(v.movement_rate_species_swim) + parseInt(v.movement_rate_other) + parseInt(v.movement_rate_temp) + Math.floor(swim_no_penalty/20);
var step1_fly_movement = parseInt(v.movement_rate_species_fly) + parseInt(v.movement_rate_other) + parseInt(v.movement_rate_temp);
var athletics_no_penalty = (parseInt(v.str)+parseInt(v.dex)+parseInt(v.athletics_experience)+parseInt(v.athletics_other)+parseInt(v.athletics_temp));
var armor_penalty = parseInt(v.armor_penalty);
var height = parseInt(v.height);
var fatigue = parseInt(v.fatigue);
if (fatigue >= 8) {
var step2_land_movement = step1_land_movement;
var step2_swim_movement = step1_swim_movement;
var step2_fly_movement = step1_fly_movement;
var movement_rate_fatigue = "+0";
} else if (fatigue == 7 ) {
var step2_land_movement = step1_land_movement - 1;
var step2_swim_movement = step1_swim_movement - 1;
var step2_fly_movement = step1_fly_movement - 1;
var movement_rate_fatigue = "-1";
} else if (fatigue == 6 ) {
var step2_land_movement = step1_land_movement - 2;
var step2_swim_movement = step1_swim_movement - 2;
var step2_fly_movement = step1_fly_movement - 2;
var movement_rate_fatigue = "-2";
} else if (fatigue >= 4 ) {
var step2_land_movement = Math.ceil(step1_land_movement / 2);
var step2_swim_movement = Math.ceil(step1_swim_movement / 2);
var step2_fly_movement = Math.ceil(step1_fly_movement / 2);
var movement_rate_fatigue = "*.5";
} else {
var step2_land_movement = 0;
var step2_swim_movement = 0;
var step2_fly_movement = 0;
var movement_rate_fatigue = "*0";
}
if (v.movement_rate_enc == "+0") {
var step3_land_movement = step2_land_movement;
var step3_swim_movement = step2_swim_movement;
var step3_fly_movement = step2_fly_movement;
} else if (v.movement_rate_enc == "-2") {
var step3_land_movement = step2_land_movement - 2;
var step3_swim_movement = step2_swim_movement - 2;
var step3_fly_movement = step2_fly_movement - 2;
} else if (v.movement_rate_enc == "*.5") {
var step3_land_movement = Math.ceil(step2_land_movement / 2);
var step3_swim_movement = Math.ceil(step2_swim_movement / 2);
var step3_fly_movement = Math.ceil(step2_fly_movement / 2);
} else {
var step3_land_movement = 0;
var step3_swim_movement = 0;
var step3_fly_movement = 0;
}
var run = Math.ceil((step3_land_movement+(Math.floor((athletics_no_penalty/25))*.5))*3)+armor_penalty;
if (run < step3_land_movement) {
run = step3_land_movement;
}
var spirit = ((step3_land_movement+(Math.floor(athletics_no_penalty/25)))*5)+armor_penalty;
if (spirit < step3_land_movement) {
spirit = step3_land_movement;
}
var climb_rough = step3_land_movement+Math.ceil(armor_penalty/2);
if (climb_rough < 0) {
climb_rough = 0;
}
var climb_steep = step3_land_movement+armor_penalty;
if (climb_steep < 0) {
climb_steep = 0;
}
var climb_sheer = step3_land_movement+(armor_penalty*2);
if (climb_sheer < 0) {
climb_sheer = 0;
}
// Rules say minium is one step, per google that is .762 meters, so if we adjust to cm set minium to height-100cm to account for short characters like halfling or dwarves
var running_jump_horizontal = Math.ceil((((height/100)*2)+Math.floor(athletics_no_penalty/20))+(armor_penalty/2));
if (running_jump_horizontal < 1) {
running_jump_horizontal = 1;
}
var running_jump_vertical = Math.ceil(((((height/100)*.5)+(Math.floor(athletics_no_penalty/20)*.2))+(armor_penalty/2))*100);
if (running_jump_vertical < 20) {
running_jump_vertical = 20;
}
var standing_jump_horizontal = Math.ceil((height/100)+(armor_penalty/4));
if (standing_jump_horizontal < 1) {
standing_jump_horizontal = 1;
}
var standing_jump_vertical = Math.ceil((((height/100)*.25)+(armor_penalty/4))*100);
if (standing_jump_vertical < 20) {
standing_jump_vertical = 20;
}
var swim_sink = Math.ceil((step3_swim_movement/2)+armor_penalty);
if (swim_sink > 0) {
var step4_swim_movement = step3_swim_movement;
} else if (swim_sink == 0) {
var step4_swim_movement = getTranslationByKey("float-u");
} else {
var step4_swim_movement = getTranslationByKey("sink-u");
}
setAttrs({
movement_rate_fatigue: movement_rate_fatigue,
movement_rate: step3_land_movement,
walk_move: step3_land_movement,
run_move: run,
sprint_move: spirit,
climb_rough_move: climb_rough,
climb_steep_move: climb_steep,
climb_sheer_move: climb_sheer,
fly_move: step3_fly_movement,
running_jump_horizontal_move: running_jump_horizontal,
running_jump_vertical_move: running_jump_vertical,
standing_jump_horizontal_move: standing_jump_horizontal,
standing_jump_vertical_move: standing_jump_vertical,
swim_move: step4_swim_movement,
});
});
}
on("change:height change:fatigue change:movement_rate_species change:movement_rate_enc change:movement_rate_species_swim change:movement_rate_species_fly change:movement_rate_other change:movement_rate_temp change:armor_penalty change:str change:dex change:con change:athletics_experience change:athletics_other change:athletics_temp change:swim_experience change:swim_other change:swim_temp", function() { calc_movement(); });
// Power Points Auto Calc
var calc_power_points = function() {
getAttrs(["pow", "power_points_temp", "power_points_other", "power_points", "power_points_max", "power_points_mook1", "power_points_mook2", "power_points_mook3", "power_points_mook4", "power_points_mook5", "power_points_mook6", "power_points_mook7", "power_points_mook8", "power_points_mook9", "power_points_mook10"], function(v) {
var new_power_points_max = parseInt(v.pow) + parseInt(v.power_points_temp) + parseInt(v.power_points_other);
var diff_power_points_max = new_power_points_max - parseInt(v.power_points_max);
setAttrs({
power_points_base: parseInt(v.pow),
power_points_max: new_power_points_max,
power_points: parseInt(v.power_points) + diff_power_points_max,
power_points_mook1: parseInt(v.power_points_mook1) + diff_power_points_max,
power_points_mook2: parseInt(v.power_points_mook2) + diff_power_points_max,
power_points_mook3: parseInt(v.power_points_mook3) + diff_power_points_max,
power_points_mook4: parseInt(v.power_points_mook4) + diff_power_points_max,
power_points_mook5: parseInt(v.power_points_mook5) + diff_power_points_max,
power_points_mook6: parseInt(v.power_points_mook6) + diff_power_points_max,
power_points_mook7: parseInt(v.power_points_mook7) + diff_power_points_max,
power_points_mook8: parseInt(v.power_points_mook8) + diff_power_points_max,
power_points_mook9: parseInt(v.power_points_mook9) + diff_power_points_max,
power_points_mook10: parseInt(v.power_points_mook10) + diff_power_points_max,
});
});
};
on("change:pow change:power_points_temp change:power_points_other", function() { calc_power_points(); });
// Prana Points Auto Calc
var calc_prana_points = function() {
getAttrs(["pow", "prana_points_temp", "prana_points_other", "prana_points", "prana_points_max", "prana_points_mook1", "prana_points_mook2", "prana_points_mook3", "prana_points_mook4", "prana_points_mook5", "prana_points_mook6", "prana_points_mook7", "prana_points_mook8", "prana_points_mook9", "prana_points_mook10"], function(v) {
var new_prana_points_max = parseInt(v.pow) + parseInt(v.prana_points_temp) + parseInt(v.prana_points_other);
var diff_prana_points_max = new_prana_points_max - parseInt(v.prana_points_max);
setAttrs({
prana_points_base: parseInt(v.pow),
prana_points_max: new_prana_points_max,
prana_points: parseInt(v.prana_points) + diff_prana_points_max,
prana_points_mook1: parseInt(v.prana_points_mook1) + diff_prana_points_max,
prana_points_mook2: parseInt(v.prana_points_mook2) + diff_prana_points_max,
prana_points_mook3: parseInt(v.prana_points_mook3) + diff_prana_points_max,
prana_points_mook4: parseInt(v.prana_points_mook4) + diff_prana_points_max,
prana_points_mook5: parseInt(v.prana_points_mook5) + diff_prana_points_max,
prana_points_mook6: parseInt(v.prana_points_mook6) + diff_prana_points_max,
prana_points_mook7: parseInt(v.prana_points_mook7) + diff_prana_points_max,
prana_points_mook8: parseInt(v.prana_points_mook8) + diff_prana_points_max,
prana_points_mook9: parseInt(v.prana_points_mook9) + diff_prana_points_max,
prana_points_mook10: parseInt(v.prana_points_mook10) + diff_prana_points_max,
});
});
};
on("change:pow change:prana_points_temp change:prana_points_other", function() { calc_prana_points(); });
// Tenacity Auto Calc
var calc_tenacity = function() {
var total_dependency_score = 0;
var tenacity_dependencies = 0;
getSectionIDs("repeating_dependency", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_dependency_" + currentID + "_score"], function(v) {
if(v["repeating_dependency_" + currentID + "_score"] && isNaN(parseInt(v["repeating_dependency_" + currentID + "_score"], 10)) === false) {
total_dependency_score = total_dependency_score + parseInt(v["repeating_dependency_" + currentID + "_score"], 10);
}
if(i === idarray.length - 1) {
tenacity_dependencies = 0-Math.floor(total_dependency_score/20);
}
});
});
}
getAttrs(["pow", "tenacity_temp", "tenacity_other", "apply_dependencies_penalty", "tenacity_max", "tenacity", "tenacity_mook1", "tenacity_mook2", "tenacity_mook3", "tenacity_mook4", "tenacity_mook5", "tenacity_mook6", "tenacity_mook7", "tenacity_mook8", "tenacity_mook9", "tenacity_mook10"], function(val) {
var new_tenacity_max = parseInt(val.pow) + parseInt(val.tenacity_temp) + parseInt(val.tenacity_other) + (tenacity_dependencies*parseInt(val.apply_dependencies_penalty));
var diff_tenacity_max = new_tenacity_max - parseInt(val.tenacity_max);
setAttrs({
tenacity_dependencies: tenacity_dependencies,
tenacity_base: parseInt(val.pow),
tenacity_max: new_tenacity_max,
tenacity: parseInt(val.tenacity) + diff_tenacity_max,
tenacity_mook1: parseInt(val.tenacity_mook1) + diff_tenacity_max,
tenacity_mook2: parseInt(val.tenacity_mook2) + diff_tenacity_max,
tenacity_mook3: parseInt(val.tenacity_mook3) + diff_tenacity_max,
tenacity_mook4: parseInt(val.tenacity_mook4) + diff_tenacity_max,
tenacity_mook5: parseInt(val.tenacity_mook5) + diff_tenacity_max,
tenacity_mook6: parseInt(val.tenacity_mook6) + diff_tenacity_max,
tenacity_mook7: parseInt(val.tenacity_mook7) + diff_tenacity_max,
tenacity_mook8: parseInt(val.tenacity_mook8) + diff_tenacity_max,
tenacity_mook9: parseInt(val.tenacity_mook9) + diff_tenacity_max,
tenacity_mook10: parseInt(val.tenacity_mook10) + diff_tenacity_max,
});
});
});
};
on("change:pow change:tenacity_temp change:tenacity_other change:apply_dependencies_penalty change:repeating_dependency remove:repeating_dependency", function() { calc_tenacity(); });
// HP & Armor Auto Calc
var calc_hp_max_base = function() {
getAttrs(["con", "siz", "pow", "str", "hp_calc"], function(v) {
if (v.hp_calc == "1") {
base_value = Math.ceil((parseInt(v.con) + parseInt(v.siz) + parseInt(v.pow))/5);
} else if (v.hp_calc == "2") {
base_value = Math.ceil((parseInt(v.con) + parseInt(v.siz) + parseInt(v.str))/5);
} else {
base_value = Math.ceil((parseInt(v.con) + parseInt(v.siz))/5);
}
setAttrs({
hp_max_base: base_value,
});
});
};
on("change:con change:siz change:pow change:str change:hp_calc", function() { calc_hp_max_base(); });
var calc_location_hp = function(location) {
var hp_max_base_mod = location + "_hp_max_base_mod";
var hp_max_other = location + "_hp_max_other";
var current_hp = location + "_hp";
var armor_equipped = location + "_armor_equipped";
var armor_ap = location + "_armor_ap";
var other_ap = location + "_other_ap";
var current_hp_mook1 = location + "_hp_mook1";
var current_hp_mook2 = location + "_hp_mook2";
var current_hp_mook3 = location + "_hp_mook3";
var current_hp_mook4 = location + "_hp_mook4";
var current_hp_mook5 = location + "_hp_mook5";
var current_hp_mook6 = location + "_hp_mook6";
var current_hp_mook7 = location + "_hp_mook7";
var current_hp_mook8 = location + "_hp_mook8";
var current_hp_mook9 = location + "_hp_mook9";
var current_hp_mook10 = location + "_hp_mook10";
var current_hp_max = location + "_hp_max";
getAttrs(["all_armor_temp", "hp_max_base", "all_hp_temp", armor_equipped, armor_ap, other_ap, hp_max_base_mod, hp_max_other, current_hp, current_hp_mook1, current_hp_mook2, current_hp_mook3, current_hp_mook4, current_hp_mook5, current_hp_mook6, current_hp_mook7, current_hp_mook8, current_hp_mook9, current_hp_mook10, current_hp_max], function(v) {
setObj = {};
new_hp_max = parseInt(v["hp_max_base"]) + parseInt(v[hp_max_base_mod]) + parseInt(v[hp_max_other]) + parseInt(v["all_hp_temp"]);
diff_hp_max = new_hp_max - parseInt(v[current_hp_max]);
setObj[location + "_hp"] = parseInt(v[current_hp]) + diff_hp_max;
setObj[location + "_ap"] = parseInt(v[armor_ap]) * parseInt(v[armor_equipped]) + parseInt(v[other_ap]) + parseInt(v["all_armor_temp"]);
setObj[location + "_hp_mook1"] = parseInt(v[current_hp_mook1]) + diff_hp_max;
setObj[location + "_hp_mook2"] = parseInt(v[current_hp_mook2]) + diff_hp_max;
setObj[location + "_hp_mook3"] = parseInt(v[current_hp_mook3]) + diff_hp_max;
setObj[location + "_hp_mook4"] = parseInt(v[current_hp_mook4]) + diff_hp_max;
setObj[location + "_hp_mook5"] = parseInt(v[current_hp_mook5]) + diff_hp_max;
setObj[location + "_hp_mook6"] = parseInt(v[current_hp_mook6]) + diff_hp_max;
setObj[location + "_hp_mook7"] = parseInt(v[current_hp_mook7]) + diff_hp_max;
setObj[location + "_hp_mook8"] = parseInt(v[current_hp_mook8]) + diff_hp_max;
setObj[location + "_hp_mook9"] = parseInt(v[current_hp_mook9]) + diff_hp_max;
setObj[location + "_hp_mook10"] = parseInt(v[current_hp_mook10]) + diff_hp_max;
setObj[location + "_hp_max"] = new_hp_max;
setAttrs(setObj);
});
};
on("change:hp_max_base change:location1_armor_ap change:location1_armor_equipped change:location1_other_ap change:location1_hp_max_base_mod change:location1_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location1"); });
on("change:hp_max_base change:location2_armor_ap change:location2_armor_equipped change:location2_other_ap change:location2_hp_max_base_mod change:location2_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location2"); });
on("change:hp_max_base change:location3_armor_ap change:location3_armor_equipped change:location3_other_ap change:location3_hp_max_base_mod change:location3_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location3"); });
on("change:hp_max_base change:location4_armor_ap change:location4_armor_equipped change:location4_other_ap change:location4_hp_max_base_mod change:location4_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location4"); });
on("change:hp_max_base change:location5_armor_ap change:location5_armor_equipped change:location5_other_ap change:location5_hp_max_base_mod change:location5_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location5"); });
on("change:hp_max_base change:location6_armor_ap change:location6_armor_equipped change:location6_other_ap change:location6_hp_max_base_mod change:location6_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location6"); });
on("change:hp_max_base change:location7_armor_ap change:location7_armor_equipped change:location7_other_ap change:location7_hp_max_base_mod change:location7_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location7"); });
on("change:hp_max_base change:location8_armor_ap change:location8_armor_equipped change:location8_other_ap change:location8_hp_max_base_mod change:location8_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location8"); });
on("change:hp_max_base change:location9_armor_ap change:location9_armor_equipped change:location9_other_ap change:location9_hp_max_base_mod change:location9_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location9"); });
on("change:hp_max_base change:location10_armor_ap change:location10_armor_equipped change:location10_other_ap change:location10_hp_max_base_mod change:location10_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location10"); });
on("change:hp_max_base change:location11_armor_ap change:location11_armor_equipped change:location11_other_ap change:location11_hp_max_base_mod change:location11_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location11"); });
on("change:hp_max_base change:location12_armor_ap change:location12_armor_equipped change:location12_other_ap change:location12_hp_max_base_mod change:location12_hp_max_other change:all_hp_temp change:all_armor_temp", function() { calc_location_hp("location12"); });
// Simplified HP Auto Calc
var calc_simplified_hp = function() {
getAttrs(["con", "siz", "str", "pow", "hp_calc", "simplified_hp_max_other", "all_hp_temp", "simplified_hp", "simplified_hp_max", "simplified_hp_mook1", "simplified_hp_mook2", "simplified_hp_mook3", "simplified_hp_mook4", "simplified_hp_mook5", "simplified_hp_mook6", "simplified_hp_mook7", "simplified_hp_mook8", "simplified_hp_mook9", "simplified_hp_mook10", "simplified_hp_mook11", "simplified_hp_mook12"], function(v) {
if (v.hp_calc == "1") {
base_value = Math.ceil((parseInt(v.con) + parseInt(v.siz) + parseInt(v.pow))/2);
} else if (v.hp_calc == "2") {
base_value = Math.ceil((parseInt(v.con) + parseInt(v.siz) + parseInt(v.str))/2);
} else {
base_value = Math.ceil((parseInt(v.con) + parseInt(v.siz))/2);
}
new_hp_max = base_value + parseInt(v.simplified_hp_max_other) + parseInt(v.all_hp_temp);
diff_hp_max = new_hp_max - parseInt(v.simplified_hp_max);
setAttrs({
simplified_hp_max_base: base_value,
simplified_hp_max: new_hp_max,
simplified_hp: parseInt(v.simplified_hp) + diff_hp_max,
simplified_hp_mook1: parseInt(v.simplified_hp_mook1) + diff_hp_max,
simplified_hp_mook2: parseInt(v.simplified_hp_mook2) + diff_hp_max,
simplified_hp_mook3: parseInt(v.simplified_hp_mook3) + diff_hp_max,
simplified_hp_mook4: parseInt(v.simplified_hp_mook4) + diff_hp_max,
simplified_hp_mook5: parseInt(v.simplified_hp_mook5) + diff_hp_max,
simplified_hp_mook6: parseInt(v.simplified_hp_mook6) + diff_hp_max,
simplified_hp_mook7: parseInt(v.simplified_hp_mook7) + diff_hp_max,
simplified_hp_mook8: parseInt(v.simplified_hp_mook8) + diff_hp_max,
simplified_hp_mook9: parseInt(v.simplified_hp_mook9) + diff_hp_max,
simplified_hp_mook10: parseInt(v.simplified_hp_mook10) + diff_hp_max
});
});
}
on("change:con change:siz change:pow change:str change:hp_calc change:simplified_hp_max_other change:all_hp_temp", function() { calc_simplified_hp(); });
// Fatigue Auto Calc
var calc_fatigue = function() {
getAttrs(["fatigue", "healing_rate"], function(values) {
var healing_rate = parseInt(values.healing_rate);
if (values.fatigue == "9") {
setAttrs({
fatigue_skills: '0',
movement_rate_fatigue: '+0',
fatigue_recovery: 0,
});
} else if (values.fatigue == "8") {
setAttrs({
fatigue_skills: '1',
movement_rate_fatigue: '+0',
fatigue_recovery: .25 / healing_rate,
});
} else if (values.fatigue == "7") {
setAttrs({
fatigue_skills: '1',
movement_rate_fatigue: '-1',
fatigue_recovery: 3 / healing_rate,
});
} else if (values.fatigue == "6") {
setAttrs({
fatigue_skills: '2',
movement_rate_fatigue: '-2',
fatigue_recovery: 6 / healing_rate,
});
} else if (values.fatigue == "5") {
setAttrs({
fatigue_skills: '2',
movement_rate_fatigue: '*.5',
fatigue_recovery: 12 / healing_rate,
});
} else if (values.fatigue == "4") {
setAttrs({
fatigue_skills: '3',
movement_rate_fatigue: '*.5',
fatigue_recovery: 18 / healing_rate,
});
} else if (values.fatigue == "3") {
setAttrs({
fatigue_skills: '3',
movement_rate_fatigue: '*0',
fatigue_recovery: 24 / healing_rate,
});
} else if (values.fatigue == "2") {
setAttrs({
fatigue_skills: '4',
movement_rate_fatigue: '*0',
fatigue_recovery: 36 / healing_rate,
});
} else if (values.fatigue == "1") {
setAttrs({
fatigue_skills: '5',
movement_rate_fatigue: '*0',
fatigue_recovery: 48 / healing_rate,
});
} else if (values.fatigue == "0") {
setAttrs({
fatigue_skills: '5',
movement_rate_fatigue: '*0',
fatigue_recovery: "-"
});
} else {
setAttrs({
fatigue_skills: '0',
movement_rate_fatigue: '+0',
fatigue_recovery: 0,
});
}
});
}
on("change:fatigue change:healing_rate", function() { calc_fatigue(); });
//Skills Auto Calc
var calc_skill = function(skill_name, char1, char2, learned) {
//console.log("processing skill = " + skill_name);
var skill_base = skill_name + "_base";
var skill_xp = skill_name + "_experience";
var skill_temp = skill_name + "_temp";
var skill_other = skill_name + "_other";
var skill_penalty = skill_name + "_penalty";
var skill_veasy = skill_name + "_very_easy";
var skill_easy = skill_name + "_easy";
var skill_hard = skill_name + "_hard";
var skill_form = skill_name + "_formidable";
var skill_herc = skill_name + "_herculean";
var skill_enc = skill_name + "_encumbered";
if (skill_name.startsWith("repeating")) {
var skill_total = skill_name + "_total"
} else {
var skill_total = skill_name;
}
getAttrs(["str", "con", "siz", "dex", "int", "pow", "cha", skill_base, skill_xp, skill_temp, skill_other, skill_penalty, "herculean_mod"], function(v) {
setObj = {};
var skill_enc_value = 0;
if (char1 == "@{str}") {
var char1_value = parseInt(v.str);
skill_enc_value = 1;
} else if (char1 == "@{con}") {
var char1_value = parseInt(v.con);
} else if (char1 == "@{dex}") {
var char1_value = parseInt(v.dex);
skill_enc_value = 1;
} else if (char1 == "@{siz}") {
var char1_value = parseInt(v.siz);
} else if (char1 == "@{int}") {
var char1_value = parseInt(v.int);
} else if (char1 == "@{pow}") {
var char1_value = parseInt(v.pow);
} else if (char1 == "@{cha}") {
var char1_value = parseInt(v.cha);
} else {
var char1_value = 0;
}
if (char2 == "@{str}") {
var char2_value = parseInt(v.str);
skill_enc_value = 1;
} else if (char2 == "@{con}") {
var char2_value = parseInt(v.con);
} else if (char2 == "@{dex}") {
var char2_value = parseInt(v.dex);
skill_enc_value = 1;
} else if (char2 == "@{siz}") {
var char2_value = parseInt(v.siz);
} else if (char2 == "@{int}") {
var char2_value = parseInt(v.int);
} else if (char2 == "@{pow}") {
var char2_value = parseInt(v.pow);
} else if (char2 == "@{cha}") {
var char2_value = parseInt(v.cha);
} else {
var char2_value = 0;
}
if (skill_name == "superstition") {
var base_value = 21 - char1_value + char2_value;
} else if (skill_name.startsWith("repeating_affiliation")) {
var base_value = parseInt(v[skill_base]);
} else if (skill_name == "status") {
var base_value = parseInt(v[skill_base]);
} else if (skill_name == "strangeness") {
var base_value = parseInt(v[skill_base]);
} else if (skill_name == "the_soot") {
var base_value = parseInt(v[skill_base]);
} else {
var base_value = char1_value + char2_value;
}
/*
console.log("skill xp = " + v[skill_xp]);
console.log("skill temp = " + v[skill_temp]);
console.log("skill other = " + v[skill_other]);
console.log("skill learned = " + learned);
*/
var herc_mod = parseFloat(v.herculean_mod);
var std = (base_value + parseInt(v[skill_xp]) + parseInt(v[skill_temp]) + parseInt(v[skill_other])) * parseInt(learned);
var veasy = std * 2;
var easy = Math.ceil(std * 1.5);
var hard = Math.ceil(std * (2/3));
var form = Math.ceil(std * .5);
var herc = Math.ceil(std * herc_mod);
setObj[skill_veasy] = veasy + parseInt(v[skill_penalty]);
setObj[skill_easy] = easy + parseInt(v[skill_penalty]);
setObj[skill_total] = std + parseInt(v[skill_penalty]);
setObj[skill_hard] = hard + parseInt(v[skill_penalty]);
setObj[skill_form] = form + parseInt(v[skill_penalty]);
setObj[skill_herc] = herc + parseInt(v[skill_penalty]);
setObj[skill_base] = base_value;
setObj[skill_enc] = skill_enc_value;
//console.log("skill values = " + setObj);
setAttrs(setObj);
});
};
// Skill Derived Auto Calc
var calc_arcane_casting_derived = function() {
getAttrs(["int", "pow", "arcane_casting_experience", "arcane_casting_temp", "arcane_casting_other", "arcane_casting_learned"], function(v) {
var arcane_casting = parseInt(v.arcane_casting_learned) * (parseInt(v.int) + parseInt(v.pow)) + parseInt(v.arcane_casting_experience) + parseInt(v.arcane_casting_temp) + parseInt(v.arcane_casting_other);
setAttrs({
arcane_intensity_max: Math.ceil(arcane_casting/10),
arcane_magnitude: Math.ceil(arcane_casting/10),
});
});
};
var calc_arcane_knowledge_derived = function() {
getAttrs(["int", "arcane_knowledge_experience", "arcane_knowledge_temp", "arcane_knowledge_other", "arcane_knowledge_learned"], function(v) {
var arcane_knowledge = parseInt(v.arcane_knowledge_learned) * (parseInt(v.int) + parseInt(v.int)) + parseInt(v.arcane_knowledge_experience) + parseInt(v.arcane_knowledge_temp) + parseInt(v.arcane_knowledge_other);
setAttrs({
arcane_rank_0_known_max: Math.ceil(arcane_knowledge/5),
});
});
};
var calc_channel_derived = function() {
getAttrs(["int", "cha", "channel_experience", "channel_temp", "channel_other", "channel_learned"], function(v) {
var channel = parseInt(v.channel_learned) * (parseInt(v.int) + parseInt(v.cha)) + parseInt(v.channel_experience) + parseInt(v.channel_temp) + parseInt(v.channel_other);
setAttrs({
divine_intensity_max: Math.ceil(channel/10),
divine_magnitude: Math.ceil(channel/10),
});
});
};
var calc_fata_derived = function() {
getAttrs(["pow", "cha", "fata_experience", "fata_temp", "fata_other", "fata_learned"], function(v) {
var fata = parseInt(v.fata_learned) * (parseInt(v.pow) + parseInt(v.cha)) + parseInt(v.fata_experience) + parseInt(v.fata_temp) + parseInt(v.fata_other);
var fata_intensity = Math.ceil(fata/20);
setAttrs({
fata_intensity: fata_intensity,
fata_simultaneous: Math.ceil(fata_intensity/2),
});
});
};
var calc_gnosis_derived = function() {
getAttrs(["int", "pow", "gnosis_experience", "gnosis_temp", "gnosis_other", "gnosis_learned"], function(v) {
var gnosis = parseInt(v.gnosis_learned) * (parseInt(v.int) + parseInt(v.pow) + parseInt(v.gnosis_experience) + parseInt(v.gnosis_temp) + parseInt(v.gnosis_other));
setAttrs({
artifice_max_shaping_points: Math.ceil(gnosis/10),
artifice_max_complexity: Math.ceil(gnosis/10),
});
});
}
var calc_artifice_derived = function() {
getAttrs(["int", "dex", "artifice_experience", "artifice_temp", "artifice_other", "artifice_learned"], function(v) {
var artifice = parseInt(v.artifice_learned) * (parseInt(v.int) + parseInt(v.dex) + parseInt(v.artifice_experience) + parseInt(v.artifice_temp) + parseInt(v.artifice_other));
setAttrs({
artifice_extended_task_rounds: Math.ceil(artifice/20),
artifice_max_intensity: Math.ceil(artifice/10),
});
});
}
// Known Skills Auto Calc
on("change:pow change:int change:arcane_casting_experience change:arcane_casting_other change:arcane_casting_temp change:arcane_casting_penalty change:arcane_casting_learned change:herculean_mod ", function() {
getAttrs(["arcane_casting_learned"], function(v) {
calc_skill("arcane_casting", "@{int}", "@{pow}", v.arcane_casting_learned);
calc_arcane_casting_derived();
});
});
on("change:int change:arcane_knowledge_experience change:arcane_knowledge_other change:arcane_knowledge_temp change:arcane_knowledge_penalty change:arcane_knowledge_learned change:herculean_mod ", function() {
getAttrs(["arcane_knowledge_learned"], function(v) {
calc_skill("arcane_knowledge", "@{int}", "@{int}", v.arcane_knowledge_learned);
calc_arcane_knowledge_derived();
});
});
on("change:int change:dex change:artifice_experience change:artifice_other change:artifice_temp change:artifice_penalty change:artifice_learned change:herculean_mod ", function() {
getAttrs(["artifice_learned"], function(v) {
calc_skill("artifice", "@{int}", "@{dex}", v.artifice_learned);
calc_artifice_derived();
});
});
on("change:str change:dex change:athletics_experience change:athletics_other change:athletics_temp change:athletics_penalty change:herculean_mod ", function() { calc_skill("athletics", "@{str}", "@{dex}", 1); });
on("change:cha change:pow change:binding_experience change:binding_other change:binding_temp change:binding_penalty change:binding_learned change:herculean_mod ", function() {
getAttrs(["binding_learned"], function(v) {
calc_skill("binding", "@{cha}", "@{pow}", v.binding_learned);
});
});
on("change:str change:con change:boating_experience change:boating_other change:boating_temp change:boating_penalty change:herculean_mod ", function() { calc_skill("boating", "@{str}", "@{con}", 1); });
on("change:str change:siz change:brawn_experience change:brawn_other change:brawn_temp change:brawn_penalty change:herculean_mod ", function() { calc_skill("brawn", "@{str}", "@{siz}", 1); });
on("change:cha change:int change:channel_experience change:channel_other change:channel_temp change:channel_penalty change:channel_learned change:herculean_mod ", function() {
getAttrs(["channel_learned"], function(v) {
calc_skill("channel", "@{cha}", "@{int}", v.channel_learned);
calc_channel_derived();
});
});
on("change:dex change:pow change:conceal_experience change:conceal_other change:conceal_temp change:conceal_penalty change:herculean_mod ", function() { calc_skill("conceal", "@{dex}", "@{pow}", 1); });
on("change:dex change:int change:craft_alchemy_experience change:craft_alchemy_other change:craft_alchemy_temp change:craft_alchemy_penalty change:craft_alchemy_learned change:herculean_mod ", function() {
getAttrs(["craft_alchemy_learned"], function(v) {
calc_skill("craft_alchemy", "@{dex}", "@{int}", v.craft_alchemy_learned);
});
});
on("change:pow change:cha change:cursing_experience change:cursing_other change:cursing_temp change:cursing_penalty change:cursing_learned change:herculean_mod ", function() {
getAttrs(["cursing_learned"], function(v) {
calc_skill("cursing", "@{pow}", "@{cha}", v.cursing_learned);
});
});
on("change:int change:customs_experience change:customs_other change:customs_temp change:customs_penalty change:herculean_mod ", function() { calc_skill("customs", "@{int}", "@{int}", 1); });
on("change:dex change:cha change:dance_experience change:dance_other change:dance_temp change:dance_penalty change:herculean_mod ", function() { calc_skill("dance", "@{cha}", "@{dex}", 1); });
on("change:int change:cha change:deceit_experience change:deceit_other change:deceit_temp change:deceit_penalty change:herculean_mod ", function() { calc_skill("deceit", "@{int}", "@{cha}", 1); });
on("change:pow change:int change:divination_experience change:divination_other change:divination_temp change:divination_penalty change:divination_learned change:herculean_mod ", function() {
getAttrs(["divination_learned"], function(v) {
calc_skill("divination", "@{pow}", "@{int}", v.divination_learned);
});
});
on("change:dex change:pow change:drive_experience change:drive_other change:drive_temp change:drive_penalty change:herculean_mod ", function() { calc_skill("drive", "@{dex}", "@{pow}", 1); });
on("change:con change:endurance_experience change:endurance_other change:endurance_temp change:endurance_penalty change:herculean_mod ", function() { calc_skill("endurance", "@{con}", "@{con}", 1); });
on("change:dex change:evade_experience change:evade_other change:evade_temp change:evade_penalty change:herculean_mod ", function() { calc_skill("evade", "@{dex}", "@{dex}", 1); });
on("change:cha change:int change:exhort_experience change:exhort_other change:exhort_temp change:exhort_penalty change:exhort_learned change:herculean_mod ", function() {
getAttrs(["exhort_learned"], function(v) {
calc_skill("exhort", "@{cha}", "@{int}", v.exhort_learned);
});
});
on("change:cha change:pow change:fata_experience change:fata_other change:fata_temp change:fata_penalty change:fata_learned change:herculean_mod ", function() {
getAttrs(["fata_learned"], function(v) {
calc_skill("fata", "@{cha}", "@{pow}", v.fata_learned);
calc_fata_derived();
});
});
on("change:int change:dex change:first_aid_experience change:first_aid_other change:first_aid_temp change:first_aid_penalty change:herculean_mod ", function() { calc_skill("first_aid", "@{int}", "@{dex}", 1); });
on("change:cha change:pow change:folk_magic_experience change:folk_magic_other change:folk_magic_temp change:folk_magic_penalty change:folk_magic_learned change:herculean_mod ", function() {
getAttrs(["folk_magic_learned"], function(v) {
calc_skill("folk_magic", "@{cha}", "@{pow}", v.folk_magic_learned);
});
});
on("change:int change:pow change:gnosis_experience change:gnosis_other change:gnosis_temp change:gnosis_penalty change:gnosis_learned change:herculean_mod ", function() {
getAttrs(["gnosis_learned"], function(v) {
calc_skill("gnosis", "@{int}", "@{pow}", v.gnosis_learned);
calc_gnosis_derived();
});
});
on("change:int change:home_parallel_experience change:home_parallel_other change:home_parallel_temp change:home_parallel_penalty change:herculean_mod ", function() { calc_skill("home_parallel", "@{int}", "@{int}", 1); });
on("change:cha change:influence_experience change:influence_other change:influence_temp change:influence_penalty change:herculean_mod ", function() { calc_skill("influence", "@{cha}", "@{cha}", 1); });
on("change:int change:pow change:insight_experience change:insight_other change:insight_temp change:insight_penalty change:herculean_mod ", function() { calc_skill("insight", "@{int}", "@{pow}", 1); });
on("change:int change:cha change:linguistics_experience change:linguistics_other change:linguistics_temp change:linguistics_penalty change:linguistics_learned change:herculean_mod ", function() {
getAttrs(["linguistics_learned"], function(v) {
calc_skill("linguistics", "@{cha}", "@{int}", v.linguistics_learned);
});
});
on("change:int change:locale_experience change:locale_other change:locale_temp change:locale_penalty change:herculean_mod ", function() { calc_skill("locale", "@{int}", "@{int}", 1); });
on("change:int change:con change:meditation_experience change:meditation_other change:meditation_temp change:meditation_penalty change:meditation_learned change:herculean_mod ", function() {
getAttrs(["meditation_learned"], function(v) {
calc_skill("meditation", "@{con}", "@{int}", v.meditation_learned);
});
});
on("change:int change:cha change:native_tongue_experience change:native_tongue_other change:native_tongue_temp change:native_tongue_penalty change:herculean_mod ", function() { calc_skill("native_tongue", "@{int}", "@{cha}", 1); });
on("change:cha change:int change:necromancy_experience change:necromancy_other change:necromancy_temp change:necromancy_penalty change:necromancy_learned change:herculean_mod ", function() {
getAttrs(["necromancy_learned"], function(v) {
calc_skill("necromancy", "@{cha}", "@{int}", v.necromancy_learned);
});
});
on("change:int change:pharmacy_experience change:pharmacy_other change:pharmacy_temp change:pharmacy_penalty change:pharmacy_learned change:herculean_mod ", function() {
getAttrs(["pharmacy_learned"], function(v) {
calc_skill("pharmacy", "@{int}", "@{int}", v.pharmacy_learned);
});
});
on("change:cha change:pow change:piety_experience change:piety_other change:piety_temp change:piety_penalty change:piety_learned change:herculean_mod ", function() {
getAttrs(["piety_learned"], function(v) {
calc_skill("piety", "@{cha}", "@{pow}", v.piety_learned);
});
});
on("change:int change:pow change:perception_experience change:perception_other change:perception_temp change:perception_penalty change:herculean_mod ", function() { calc_skill("perception", "@{int}", "@{pow}", 1); });
on("change:dex change:pow change:ride_experience change:ride_other change:ride_temp change:ride_penalty change:herculean_mod ", function() { calc_skill("ride", "@{dex}", "@{pow}", 1); });
on("change:con change:pow change:shape_shifting_experience change:shape_shifting_other change:shape_shifting_temp change:shape_shifting_penalty change:shape_shifting_learned change:herculean_mod ", function() {
getAttrs(["shape_shifting_learned"], function(v) {
calc_skill("shape_shifting", "@{con}", "@{pow}", v.shape_shifting_learned);
});
});
on("change:int change:pow change:shaping_experience change:shaping_other change:shaping_temp change:shaping_penalty change:shaping_learned change:herculean_mod ", function() {
getAttrs(["shaping_learned"], function(v) {
calc_skill("shaping", "@{int}", "@{pow}", v.shaping_learned);
});
});
on("change:cha change:pow change:sing_experience change:sing_other change:sing_temp change:sing_penalty change:herculean_mod ", function() { calc_skill("sing", "@{cha}", "@{pow}", 1); });
on("change:status_base change:status_experience change:status_temp change:status_other change:status_penalty change:herculean_mod", function() { calc_skill("status", "0", "0", 1); });
on("change:int change:dex change:stealth_experience change:stealth_other change:stealth_temp change:stealth_penalty change:herculean_mod ", function() { calc_skill("stealth", "@{int}", "@{dex}", 1); });
on("change:strangeness_base change:strangeness_experience change:strangeness_temp change:strangeness_other change:strangeness_penalty change:herculean_mod", function() { calc_skill("strangeness", "0", "0", 1); });
on("change:int change:pow change:superstition_experience change:superstition_other change:superstition_temp change:superstition_penalty change:herculean_mod ", function() { calc_skill("superstition", "@{int}", "@{pow}", 1); });
on("change:str change:con change:swim_experience change:swim_other change:swim_temp change:swim_penalty change:herculean_mod ", function() { calc_skill("swim", "@{str}", "@{con}", 1); });
on("change:the_soot_base change:the_soot_experience change:the_soot_temp change:the_soot_other change:the_soot_penalty change:herculean_mod", function() { calc_skill("the_soot", "0", "0", 1); });
on("change:pow change:theology_experience change:theology_other change:theology_temp change:theology_penalty change:theology_learned change:herculean_mod ", function() {
getAttrs(["theology_learned"], function(v) {
calc_skill("theology", "@{pow}", "@{pow}", v.theology_learned);
});
});
on("change:con change:pow change:trance_experience change:trance_other change:trance_temp change:trance_penalty change:trance_learned change:herculean_mod ", function() {
getAttrs(["trance_learned"], function(v) {
calc_skill("trance", "@{con}", "@{pow}", v.trance_learned);
});
});
on("change:str change:dex change:unarmed_experience change:unarmed_other change:unarmed_temp change:unarmed_penalty change:herculean_mod ", function() { calc_skill("unarmed", "@{str}", "@{dex}", 1); });
on("change:pow change:willpower_experience change:willpower_other change:willpower_temp change:willpower_penalty change:herculean_mod ", function() { calc_skill("willpower", "@{pow}", "@{pow}", 1); });
// Repeating Language Auto Calc
on("change:int change:cha change:herculean_mod change:repeating_language", function() {
getSectionIDs("repeating_language", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_language_" + currentID, "@{int}", "@{cha}", 1);
});
}
});
});
// Repeating M-Space Psionic Power Auto Calc
on("change:pow change:herculean_mod change:repeating_psionicpower", function() {
getSectionIDs("repeating_psionicpower", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_psionicpower_" + currentID, "@{pow}", "@{pow}", 1);
});
}
});
});
// Repeating Odd Soot Magic Spell Auto Calc
on("change:pow change:herculean_mod change:repeating_magicspell", function() {
getSectionIDs("repeating_magicspell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_magicspell_" + currentID, "@{pow}", "@{pow}", 1);
});
}
});
});
// Repeating Alchemical Tradition Auto Calc
on("change:int change:herculean_mod change:repeating_alchemicaltradition", function() {
getSectionIDs("repeating_alchemicaltradition", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_alchemicaltradition_" + currentID, "@{int}", "@{int}", 1);
});
}
});
});
// Repeating Mysticism Path Auto Calc
on("change:pow change:con change:herculean_mod change:repeating_path", function() {
getSectionIDs("repeating_path", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_path_" + currentID, "@{pow}", "@{con}", 1);
});
}
});
});
// Repeating Psionics Discipline Auto Calc
on("change:pow change:herculean_mod change:repeating_discipline", function() {
getSectionIDs("repeating_discipline", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_discipline_" + currentID, "@{pow}", "@{pow}", 1);
});
}
});
});
// Repeating Theism Devotion Auto Calc
on("change:pow change:cha change:herculean_mod change:repeating_devotion", function() {
getSectionIDs("repeating_devotion", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
calc_skill("repeating_devotion_" + currentID, "@{pow}", "@{cha}", 1);
});
}
});
});
// Repeating Affliation Auto Calc
on("change:repeating_affiliation", function(event_info) { calc_skill(event_info.triggerName, "0", "0", 1); });
// Repeating Combat Style Auto Calc
on("change:str change:con change:siz change:dex change:int change:cha change:pow change:herculean_mod change:repeating_combatstyle remove:repeating_combatstyle", function(eventInfo) {
getSectionIDs("repeating_combatstyle", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
var char1 = "repeating_combatstyle_" + currentID + "_char1";
var char2 = "repeating_combatstyle_" + currentID + "_char2";
getAttrs([char1, char2], function(v) {
calc_skill("repeating_combatstyle_" + currentID, v[char1], v[char2], 1);
});
});
}
});
});
// Repeating Standard Skill Auto Calc
on("change:str change:con change:siz change:dex change:int change:cha change:pow change:herculean_mod change:repeating_standardskill", function() {
getSectionIDs("repeating_standardskill", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
var char1 = "repeating_standardskill_" + currentID + "_char1";
var char2 = "repeating_standardskill_" + currentID + "_char2";
getAttrs([char1, char2], function(v) {
calc_skill("repeating_standardskill_" + currentID, v[char1], v[char2], 1);
});
});
}
});
});
// Repeating Professional Skill Auto Calc
on("change:str change:con change:siz change:dex change:int change:cha change:pow change:herculean_mod change:repeating_professionalskill", function() {
getSectionIDs("repeating_professionalskill", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
var char1 = "repeating_professionalskill_" + currentID + "_char1";
var char2 = "repeating_professionalskill_" + currentID + "_char2";
getAttrs([char1, char2], function(v) {
calc_skill("repeating_professionalskill_" + currentID, v[char1], v[char2], 1);
});
});
}
});
});
// Repeating Invocation Auto Calc
on("change:str change:con change:siz change:dex change:int change:cha change:pow change:herculean_mod change:repeating_invocation", function() {
getSectionIDs("repeating_invocation", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
var char1 = "repeating_invocation_" + currentID + "_char1";
var char2 = "repeating_invocation_" + currentID + "_char2";
getAttrs([char1, char2], function(v) {
calc_skill("repeating_invocation_" + currentID, v[char1], v[char2], 1);
});
});
}
});
});
// Passions and Dependencies and Peculiarities Auto Calc
var calc_passion = function(skill_name) {
var skill_total = skill_name + "_total";
var skill_score = skill_name + "_score";
var skill_temp = skill_name + "_temp";
var skill_penalty = skill_name + "_penalty";
var skill_veasy = skill_name + "_very_easy";
var skill_easy = skill_name + "_easy";
var skill_hard = skill_name + "_hard";
var skill_form = skill_name + "_formidable";
var skill_herc = skill_name + "_herculean";
getAttrs([skill_score, skill_temp, skill_penalty, "herculean_mod"], function(v) {
setObj = {};
var herc_mod = parseFloat(v.herculean_mod);
var std = parseInt(v[skill_score]) + parseInt(v[skill_temp]);
var veasy = std * 2;
var easy = Math.ceil(std * 1.5);
var hard = Math.ceil(std * (2/3));
var form = Math.ceil(std * .5);
var herc = Math.ceil(std * herc_mod);
setObj[skill_veasy] = veasy + parseInt(v[skill_penalty]);
setObj[skill_easy] = easy + parseInt(v[skill_penalty]);
setObj[skill_total] = std + parseInt(v[skill_penalty]);
setObj[skill_hard] = hard + parseInt(v[skill_penalty]);
setObj[skill_form] = form + parseInt(v[skill_penalty]);
setObj[skill_herc] = herc + parseInt(v[skill_penalty]);
setAttrs(setObj);
});
};
on("change:repeating_passion change:repeating_peculiarity change:repeating_dependency", function(event_info) { calc_passion(event_info.triggerName); });
// Spirits Max Auto Calc
var calc_max_spirits = function() {
getAttrs(["cha", "animism_cult_rank"], function(v) {
var animism_cult_rank = parseInt(v.animism_cult_rank);
var cha = parseInt(v.cha);
if (animism_cult_rank == 1) {
var spirits_max = Math.ceil(cha * .25);
} else if (animism_cult_rank == 2) {
var spirits_max = Math.ceil(cha * .5);
} else if (animism_cult_rank == 3) {
var spirits_max = Math.ceil(cha * .75);
} else if (animism_cult_rank >= 4) {
var spirits_max = cha;
}
setAttrs({spirits_max: spirits_max});
});
};
on("change:cha change:animism_cult_rank", function() { calc_max_spirits(); });
function find_damage_mod_step(value) {
if (value >= 171) {
return 23;
} else if (value >= 161) {
return 22;
} else if (value >= 151) {
return 21;
} else if (value >= 141) {
return 20;
} else if (value >= 131) {
return 19;
} else if (value >= 121) {
return 18;
} else if (value >= 111) {
return 17;
} else if (value >= 101) {
return 16;
} else if (value >= 91) {
return 15;
} else if (value >= 81) {
return 14;
} else if (value >= 71) {
return 13;
} else if (value >= 61) {
return 12;
} else if (value >= 51) {
return 11;
} else if (value >= 46) {
return 10;
} else if (value >= 41) {
return 9;
} else if (value >= 36) {
return 8;
} else if (value >= 31) {
return 7;
} else if (value >= 26) {
return 6;
} else if (value >= 21) {
return 5;
} else if (value >= 16) {
return 4;
} else if (value >= 11) {
return 3;
} else if (value >= 6) {
return 2;
} else {
return 1;
}
}
function find_damage_mod(step) {
if (step == 1) {
return "-1d8";
} else if (step == 2) {
return "-1d6";
} else if (step == 3) {
return "-1d4";
} else if (step == 4) {
return "-1d2";
} else if (step == 5) {
return "0";
} else if (step == 6) {
return "1d2";
} else if (step == 7) {
return "1d4";
} else if (step == 8) {
return "1d6";
} else if (step == 9) {
return "1d8";
} else if (step == 10) {
return "1d10";
} else if (step == 11) {
return "1d12";
} else if (step == 12) {
return "2d6";
} else if (step == 13) {
return "1d8+1d6";
} else if (step == 14) {
return "2d8";
} else if (step == 15) {
return "1d10+1d8";
} else if (step == 16) {
return "2d10";
} else if (step == 17) {
return "2d10+1d2";
} else if (step == 18) {
return "2d10+1d4";
} else if (step == 19) {
return "2d10+1d6";
} else if (step == 20) {
return "2d10+1d8";
} else if (step == 21) {
return "3d10";
} else if (step == 22) {
return "2d10+1d12";
} else {
return "2d10+2d6";
}
}
//Simplified combat sets hit locations
on("change:simplified_combat_enabled", function() {
getAttrs(["simplified_combat_enabled"], function(values) {
if (values.simplified_combat_enabled == "1") {
setAttrs({
hit_locations: "simplified",
});
}
});
});
// Mythras Vehicle Systems
on("change:vehicle_size", function() {
getAttrs(["vehicle_size"], function(values) {
setAttrs({
vehicle_system1_hits: values.vehicle_size,
vehicle_system2_hits: values.vehicle_size,
vehicle_system3_hits: values.vehicle_size,
vehicle_system4_hits: values.vehicle_size,
vehicle_system5_hits: values.vehicle_size,
vehicle_system6_hits: values.vehicle_size,
vehicle_system7_hits: values.vehicle_size,
vehicle_system8_hits: values.vehicle_size,
vehicle_system9_hits: values.vehicle_size,
vehicle_system10_hits: values.vehicle_size
});
});
});
on("change:mythras_vehicle_type", function() {
getAttrs(["mythras_vehicle_type"], function(values) {
if (values.mythras_vehicle_type === "spaceship") {
setAttrs({
vehicle_system1_roll: 1, vehicle_system1_name: getTranslationByKey('avionics-u'),
vehicle_system2_roll: 2, vehicle_system2_name: getTranslationByKey('communications-u'),
vehicle_system3_roll: 3, vehicle_system3_name: getTranslationByKey('crew-u') + "/" + getTranslationByKey('passengers-u'),
vehicle_system4_roll: 4, vehicle_system4_name: getTranslationByKey('hold-u') + "/" + getTranslationByKey('hangar-bay-u'),
vehicle_system5_roll: 5, vehicle_system5_name: getTranslationByKey('hyperdrive-u'),
vehicle_system6_roll: 6, vehicle_system6_name: getTranslationByKey('reactor-core-u'),
vehicle_system7_roll: 7, vehicle_system7_name: getTranslationByKey('sensors-u'),
vehicle_system8_roll: 8, vehicle_system8_name: getTranslationByKey('shields-u'),
vehicle_system9_roll: 9, vehicle_system9_name: getTranslationByKey('sublight-drive-u'),
vehicle_system10_roll: 10, vehicle_system10_name: getTranslationByKey('weapons-u'),
vehicle_system_die: "1d10"
});
} else {
setAttrs({
vehicle_system1_roll: 1, vehicle_system1_name: getTranslationByKey('cargo-compartment-u'),
vehicle_system2_roll: 2, vehicle_system2_name: getTranslationByKey('communications-u'),
vehicle_system3_roll: 3, vehicle_system3_name: getTranslationByKey('controls-u'),
vehicle_system4_roll: 4, vehicle_system4_name: getTranslationByKey('drive-u') + "/" + getTranslationByKey('repulsorlift-u'),
vehicle_system5_roll: 5, vehicle_system5_name: getTranslationByKey('crew-u') + "/" + getTranslationByKey('passengers-u'),
vehicle_system6_roll: 6, vehicle_system6_name: getTranslationByKey('power-core-u'),
vehicle_system7_roll: 7, vehicle_system7_name: getTranslationByKey('sensors-u'),
vehicle_system8_roll: 8, vehicle_system8_name: getTranslationByKey('weapons-u'),
vehicle_system9_roll: 0, vehicle_system9_name: "",
vehicle_system10_roll: 0, vehicle_system10_name: "",
vehicle_system_die: "1d8"
});
}
});
});
// Hit Locations
on("change:hit_locations", function() {
getAttrs(["hit_locations", "hp_max_base"], function(values) {
var negative_hp_max_base = 0 - parseInt(values.hp_max_base);
if (values.hit_locations === "rabble") {
setAttrs({
location1_table_start: 1, location1_table_end: 20, location1_name: getTranslationByKey('hit-points-u'), location1_hp_max_base_mod: 0,
location2_table_start: 0, location2_table_end: 0, location2_name: " ", location2_hp_max_base_mod: negative_hp_max_base,
location3_table_start: 0, location3_table_end: 0, location3_name: " ", location3_hp_max_base_mod: negative_hp_max_base,
location4_table_start: 0, location4_table_end: 0, location4_name: " ", location4_hp_max_base_mod: negative_hp_max_base,
location5_table_start: 0, location5_table_end: 0, location5_name: " ", location5_hp_max_base_mod: negative_hp_max_base,
location6_table_start: 0, location6_table_end: 0, location6_name: " ", location6_hp_max_base_mod: negative_hp_max_base,
location7_table_start: 0, location7_table_end: 0, location7_name: " ", location7_hp_max_base_mod: negative_hp_max_base,
location8_table_start: 0, location8_table_end: 0, location8_name: " ", location8_hp_max_base_mod: negative_hp_max_base,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 0, location3_display: 0, location4_display: 0, location5_display: 0, location6_display: 0,
location7_display: 0, location8_display: 0, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 1, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "simplified") {
setAttrs({
location1_table_start: 1, location1_table_end: 20, location1_name: getTranslationByKey('hit-points-u'), location1_hp_max_base_mod: 0,
location2_table_start: 0, location2_table_end: 0, location2_name: " ", location2_hp_max_base_mod: negative_hp_max_base,
location3_table_start: 0, location3_table_end: 0, location3_name: " ", location3_hp_max_base_mod: negative_hp_max_base,
location4_table_start: 0, location4_table_end: 0, location4_name: " ", location4_hp_max_base_mod: negative_hp_max_base,
location5_table_start: 0, location5_table_end: 0, location5_name: " ", location5_hp_max_base_mod: negative_hp_max_base,
location6_table_start: 0, location6_table_end: 0, location6_name: " ", location6_hp_max_base_mod: negative_hp_max_base,
location7_table_start: 0, location7_table_end: 0, location7_name: " ", location7_hp_max_base_mod: negative_hp_max_base,
location8_table_start: 0, location8_table_end: 0, location8_name: " ", location8_hp_max_base_mod: negative_hp_max_base,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 0, location3_display: 0, location4_display: 0, location5_display: 0, location6_display: 0,
location7_display: 0, location8_display: 0, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 1, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "arachnid") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: -1,
location2_table_start: 3, location2_table_end: 4, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: -1,
location3_table_start: 5, location3_table_end: 6, location3_name: getTranslationByKey('mid-right-leg-u'), location3_hp_max_base_mod: -1,
location4_table_start: 7, location4_table_end: 8, location4_name: getTranslationByKey('mid-left-leg-u'), location4_hp_max_base_mod: -1,
location5_table_start: 9, location5_table_end: 10, location5_name: getTranslationByKey('fore-right-leg-u'), location5_hp_max_base_mod: -1,
location6_table_start: 11, location6_table_end: 12, location6_name: getTranslationByKey('fore-left-leg-u'), location6_hp_max_base_mod: -1,
location7_table_start: 13, location7_table_end: 14, location7_name: getTranslationByKey('abdomen-u'), location7_hp_max_base_mod: 2,
location8_table_start: 15, location8_table_end: 16, location8_name: getTranslationByKey('front-right-leg-u'), location8_hp_max_base_mod: -1,
location9_table_start: 17, location9_table_end: 18, location9_name: getTranslationByKey('front-left-leg-u'), location9_hp_max_base_mod: -1,
location10_table_start: 19, location10_table_end: 20, location10_name: getTranslationByKey('cephalothorax-u'), location10_hp_max_base_mod: 1,
location11_table_start: 0, location11_table_end: 0, location11_name: "", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: "", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 1
});
} else if (values.hit_locations === "humanoid") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('right-leg-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 6, location2_name: getTranslationByKey('left-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 7, location3_table_end: 9, location3_name: getTranslationByKey('abdomen-u'), location3_hp_max_base_mod: 1,
location4_table_start: 10, location4_table_end: 12, location4_name: getTranslationByKey('chest-u'), location4_hp_max_base_mod: 2,
location5_table_start: 13, location5_table_end: 15, location5_name: getTranslationByKey('right-arm-u'), location5_hp_max_base_mod: -1,
location6_table_start: 16, location6_table_end: 18, location6_name: getTranslationByKey('left-arm-u'), location6_hp_max_base_mod: -1,
location7_table_start: 19, location7_table_end: 20, location7_name: getTranslationByKey('head-u'), location7_hp_max_base_mod: 0,
location8_table_start: 0, location8_table_end: 0, location8_name: " ", location8_hp_max_base_mod: negative_hp_max_base,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 0, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 1, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "centaurid") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 6, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 7, location3_table_end: 8, location3_name: getTranslationByKey('hindquarters-u'), location3_hp_max_base_mod: 1,
location4_table_start: 9, location4_table_end: 10, location4_name: getTranslationByKey('forequarters-u'), location4_hp_max_base_mod: 2,
location5_table_start: 11, location5_table_end: 12, location5_name: getTranslationByKey('front-right-leg-u'), location5_hp_max_base_mod: 0,
location6_table_start: 13, location6_table_end: 14, location6_name: getTranslationByKey('front-left-leg-u'), location6_hp_max_base_mod: 0,
location7_table_start: 15, location7_table_end: 16, location7_name: getTranslationByKey('chest-u'), location7_hp_max_base_mod: -1,
location8_table_start: 17, location8_table_end: 17, location8_name: getTranslationByKey('right-arm-u'), location8_hp_max_base_mod: -4,
location9_table_start: 18, location9_table_end: 18, location9_name: getTranslationByKey('left-arm-u'), location9_hp_max_base_mod: -4,
location10_table_start: 19, location10_table_end: 20, location10_name: getTranslationByKey('head-u'), location10_hp_max_base_mod: -3,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 1
});
} else if (values.hit_locations === "decapoda") {
setAttrs({
location1_table_start: 1, location1_table_end: 1, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: -1,
location2_table_start: 2, location2_table_end: 2, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: -1,
location3_table_start: 3, location3_table_end: 3, location3_name: getTranslationByKey('mid-right-leg-u'), location3_hp_max_base_mod: -1,
location4_table_start: 4, location4_table_end: 4, location4_name: getTranslationByKey('mid-left-leg-u'), location4_hp_max_base_mod: -1,
location5_table_start: 5, location5_table_end: 5, location5_name: getTranslationByKey('fore-right-leg-u'), location5_hp_max_base_mod: -1,
location6_table_start: 6, location6_table_end: 6, location6_name: getTranslationByKey('fore-left-leg-u'), location6_hp_max_base_mod: -1,
location7_table_start: 7, location7_table_end: 7, location7_name: getTranslationByKey('front-right-leg-u'), location7_hp_max_base_mod: -1,
location8_table_start: 8, location8_table_end: 8, location8_name: getTranslationByKey('front-left-leg-u'), location8_hp_max_base_mod: -1,
location9_table_start: 9, location9_table_end: 10, location9_name: getTranslationByKey('abdomen-u'), location9_hp_max_base_mod: 1,
location10_table_start: 11, location10_table_end: 16, location10_name: getTranslationByKey('cephalothorax-u'), location10_hp_max_base_mod: 2,
location11_table_start: 17, location11_table_end: 18, location11_name: getTranslationByKey('right-pincer-u'), location11_hp_max_base_mod: 2,
location12_table_start: 19, location12_table_end: 20, location12_name: getTranslationByKey('left-pincer-u'), location12_hp_max_base_mod: 0,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 1, location12_display: 1,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "decapodiform") {
setAttrs({
location1_table_start: 1, location1_table_end: 1, location1_name: getTranslationByKey('tentacle-1-u'), location1_hp_max_base_mod: -1,
location2_table_start: 2, location2_table_end: 2, location2_name: getTranslationByKey('tentacle-2-u'), location2_hp_max_base_mod: -1,
location3_table_start: 3, location3_table_end: 3, location3_name: getTranslationByKey('tentacle-3-u'), location3_hp_max_base_mod: -1,
location4_table_start: 4, location4_table_end: 4, location4_name: getTranslationByKey('tentacle-4-u'), location4_hp_max_base_mod: -1,
location5_table_start: 5, location5_table_end: 5, location5_name: getTranslationByKey('tentacle-5-u'), location5_hp_max_base_mod: -1,
location6_table_start: 6, location6_table_end: 6, location6_name: getTranslationByKey('tentacle-6-u'), location6_hp_max_base_mod: -1,
location7_table_start: 7, location7_table_end: 7, location7_name: getTranslationByKey('tentacle-7-u'), location7_hp_max_base_mod: -1,
location8_table_start: 8, location8_table_end: 8, location8_name: getTranslationByKey('tentacle-8-u'), location8_hp_max_base_mod: -1,
location9_table_start: 9, location9_table_end: 11, location9_name: getTranslationByKey('long-tentacle-1-u'), location9_hp_max_base_mod: 0,
location10_table_start: 12, location10_table_end: 14, location10_name: getTranslationByKey('long-tentacle-2-u'), location10_hp_max_base_mod: 0,
location11_table_start: 15, location11_table_end: 17, location11_name: getTranslationByKey('body-u'), location11_hp_max_base_mod: 2,
location12_table_start: 18, location12_table_end: 20, location12_name: getTranslationByKey('head-u'), location12_hp_max_base_mod: 1,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 1, location12_display: 1,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "dorsal_finned_aquatic") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('tail-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 6, location2_name: getTranslationByKey('dorsal-fin-u'), location2_hp_max_base_mod: -1,
location3_table_start: 7, location3_table_end: 10, location3_name: getTranslationByKey('hindquarters-u'), location3_hp_max_base_mod: 1,
location4_table_start: 11, location4_table_end: 14, location4_name: getTranslationByKey('forequarters-u'), location4_hp_max_base_mod: 2,
location5_table_start: 15, location5_table_end: 16, location5_name: getTranslationByKey('right-fin-u'), location5_hp_max_base_mod: -1,
location6_table_start: 17, location6_table_end: 18, location6_name: getTranslationByKey('left-fin-u'), location6_hp_max_base_mod: -1,
location7_table_start: 19, location7_table_end: 20, location7_name: getTranslationByKey('head-u'), location7_hp_max_base_mod: 0,
location8_table_start: 0, location8_table_end: 0, location8_name: " ", location8_hp_max_base_mod: negative_hp_max_base,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 0, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 1, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "draconic") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('tail-u'), location1_hp_max_base_mod: 0,
location2_table_start: 3, location2_table_end: 4, location2_name: getTranslationByKey('rear-right-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 5, location3_table_end: 6, location3_name: getTranslationByKey('rear-left-leg-u'), location3_hp_max_base_mod: 0,
location4_table_start: 7, location4_table_end: 8, location4_name: getTranslationByKey('hindquarters-u'), location4_hp_max_base_mod: 1,
location5_table_start: 9, location5_table_end: 10, location5_name: getTranslationByKey('right-wing-u'), location5_hp_max_base_mod: -1,
location6_table_start: 11, location6_table_end: 12, location6_name: getTranslationByKey('left-wing-u'), location6_hp_max_base_mod: -1,
location7_table_start: 13, location7_table_end: 14, location7_name: getTranslationByKey('forequarters-u'), location7_hp_max_base_mod: 2,
location8_table_start: 15, location8_table_end: 16, location8_name: getTranslationByKey('front-right-leg-u'), location8_hp_max_base_mod: 0,
location9_table_start: 17, location9_table_end: 18, location9_name: getTranslationByKey('front-left-leg-u'), location9_hp_max_base_mod: 0,
location10_table_start: 19, location10_table_end: 20, location10_name: getTranslationByKey('head-u'), location10_hp_max_base_mod: 0,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 1
});
} else if (values.hit_locations === "insect") {
setAttrs({
location1_table_start: 1, location1_table_end: 1, location1_name: getTranslationByKey('right-rear-leg-u'), location1_hp_max_base_mod: -1,
location2_table_start: 2, location2_table_end: 2, location2_name: getTranslationByKey('left-rear-leg-u'), location2_hp_max_base_mod: -1,
location3_table_start: 3, location3_table_end: 3, location3_name: getTranslationByKey('mid-right-leg-u'), location3_hp_max_base_mod: -1,
location4_table_start: 4, location4_table_end: 4, location4_name: getTranslationByKey('mid-left-leg-u'), location4_hp_max_base_mod: -1,
location5_table_start: 5, location5_table_end: 9, location5_name: getTranslationByKey('abdomen-u'), location5_hp_max_base_mod: 1,
location6_table_start: 10, location6_table_end: 13, location6_name: getTranslationByKey('thorax-u'), location6_hp_max_base_mod: 2,
location7_table_start: 14, location7_table_end: 14, location7_name: getTranslationByKey('front-right-leg-u'), location7_hp_max_base_mod: -1,
location8_table_start: 15, location8_table_end: 15, location8_name: getTranslationByKey('front-left-leg-u'), location8_hp_max_base_mod: -1,
location9_table_start: 16, location9_table_end: 20, location9_name: getTranslationByKey('head-u'), location9_hp_max_base_mod: 0,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 1, location_notes_10_display: 0
});
} else if (values.hit_locations === "octopodiform") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('tentacle-1-u'), location1_hp_max_base_mod: 0,
location2_table_start: 3, location2_table_end: 4, location2_name: getTranslationByKey('tentacle-2-u'), location2_hp_max_base_mod: 0,
location3_table_start: 5, location3_table_end: 6, location3_name: getTranslationByKey('tentacle-3-u'), location3_hp_max_base_mod: 0,
location4_table_start: 7, location4_table_end: 8, location4_name: getTranslationByKey('tentacle-4-u'), location4_hp_max_base_mod: 0,
location5_table_start: 9, location5_table_end: 10, location5_name: getTranslationByKey('tentacle-5-u'), location5_hp_max_base_mod: 0,
location6_table_start: 11, location6_table_end: 12, location6_name: getTranslationByKey('tentacle-6-u'), location6_hp_max_base_mod: 0,
location7_table_start: 13, location7_table_end: 14, location7_name: getTranslationByKey('tentacle-7-u'), location7_hp_max_base_mod: 0,
location8_table_start: 15, location8_table_end: 16, location8_name: getTranslationByKey('tentacle-8-u'), location8_hp_max_base_mod: 0,
location9_table_start: 17, location9_table_end: 18, location9_name: getTranslationByKey('body-u'), location9_hp_max_base_mod: 1,
location10_table_start: 19, location10_table_end: 20, location10_name: getTranslationByKey('head-u'), location10_hp_max_base_mod: 2,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 1
});
} else if (values.hit_locations === "pachyderm") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: 0,
location2_table_start: 3, location2_table_end: 4, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 5, location3_table_end: 8, location3_name: getTranslationByKey('hindquarters-u'), location3_hp_max_base_mod: 1,
location4_table_start: 9, location4_table_end: 12, location4_name: getTranslationByKey('forequarters-u'), location4_hp_max_base_mod: 2,
location5_table_start: 13, location5_table_end: 14, location5_name: getTranslationByKey('front-right-leg-u'), location5_hp_max_base_mod: 0,
location6_table_start: 15, location6_table_end: 16, location6_name: getTranslationByKey('front-left-leg-u'), location6_hp_max_base_mod: 0,
location7_table_start: 17, location7_table_end: 17, location7_name: getTranslationByKey('trunk-u'), location7_hp_max_base_mod: -1,
location8_table_start: 18, location8_table_end: 20, location8_name: getTranslationByKey('head-u'), location8_hp_max_base_mod: 0,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 1, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "quadruped") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: 0,
location2_table_start: 3, location2_table_end: 4, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 5, location3_table_end: 7, location3_name: getTranslationByKey('hindquarters-u'), location3_hp_max_base_mod: 1,
location4_table_start: 8, location4_table_end: 10, location4_name: getTranslationByKey('forequarters-u'), location4_hp_max_base_mod: 2,
location5_table_start: 11, location5_table_end: 13, location5_name: getTranslationByKey('front-right-leg-u'), location5_hp_max_base_mod: 0,
location6_table_start: 14, location6_table_end: 16, location6_name: getTranslationByKey('front-left-leg-u'), location6_hp_max_base_mod: 0,
location7_table_start: 17, location7_table_end: 20, location7_name: getTranslationByKey('head-u'), location7_hp_max_base_mod: 0,
location8_table_start: 0, location8_table_end: 0, location8_name: " ", location8_hp_max_base_mod: negative_hp_max_base,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 0, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 1, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "serpentine") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('tail-tip-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 5, location2_name: getTranslationByKey('mid-end-length-u'), location2_hp_max_base_mod: 0,
location3_table_start: 6, location3_table_end: 7, location3_name: getTranslationByKey('fore-end-length-u'), location3_hp_max_base_mod: 0,
location4_table_start: 8, location4_table_end: 9, location4_name: getTranslationByKey('rear-mid-length-u'), location4_hp_max_base_mod: 1,
location5_table_start: 10, location5_table_end: 12, location5_name: getTranslationByKey('mid-mid-length-u'), location5_hp_max_base_mod: 1,
location6_table_start: 13, location6_table_end: 14, location6_name: getTranslationByKey('fore-mid-length-u'), location6_hp_max_base_mod: 1,
location7_table_start: 15, location7_table_end: 16, location7_name: getTranslationByKey('rear-fore-length-u'), location7_hp_max_base_mod: 0,
location8_table_start: 17, location8_table_end: 18, location8_name: getTranslationByKey('mid-fore-length-u'), location8_hp_max_base_mod: 0,
location9_table_start: 19, location9_table_end: 20, location9_name: getTranslationByKey('head-u'), location9_hp_max_base_mod: 0,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 1, location_notes_10_display: 0
});
} else if (values.hit_locations === "tailed_arachnid") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('tail-u'), location1_hp_max_base_mod: 0,
location2_table_start: 3, location2_table_end: 3, location2_name: getTranslationByKey('rear-right-leg-u'), location2_hp_max_base_mod: -1,
location3_table_start: 4, location3_table_end: 4, location3_name: getTranslationByKey('rear-left-leg-u'), location3_hp_max_base_mod: -1,
location4_table_start: 5, location4_table_end: 5, location4_name: getTranslationByKey('mid-right-leg-u'), location4_hp_max_base_mod: -1,
location5_table_start: 6, location5_table_end: 6, location5_name: getTranslationByKey('mid-left-leg-u'), location5_hp_max_base_mod: -1,
location6_table_start: 7, location6_table_end: 7, location6_name: getTranslationByKey('fore-right-leg-u'), location6_hp_max_base_mod: -1,
location7_table_start: 8, location7_table_end: 8, location7_name: getTranslationByKey('fore-left-leg-u'), location7_hp_max_base_mod: -1,
location8_table_start: 9, location8_table_end: 12, location8_name: getTranslationByKey('thorax-u'), location8_hp_max_base_mod: 1,
location9_table_start: 13, location9_table_end: 15, location9_name: getTranslationByKey('right-pincer-u'), location9_hp_max_base_mod: 0,
location10_table_start: 16, location10_table_end: 18, location10_name: getTranslationByKey('left-pincer-u'), location10_hp_max_base_mod: 0,
location11_table_start: 19, location11_table_end: 20, location11_name: getTranslationByKey('cephalothorax-u'), location11_hp_max_base_mod: 2,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 1, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "tailed_biped") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('tail-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 5, location2_name: getTranslationByKey('right-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 6, location3_table_end: 7, location3_name: getTranslationByKey('left-leg-u'), location3_hp_max_base_mod: 0,
location4_table_start: 8, location4_table_end: 10, location4_name: getTranslationByKey('abdomen-u'), location4_hp_max_base_mod: 1,
location5_table_start: 11, location5_table_end: 14, location5_name: getTranslationByKey('chest-u'), location5_hp_max_base_mod: 2,
location6_table_start: 15, location6_table_end: 16, location6_name: getTranslationByKey('right-arm-u'), location6_hp_max_base_mod: -1,
location7_table_start: 17, location7_table_end: 18, location7_name: getTranslationByKey('left-arm-u'), location7_hp_max_base_mod: -1,
location8_table_start: 19, location8_table_end: 20, location8_name: getTranslationByKey('head-u'), location8_hp_max_base_mod: 0,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 1, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "tailed_quadruped") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('tail-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 5, location2_name: getTranslationByKey('rear-right-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 6, location3_table_end: 7, location3_name: getTranslationByKey('rear-left-leg-u'), location3_hp_max_base_mod: 0,
location4_table_start: 8, location4_table_end: 10, location4_name: getTranslationByKey('hindquarters-u'), location4_hp_max_base_mod: 1,
location5_table_start: 11, location5_table_end: 14, location5_name: getTranslationByKey('forequarters-u'), location5_hp_max_base_mod: 2,
location6_table_start: 15, location6_table_end: 16, location6_name: getTranslationByKey('front-right-leg-u'), location6_hp_max_base_mod: -1,
location7_table_start: 17, location7_table_end: 18, location7_name: getTranslationByKey('front-left-leg-u'), location7_hp_max_base_mod: -1,
location8_table_start: 19, location8_table_end: 20, location8_name: getTranslationByKey('head-u'), location8_hp_max_base_mod: 0,
location9_table_start: 0, location9_table_end: 0, location9_name: " ", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 0, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 1, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "winged_biped") {
setAttrs({
location1_table_start: 1, location1_table_end: 3, location1_name: getTranslationByKey('right-leg-u'), location1_hp_max_base_mod: 0,
location2_table_start: 4, location2_table_end: 6, location2_name: getTranslationByKey('left-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 7, location3_table_end: 9, location3_name: getTranslationByKey('abdomen-u'), location3_hp_max_base_mod: 1,
location4_table_start: 10, location4_table_end: 10, location4_name: getTranslationByKey('chest-u'), location4_hp_max_base_mod: 2,
location5_table_start: 11, location5_table_end: 12, location5_name: getTranslationByKey('right-wing-u'), location5_hp_max_base_mod: 0,
location6_table_start: 13, location6_table_end: 14, location6_name: getTranslationByKey('left-wing-u'), location6_hp_max_base_mod: 0,
location7_table_start: 15, location7_table_end: 16, location7_name: getTranslationByKey('right-arm-u'), location7_hp_max_base_mod: -1,
location8_table_start: 17, location8_table_end: 18, location8_name: getTranslationByKey('left-arm-u'), location8_hp_max_base_mod: -1,
location9_table_start: 19, location9_table_end: 20, location9_name: getTranslationByKey('head-u'), location9_hp_max_base_mod: 0,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 1, location_notes_10_display: 0
});
} else if (values.hit_locations === "winged_insect") {
setAttrs({
location1_table_start: 1, location1_table_end: 1, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: -1,
location2_table_start: 2, location2_table_end: 2, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: -1,
location3_table_start: 3, location3_table_end: 4, location3_name: getTranslationByKey('metathorax-u'), location3_hp_max_base_mod: 1,
location4_table_start: 5, location4_table_end: 5, location4_name: getTranslationByKey('mid-right-leg-u'), location4_hp_max_base_mod: -1,
location5_table_start: 6, location5_table_end: 6, location5_name: getTranslationByKey('mid-left-leg-u'), location5_hp_max_base_mod: -1,
location6_table_start: 7, location6_table_end: 10, location6_name: getTranslationByKey('prothorax-u'), location6_hp_max_base_mod: 2,
location7_table_start: 11, location7_table_end: 12, location7_name: getTranslationByKey('right-wing-u'), location7_hp_max_base_mod: -1,
location8_table_start: 13, location8_table_end: 14, location8_name: getTranslationByKey('left-wing-u'), location8_hp_max_base_mod: -1,
location9_table_start: 15, location9_table_end: 16, location9_name: getTranslationByKey('front-right-leg-u'), location9_hp_max_base_mod: -1,
location10_table_start: 17, location10_table_end: 18, location10_name: getTranslationByKey('front-left-leg-u'), location10_hp_max_base_mod: -1,
location11_table_start: 19, location11_table_end: 20, location11_name: getTranslationByKey('head-u'), location11_hp_max_base_mod: 0,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 1, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
} else if (values.hit_locations === "winged_quadruped") {
setAttrs({
location1_table_start: 1, location1_table_end: 2, location1_name: getTranslationByKey('rear-right-leg-u'), location1_hp_max_base_mod: 0,
location2_table_start: 3, location2_table_end: 4, location2_name: getTranslationByKey('rear-left-leg-u'), location2_hp_max_base_mod: 0,
location3_table_start: 5, location3_table_end: 7, location3_name: getTranslationByKey('hindquarters-u'), location3_hp_max_base_mod: 1,
location4_table_start: 8, location4_table_end: 10, location4_name: getTranslationByKey('forequarters-u'), location4_hp_max_base_mod: 2,
location5_table_start: 11, location5_table_end: 12, location5_name: getTranslationByKey('right-wing-u'), location5_hp_max_base_mod: -1,
location6_table_start: 13, location6_table_end: 14, location6_name: getTranslationByKey('left-wing-u'), location6_hp_max_base_mod: -1,
location7_table_start: 15, location7_table_end: 16, location7_name: getTranslationByKey('front-right-leg-u'), location7_hp_max_base_mod: 0,
location8_table_start: 17, location8_table_end: 18, location8_name: getTranslationByKey('front-left-leg-u'), location8_hp_max_base_mod: 0,
location9_table_start: 19, location9_table_end: 20, location9_name: getTranslationByKey('head-u'), location9_hp_max_base_mod: 0,
location10_table_start: 0, location10_table_end: 0, location10_name: " ", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: " ", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: " ", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 0, location11_display: 0, location12_display: 0,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 1, location_notes_10_display: 0
});
} else {
setAttrs({
location1_table_start: 0, location1_table_end: 0, location1_name: "", location1_hp_max_base_mod: negative_hp_max_base,
location2_table_start: 0, location2_table_end: 0, location2_name: "", location2_hp_max_base_mod: negative_hp_max_base,
location3_table_start: 0, location3_table_end: 0, location3_name: "", location3_hp_max_base_mod: negative_hp_max_base,
location4_table_start: 0, location4_table_end: 0, location4_name: "", location4_hp_max_base_mod: negative_hp_max_base,
location5_table_start: 0, location5_table_end: 0, location5_name: "", location5_hp_max_base_mod: negative_hp_max_base,
location6_table_start: 0, location6_table_end: 0, location6_name: "", location6_hp_max_base_mod: negative_hp_max_base,
location7_table_start: 0, location7_table_end: 0, location7_name: "", location7_hp_max_base_mod: negative_hp_max_base,
location8_table_start: 0, location8_table_end: 0, location8_name: "", location8_hp_max_base_mod: negative_hp_max_base,
location9_table_start: 0, location9_table_end: 0, location9_name: "", location9_hp_max_base_mod: negative_hp_max_base,
location10_table_start: 0, location10_table_end: 0, location10_name: "", location10_hp_max_base_mod: negative_hp_max_base,
location11_table_start: 0, location11_table_end: 0, location11_name: "", location11_hp_max_base_mod: negative_hp_max_base,
location12_table_start: 0, location12_table_end: 0, location12_name: "", location12_hp_max_base_mod: negative_hp_max_base,
location1_display: 1, location2_display: 1, location3_display: 1, location4_display: 1, location5_display: 1, location6_display: 1,
location7_display: 1, location8_display: 1, location9_display: 1, location10_display: 1, location11_display: 1, location12_display: 1,
location_notes_1_display: 0, location_notes_7_display: 0, location_notes_8_display: 0, location_notes_9_display: 0, location_notes_10_display: 0
});
}
});
});
//M-Space Spaceship Toggle
on("change:msvehicle_maneuvering_tr change:msvehicle_engines_tr change:msvehicle_type change:msvehicle_tractor_beam change:msvehicle_storage change:msvehicle_sickbay change:msvehicle_sensors change:msvehicle_self_repair change:msvehicle_robot_arm change:msvehicle_rescue_utilities change:msvehicle_passengers change:msvehicle_open_space change:msvehicle_maneuvering change:msvehicle_lab change:msvehicle_hyperspace change:msvehicle_hanger change:msvehicle_environment change:msvehicle_extra_sensors change:msvehicle_escape_pod change:msvehicle_engines change:msvehicle_crew change:msvehicle_cockpit change:msvehicle_cargo change:msvehicle_airlock change:msvehicle_weapons", function() {
getAttrs(["msvehicle_engines_tr", "msvehicle_maneuvering_tr", "msvehicle_type", "msvehicle_tractor_beam", "msvehicle_storage", "msvehicle_sickbay", "msvehicle_sensors", "msvehicle_self_repair", "msvehicle_robot_arm", "msvehicle_rescue_utilities", "msvehicle_passengers", "msvehicle_open_space", "msvehicle_maneuvering", "msvehicle_lab", "msvehicle_hyperspace", "msvehicle_hanger", "msvehicle_environment", "msvehicle_extra_sensors", "msvehicle_escape_pod", "msvehicle_engines", "msvehicle_crew", "msvehicle_cockpit", "msvehicle_cargo", "msvehicle_airlock", "msvehicle_weapons"], function(values) {
var weapons = parseFloat(values.msvehicle_weapons);
var tractor_beam = parseFloat(values.msvehicle_tractor_beam);
var storage = parseFloat(values.msvehicle_storage);
var sickbay = parseFloat(values.msvehicle_sickbay);
var sensors = parseFloat(values.msvehicle_sensors);
var self_repair = parseFloat(values.msvehicle_self_repair);
var robot_arms = parseFloat(values.msvehicle_robot_arm);
var rescue_utilities = parseFloat(values.msvehicle_rescue_utilities);
var passengers = parseFloat(values.msvehicle_passengers);
var open_space = parseFloat(values.msvehicle_open_space);
var maneuvering = parseFloat(values.msvehicle_maneuvering);
var lab = parseFloat(values.msvehicle_lab);
var hyperspace = parseFloat(values.msvehicle_hyperspace);
var hanger = parseFloat(values.msvehicle_hanger);
var environment = parseFloat(values.msvehicle_environment);
var extra_sensors = parseFloat(values.msvehicle_extra_sensors);
var escape_pod = parseFloat(values.msvehicle_escape_pod);
var engines = parseFloat(values.msvehicle_engines);
var crew = parseFloat(values.msvehicle_crew);
var cockpit = parseFloat(values.msvehicle_cockpit);
var cargo = parseFloat(values.msvehicle_cargo);
var airlock = parseFloat(values.msvehicle_airlock);
var engines_tr = parseInt(values.msvehicle_engines_tr);
var maneuvering_tr = parseInt(values.msvehicle_maneuvering_tr);
var total_modules = weapons + tractor_beam + storage + sickbay + sensors + self_repair + robot_arms + rescue_utilities + passengers + open_space + maneuvering + lab + hyperspace + hanger + environment + extra_sensors + escape_pod + engines + crew + cockpit + cargo + airlock;
var speed_tr = Math.ceil((engines*engines_tr)/total_modules);
var handling_tr = Math.ceil((maneuvering*maneuvering_tr)/total_modules);
var cargo_ts = 0;
var cargo_te = 0;
var cockpit_ts = 0;
var cockpit_te = 0;
var crew_ts = 0;
var crew_te = 0;
var engines_ts = 0;
var engines_te = 0;
var escape_pod_ts = 0;
var escape_pod_te = 0;
var extra_sensors_ts = 0;
var extra_sensors_te = 0;
var hanger_ts = 0;
var hanger_te = 0;
var hyperspace_ts = 0;
var hyperspace_te = 0;
var lab_ts = 0;
var lab_te = 0;
var maneuvering_ts = 0;
var maneuvering_te = 0;
var open_space_ts = 0;
var open_space_te = 0;
var passengers_ts = 0;
var passengers_te = 0;
var robot_arms_ts = 0;
var robot_arms_te = 0;
var self_repair_ts = 0;
var self_repair_te = 0;
var sickbay_ts = 0;
var sickbay_te = 0;
var storage_ts = 0;
var storage_te = 0;
var tractor_beam_ts = 0;
var tractor_beam_te = 0;
var weapons_ts = 0;
var weapons_te = 0;
if (values.msvehicle_type == "spaceship") {
var pct_values = {};
pct_values['weapons'] = (weapons/total_modules)*100;
if (pct_values['weapons'] < 1 && pct_values['weapons'] > 0) {
pct_values['weapons'] = 1;
} else {
pct_values['weapons'] = Math.round(pct_values['weapons']);
}
pct_values['tractor_beam'] = (tractor_beam/total_modules)*100;
if (pct_values['tractor_beam'] < 1 && pct_values['tractor_beam'] > 0) {
pct_values['tractor_beam'] = 1;
} else {
pct_values['tractor_beam'] = Math.round(pct_values['tractor_beam']);
}
pct_values['storage'] = (storage/total_modules)*100;
if (pct_values['storage'] < 1 && pct_values['storage'] > 0) {
pct_values['storage'] = 1;
} else {
pct_values['storage'] = Math.round(pct_values['storage']);
}
pct_values['sickbay'] = (sickbay/total_modules)*100;
if (pct_values['sickbay'] < 1 && pct_values['sickbay'] > 0) {
pct_values['sickbay'] = 1;
} else {
pct_values['sickbay'] = Math.round(pct_values['sickbay']);
}
pct_values['self_repair'] = (self_repair/total_modules)*100;
if (pct_values['self_repair'] < 1 && pct_values['self_repair'] > 0) {
pct_values['self_repair'] = 1;
} else {
pct_values['self_repair'] = Math.round(pct_values['self_repair']);
}
pct_values['robot_arms'] = (robot_arms/total_modules)*100;
if (pct_values['robot_arms'] < 1 && pct_values['robot_arms'] > 0) {
pct_values['robot_arms'] = 1;
} else {
pct_values['robot_arms'] = Math.round(pct_values['robot_arms']);
}
pct_values['passengers'] = (passengers/total_modules)*100;
if (pct_values['passengers'] < 1 && pct_values['passengers'] > 0) {
pct_values['passengers'] = 1;
} else {
pct_values['passengers'] = Math.round(pct_values['passengers']);
}
pct_values['open_space'] = (open_space/total_modules)*100;
if (pct_values['open_space'] < 1 && pct_values['open_space'] > 0) {
pct_values['open_space'] = 1;
} else {
pct_values['open_space'] = Math.round(pct_values['open_space']);
}
pct_values['maneuvering'] = (maneuvering/total_modules)*100;
if (pct_values['maneuvering'] < 1 && pct_values['maneuvering'] > 0) {
pct_values['maneuvering'] = 1;
} else {
pct_values['maneuvering'] = Math.round(pct_values['maneuvering']);
}
pct_values['lab'] = (lab/total_modules)*100;
if (pct_values['lab'] < 1 && pct_values['lab'] > 0) {
pct_values['lab'] = 1;
} else {
pct_values['lab'] = Math.round(pct_values['lab']);
}
pct_values['hyperspace'] = (hyperspace/total_modules)*100;
if (pct_values['hyperspace'] < 1 && pct_values['hyperspace'] > 0) {
pct_values['hyperspace'] = 1;
} else {
pct_values['hyperspace'] = Math.round(pct_values['hyperspace']);
}
pct_values['hanger'] = (hanger/total_modules)*100;
if (pct_values['hanger'] < 1 && pct_values['hanger'] > 0) {
pct_values['hanger'] = 1;
} else {
pct_values['hanger'] = Math.round(pct_values['hanger']);
}
pct_values['extra_sensors'] = (extra_sensors/total_modules)*100;
if (pct_values['extra_sensors'] < 1 && pct_values['extra_sensors'] > 0) {
pct_values['extra_sensors'] = 1;
} else {
pct_values['extra_sensors'] = Math.round(pct_values['extra_sensors']);
}
pct_values['escape_pod'] = (escape_pod/total_modules)*100;
if (pct_values['escape_pod'] < 1 && pct_values['escape_pod'] > 0) {
pct_values['escape_pod'] = 1;
} else {
pct_values['escape_pod'] = Math.round(pct_values['escape_pod']);
}
pct_values['engines'] = (engines/total_modules)*100;
if (pct_values['engines'] < 1 && pct_values['engines'] > 0) {
pct_values['engines'] = 1;
} else {
pct_values['engines'] = Math.round(pct_values['engines']);
}
pct_values['crew'] = (crew/total_modules)*100;
if (pct_values['crew'] < 1 && pct_values['crew'] > 0) {
pct_values['crew'] = 1;
} else {
pct_values['crew'] = Math.round(pct_values['crew']);
}
pct_values['cockpit'] = (cockpit/total_modules)*100;
if (pct_values['cockpit'] < 1 && pct_values['cockpit'] > 0) {
pct_values['cockpit'] = 1;
} else {
pct_values['cockpit'] = Math.round(pct_values['cockpit']);
}
pct_values['cargo'] = (cargo/total_modules)*100;
if (pct_values['cargo'] < 1 && pct_values['cargo'] > 0) {
pct_values['cargo'] = 1;
} else {
pct_values['cargo'] = Math.round(pct_values['cargo']);
}
var total_pct = pct_values['cargo'] + pct_values['cockpit'] + pct_values['crew'] + pct_values['engines'] + pct_values['escape_pod'] + pct_values['extra_sensors'] + pct_values['hanger'] + pct_values['hyperspace'] + pct_values['lab'] + pct_values['maneuvering'] + pct_values['open_space'] + pct_values['passengers'] + pct_values['self_repair'] + pct_values['robot_arms'] + pct_values['sickbay'] + pct_values['storage'] + pct_values['tractor_beam'] + pct_values['weapons'];
var pct_diff = total_pct - 100;
if (pct_diff < 0) {
while (pct_diff != 0) {
for (var key in pct_values) {
if (pct_values[key] != 0) {
pct_values[key] = pct_values[key] + 1;
pct_diff = pct_diff + 1;
}
if (pct_diff === 0) {
break;
}
}
}
}
if (pct_diff > 0) {
while (pct_diff != 0) {
for (var key in pct_values) {
if (pct_values[key] != 0 && pct_values[key] != 1) {
pct_values[key] = pct_values[key] - 1;
pct_diff = pct_diff - 1;
}
if (pct_diff === 0) {
break;
}
}
}
}
var last_value = 0;
if (pct_values['cargo'] != 0) {
cargo_ts = last_value + 1;
cargo_te = last_value + pct_values['cargo'];
last_value = cargo_te;
}
if (pct_values['cockpit'] != 0) {
cockpit_ts = last_value + 1;
cockpit_te = last_value + pct_values['cockpit'];
last_value = cockpit_te;
}
if (pct_values['crew'] != 0) {
crew_ts = last_value + 1;
crew_te = last_value + pct_values['crew'];
last_value = crew_te;
}
if (pct_values['engines'] != 0) {
engines_ts = last_value + 1;
engines_te = last_value + pct_values['engines'];
last_value = engines_te;
}
if (pct_values['escape_pod'] != 0) {
escape_pod_ts = last_value + 1;
escape_pod_te = last_value + pct_values['escape_pod'];
last_value = escape_pod_te;
}
if (pct_values['extra_sensors'] != 0) {
extra_sensors_ts = last_value + 1;
extra_sensors_te = last_value + pct_values['extra_sensors'];
last_value = extra_sensors_te;
}
if (pct_values['hanger'] != 0) {
hanger_ts = last_value + 1;
hanger_te = last_value + pct_values['hanger'];
last_value = hanger_te;
}
if (pct_values['hyperspace'] != 0) {
hyperspace_ts = last_value + 1;
hyperspace_te = last_value + pct_values['hyperspace'];
last_value = hyperspace_te;
}
if (pct_values['lab'] != 0) {
lab_ts = last_value + 1;
lab_te = last_value + pct_values['lab'];
last_value = lab_te;
}
if (pct_values['maneuvering'] != 0) {
maneuvering_ts = last_value + 1;
maneuvering_te = last_value + pct_values['maneuvering'];
last_value = maneuvering_te;
}
if (pct_values['open_space'] != 0) {
open_space_ts = last_value + 1;
open_space_te = last_value + pct_values['open_space'];
last_value = open_space_te;
}
if (pct_values['passengers'] != 0) {
passengers_ts = last_value + 1;
passengers_te = last_value + pct_values['passengers'];
last_value = passengers_te;
}
if (pct_values['robot_arms'] != 0) {
robot_arms_ts = last_value + 1;
robot_arms_te = last_value + pct_values['robot_arms'];
last_value = robot_arms_te;
}
if (pct_values['self_repair'] != 0) {
self_repair_ts = last_value + 1;
self_repair_te = last_value + pct_values['self_repair'];
last_value = self_repair_te;
}
if (pct_values['sickbay'] != 0) {
sickbay_ts = last_value + 1;
sickbay_te = last_value + pct_values['sickbay'];
last_value = sickbay_te;
}
if (pct_values['storage'] != 0) {
storage_ts = last_value + 1;
storage_te = last_value + pct_values['storage'];
last_value = storage_te;
}
if (pct_values['tractor_beam'] != 0) {
tractor_beam_ts = last_value + 1;
tractor_beam_te = last_value + pct_values['tractor_beam'];
last_value = tractor_beam_te;
}
if (pct_values["weapons"] != 0) {
weapons_ts = last_value + 1;
weapons_te = last_value + pct_values["weapons"];
last_value = weapons_te;
}
}
var sails = 0;
var lift_gas = 0;
var visual_size = 0;
var sails_toggle = 0;
var gas_bag_toggle = 0;
if (values.msvehicle_type == "spaceship") {
var msvehicle_spaceship_toggle= 1;
var speed = speed_tr;
var handling = handling_tr;
var size = total_modules;
} else if (values.msvehicle_type == "regular") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size = (total_modules + Math.ceil(total_modules * .1)) * 10;
} else if (values.msvehicle_type == "terrain") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size_mod = Math.ceil(total_modules * .2);
if (size_mod < 2) {
var size = (total_modules + 2) * 10;
} else {
var size = (total_modules + size_mod) * 10;
}
} else if (values.msvehicle_type == "walker") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size = total_modules * 2 * 10;
} else if (values.msvehicle_type == "burrower") {
var msvehicle_spaceship_toggle = 0;
var speed = Math.ceil(speed_tr * .1);
var handling = Math.ceil(handling_tr * .1);
var size = total_modules * 3 * 10;
} else if (values.msvehicle_type == "motor") {
var msvehicle_spaceship_toggle = 0;
var speed = Math.ceil(speed_tr * .5);
var handling = Math.ceil(handling_tr * .5);
var size = total_modules * 2 * 10;
} else if (values.msvehicle_type == "sail") {
var msvehicle_spaceship_toggle = 0;
var speed = Math.ceil(speed_tr * .5);
var handling = Math.ceil(handling_tr * .5);
var size = total_modules * 2 * 10;
visual_size = size * 2;
sails_toggle = 1;
} else if (values.msvehicle_type == "sub") {
var msvehicle_spaceship_toggle = 0;
var speed = Math.ceil(speed_tr * .5);
var handling = Math.ceil(handling_tr * .5);
var size = total_modules * 3 * 10;
} else if (values.msvehicle_type == "wings") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size = total_modules * 3 * 10;
} else if (values.msvehicle_type == "anti-grav") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size = (total_modules + Math.ceil(total_modules * .1)) * 10;
} else if (values.msvehicle_type == "rotor_blades") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size = total_modules * 2 * 10;
} else if (values.msvehicle_type == "hover_craft") {
var msvehicle_spaceship_toggle = 0
var speed = speed_tr;
var handling = handling_tr;
var size = total_modules * 2 * 10;
} else if (values.msvehicle_type == "gas_bag") {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
lift_gas = (total_modules / 10) * 1000;
total_modules = total_modules + lift_gas;
var size = total_modules;
gas_bag_toggle = 1;
} else {
var msvehicle_spaceship_toggle = 0;
var speed = speed_tr;
var handling = handling_tr;
var size = total_modules;
}
size_rating = Math.floor(Math.log2(size)) + 1;
setAttrs({
msvehicle_sails_toggle: sails_toggle,
msvehicle_gas_bag_toggle: gas_bag_toggle,
msvehicle_speed: speed,
msvehicle_handling: handling,
msvehicle_total_modules: total_modules,
msvehicle_spaceship_toggle: msvehicle_spaceship_toggle,
msvehicle_size: size,
msvehicle_lift_gas: lift_gas,
msvehicle_visual_size_sails_up: visual_size,
msvehicle_size_rating: size_rating,
msvehicle_weapons_table_start: weapons_ts,
msvehicle_weapons_table_end: weapons_te,
msvehicle_tractor_beam_table_start: tractor_beam_ts,
msvehicle_tractor_beam_table_end: tractor_beam_te,
msvehicle_storage_table_start: storage_ts,
msvehicle_storage_table_end: storage_te,
msvehicle_sickbay_table_start: sickbay_ts,
msvehicle_sickbay_table_end: sickbay_te,
msvehicle_self_repair_table_start: self_repair_ts,
msvehicle_self_repair_table_end: self_repair_te,
msvehicle_robot_arm_table_start: robot_arms_ts,
msvehicle_robot_arm_table_end: robot_arms_te,
msvehicle_passengers_table_start: passengers_ts,
msvehicle_passengers_table_end: passengers_te,
msvehicle_open_space_table_start: open_space_ts,
msvehicle_open_space_table_end: open_space_te,
msvehicle_maneuvering_table_start: maneuvering_ts,
msvehicle_maneuvering_table_end: maneuvering_te,
msvehicle_lab_table_start: lab_ts,
msvehicle_lab_table_end: lab_te,
msvehicle_hyperdrive_table_start: hyperspace_ts,
msvehicle_hyperdrive_table_end: hyperspace_te,
msvehicle_hanger_table_start: hanger_ts,
msvehicle_hanger_table_end: hanger_te,
msvehicle_extra_sensors_table_start: extra_sensors_ts,
msvehicle_extra_sensors_table_end: extra_sensors_te,
msvehicle_escape_pod_table_start: escape_pod_ts,
msvehicle_escape_pod_table_end: escape_pod_te,
msvehicle_engines_table_start: engines_ts,
msvehicle_engines_table_end: engines_te,
msvehicle_crew_table_start: crew_ts,
msvehicle_crew_table_end: crew_te,
msvehicle_cargo_table_start: cargo_ts,
msvehicle_cargo_table_end: cargo_te,
msvehicle_cockpit_table_start: cockpit_ts,
msvehicle_cockpit_table_end: cockpit_te
});
});
});
//Ship Condition
on("change:ship_condition", function() {
getAttrs(["ship_condition", "ship_seaworthiness"], function(values) {
var ship_range = Math.ceil(values.ship_seaworthiness/10);
if (values.ship_condition == "ship_shape") {
setAttrs({
ship_condition_skills: '1',
ship_speed: '-',
ship_condition_range: 0,
ship_repair_mod: '-',
});
} else if (values.ship_condition == "seaworthy") {
setAttrs({
ship_condition_skills: '1',
ship_speed: '-',
ship_condition_range: parseFloat(ship_range * .25),
ship_repair_mod: 'x1',
});
} else if (values.ship_condition == "battered") {
setAttrs({
ship_condition_skills: '2',
ship_speed: '-25%',
ship_condition_range: parseFloat(ship_range * .5),
ship_repair_mod: 'x2',
});
} else if (values.ship_condition == "swamped") {
setAttrs({
ship_condition_skills: '3',
ship_speed: '-50%',
ship_condition_range: parseFloat(ship_range * .75),
ship_repair_mod: 'x3',
});
} else if (values.ship_condition == "sinking") {
setAttrs({
ship_condition_skills: '4',
ship_speed: '-100%',
ship_condition_range: parseFloat(ship_range),
ship_repair_mod: 'x4',
});
} else {
setAttrs({
ship_condition_skills: '1',
ship_speed: '-',
ship_condition_range: 0,
ship_repair_mod: '-',
});
}
});
});
// Encumbrance Auto Calc
var calc_enc = function() {
getAttrs(["avg_species_siz", "str", "effective_armor_enc", "melee_weapons_enc", "ranged_weapons_enc", "loadout_enc", "pack_enc", "pack_equipped", "currency_enc", "encumbrance_temp"], function(v) {
var str = parseInt(v.str);
var burdened = str * 2;
var overloaded = str * 3;
var enc_max = str * 4;
var enc = (parseFloat(v.effective_armor_enc) + parseFloat(v.melee_weapons_enc) + parseFloat(v.ranged_weapons_enc) + parseFloat(v.loadout_enc) + (parseFloat(v.pack_enc) * parseFloat(v.pack_equipped)) + parseFloat(v.currency_enc) + parseFloat(v.encumbrance_temp)) * (parseInt(v.avg_species_siz) / 13);
var maxTranslation = getTranslationByKey('max-u');
var impossibleTranslation = getTranslationByKey('impossible-u');
var strenuousTranslation = getTranslationByKey('strenuous-u');
var mediumTranslation = getTranslationByKey('medium-u');
var normalTranslation = getTranslationByKey('normal-u');
var halvedTranslation = getTranslationByKey('halved-u');
if (enc > enc_max) {
setAttrs({
encumbrance_load: maxTranslation,
encumbrance_skills: "3",
encumbrance_move: impossibleTranslation,
burdened_enc: burdened,
overloaded_enc: overloaded,
encumbrance_current: enc,
encumbrance_current_max: enc_max,
movement_rate_enc: "*0",
});
} else if (enc > overloaded) {
setAttrs({
encumbrance_load: strenuousTranslation,
encumbrance_skills: "2",
encumbrance_move: halvedTranslation,
burdened_enc: burdened,
overloaded_enc: overloaded,
encumbrance_current: enc,
encumbrance_current_max: enc_max,
movement_rate_enc: "*.5",
});
} else if (enc > burdened) {
setAttrs({
encumbrance_load: mediumTranslation,
encumbrance_skills: "1",
encumbrance_move: "-2",
burdened_enc: burdened,
overloaded_enc: overloaded,
encumbrance_current: enc,
encumbrance_current_max: enc_max,
movement_rate_enc: "-2",
});
} else {
setAttrs({
encumbrance_current: enc,
encumbrance_load: normalTranslation,
encumbrance_skills: "0",
encumbrance_move: normalTranslation,
burdened_enc: burdened,
overloaded_enc: overloaded,
encumbrance_current: enc,
encumbrance_current_max: enc_max,
movement_rate_enc: "+0",
});
}
});
};
on("change:avg_species_siz change:str change:effective_armor_enc change:melee_weapons_enc change:ranged_weapons_enc change:loadout_enc change:pack_enc change:pack_equipped change:currency_enc change:encumbrance_temp", function() { calc_enc(); });
// Armor ENC
var calc_armor_enc = function() {
getAttrs(["location12_armor_equipped", "location12_armor_enc", "location11_armor_equipped", "location11_armor_enc", "location10_armor_equipped", "location10_armor_enc", "half_effective_armor_enc", "location9_armor_equipped", "location9_armor_enc", "location8_armor_equipped", "location8_armor_enc", "location7_armor_equipped", "location7_armor_enc", "location6_armor_equipped", "location6_armor_enc", "location5_armor_equipped", "location5_armor_enc", "location4_armor_equipped", "location4_armor_enc", "location3_armor_equipped", "location3_armor_enc", "location2_armor_equipped", "location2_armor_enc", "location1_armor_equipped", "location1_armor_enc"], function(v) {
var total_armor_enc = 0;
if (v.location12_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location12_armor_enc);
}
if (v.location11_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location11_armor_enc);
}
if (v.location10_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location10_armor_enc);
}
if (v.location9_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location9_armor_enc);
}
if (v.location8_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location8_armor_enc);
}
if (v.location7_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location7_armor_enc);
}
if (v.location6_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location6_armor_enc);
}
if (v.location5_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location5_armor_enc);
}
if (v.location4_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location4_armor_enc);
}
if (v.location3_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location3_armor_enc);
}
if (v.location2_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location2_armor_enc);
}
if (v.location1_armor_equipped == '1') {
total_armor_enc = total_armor_enc + parseFloat(v.location1_armor_enc);
}
if (v.half_effective_armor_enc == '1') {
armor_enc_multiplier = .25;
} else {
armor_enc_multiplier = .5;
}
var armor_penalty = 0-Math.ceil(total_armor_enc / 5);
var casting_penalty = Math.ceil(armor_penalty/3);
setAttrs({
armor_enc: total_armor_enc,
effective_armor_enc: total_armor_enc * armor_enc_multiplier,
armor_penalty: armor_penalty,
arcane_casting_penalty: casting_penalty,
divine_casting_penalty: casting_penalty
});
});
};
on("change:location12_armor_equipped change:location12_armor_enc change:location11_armor_equipped change:location11_armor_enc change:location10_armor_equipped change:location10_armor_enc change:half_effective_armor_enc change:location9_armor_equipped change:location9_armor_enc change:location8_armor_equipped change:location_armor_enc change:location7_armor_equipped change:location7_armor_enc change:location6_armor_equipped change:location6_armor_enc change:location5_armor_equipped change:location5_armor_enc change:location4_armor_equipped change:location4_armor_enc change:location3_armor_equipped change:location3_armor_enc change:location2_armor_equipped change:location2_armor_enc change:location1_armor_equipped change:location1_armor_enc", function() {
calc_armor_enc();
});
// Melee Weapons ENC
var calc_melee_enc = function() {
var total_melee_weapons_enc = 0;
getSectionIDs("repeating_meleeweapon", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_meleeweapon_" + currentID + "_enc"], function(v) {
if(v["repeating_meleeweapon_" + currentID + "_enc"] && isNaN(parseFloat(v["repeating_meleeweapon_" + currentID + "_enc"])) === false) {
total_melee_weapons_enc = total_melee_weapons_enc + parseFloat(v["repeating_meleeweapon_" + currentID + "_enc"]);
}
if(i === idarray.length - 1) {
setAttrs({melee_weapons_enc: total_melee_weapons_enc});
}
});
});
}
else {
setAttrs({melee_weapons_enc: total_melee_weapons_enc});
}
});
};
on("change:repeating_meleeweapon remove:repeating_meleeweapon", function() { calc_melee_enc(); });
// Ranged Weapons ENC
var calc_ranged_enc = function() {
var total_ranged_weapons_enc = 0;
getSectionIDs("repeating_rangedweapon", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_rangedweapon_" + currentID + "_enc"], function(v) {
if(v["repeating_rangedweapon_" + currentID + "_enc"] && isNaN(parseFloat(v["repeating_rangedweapon_" + currentID + "_enc"])) === false) {
total_ranged_weapons_enc = total_ranged_weapons_enc + parseFloat(v["repeating_rangedweapon_" + currentID + "_enc"]);
}
if(i === idarray.length - 1) {
setAttrs({ranged_weapons_enc: total_ranged_weapons_enc});
}
});
});
}
else {
setAttrs({ranged_weapons_enc: total_ranged_weapons_enc});
}
});
};
on("change:repeating_rangedweapon remove:repeating_rangedweapon", function() { calc_ranged_enc(); });
// Equipment ENC
var calc_equipment_enc = function() {
var total_loadout_enc = 0;
var total_pack_enc = 0;
getSectionIDs("repeating_equipment", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_equipment_" + currentID + "_enc", "repeating_equipment_" + currentID + "_location", "repeating_equipment_" + currentID + "_quantity"], function(v) {
if(v["repeating_equipment_" + currentID + "_enc"] && isNaN(parseFloat(v["repeating_equipment_" + currentID + "_enc"])) === false) {
count = v["repeating_equipment_" + currentID + "_quantity"] && isNaN(parseFloat(v["repeating_equipment_" + currentID + "_quantity"])) === false ? parseFloat(v["repeating_equipment_" + currentID + "_quantity"]) : 1;
if(v["repeating_equipment_" + currentID + "_location"] == "loadout") {
total_loadout_enc = total_loadout_enc + (parseFloat(v["repeating_equipment_" + currentID + "_enc"]) * count);
}
if(v["repeating_equipment_" + currentID + "_location"] == "pack") {
total_pack_enc = total_pack_enc + (parseFloat(v["repeating_equipment_" + currentID + "_enc"]) * count);
}
}
if(i === idarray.length - 1) {
setAttrs({
loadout_enc: total_loadout_enc,
pack_enc: total_pack_enc,
});
}
});
});
}
else {
setAttrs({
loadout_enc: total_loadout_enc,
pack_enc: total_pack_enc,
});
}
});
};
on("change:repeating_equipment remove:repeating_equipment", function() { calc_equipment_enc(); });
// Currency ENC
var calc_currency_enc = function() {
var total_currency_enc = 0;
getSectionIDs("repeating_currency", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_currency_" + currentID + "_enc", "repeating_currency_" + currentID + "_quantity"], function(v) {
if(v["repeating_currency_" + currentID + "_enc"] && isNaN(parseFloat(v["repeating_currency_" + currentID + "_enc"])) === false) {
count = v["repeating_currency_" + currentID + "_quantity"] && isNaN(parseFloat(v["repeating_currency_" + currentID + "_quantity"])) === false ? parseFloat(v["repeating_currency_" + currentID + "_quantity"]) : 1;
total_currency_enc = total_currency_enc + (parseFloat(v["repeating_currency_" + currentID + "_enc"]) * count);
}
if(i === idarray.length - 1) {
setAttrs({currency_enc: total_currency_enc});
}
});
});
}
else {
setAttrs({currency_enc: total_currency_enc});
}
});
};
on("change:repeating_currency remove:repeating_currency", function() { calc_currency_enc(); });
// Fetish Spirit Damage
on("change:repeating_fetish:fetish_spectral_combat", function() {
getAttrs(["repeating_fetish_fetish_spectral_combat"], function(values) {
var spectral_combat = parseInt(values.repeating_fetish_fetish_spectral_combat);
var spirit_damage_table_value = Math.ceil(spectral_combat/20);
var spirit_damage_result = '0';
if (spirit_damage_table_value == 1) {
spirit_damage_result = '1d2';
} else if (spirit_damage_table_value == 2) {
spirit_damage_result = '1d4';
} else if (spirit_damage_table_value == 3) {
spirit_damage_result = '1d6';
} else if (spirit_damage_table_value == 4) {
spirit_damage_result = '1d8';
} else if (spirit_damage_table_value == 5) {
spirit_damage_result = '1d10';
} else if (spirit_damage_table_value == 6) {
spirit_damage_result = '2d6';
} else if (spirit_damage_table_value == 7) {
spirit_damage_result = '1d8+1d6';
} else if (spirit_damage_table_value == 8) {
spirit_damage_result = '2d8';
} else if (spirit_damage_table_value == 9) {
spirit_damage_result = '1d10+1d8';
} else if (spirit_damage_table_value == 10) {
spirit_damage_result = '2d10';
} else if (spirit_damage_table_value == 11) {
spirit_damage_result = '2d10+1d2';
} else if (spirit_damage_table_value == 12) {
spirit_damage_result = '2d10+1d4';
} else if (spirit_damage_table_value == 13) {
spirit_damage_result = '2d10+1d6';
} else if (spirit_damage_table_value == 14) {
spirit_damage_result = '2d10+1d8';
} else if (spirit_damage_table_value == 15) {
spirit_damage_result = '3d10';
} else {
spirit_damage_result = '0';
}
setAttrs({
repeating_fetish_fetish_spirit_damage: spirit_damage_result,
});
});
});
// Battle Unit Damage
on("change:unit_frontage", function() {
getAttrs(["unit_frontage"], function(values) {
var frontage = parseInt(values.unit_frontage);
var unit_damage_table_value = Math.ceil(frontage/15);
var unit_damage_result = '0';
if (unit_damage_table_value == 1) {
unit_damage_result = '1d2';
} else if (unit_damage_table_value == 2) {
unit_damage_result = '1d4';
} else if (unit_damage_table_value == 3) {
unit_damage_result = '1d6';
} else if (unit_damage_table_value == 4) {
unit_damage_result = '1d8';
} else if (unit_damage_table_value == 5) {
unit_damage_result = '1d10';
} else if (unit_damage_table_value == 6) {
unit_damage_result = '2d6';
} else if (unit_damage_table_value == 7) {
unit_damage_result = '1d8+1d6';
} else if (unit_damage_table_value == 8) {
unit_damage_result = '2d8';
} else if (unit_damage_table_value == 9) {
unit_damage_result = '1d10+1d8';
} else if (unit_damage_table_value == 10) {
unit_damage_result = '2d10';
} else if (unit_damage_table_value == 11) {
unit_damage_result = '2d10+1d2';
} else if (unit_damage_table_value == 12) {
unit_damage_result = '2d10+1d4';
} else if (unit_damage_table_value == 13) {
unit_damage_result = '2d10+1d6';
} else if (unit_damage_table_value == 14) {
unit_damage_result = '2d10+1d8';
} else if (unit_damage_table_value == 15) {
unit_damage_result = '3d10';
} else {
unit_damage_result = '0';
}
setAttrs({
unit_damage: unit_damage_result,
});
});
});
// Arcane Magic Cost Reduction
on("change:arcane_caster_class change:arcane_magic_rank change:int", function() {
getAttrs(["arcane_caster_class", "arcane_magic_rank", "int"], function(values) {
var magic_rank = parseInt(values.arcane_magic_rank);
var int = parseInt(values.int);
var reductionmod = 0;
var basememorizemax = 0;
var memorizemod = 0;
if (values.arcane_caster_class == "magic-user") {
reductionmod = 2;
memorizemod = 2;
basememorizemax = Math.ceil(int/4);
} else if (values.arcane_caster_class == "bard") {
reductionmod = 1;
memorizemod = 1;
basememorizemax = Math.ceil(int/6);
} else {
console.log("Invalid arcane caster class")
}
var rank1reduction = 0;
var rank2reduction = 0;
var rank3reduction = 0;
var rank4reduction = 0;
var rank5reduction = 0;
var rank1memmax = 0;
var rank2memmax = 0;
var rank3memmax = 0;
var rank4memmax = 0;
var rank5memmax = 0;
if (magic_rank > 5) {
rank5reduction = -((magic_rank - 5) * reductionmod);
rank5memmax = basememorizemax + ((magic_rank - 5) * memorizemod);
} else if (magic_rank == 5) {
rank5memmax = basememorizemax;
}
if (magic_rank > 4) {
rank4reduction = -((magic_rank - 4) * reductionmod);
rank4memmax = basememorizemax + ((magic_rank - 4) * memorizemod);
} else if (magic_rank == 4) {
rank4memmax = basememorizemax;
}
if (magic_rank > 3) {
rank3reduction = -((magic_rank - 3) * reductionmod);
rank3memmax = basememorizemax + ((magic_rank - 3) * memorizemod);
} else if (magic_rank == 3) {
rank3memmax = basememorizemax;
}
if (magic_rank > 2) {
rank2reduction = -((magic_rank - 2) * reductionmod);
rank2memmax = basememorizemax + ((magic_rank - 2) * memorizemod);
} else if (magic_rank == 2) {
rank2memmax = basememorizemax;
}
if (magic_rank > 1) {
rank1reduction = -((magic_rank - 1) * reductionmod);
rank1memmax = basememorizemax + ((magic_rank - 1) * memorizemod);
} else if (magic_rank == 1) {
rank1memmax = basememorizemax;
}
setAttrs({
arcane_rank_1_cost_reduction: rank1reduction,
arcane_rank_2_cost_reduction: rank2reduction,
arcane_rank_3_cost_reduction: rank3reduction,
arcane_rank_4_cost_reduction: rank4reduction,
arcane_rank_5_cost_reduction: rank5reduction,
arcane_rank_1_memorized_max: rank1memmax,
arcane_rank_2_memorized_max: rank2memmax,
arcane_rank_3_memorized_max: rank3memmax,
arcane_rank_4_memorized_max: rank4memmax,
arcane_rank_5_memorized_max: rank5memmax,
});
});
});
// Divine Magic Cost Reduction
on("change:divine_caster_class change:divine_magic_rank change:int", function() {
getAttrs(["divine_caster_class", "divine_magic_rank", "int"], function(values) {
var magic_rank = parseInt(values.divine_magic_rank);
var int = parseInt(values.int);
var reductionmod = 0;
var basememorizemax = 0;
var memorizemod = 0;
if ( (values.divine_caster_class == "cleric") || (values.divine_caster_class == "druid")) {
reductionmod = 2;
memorizemod = 2;
basememorizemax = Math.ceil(int/4);
} else if (values.divine_caster_class == "bard") {
reductionmod = 1;
memorizemod = 1;
basememorizemax = Math.ceil(int/6);
} else if ((values.divine_caster_class == "paladin") || (values.divine_caster_class == "ranger")) {
reductionmod = 1;
memorizemod = 1;
basememorizemax = Math.ceil(int/6);
magic_rank = magic_rank - 2;
} else {
console.log("Invalid divine caster class")
}
var rank1reduction = 0;
var rank2reduction = 0;
var rank3reduction = 0;
var rank4reduction = 0;
var rank5reduction = 0;
var rank1memmax = 0;
var rank2memmax = 0;
var rank3memmax = 0;
var rank4memmax = 0;
var rank5memmax = 0;
if (magic_rank > 5) {
rank5reduction = -((magic_rank - 5) * reductionmod);
rank5memmax = basememorizemax + ((magic_rank - 5) * memorizemod);
} else if (magic_rank == 5) {
rank5memmax = basememorizemax;
}
if (magic_rank > 4) {
rank4reduction = -((magic_rank - 4) * reductionmod);
rank4memmax = basememorizemax + ((magic_rank - 4) * memorizemod);
} else if (magic_rank == 4) {
rank4memmax = basememorizemax;
}
if (magic_rank > 3) {
rank3reduction = -((magic_rank - 3) * reductionmod);
rank3memmax = basememorizemax + ((magic_rank - 3) * memorizemod);
} else if (magic_rank == 3) {
rank3memmax = basememorizemax;
}
if (magic_rank > 2) {
rank2reduction = -((magic_rank - 2) * reductionmod);
rank2memmax = basememorizemax + ((magic_rank - 2) * memorizemod);
} else if (magic_rank == 2) {
rank2memmax = basememorizemax;
}
if (magic_rank > 1) {
rank1reduction = -((magic_rank - 1) * reductionmod);
rank1memmax = basememorizemax + ((magic_rank - 1) * memorizemod);
} else if (magic_rank == 1) {
rank1memmax = basememorizemax;
}
setAttrs({
divine_rank_1_cost_reduction: rank1reduction,
divine_rank_2_cost_reduction: rank2reduction,
divine_rank_3_cost_reduction: rank3reduction,
divine_rank_4_cost_reduction: rank4reduction,
divine_rank_5_cost_reduction: rank5reduction,
divine_rank_1_memorized_max: rank1memmax,
divine_rank_2_memorized_max: rank2memmax,
divine_rank_3_memorized_max: rank3memmax,
divine_rank_4_memorized_max: rank4memmax,
divine_rank_5_memorized_max: rank5memmax,
});
});
});
// Count Known Cantrips for Arcane Magic
on("change:repeating_arcanemagicrank0spell remove:repeating_arcanemagicrank0spell", function() {
var total_cantrips_known = 0;
getSectionIDs("repeating_arcanemagicrank0spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
total_cantrips_known = total_cantrips_known + 1;
if(i === idarray.length - 1) {
setAttrs({arcane_rank_0_known: total_cantrips_known});
}
});
}
else {
setAttrs({arcane_rank_0_known: total_cantrips_known});
}
});
});
// Count Memorized Rank 1 Arcane Spells
on("change:repeating_arcanemagicrank1spell remove:repeating_arcanemagicrank1spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_arcanemagicrank1spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_arcanemagicrank1spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_arcanemagicrank1spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_arcanemagicrank1spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({arcane_rank_1_memorized: total_memorized});
}
});
});
}
else {
setAttrs({arcane_rank_1_memorized: total_memorized});
}
});
});
// Count Memorized Rank 2 Arcane Spells
on("change:repeating_arcanemagicrank2spell remove:repeating_arcanemagicrank2spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_arcanemagicrank2spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_arcanemagicrank2spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_arcanemagicrank2spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_arcanemagicrank2spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({arcane_rank_2_memorized: total_memorized});
}
});
});
}
else {
setAttrs({arcane_rank_2_memorized: total_memorized});
}
});
});
// Count Memorized Rank 3 Arcane Spells
on("change:repeating_arcanemagicrank3spell remove:repeating_arcanemagicrank3spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_arcanemagicrank3spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_arcanemagicrank3spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_arcanemagicrank3spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_arcanemagicrank3spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({arcane_rank_3_memorized: total_memorized});
}
});
});
}
else {
setAttrs({arcane_rank_3_memorized: total_memorized});
}
});
});
// Count Memorized Rank 4 Arcane Spells
on("change:repeating_arcanemagicrank4spell remove:repeating_arcanemagicrank4spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_arcanemagicrank4spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_arcanemagicrank4spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_arcanemagicrank4spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_arcanemagicrank4spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({arcane_rank_4_memorized: total_memorized});
}
});
});
}
else {
setAttrs({arcane_rank_4_memorized: total_memorized});
}
});
});
// Count Memorized Rank 5 Arcane Spells
on("change:repeating_arcanemagicrank5spell remove:repeating_arcanemagicrank5spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_arcanemagicrank5spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_arcanemagicrank5spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_arcanemagicrank5spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_arcanemagicrank5spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({arcane_rank_5_memorized: total_memorized});
}
});
});
}
else {
setAttrs({arcane_rank_5_memorized: total_memorized});
}
});
});
// Count Memorized Rank 1 Divine Spells
on("change:repeating_divinemagicrank1spell remove:repeating_divinemagicrank1spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_divinemagicrank1spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_divinemagicrank1spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_divinemagicrank1spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_divinemagicrank1spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({divine_rank_1_memorized: total_memorized});
}
});
});
}
else {
setAttrs({divine_rank_1_memorized: total_memorized});
}
});
});
// Count Memorized Rank 2 Divine Spells
on("change:repeating_divinemagicrank2spell remove:repeating_divinemagicrank2spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_divinemagicrank2spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_divinemagicrank2spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_divinemagicrank2spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_divinemagicrank2spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({divine_rank_2_memorized: total_memorized});
}
});
});
}
else {
setAttrs({divine_rank_2_memorized: total_memorized});
}
});
});
// Count Memorized Rank 3 Divine Spells
on("change:repeating_divinemagicrank3spell remove:repeating_divinemagicrank3spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_divinemagicrank3spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_divinemagicrank3spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_divinemagicrank3spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_divinemagicrank3spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({divine_rank_3_memorized: total_memorized});
}
});
});
}
else {
setAttrs({divine_rank_3_memorized: total_memorized});
}
});
});
// Count Memorized Rank 4 Divine Spells
on("change:repeating_divinemagicrank4spell remove:repeating_divinemagicrank4spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_divinemagicrank4spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_divinemagicrank4spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_divinemagicrank4spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_divinemagicrank4spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({divine_rank_4_memorized: total_memorized});
}
});
});
}
else {
setAttrs({divine_rank_4_memorized: total_memorized});
}
});
});
// Count Memorized Rank 5 Divine Spells
on("change:repeating_divinemagicrank5spell remove:repeating_divinemagicrank5spell", function() {
var total_memorized = 0;
getSectionIDs("repeating_divinemagicrank5spell", function(idarray) {
if(idarray.length > 0) {
_.each(idarray, function(currentID, i) {
getAttrs(["repeating_divinemagicrank5spell_" + currentID + "_memorized"], function(v) {
if( ( v["repeating_divinemagicrank5spell_" + currentID + "_memorized"] == 1 ) && isNaN(parseInt(v["repeating_divinemagicrank5spell_" + currentID + "_memorized"])) === false) {
total_memorized = total_memorized + 1;
}
if(i === idarray.length - 1) {
setAttrs({divine_rank_5_memorized: total_memorized});
}
});
});
}
else {
setAttrs({divine_rank_5_memorized: total_memorized});
}
});
});
// Swap chars for spirit attrs
on("change:spirit", function() {
getAttrs(["spirit"], function(v) {
if (v.spirit == 1) {
setAttrs({initiative_bonus_chars: "(@{int}+@{cha})"});
} else {
setAttrs({initiative_bonus_chars: "(@{int}+@{dex})"});
}
});
});