diff --git a/ikrpg.appcache b/ikrpg.appcache index c938892..a05fec9 100755 --- a/ikrpg.appcache +++ b/ikrpg.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# 2016-06-04 +# 2016-06-04-v2 CACHE: diff --git a/static/javascripts/generator.js b/static/javascripts/generator.js index 0c0ad93..7c4e7aa 100644 --- a/static/javascripts/generator.js +++ b/static/javascripts/generator.js @@ -4,19 +4,19 @@ var ikrpg = ikrpg || {}; (function() { - + ikrpg.generator = ikrpg.generator || {}; var generator = ikrpg.generator; - - + + // # DBs # \\ (function() { - + ikrpg.generator.db = ikrpg.generator.db || {}; - + // ## Skill DB ## \\ (function() { - + var skillDB = { "Alchemy": ["INT"], "Animal Handling": ["SOC"], @@ -75,14 +75,14 @@ var ikrpg = ikrpg || {}; "Tracking": ["PER"], "Unarmed Combat": ["PRW"] }; - + ikrpg.generator.db.skill = skillDB; - + })(); - + // ## Spell DB ## \\ (function() { - + var spellDB = { // { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" } "Abuse": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Admonition": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, @@ -479,14 +479,14 @@ var ikrpg = ikrpg || {}; "Winter Storm": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Zephyr": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" } }; - + ikrpg.generator.db.spell = spellDB; - + })(); - + // ## Worn Armor DB [Done for Regular Armor] ## \\ TODO: Add Warcaster Armor etc. (function() { - + var wornArmorDB = { "Alchemist's Leather": { "spd": 0, "def": -1, "arm": 5, "description": "" }, "Armored Diving Suit": { "spd": 0, "def": -2, "arm": 7, "description": "stats for underwater" }, @@ -522,14 +522,14 @@ var ikrpg = ikrpg || {}; "Vassal Armor": { "spd": 0, "def": -2, "arm": 7, "description": "" }, "Winter Guard Armor": { "spd": 0, "def": -2, "arm": 7, "description": "" } }; - + ikrpg.generator.db.wornArmor = wornArmorDB; - + })(); - + // ## Melee Weapon DB ## \\ (function() { - + var meleeWeaponDB = { "Ancestral Guardian Stone Weapon": { "skill": "Great Weapon", "mat-mod": 0, "pow": 7, "notes": "reach, no guardian: -3 at mod" }, "Annihilator Blade": { "skill": "Great Weapon", "mat-mod": 0, "pow": 5, "notes": "reach" }, @@ -646,14 +646,14 @@ var ikrpg = ikrpg || {}; "Voltaic Halbert": { "skill": "Great Weapon", "mat-mod": 1, "pow": 6, "notes": "lightning arc to nearest character" }, "War Hammer": { "skill": "Great Weapon", "mat-mod": -1, "pow": 5, "notes": "Crit: Knockout chance" } }; - + ikrpg.generator.db.meleeWeapon = meleeWeaponDB; - + })(); - + // ## Ranged Weapon DB ## \\ (function() { - + var rangedWeaponDB = { "Arcus": { "rng": 8, "skill": "Crossbow", "pow": 12, "rat-mod": -2, "notes": "push", "ammo": "1" }, "Assault Kommando Flamethrower": { "rng": 8, "skill": "Light Artillery", "pow": 12, "rat-mod": 0, "notes": "SP 8, -1 SPD and DEF, fire dmg, fire cont. eff.", "ammo": "10" }, @@ -749,14 +749,14 @@ var ikrpg = ikrpg || {}; "Vislovski Carbine": { "rng": 10, "skill": "Rifle", "pow": 10, "rat-mod": 0, "notes": "", "ammo": "5" }, "War Spear": { "rng": 8, "skill": "Thrown Weapon", "pow": 4, "rat-mod": 0, "notes": "melee: reach, Great Weapon", "ammo": "1" } }; - + ikrpg.generator.db.rangedWeapon = rangedWeaponDB; - + })(); - - // ## Benefits DB [all benefits, but only names] ## \\ + + // ## Benefits DB [all benefits, but only names] ## \\ (function() { - + var benefitsDB = { // { description: "" } "Additional Study": undefined, "Ambidextrous": undefined, @@ -803,14 +803,14 @@ var ikrpg = ikrpg || {}; "Virtuoso": undefined, "Warding Circle": undefined }; - + ikrpg.generator.db.benefit = benefitsDB; - + })(); - - // ## Abilities DB [all abilities, but only names] ## \\ + + // ## Abilities DB [all abilities, but only names] ## \\ (function() { - + //Max length = “The maximum description size!“ 29 chars var abilitiesDB = { // { description: "" } @@ -935,6 +935,7 @@ var ikrpg = ikrpg || {}; "Conjoined": undefined, "Conniver": undefined, "Consume Essence": undefined, + "Cordeur": undefined, "Coven Leader": undefined, "Convergence Warcaster": undefined, "Corruptor": undefined, @@ -1121,6 +1122,7 @@ var ikrpg = ikrpg || {}; "Mounted: Counter Charge": undefined, "Mounted: Outride": undefined, "Natural Leader": undefined, + "Nautical Sabotage": undefined, "Necromancer": undefined, "Night Fighter": undefined, "No I'm Fine": undefined, @@ -1204,6 +1206,7 @@ var ikrpg = ikrpg || {}; "Set Defence": undefined, "Shadow Magic": undefined, "Shadow Steel": undefined, + "Shanghai": undefined, "Share the Load": undefined, "Shield Guard": undefined, "Shield Slam": undefined, @@ -1244,6 +1247,7 @@ var ikrpg = ikrpg || {}; "Stone Warder": undefined, "Stone-and-Mortars Stance": undefined, "Stonecutter": undefined, + "Stopgap": undefined, "Storm Booster": undefined, "Storm of Leaves": undefined, "Strangler": undefined, @@ -1305,29 +1309,29 @@ var ikrpg = ikrpg || {}; "Wold Mastery": undefined, "Wolf Protector": undefined }; - + ikrpg.generator.db.ability = abilitiesDB; - + })(); - + // ## Capacitor DB ## \\ (function() { - + var capacitorEntries = $.grep(ikrpg.index.data, function(entry) { return entry.category == "Mechanika" && entry.subcategory == "Capacitor"; }); - + var names = $.map(capacitorEntries, function(capacitor) { return capacitor.name; }); - + ikrpg.generator.db.capacitor = names; - + })(); - + // ## Runeplate DB [all runeplates, but only names] ## \\ (function() { - + var runplateDB = { "Accuracy": undefined, "Aegis": undefined, @@ -1371,30 +1375,30 @@ var ikrpg = ikrpg || {}; "Vitriol": undefined, "Whiplash": undefined }; - + ikrpg.generator.db.runeplate = runplateDB; - + })(); - + })(); - - + + // # Fill character sheet input fields with DB data # \\ (function() { - + // ## Spell changes ## \\ (function() { - + var db = ikrpg.generator.db.spell; - + // ### Fill spell data on title change ### \\ (function() { - + $(".character-sheet .spell .title").change(function(event) { var input = $(event.target); var title = input.val(); var spell = input.parent(); - + var spellData = db[title]; if(spellData) { spell.find(".cost").val(spellData["cost"]); @@ -1406,16 +1410,16 @@ var ikrpg = ikrpg || {}; spell.find(".description").val(spellData["description"]); } }); - + })(); - + // ### Autocomplete ### \\ (function() { - + var source = $.grep(Object.keys(db), function(key) { return db[key]; }); - + function buildAutocomplete(selector) { $(selector + " .title").autocomplete({ appendTo: selector, @@ -1427,48 +1431,48 @@ var ikrpg = ikrpg || {}; } }); } - + $(".character-sheet .spell").each(function(index, skill) { buildAutocomplete(".character-sheet #"+$(skill).attr("id")); }); })(); - + })(); - + // ## Skill changes ## \\ (function() { - + var db = ikrpg.generator.db.skill; - + // ### Fill skill data on title change ### \\ (function() { - + $(".character-sheet .skill .title").change(function(event) { var input = $(event.target); var title = input.val(); var skill = input.parent(); - + var skillBaseName = title.replace(/(\(.*\))+/g, "").replace(/\s+$/, ""); - + var skillData = db[skillBaseName]; if(skillData && skillData.length > 0) { var stat = skillData[0]; var lowerStat = stat.toLowerCase(); - + var statValue = $(".character-sheet #"+lowerStat).val(); if(statValue) { skill.find(".stat").val(lowerStat); skill.find(".base").val(statValue); skill.find(".lvl").val(0); skill.find(".sum").val(statValue); - + if(skillData.length > 1) { var stat = skillData[1]; var lowerStat = stat.toLowerCase(); - + var statValue = $(".character-sheet #"+lowerStat).val(); if(statValue) { - + function findNextEmptySkill(currentSkill) { var nextSkill = currentSkill.next(".skill"); if(nextSkill) { @@ -1481,7 +1485,7 @@ var ikrpg = ikrpg || {}; return null; } } - + var nextEmptySkill = findNextEmptySkill(skill); if(nextEmptySkill) { nextEmptySkill.find(".title").val(title); @@ -1500,12 +1504,12 @@ var ikrpg = ikrpg || {}; } } }); - + })(); - + // ### Recompute sum on skill level change ### \\ (function() { - + $(".character-sheet .skill .lvl").change(function(event) { var input = $(event.target); var skill = input.parent(); @@ -1517,12 +1521,12 @@ var ikrpg = ikrpg || {}; sum.trigger("change"); } }); - + })(); - + // ### Recompute sum on parent set value change ### \\ (function() { - + $(".character-sheet .skill .base").change(function(event) { var input = $(event.target); var skill = input.parent(); @@ -1534,16 +1538,16 @@ var ikrpg = ikrpg || {}; sum.trigger("change"); } }); - + })(); - + // ### Autocomplete ### \\ (function() { - + var source = $.grep(Object.keys(db), function(key) { return db[key]; }); - + function buildAutocomplete(selector) { $(selector + " .title").autocomplete({ appendTo: selector, @@ -1555,20 +1559,20 @@ var ikrpg = ikrpg || {}; } }); } - + $(".character-sheet .skill").each(function(index, skill) { buildAutocomplete(".character-sheet #"+$(skill).attr("id")); }); })(); - + })(); - + // ## Stat changes ## \\ (function() { - + // ### Update skill parent set value on stat change ### \\ (function() { - + $(".character-sheet .stat").change(function(event) { var input = $(event.target); var stat = input.attr("id"); @@ -1579,12 +1583,12 @@ var ikrpg = ikrpg || {}; base.trigger("change"); }); }); - + })(); - + // ### Update Willpower on PHY or INT change ### \\ (function() { - + $(".character-sheet #phy, .character-sheet #int").change(function(event) { var phyInput = $(".character-sheet #phy"); var intInput = $(".character-sheet #int"); @@ -1594,35 +1598,35 @@ var ikrpg = ikrpg || {}; $(".character-sheet #wil").val(phy + int); } }); - + })(); - + // ### Update SPD on computed SPD change ### \\ (function() { - + $(".character-sheet #computed-spd").change(function(event) { var input = $(event.target); var computedSpd = parseInt(input.val()) || 0; var spdMod = parseInt($(".character-sheet #wornarmor1 .spd").val()) || 0; - + $(".character-sheet #spd").val(computedSpd - spdMod); }); - + })(); - + // ### Update computed SPD (on load) ### \\ HACK! (function() { - + setTimeout(function() { $("#characters > tbody > tr > td:nth-of-type(5) > a").click(function(event) { event.preventDefault(); - + var a = $(event.target); var tr = a.parent().parent(); var name = tr.find("td:nth-of-type(1)").text(); - + ikrpg.sheet.showCharacter(name); - + setTimeout(function() { // HACK! (problem seems to be that pouch db is async loading) var spd = $(".character-sheet #spd").val() || 0; $(".character-sheet #computed-spd").val(spd); @@ -1630,19 +1634,19 @@ var ikrpg = ikrpg || {}; }); }, 500); })(); - + })(); - + // ## Ability changes ## \\ (function() { - + var db = ikrpg.generator.db.ability; - + // ### Update page value on ability change ### \\ (function() { - + var data = ikrpg.index.data; - + $(".character-sheet .ability").change(function(event) { var input = $(event.target); var title = input.val(); @@ -1654,16 +1658,16 @@ var ikrpg = ikrpg || {}; ability.find(".page").val(page); } }); - + })(); - + // ### Autocomplete ### \\ (function() { - + var benefitDB = ikrpg.generator.db.benefit; - + var source = $.merge(Object.keys(db), Object.keys(benefitDB)); - + function buildAutocomplete(selector) { $(selector + " .title").autocomplete({ appendTo: selector, @@ -1675,56 +1679,56 @@ var ikrpg = ikrpg || {}; } }); } - + $(".character-sheet .ability").each(function(index, ability) { buildAutocomplete(".character-sheet #"+$(ability).attr("id")); }); })(); - + })(); - + // ## Ranged Weapons ## \\ (function() { - + var db = ikrpg.generator.db.rangedWeapon; - + // ### Update on name change ### \\ (function() { - + $(".character-sheet #rat1 .name, .character-sheet #rat2 .name").change(function(event) { var input = $(event.target); var title = input.val(); var rangedWeapon = input.parent(); - + // remove previously remembered skill and rat mod rangedWeapon.find(".skill").val(""); rangedWeapon.find(".ratmod").val(""); - + var rangedWeaponData = db[title]; - + if(rangedWeaponData) { rangedWeapon.find(".rng").val(rangedWeaponData["rng"]); rangedWeapon.find(".pow").val(rangedWeaponData["pow"]); rangedWeapon.find(".notes").val(rangedWeaponData["notes"]); rangedWeapon.find(".ammo").val(rangedWeaponData["ammo"]); rangedWeapon.find(".ratmod").val(rangedWeaponData["rat-mod"]); - + var skillName = rangedWeaponData["skill"]; var skills = $.grep($(".character-sheet .skill .title"), function(input) { return $(input).val() == skillName; }); - + var skillDB = ikrpg.generator.db.skill; var statNames = skillDB[skillName]; - + if(skills && skills.length > 0) { var skill = $(skills[0]); var lvl = parseInt(skill.parent().find(".lvl").val()) || 0; - + if(statNames && statNames.length > 0) { var statName = statNames[0].toLowerCase(); var stat = parseInt($(".character-sheet #"+statName).val()) || 0; - + var ratMod = parseInt(rangedWeaponData["rat-mod"]); - + rangedWeapon.find(".rat").val(stat + lvl + ratMod); } else { rangedWeapon.find(".rat").val(""); @@ -1736,38 +1740,38 @@ var ikrpg = ikrpg || {}; } } }); - + })(); - + // ### Update RAT on skill lvl or sum change ### \\ (function() { - + $(".character-sheet .skill .lvl, .character-sheet .skill .sum").change(function(event) { var input = $(event.target); var skill = input.parent(); var title = skill.find(".title").val(); var base = parseInt(skill.find(".base").val()) || 0; var lvl = parseInt(skill.find(".lvl").val()) || 0; - + var rangedWeaponSkills = $(".character-sheet #rat1 .skill[value='"+title+"'], .character-sheet #rat2 .skill[value='"+title+"']"); - + rangedWeaponSkills.each(function(index, rangedWeaponSkill) { var rangedWeapon = $(rangedWeaponSkill).parent(); - + var ratMod = parseInt(rangedWeapon.find(".ratmod").val()) || 0; rangedWeapon.find(".rat").val(base + lvl + ratMod); }); }); - + })(); - + // ### Autocomplete ### \\ (function() { - + var source = $.grep(Object.keys(db), function(key) { return db[key]; }); - + function buildAutocomplete(selector) { $(selector + " .name").autocomplete({ appendTo: selector, @@ -1779,51 +1783,51 @@ var ikrpg = ikrpg || {}; } }); } - + buildAutocomplete(".character-sheet #rat1"); buildAutocomplete(".character-sheet #rat2"); })(); - + })(); - + // ## Melee Weapons ## \\ (function() { - + var db = ikrpg.generator.db.meleeWeapon; - + // ### Update on name change ### \\ (function() { - + $(".character-sheet #mat1 .name, .character-sheet #mat2 .name").change(function(event) { var input = $(event.target); var name = input.val(); var meleeWeapon = input.parent(); - + // remove previously remembered skill, rat mod, and pow meleeWeapon.find(".skill").val(""); meleeWeapon.find(".matmod").val(""); meleeWeapon.find(".pow").val(""); - + var meleeWeaponData = db[name]; if(meleeWeaponData) { meleeWeapon.find(".notes").val(meleeWeaponData["notes"]); meleeWeapon.find(".skill").val(meleeWeaponData["skill"]); meleeWeapon.find(".matmod").val(meleeWeaponData["mat-mod"]); meleeWeapon.find(".pow").val(meleeWeaponData["pow"]); - + var skillName = meleeWeaponData["skill"]; var skills = $.grep($(".character-sheet .skill .title"), function(input) { return $(input).val() == skillName; }); - + if(skills && skills.length > 0) { var skill = $(skills[0]).parent(); var sum = parseInt(skill.find(".sum").val()) || 0; var matMod = parseInt(meleeWeaponData["mat-mod"]); - + meleeWeapon.find(".mat").val(sum + matMod); } else { meleeWeapon.find(".mat").val(""); } - + var str = parseInt($(".character-sheet #str").val()) || 0; if(str || str == 0) { var pow = parseInt(meleeWeaponData["pow"]); @@ -1833,38 +1837,38 @@ var ikrpg = ikrpg || {}; } } }); - + })(); - + // ### Update MAT on skill lvl or sum change ### \\ (function() { - + $(".character-sheet .skill .lvl, .character-sheet .skill .sum").change(function(event) { var input = $(event.target); var skill = input.parent(); var title = skill.find(".title").val(); var base = parseInt(skill.find(".base").val()) || 0; var lvl = parseInt(skill.find(".lvl").val()) || 0; - + var meleeWeaponSkills = $(".character-sheet #mat1 .skill[value='"+title+"'], .character-sheet #mat2 .skill[value='"+title+"']"); - + meleeWeaponSkills.each(function(index, meleeWeaponSkill) { var meleeWeapon = $(meleeWeaponSkill).parent(); - + var matMod = parseInt(meleeWeapon.find(".matmod").val()) || 0; meleeWeapon.find(".mat").val(base + lvl + matMod); }); }); - + })(); - + // ### Update P+S on STR change ### \\ (function() { - + $(".character-sheet #str").change(function(event) { var input = $(event.target); var str = parseInt(input.val()); - + $(".character-sheet #mat1, .character-sheet #mat2").each(function(index, mat) { var name = $(mat).find(".name").val(); if(name) { @@ -1873,16 +1877,16 @@ var ikrpg = ikrpg || {}; } }); }); - + })(); - + // ### Autocomplete ### \\ (function() { - + var source = $.grep(Object.keys(db), function(key) { return db[key]; }); - + function buildAutocomplete(selector) { $(selector + " .name").autocomplete({ appendTo: selector, @@ -1894,153 +1898,153 @@ var ikrpg = ikrpg || {}; } }); } - + buildAutocomplete(".character-sheet #mat1"); buildAutocomplete(".character-sheet #mat2"); })(); - + })(); - + // ## Computed Values (DEF, ARM, INI, CMD) ## \\ (function() { - + // ### Update total DEF ### \\ (function() { - + $(".character-sheet #computed-spd, .character-sheet #agl, .character-sheet #per, .character-sheet #defracialmodifier, .character-sheet #defequipmentmodifiers").change(function() { var spd = parseInt($(".character-sheet #computed-spd").val()) || 0; var agl = parseInt($(".character-sheet #agl").val()) || 0; var per = parseInt($(".character-sheet #per").val()) || 0; var defracialmodifier = parseInt($(".character-sheet #defracialmodifier").val()) || 0; var defequipmentmodifiers = parseInt($(".character-sheet #defequipmentmodifiers").val()) || 0; - + if((spd || spd == 0) && (agl || agl == 0) && (per || per == 0) && (defracialmodifier || defracialmodifier == 0) && (defequipmentmodifiers || defequipmentmodifiers == 0)) { $(".character-sheet #def").val(spd + agl + per + defracialmodifier + defequipmentmodifiers); } }); - + })(); - + // ### Update total ARM ### \\ (function() { - + $(".character-sheet #phy, .character-sheet #armshieldmodifier, .character-sheet #armarmormodifiers, .character-sheet #armothermodifiers").change(function() { var phy = parseInt($(".character-sheet #phy").val()) || 0; var armshieldmodifier = parseInt($(".character-sheet #armshieldmodifier").val()) || 0; var armarmormodifiers = parseInt($(".character-sheet #armarmormodifiers").val()) || 0; var armothermodifiers = parseInt($(".character-sheet #armothermodifiers").val()) || 0; - + if((phy || phy == 0) && (armshieldmodifier || armshieldmodifier == 0) && (armarmormodifiers || armarmormodifiers == 0) && (armothermodifiers || armothermodifiers == 0)) { $(".character-sheet #arm").val(phy + armshieldmodifier + armarmormodifiers + armothermodifiers); } }); - + })(); - + // ### Update ARM shield modifier on Shield skill change ### \\ (function() { - + $(".character-sheet .skill .lvl").change(function(event) { var input = $(event.target); var lvl = input.val(); var skill = input.parent(); var name = skill.find(".title").val(); - + if(name == "Shield") { var mod = $(".character-sheet #armshieldmodifier"); mod.val(lvl); mod.trigger("change"); } }); - + })(); - + // ### Update total INI ### \\ (function() { - + $(".character-sheet #computed-spd, .character-sheet #prw, .character-sheet #per, .character-sheet #iniequipmentmodifiers, .character-sheet #iniadditionalmodifiers").change(function() { var spd = parseInt($(".character-sheet #computed-spd").val()) || 0; var prw = parseInt($(".character-sheet #prw").val()) || 0; var per = parseInt($(".character-sheet #per").val()) || 0; var iniequipmentmodifiers = parseInt($(".character-sheet #iniequipmentmodifiers").val()) || 0; var iniadditionalmodifiers = parseInt($(".character-sheet #iniadditionalmodifiers").val()) || 0; - + if((spd || spd == 0) && (prw || prw == 0) && (per || per == 0) && (iniequipmentmodifiers || iniequipmentmodifiers == 0) && (iniadditionalmodifiers || iniadditionalmodifiers == 0)) { $(".character-sheet #ini").val(spd + prw + per + iniequipmentmodifiers + iniadditionalmodifiers); } }); - + })(); - + // ### Update total CMD ### \\ (function() { - + $(".character-sheet #int, .character-sheet #cmdcommandskill, .character-sheet #cmdabilitymodifier").change(function() { var int = parseInt($(".character-sheet #int").val()) || 0; var cmdcommandskill = parseInt($(".character-sheet #cmdcommandskill").val()) || 0; var cmdabilitymodifier = parseInt($(".character-sheet #cmdabilitymodifier").val()) || 0; - + if((int || int == 0) && (cmdcommandskill || cmdcommandskill == 0) && (cmdabilitymodifier || cmdabilitymodifier == 0)) { $(".character-sheet #cmd").val(int + cmdcommandskill + cmdabilitymodifier); } }); - + })(); - + // ### Update CMD command skill on Command skill change ### \\ (function() { - + $(".character-sheet .skill .lvl").change(function(event) { var input = $(event.target); var lvl = input.val(); var skill = input.parent(); var name = skill.find(".title").val(); - + if(name == "Command") { var mod = $(".character-sheet #cmdcommandskill"); mod.val(lvl); mod.trigger("change"); } }); - + })(); - + })(); - - // ## Worn Armor changes ## \\ + + // ## Worn Armor changes ## \\ (function() { - + var db = ikrpg.generator.db.wornArmor; - + // ### Name changes ### \\ (function() { - + $(".character-sheet .wornarmor .name").change(function(event) { var input = $(event.target); var name = input.val(); var wornArmor = input.parent(); - + var wornArmorData = db[name]; if(wornArmorData) { wornArmor.find(".description").val(wornArmorData["description"]); wornArmor.find(".spd").val(wornArmorData["spd"]); wornArmor.find(".def").val(wornArmorData["def"]); wornArmor.find(".arm").val(wornArmorData["arm"]); - + wornArmor.find(".spd").trigger("change"); wornArmor.find(".def").trigger("change"); wornArmor.find(".arm").trigger("change"); } }); - + })(); - + // ### wornarmor1 changes ### \\ (function() { - + // #### wornarmor1 SPD change #### \\ (function() { - + $(".character-sheet #wornarmor1 .spd").change(function(event) { var input = $(event.target); var spdMalus = input.val(); @@ -2048,15 +2052,15 @@ var ikrpg = ikrpg || {}; spdMalus = 0; } var spd = parseInt($(".character-sheet #spd").val()); - + $(".character-sheet #computed-spd").val(spd + parseInt(spdMalus)); }); - + })(); - + // #### wornarmor1 DEF change #### \\ (function() { - + $(".character-sheet #wornarmor1 .def").change(function(event) { var input = $(event.target); var defMalus = input.val(); @@ -2067,12 +2071,12 @@ var ikrpg = ikrpg || {}; mods.val(defMalus); mods.trigger("change"); }); - + })(); - + // #### wornarmor1 ARM change #### \\ (function() { - + $(".character-sheet #wornarmor1 .arm").change(function(event) { var input = $(event.target); var armBonus = input.val(); @@ -2083,18 +2087,18 @@ var ikrpg = ikrpg || {}; mods.val(armBonus); mods.trigger("change"); }); - + })(); - + })(); - + // ### Autocomplete ### \\ (function() { - + var source = $.grep(Object.keys(db), function(key) { return db[key]; }); - + function buildAutocomplete(selector) { $(selector + " .name").autocomplete({ appendTo: selector, @@ -2106,24 +2110,24 @@ var ikrpg = ikrpg || {}; } }); } - + $(".character-sheet .wornarmor").each(function(index, wornArmor) { buildAutocomplete(".character-sheet #"+$(wornArmor).attr("id")); }); })(); - + })(); - + // ## Capacitor ## \\ (function() { - + var db = ikrpg.generator.db.capacitor; - + // ### Autocomplete ### \\ (function() { - + var source = db; - + function buildAutocomplete(selector, clazz) { $(selector + " " + clazz).autocomplete({ appendTo: selector, @@ -2135,28 +2139,28 @@ var ikrpg = ikrpg || {}; } }); } - + $(".character-sheet .capacitor").each(function(index, capacitor) { buildAutocomplete(".character-sheet #"+$(capacitor).attr("id"), ".title"); }); - + $(".character-sheet .mechanika").each(function(index, mechanika) { buildAutocomplete(".character-sheet #"+$(mechanika).attr("id"), ".capacitor"); }); })(); - + })(); - + // ## Runeplate ## \\ (function() { - + var db = ikrpg.generator.db.runeplate; - + // ### Autocomplete ### \\ (function() { - + var source = Object.keys(db); - + function buildAutocomplete(selector, clazz) { $(selector + " " + clazz).autocomplete({ appendTo: selector, @@ -2168,26 +2172,26 @@ var ikrpg = ikrpg || {}; } }); } - + $(".character-sheet .runeplate").each(function(index, runeplate) { buildAutocomplete(".character-sheet #"+$(runeplate).attr("id"), ".title"); }); - + $(".character-sheet .mechanika").each(function(index, mechanika) { buildAutocomplete(".character-sheet #"+$(mechanika).attr("id"), ".runeplate"); }); })(); - + })(); - + })(); - - + + // # Character Generator Data DSL # \\ (function() { - + // ## Character Generator Control Structures ## \\ - + function HeroNumber(key, value) { this.key = key; this.value = value; @@ -2197,7 +2201,7 @@ var ikrpg = ikrpg || {}; str += '