// global // var ikrpg 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"], "Archery": ["POI"], "Bribery": ["SOC"], "Chymistry": ["INT"], "Climbing": ["AGL"], "Command": ["SOC"], "Craft": ["INT"], "Crossbow": ["POI"], "Cryptography": ["INT"], "Deception": ["SOC"], "Detection": ["PER"], "Disguise": ["INT"], "Driving": ["AGL"], "Escape Artist": ["AGL"], "Etiquette": ["SOC"], "Fell Calling": ["POI"], "Forensic Science": ["INT"], "Forgery": ["AGL", "INT"], "Gambling": ["PER"], "Great Weapon": ["PRW"], "Hand Weapon": ["PRW"], "Heavy Artillery": ["POI"], "Interrogation": ["SOC"], "Intimidation": ["SOC"], "Investigation": ["INT"], "Jumping": ["PHY"], "Lance": ["PRW"], "Law": ["INT"], "Light Artillery": ["POI"], "Lock Picking": ["AGL"], "Lore": ["INT"], "Mechanikal Engineering": ["INT"], "Medicine": ["INT"], "Navigation": ["PER"], "Negotiation": ["SOC"], "Oratory": ["SOC"], "Pickpocket": ["AGL"], "Pistol": ["POI"], "Reiver": ["POI"], "Research": ["INT"], "Riding": ["AGL"], "Rifle": ["POI"], "Rope Use": ["AGL"], "Sailing": ["INT", "STR"], "Seduction": ["SOC"], "Shield": ["PRW"], "Sneak": ["AGL"], "Stormsmithing": ["PER"], "Streetwise": ["PER"], "Survival": ["PER"], "Swimming": ["STR"], "Thrall Crafting": ["INT"], "Thrown Weapon": ["PRW"], "Tracking": ["PER"], "Unarmed Combat": ["PRW"] }; ikrpg.generator.db.skill = skillDB; })(); // ## Spell DB ## \\ (function() { var spellDB = { "Arcane Bolt": { "cost": 2, "rng": 12, "aoe": "–", "pow": 11, "up": "NO", "off": "YES", "description": "" }, "Arcane Strike": { "cost": 1, "rng": 8, "aoe": "–", "pow": 8, "up": "NO", "off": "YES", "description": "" }, "Arcantrik Bolt": { "cost": 2, "rng": 10, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Ashen Cloud": { "cost": 2, "rng": "CTRL", "aoe": 3, "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Ashes to Ashes": { "cost": 4, "rng": 8, "aoe": "*", "pow": 10, "up": "NO", "off": "YES", "description": "" }, "Aura of Protection": { "cost": 2, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Awareness": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Banishing Ward": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Barrier of FLames": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Battering Ram": { "cost": 2, "rng": 6, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Batten Down the Hatches": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Black Out": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Blade of Radiance": { "cost": 2, "rng": 10, "aoe": "–", "pow": 10, "up": "NO", "off": "YES", "description": "" }, "Blazing Effigy": { "cost": 4, "rng": "SELF", "aoe": "*", "pow": 14, "up": "NO", "off": "NO", "description": "" }, "Blessing of Health": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Blessing of Morrow": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Blessings of War": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Blizzard": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Brittle Frost": { "cost": 3, "rng": 8, "aoe": "–", "pow": "–", "up": "YES", "off": "YES", "description": "" }, "Boundless Charge": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Broadside": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Celerity": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Chain Lightning": { "cost": 3, "rng": 10, "aoe": "–", "pow": 10, "up": "NO", "off": "YES", "description": "" }, "Chiller": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Cleansing Fire": { "cost": 3, "rng": 8, "aoe": 3, "pow": 14, "up": "NO", "off": "YES", "description": "" }, "Convection": { "cost": 2, "rng": 10, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Crevasse": { "cost": 3, "rng": 8, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Crusader's Call": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Daylight": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Deceleration": { "cost": 3, "rng": "SELF", "aoe": "DTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Deep Freeze": { "cost": 3, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Earthquake": { "cost": 3, "rng": 10, "aoe": 5, "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Earth's Cradle": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Earthsplitter": { "cost": 4, "rng": 10, "aoe": 3, "pow": 14, "up": "NO", "off": "YES", "description": "" }, "Electrical Blast": { "cost": 3, "rng": 8, "aoe": 3, "pow": 13, "up": "NO", "off": "YES", "description": "" }, "Electrify": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Eliminator": { "cost": 3, "rng": 8, "aoe": 3, "pow": 13, "up": "NO", "off": "YES", "description": "" }, "Entangle": { "cost": 1, "rng": 8, "aoe": "–", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Eyes of Truth": { "cost": 2, "rng": "SELF", "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Extinguisher": { "cost": 2, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Fail Safe": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Fair Winds": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Fire Group": { "cost": 2, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Fire Starter": { "cost": 1, "rng": 8, "aoe": "–", "pow": "–", "up": "NO", "off": "*", "description": "" }, "Flames of Wrath": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Flare": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Fog of War": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Force Field": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Force Hammer": { "cost": 4, "rng": 10, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Force of Faith": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Fortify": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Foxhole": { "cost": 2, "rng": "CTRL", "aoe": 5, "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Freezing Grip": { "cost": 4, "rng": 8, "aoe": "–", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Freezing Mist": { "cost": 4, "rng": "SELF", "aoe": "*", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Frozen Ground": { "cost": 3, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Frostbite": { "cost": 2, "rng": "SP8", "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Fuel the Flames": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Full Throttle": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Grind": { "cost": 3, "rng": 10, "aoe": "–", "pow": 14, "up": "NO", "off": "YES", "description": "" }, "Guided Blade": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Guilded Fire": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Hand of Fate": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Heal": { "cost": 4, "rng": "*", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Heightened Reflexes": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Hex Blast": { "cost": 3, "rng": 10, "aoe": 3, "pow": 13, "up": "NO", "off": "YES", "description": "" }, "Hoarfrost": { "cost": 3, "rng": 8, "aoe": 3, "pow": 14, "up": "NO", "off": "YES", "description": "" }, "Howling Flames": { "cost": 2, "rng": "SP8", "aoe": "–", "pow": 10, "up": "NO", "off": "YES", "description": "" }, "Hymn of Battle": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Hymn of Passage": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Hymn of Shielding": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Ice Bolt": { "cost": 2, "rng": 10, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Ice Shield": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Icy Grip": { "cost": 2, "rng": 8, "aoe": "–", "pow": "–", "up": "YES", "off": "YES", "description": "" }, "Ignite": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Immolation": { "cost": 2, "rng": 8, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Inferno": { "cost": 3, "rng": 10, "aoe": 3, "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Influence": { "cost": 1, "rng": 10, "aoe": "–", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Inhospitable Ground": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Iron Aggression": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Jackhammer": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Jump Start": { "cost": 1, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Lamentation": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Light in the Darkness": { "cost": 1, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Lightning Tendrils": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Locomotion": { "cost": "1+", "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Mirage": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Obliteration": { "cost": 4, "rng": 10, "aoe": 4, "pow": 15, "up": "NO", "off": "YES", "description": "" }, "Occultation": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Overmind": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Polarity Shield": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Positive Charge": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Power Booster": { "cost": 1, "rng": 5, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Prayer of Guidance": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Protection from Cold": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Protection from Corrosion": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Protection from Electricity": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Protection from Fire": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Purification": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Raging Winds": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Razor Wind": { "cost": 2, "rng": 10, "aoe": "–", "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Redline": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Refuge": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Return Fire": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rift": { "cost": 3, "rng": 8, "aoe": 4, "pow": 13, "up": "NO", "off": "YES", "description": "" }, "Righteous Flames": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rime": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rock Hammer": { "cost": 3, "rng": 10, "aoe": 3, "pow": 14, "up": "NO", "off": "YES", "description": "" }, "Rock Wall": { "cost": 2, "rng": "CTRL", "aoe": "WALL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Rune Shot: Accuracy": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Black Penny": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Brutal": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Detonator": { "cost": 3, "rng": "SELF", "aoe": "*", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Earth Shaker": { "cost": 3, "rng": "SELF", "aoe": "*", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Freeze Fire": { "cost": 4, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Heart Stopper": { "cost": 4, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Iron Rot": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Molten Shot": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Momentum": { "cost": 4, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Phantom Seeker": { "cost": 3, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Shadow Fire": { "cost": 2, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Silencer": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Spell Cracker": { "cost": 3, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Spontaneous Combustion": { "cost": 1, "rng": "SELF", "aoe": "*", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Thunderbolt": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Rune Shot: Trick Shot": { "cost": 2, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Sanguine Blessing": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Sea of Fire": { "cost": 4, "rng": "SELF", "aoe": "*", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Shatter Storm": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Shield of Faith": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Shock Wave": { "cost": 4, "rng": "SELF", "aoe": "*", "pow": 13, "up": "NO", "off": "NO", "description": "" }, "Short Out": { "cost": 1, "rng": 8, "aoe": "–", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Snipe": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Solid Ground": { "cost": 2, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Solovin's Boon": { "cost": 1, "rng": "SELF", "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Star Fire": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Staying Winter's Hand": { "cost": 2, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Stone Stance": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Stone Strength": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Storm Tossed": { "cost": 1, "rng": 8, "aoe": "–", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Sunburst": { "cost": 3, "rng": 10, "aoe": 3, "pow": 13, "up": "NO", "off": "YES", "description": "" }, "Superiority": { "cost": 3, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Telekinesis": { "cost": 2, "rng": 8, "aoe": "–", "pow": "–", "up": "NO", "off": "*", "description": "" }, "Temper Metal": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Tempest": { "cost": 4, "rng": 8, "aoe": 4, "pow": 12, "up": "NO", "off": "YES", "description": "" }, "Tide of Steel": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Tornado": { "cost": 4, "rng": 10, "aoe": "–", "pow": 13, "up": "NO", "off": "YES", "description": "" }, "Transference": { "cost": 2, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Triage": { "cost": 2, "rng": "B2B", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "True Path": { "cost": 3, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "True Sight": { "cost": 2, "rng": "SELF", "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Vision": { "cost": 2, "rng": 6, "aoe": "–", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Voltaic Lock": { "cost": 4, "rng": 10, "aoe": "*", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Wall of Fire": { "cost": 2, "rng": "CTRL", "aoe": "WALL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "White Out": { "cost": 4, "rng": "SELF", "aoe": "CTRL", "pow": "–", "up": "YES", "off": "NO", "description": "" }, "Wind Blast": { "cost": 2, "rng": "CTRL", "aoe": 5, "pow": "–", "up": "NO", "off": "NO", "description": "" }, "Wind Strike": { "cost": 1, "rng": 6, "aoe": "–", "pow": "–", "up": "NO", "off": "YES", "description": "" }, "Wings of Air": { "cost": 2, "rng": "SELF", "aoe": "–", "pow": "–", "up": "NO", "off": "NO", "description": "" }, "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; })(); })(); // # Fill character sheet input fields with DB data # \\ (function() { // ## Fill spell data on title change ## \\ (function() { var db = ikrpg.generator.db.spell; $(".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"]); spell.find(".rng").val(spellData["rng"]); spell.find(".aoe").val(spellData["aoe"]); spell.find(".pow").val(spellData["pow"]); spell.find(".up").val(spellData["up"]); spell.find(".off").val(spellData["off"]); spell.find(".description").val(spellData["description"]); } }); })(); // ## 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) { if(nextSkill.find(".title").val() == "") { return nextSkill; } else { return findNextEmptySkill(nextSkill); } } else { return null; } } var nextEmptySkill = findNextEmptySkill(skill); if(nextEmptySkill) { nextEmptySkill.find(".title").val(title); nextEmptySkill.find(".stat").val(lowerStat); nextEmptySkill.find(".base").val(statValue); nextEmptySkill.find(".lvl").val(0); nextEmptySkill.find(".sum").val(statValue); } } } } else if(stat == "SOC") { skill.find(".stat").val("soc"); skill.find(".base").val("*"); skill.find(".lvl").val(0); skill.find(".sum").val("*"); } } }); })(); // ### Recompute sum on skill level change ### \\ (function() { $(".character-sheet .skill .lvl").change(function(event) { var input = $(event.target); var skill = input.parent(); var lvlValue = parseInt(input.val()); var baseValue = parseInt(skill.find(".base").val()); if((lvlValue || lvlValue == 0) && (baseValue || baseValue == 0)) { skill.find(".sum").val(lvlValue + baseValue); } }); })(); // ### Recompute sum on parent set value change ### \\ (function() { $(".character-sheet .skill .base").change(function(event) { var input = $(event.target); var skill = input.parent(); var baseValue = parseInt(input.val()); var lvlValue = parseInt(skill.find(".lvl").val()); if((lvlValue || lvlValue == 0) && (baseValue || baseValue == 0)) { skill.find(".sum").val(lvlValue + baseValue); } }); })(); })(); // ## 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"); $('.character-sheet .skill .stat[value="'+stat+'"]').each(function(index, s) { var skill = $(s).parent(); var base = skill.find(".base"); base.val(input.val()); 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"); var phy = parseInt(phyInput.val()); var int = parseInt(intInput.val()); console.log(phy) console.log(int) if((phy || phy == 0) && (int || int == 0)) { $(".character-sheet #wil").val(phy + int); } }); })(); })(); // ## Update page value on ability change ## \\ (function() { var db = ikrpg.index.data; $(".character-sheet .ability").change(function(event) { var input = $(event.target); var title = input.val(); var ability = input.parent(); var entry = $.grep(db, function(e) { return e["name"] == title; }); if(entry && entry.length > 0) { var page = entry[0]["page"]; ability.find(".page").val(page); } }); })(); })(); // # Character Generator Data DSL # \\ (function() { // ## Character Generator Control Structures ## \\ function HeroNumber(key, value) { this.key = key; this.value = value; this.html = function() { var str = ''; str += '\n'; str += ' '+this.key+'\n'; str += ' \n'; str += '\n'; return str; }; } function number(key, value) { return new HeroNumber(key, value); } function HeroRange(key, min, max) { this.key = key; this.min = min; this.max = max; this.html = function() { var str = ''; str += '\n'; str += ' '+this.key+'\n'; str += ' \n'; str += '\n'; return str; }; } function range(key, min, max) { return new HeroRange(key, min, max); } function HeroString(key, value) { this.key = key; this.value = value; this.html = function() { var str = ''; str += '\n'; str += ' '+this.key+'\n'; str += ' \n'; str += '\n'; return str; }; } function string(key, value) { return new HeroString(key, value); } function HeroListItem(key, value) { this.key = key; this.value = value; this.html = function() { var str = ''; str += '\n'; str += ' '+this.key+'\n'; str += ' \n'; str += '\n'; return str; }; } function listItem(key, value) { return new HeroListItem(key, value); } function HeroList(key, listItems) { this.key = key; this.listItems = listItems; this.html = function() { var htmls = $.map(this.listItems, function(item) { return listItem(key, item).html(); }); return mkString(htmls, "\n"); }; } function list(key, listItems) { return new HeroList(key, listItems); } function HeroNumberPair(key, value) { this.key = key; this.value = value; this.html = function() { return '\n'; }; } function numberPair(key, value) { return new HeroNumberPair(key, value); } function numberPairs(key, values) { return $.map(values, function(value) { return numberPair(key, value); }); } function HeroArrayPair(key, value) { this.key = key; this.value = value; this.html = function() { return '\n'; }; } function arrayPair(key, value) { return new HeroArrayPair(key, value); } function arrayPairs(key, values) { return $.map(values, function(value) { return arrayPair(key, value); }); } function HeroChoices(pairs, label) { this.pairs = pairs; this.html = function() { var str = ''; str += '\n'; if(label) str += ' \n'; str += ' \n'; str += '\n'; return str; }; } function choices(pairs, label) { return new HeroChoices(pairs, label); } // ## Character Generator Keywords ## \\ var _race = "race"; var _PHY = "PHY"; var _SPD = "SPD"; var _STR = "STR"; var _AGL = "AGL"; var _PRW = "PRW"; var _POI = "POI"; var _INT = "INT"; var _ARC = "ARC"; var _PER = "PER"; var _PHY_max = "PHY max" var _SPD_max = "SPD max"; var _STR_max = "STR max"; var _AGL_max = "AGL max"; var _PRW_max = "PRW max"; var _POI_max = "POI max"; var _INT_max = "INT max"; var _ARC_max = "ARC max"; var _PER_max = "PER max"; var _languages = "languages"; var _height = "height"; var _weight = "weight"; var _abilities = "abilities"; var _connections = "connections"; var _DEF_racial_modifier = "DEF racial modifier"; var _notes = "notes"; var _benefits = "benefits"; var _archetype = "archetype"; var _careers = "careers"; var _military_skills = "military skills"; var _occupational_skills = "occupational skills"; var _gold = "gold"; var _gear = "gear"; var _spells = "spells"; var _ranged_weapons = "ranged weapons"; var _melee_weapons = "melee weapons"; var _armors = "armors"; var _adventuring_company = "adventuring company"; // ## Character Generator Data ## \\ var languages = [ "Aeric", "Caspian", "Cygnaran", "Five Cant", "Gobberish", "Grun", "Idrian", "Khadoran", "Khurzic", "Kossite", "Llaelese", "Molgur", "Molgur-Og", "Molgur-Tharn", "Molgur-Trul", "Morridane", "Ordic", "Quor-gar", "Quor-og", "Rhulic", "Satyx", "Scharde", "Shyr", "Sulese", "Thrallspeak", "Thurian", "Umbrean" ]; var races = { "Blighted Ogrun": [], "Bog Trog": [], "Dwarf": [ string(_race, "Dwarf"), number(_PHY, 6), number(_SPD, 4), number(_STR, 5), number(_AGL, 3), number(_PRW, 4), number(_POI, 3), number(_INT, 4), number(_PER, 3), number(_PHY_max, 7), number(_SPD_max, 5), number(_STR_max, 6), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 4), number(_INT_max, 5), number(_ARC_max, 5), number(_PER_max, 4), listItem(_languages, "Rhulic"), choices(arrayPairs(_languages, languages), "Choose 1"), range(_height, 47, 60), range(_weight, 105, 190), listItem(_abilities, "Load Bearing"), listItem(_connections, "dwarven clan") ], "Efaarit": [], "Farrow": [], "Gatorman": [], "Gobber": [ string(_race, "Gobber"), number(_PHY, 4), number(_SPD, 6), number(_STR, 3), number(_AGL, 4), number(_PRW, 4), number(_POI, 3), number(_INT, 3), number(_PER, 3), number(_PHY_max, 6), number(_SPD_max, 7), number(_STR_max, 4), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 5), number(_INT_max, 4), number(_PER_max, 4), listItem(_languages, "Gobberish"), choices(arrayPairs(_languages, languages), "Choose 1"), range(_height, 32, 42), range(_weight, 38, 60), listItem(_benefits, "Deft"), number(_DEF_racial_modifier, 1), listItem(_notes, "Gobbers cannot use great weapons or rifles") ], "Human (FMF)": [ string(_race, "Human"), number(_PHY, 5), number(_SPD, 6), number(_STR, 4), number(_AGL, 3), number(_PRW, 4), number(_POI, 4), number(_INT, 3), number(_PER, 3), number(_PHY_max, 7), number(_SPD_max, 7), number(_STR_max, 6), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 5), number(_INT_max, 5), number(_ARC_max, 4), number(_PER_max, 5), choices(arrayPairs(_languages, languages), "Choose 2"), range(_height, 55, 75), range(_weight, 90, 200), choices([ numberPair(_PHY, 1), numberPair(_AGL, 1), numberPair(_INT, 1) ], "Choose 1") ], "Human (IKU)": [], "Iosan": [ string(_race, "Iosan"), number(_PHY, 5), number(_SPD, 6), number(_STR, 4), number(_AGL, 3), number(_PRW, 4), number(_POI, 4), number(_INT, 4), number(_PER, 3), number(_PHY_max, 7), number(_SPD_max, 7), number(_STR_max, 5), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 5), number(_INT_max, 6), number(_ARC_max, 4), number(_PER_max, 5), listItem(_languages, "Shyr"), choices(arrayPairs(_languages, languages), "Choose 1"), range(_height, 60, 75), range(_weight, 85, 180), listItem(_notes, "begins the game with an additional ability selected from on of the careers") ], "Nyss (FMF)": [ string(_race, "Nyss"), number(_PHY, 5), number(_SPD, 6), number(_STR, 4), number(_AGL, 4), number(_PRW, 4), number(_POI, 4), number(_INT, 3), number(_PER, 3), number(_PHY_max, 7), number(_SPD_max, 7), number(_STR_max, 6), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 5), number(_INT_max, 5), number(_ARC_max, 4), number(_PER_max, 5), listItem(_languages, "Aeric"), choices(arrayPairs(_languages, languages), "Choose 1"), range(_height, 62, 77), range(_weight, 95, 195), list(_notes, [ "Cannot be an Arcane Mechanik, Arcanist, Gun Mage, or Warcaster", "Nyss bows/claymores are cheaper at charater creation", "Gains +1 on Initiative and PER rolls", "Gains +3 ARM against cold damage", "Gains -3 ARM against fire damage"]) ], "Nyss (IKU)": [], "Ogrun": [ string(_race, "Ogrun"), number(_PHY, 6), number(_SPD, 5), number(_STR, 6), number(_AGL, 3), number(_PRW, 4), number(_POI, 3), number(_INT, 3), number(_PER, 2), number(_PHY_max, 7), number(_SPD_max, 6), number(_STR_max, 8), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 4), number(_INT_max, 5), number(_PER_max, 4), list(_languages, ["Molgur-Og", "Rhulic"]), choices(arrayPairs(_languages, languages), "Choose 1"), range(_height, 82, 105), range(_weight, 330, 500), listItem(_notes, "Can wield two-handed weapons in one hand but suffers -2 on attack rolls") ], "Pygmy Troll": [], "Satyxis": [], "Skorne": [], "Strider": [], "Tharn": [], "Trollkin (FMF)": [ string(_race, "Trollkin"), number(_PHY, 6), number(_SPD, 5), number(_STR, 5), number(_AGL, 3), number(_PRW, 4), number(_POI, 2), number(_INT, 3), number(_PER, 3), number(_PHY_max, 8), number(_SPD_max, 6), number(_STR_max, 7), number(_AGL_max, 5), number(_PRW_max, 5), number(_POI_max, 4), number(_INT_max, 4), number(_ARC_max, 4), number(_PER_max, 4), listItem(_languages, "Molgur-Trul"), choices(arrayPairs(_languages, languages), "Choose 1"), range(_height, 63, 84), range(_weight, 150, 330), listItem(_notes, "Trollkin cannot be Arcane Mechaniks, Arcanists, or Warcasters"), list(_benefits, ["Tough", "Feat: Revitalize"]) ], "Trollkin (IKU)": [] }; var castes = { "Extoller": [], "Outcast": [], "Paingiver": [], "Slave": [], "Warrior": [], "Worker": [] } var archetypes = { "Cunning": [], "Gifted (FMF)": [ string(_archetype, "Gifted"), choices(numberPairs(_ARC, [2, 3]), "Focusers start with ARC 2,
Will Weavers with ARC 3"), choices(arrayPairs(_benefits, [ "Additional Study", "Combat Caster", "Fast Caster", "Feat: Domninator", "Feat: Powerful Caster", "Feat: Quick Cast", "Feat: Strength of Will", "Magic Sensitivity", "Rune Reader", "Warding Circle"]), "Choose 1") ], "Gifted (IKU)": [], "Intellectual": [ string(_archetype, "Intellectual"), choices(arrayPairs(_benefits, [ "Battlefield Coordination", "Feat: Flawless Timing", "Feat: Prescient", "Feat: Perfect Plot", "Feat: Plan of Action", "Feat: Quick Thinking", "Feat: Unconventional Warfare", "Genius", "Hyper Perception", "Photographic Memory"]), "Choose 1"), listItem(_notes, "friendly models gain +1 on attack and damage rolls if within command range") ], "Mighty (FMF)": [ string(_archetype, "Mighty"), choices(arrayPairs(_benefits, [ "Beat Back", "Feat: Back Swing", "Feat: Bounding Leap", "Feat: Counter Charge", "Feat: Invulnerable", "Feat: Revitalize", "Feat: Shield Breaker", "Feat: Vendetta", "Righteous Anger", "Tough"]), "Choose 1"), listItem(_notes, "gains an additional die on melee damage rolls") ], "Mighty (IKU)": [], "Skilled (FMF)": [ string(_archetype, "Skilled"), choices(arrayPairs(_benefits, [ "Ambidextrous", "Cagey", "Deft", "Feat: Defensive Strike", "Feat: Disarm", "Feat: Swashbuckler", "Feat: Untouchable", "Preternatural Awareness", "Sidestep", "Virtuoso"]), "Choose 1"), listItem(_notes, "gains an additional attack") ], "Skilled (IKU)": [] }; var careers = { "Alchemist": [ listItem(_careers, "Alchemist"), list(_abilities, ["Grenadier", "Poison Resistance"]), list(_military_skills, ["Hand Weapon", "Thrown Weapon"]), list(_occupational_skills, ["Alchemy", "Medicine"]), number(_gold, 50), list(_gear, ["alchemist's leather", "gas mask", "travelling alchemist's kit", "grenadier's bandolier", "any alchemical grenate", "any alchemical grenate", "any alchemical grenate", "any alchemical grenate", "any alchemical grenate"]) ], "Allegiant": [], "Arcane Mechanik": [ listItem(_careers, "Arcane Mechanik"), listItem(_abilities, "Inscribe Formulae"), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Rifle"]), "Choose 1"), list(_occupational_skills, [ "Craft (gunsmithing)", "Craft (metalworking)", "Mechanikal Engineering"]), list(_spells, ["Arcantrik Bolt", "Polarity Shield"]), number(_gold, 50), listItem(_gear, "rune etching kit"), choices(arrayPairs(_gear, [ "mechanika weapon", "mechanika suit of armor"]), "Choose 1") ], "Arcane Tempest Gun Mage": [], "Arcanist": [ listItem(_careers, "Arcanist"), listItem(_abilities, "Great Power"), list(_occupational_skills, ["Lore (Arcane)", "Research"]), list(_spells, ["Arcane Bolt", "Aura of Protection", "Light in the Darkness"]), listItem(_benefits, "Rune Reader"), number(_gold, 75) ], "Archer": [], "Aristocrat": [ listItem(_careers, "Aristocrat"), list(_abilities, ["Good Breeding", "Privilege"]), choices(arrayPairs(_languages, languages), "Choose 1"), listItem(_connections, "nobility"), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Archery", "Pistol", "Rifle"]), "Choose 1"), list(_occupational_skills, ["Command", "Etiquette"]), listItem(_notes, "50gc each month from familiy holdings"), number(_gold, 200) ], "Artillerist": [], "Ascetic": [], "Assault Kommando": [], "Beast Handler": [], "Blackclad": [], "Bloodrunner": [], "Bloodtracker": [], "Bloodweaver": [], "Bokor": [], "Bone Grinder": [], "Bounty Hunter": [ listItem(_careers, "Bounty Hunter"), list(_abilities, ["Binding", "Take Down"]), choices(arrayPairs(_military_skills, [ "Crossbow", "Hand Weapon", "Pistol", "Rifle", "Unarmed Combat"]), "Choose 2"), list(_occupational_skills, [ "Detection", "Intimidation", "Rope Use", "Tracking"]), number(_gold, 75) ], "Brigand": [], "Bushwhacker": [], "Cataphract": [], "Chieftain": [], "Chirurgeon": [], "Chymist": [], "Crucible Guard": [], "Cutthroat": [ listItem(_careers, "Cutthroat"), list(_abilities, ["Anatomical Precision", "Backstab", "Prowl"]), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Crossbow", "Thrown Weapon", "Unarmed Combat"]), "Choose 1"), list(_occupational_skills, ["Intimidation", "Sneak", "Streetwise"]), number(_gold, 75) ], "Cygnaran Warcaster": [], "Deathstalker": [], "Doom Reaver": [], "Duelist": [ listItem(_careers, "Duelist"), list(_abilities, ["Parry", "Riposte"]), list(_military_skills, ["Hand Weapon", "Pistol"]), list(_occupational_skills, ["Gambling", "Intimidation", "Jumping"]), number(_gold, 75) ], "Exemplar": [], "Exemplar Errant": [], "Exemplar Vengar": [], "Explorer": [ listItem(_careers, "Explorer"), list(_abilities, ["Big Game Hunter", "Port of Call"]), choices(arrayPairs(_languages, languages), "Choose 1"), listItem(_connections, "patron"), choices(arrayPairs(_military_skills, [ "Archery", "Hand Weapon", "Pistol", "Rifle"]), "Choose 1"), list(_occupational_skills, [ "Detection", "Medicine", "Navigation", "Survival"]), listItem(_notes, "20gc each month from a patron"), number(_gold, 150), list(_gear, ["map case", "spyglass"]) ], "Extoller": [], "Fell Caller": [ listItem(_careers, "Fell Caller"), list(_abilities, ["Fell Call: Signal Call", "Fell Call: Sonic Blast"]), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Great Weapon"]), "Choose 1"), list(_occupational_skills, [ "Command", "Fell Calling", "Fell Calling", "Lore (Trollkin)", "Oratory"]), number(_gold, 75) ], "Fennblade": [], "Ferox Rider": [], "Field Mechanik": [ listItem(_careers, "Field Mechanik"), list(_abilities, ["'Jack Marshal", "Bodge", "Hit the Deck!"]), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Pistol"]), "Choose 1"), list(_occupational_skills, [ "Command", "Craft (metalworking)", "Mechanikal Engineering"]), number(_gold, 25), list(_gear, [ "mechanik's tool kit", "light laborjack with up to 200gc of weapons"]) ], "Flame Bringers": [], "Greylord": [], "Greylord Outrider": [], "Gun Mage": [ listItem(_careers, "Gun Mage"), list(_abilities, ["Craft Rune Shot", "Fast Reload"]), choices(arrayPairs(_military_skills, ["Pistol", "Rifle"]), "Choose 1"), list(_occupational_skills, ["Detection", "Intimidation"]), list(_spells, [ "Rune Shot: Accuracy", "Rune Shot: Brutal", "Rune Shot: Thunderbolt"]), number(_gold, 25), list(_gear, [ "ammo bandolier", "rune shot casting kit", "powder and ten rounds of ammunition"]), choices(arrayPairs(_ranged_weapons, [ "Pistol, Magelock", "Rifle, Magelock"]), "Choose 1") ], "Gun Mage of the Amethyst Rose": [], "Guttersnipe": [], "Highwayman": [ listItem(_careers, "Highwayman"), list(_abilities, ["Ambush", "Saddle Shot"]), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow", "Pistol"]), "Choose 1"), list(_occupational_skills, [ "Animal Handling", "Detection", "Intimidation", "Riding"]), number(_gold, 75), list(_gear, ["mask", "riding horse", "tack"]) // TODO: horse widget ], "Horseman": [], "Illuminated Arcanist": [], "Investigator": [ listItem(_careers, "Investigator"), listItem(_abilities, "Astute"), choices(arrayPairs(_languages, languages), "Choose 1"), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Pistol"]), "Choose 1"), list(_occupational_skills, [ "Detection", "Forensic Science", "Interrogation", "Law", "Medicine", "Sneak"]), listItem(_benefits, "Hyper Perception"), number(_gold, 100) ], "Iron Fang": [ listItem(_careers, "Iron Fang"), listItem(_notes, "Must choose between Aristocrat, Military Officer, Soldier, or Warcaster as second career"), list(_abilities, [ "Fast Rearm (Blasting Pike)", "Specialization (Blasting Pike)"]), listItem(_connections, "Khadoran military"), list(_military_skills, ["Great Weapon", "Shield"]), list(_occupational_skills, ["Command", "Survival"]), number(_gold, 25), list(_gear, [ "spear head", "ten blasting heads", "Iron Fang full plate", "shield"]), listItem(_melee_weapons, "Blasting Pike") ], "Iron Fang Uhlan": [], "Ironhead": [], "Khadoran Warcaster": [], "Knight": [ listItem(_careers, "Knight"), list(_abilities, ["Cleave", "Defender"]), listItem(_connections, "knightly order"), list(_military_skills, ["Great Weapon", "Hand Weapon", "Shield"]), list(_occupational_skills, [ "Command", "Etiquette", "Lore (knightly order)"]), number(_gold, 100) ], "Kriel Champion": [], "Labor Korune": [], "Llaelese Warcaster": [], "Long Rider": [], "Mage Hunter": [ listItem(_careers, "Mage Hunter"), list(_abilities, ["Arcane Assassin", "Iron Will"]), listItem(_connections, "Retribution of Scyrah"), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow"]), "Choose 1"), list(_occupational_skills, [ "Climbing", "Jumping", "Sneak", "Tracking"]), number(_gold, 75) ], "Man-at-Arms": [ listItem(_careers, "Man-at-Arms"), list(_abilities, ["Defensive Line", "Shield Guard"]), list(_military_skills, ["Great Weapon", "Shield"]), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Pistol"]), "Choose 1"), list(_occupational_skills, ["Command", "Detection"]), number(_gold, 100) ], "Man-O-War": [], "Man-O-War Drakhun": [], "Marine": [], "Maritime Order of the Trident Arcanist": [], "Military Officer": [ listItem(_careers, "Military Officer"), list(_abilities, [ "Battle Plan: Call to Action", "Natural Leader", "Team Leader"]), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Great Weapon", "Pistol"]), "Choose 1"), list(_occupational_skills, ["Command", "Medicine", "Navigation"]), number(_gold, 100), listItem(_gear, "officer's uniform") ], "Mist Speaker": [], "Monster Hunter": [], "Mortitheurge": [], "Nihilator": [], "Nomad": [], "Ordic Warcaster": [], "Paladin": [], "Pirate": [ listItem(_careers, "Pirate"), list(_abilities, ["Gang", "Steady", "Specialization (Cutlass)"]), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Pistol", "Thrown Weapon"]), "Choose 1"), list(_occupational_skills, [ "Climbing", "Intimidation", "Sailing", "Swimming"]), number(_gold, 75) ], "Pistoleer": [ listItem(_careers, "Pistoleer"), list(_abilities, ["Fast Draw", "Gunfighter", "Return Fire"]), listItem(_military_skills, "Pistol"), list(_occupational_skills, ["Detection", "Intimidation", "Sneak"]), number(_gold, 50), listItem(_gear, "ammo bandolier"), choices(arrayPairs(_ranged_weapons, [ "Hand Cannon", "Pistol, Repeating", "Pistol, Repeating"]), "Choose either the hand cannon
or both repeating pistols"), choices(arrayPairs(_gear, [ "ammunition for ten shots", "2 ammo wheels with ammunition for ten shots"]), "Choose 1") ], "Praetorian": [], "Priest of Cyriss": [], "Priest of Menoth": [ listItem(_careers, "Priest of Menoth"), listItem(_abilities, "Dispel"), listItem(_connections, "Menite temple"), choices(arrayPairs(_military_skills, [ "Great Weapon", "Hand Weapon"]), "Choose 1"), list(_occupational_skills, ["Lore (Menite faith)", "Oratory"]), list(_spells, ["Guided Blade", "Ignite", "Immolation"]), number(_gold, 75) ], "Priest of Morrow": [ listItem(_careers, "Priest of Morrow"), listItem(_abilities, "Empower"), listItem(_connections, "Morrowan temple"), choices(arrayPairs(_military_skills, [ "Great Weapon", "Hand Weapon"]), "Choose 1"), list(_occupational_skills, ["Lore (Morrowan faith)", "Medicine"]), list(_spells, ["Blade of Radiance", "Solovin's Boon", "True Sight"]), number(_gold, 75) ], "Priest of Nyssor": [], "Protectorate Warcaster": [], "Pugilist": [], "Raider": [], "Ranger": [ listItem(_careers, "Ranger"), list(_abilities, ["Camouflage", "Pathfinder"]), listItem(_military_skills, "Hand Weapon"), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow", "Pistol", "Rifle"]), "Choose 1"), list(_occupational_skills, [ "Detection", "Sneak", "Survival", "Tracking"]), number(_gold, 75) ], "Raptor": [], "Ravager": [], "Reclaimer": [], "Rhulic 'Jack Marshal": [], "Rhulic Field Mechanik": [], "Rhulic Warcaster": [], "Rifleman": [ listItem(_careers, "Rifleman"), list(_abilities, ["Crackshot", "Dual Shot", "Marksman"]), listItem(_military_skills, "Rifle"), list(_occupational_skills, ["Climbing", "Detection", "Survival"]), number(_gold, 50), list(_gear, ["ammo bandolier", "powder and ammunition for ten shots"]), choices(arrayPairs(_ranged_weapons, [ "Rifle, Heavy", "Rifle, Repeating"])) ], "Ryssovass": [], "Scout": [], "Scrutator": [], "Searforge Trader": [], "Seeker": [], "Shaman (Devourer Wurm)": [], "Shaman (Dhunia)": [], "Slaughterhouser": [], "Soldier": [ listItem(_careers, "Soldier"), list(_abilities, ["Find Cover", "Sentry"]), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Pistol", "Crossbow", "Great Weapon", "Rifle", "Thrown Weapon"]), "Choose 2"), list(_occupational_skills, [ "Detection", "Driving", "Medicine", "Survival"]), number(_gold, 100) ], "Sorcerer (Fire) (FMF)": [ listItem(_careers, "Sorcerer (Fire)"), listItem(_abilities, "Immunity: Fire"), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow", "Hand Weapon"]), "Choose 1"), list(_occupational_skills, ["Detection", "Survival"]), list(_spells, ["Fire Starter", "Howling Flames", "Wall of Fire"]), number(_gold, 75) ], "Sorcerer (Fire) (IKU)": [], "Sorcerer (Ice) (FMF)": [ listItem(_careers, "Sorcerer (Ice)"), listItem(_abilities, "Immunity: Cold"), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow", "Hand Weapon"]), "Choose 1"), list(_occupational_skills, ["Detection", "Survival"]), list(_spells, ["Blizzard", "Chiller", "Ice Bolt"]), number(_gold, 75) ], "Sorcerer (Ice) (IKU)": [], "Sorcerer (Stone) (FMF)": [ listItem(_careers, "Sorcerer (Stone)"), number(_PHY, 1), number(_PHY_max, 1), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow", "Hand Weapon"]), "Choose 1"), list(_occupational_skills, ["Detection", "Survival"]), list(_spells, ["Battering Ram", "Solid Ground", "Stone Stance"]), number(_gold, 75) ], "Sorcerer (Stone) (IKU)": [], "Sorcerer (Storm) (FMF)": [ listItem(_careers, "Sorcerer (Storm)"), number(_SPD, 1), choices(arrayPairs(_military_skills, [ "Archery", "Crossbow", "Hand Weapon"]), "Choose 1"), list(_occupational_skills, ["Detection", "Survival"]), list(_spells, ["Razor Wind", "Storm Tossed", "Wind Blast"]), number(_gold, 75) ], "Sorcerer (Storm) (IKU)": [], "Spy": [ listItem(_careers, "Spy"), list(_abilities, ["Battle Plan: Shadow", "Cover Identity"]), choices(arrayPairs(_languages, languages), "Choose 1"), listItem(_connections, "intelligence network"), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Pistol", "Thrown Weapon"]), "Choose 1"), list(_occupational_skills, [ "Command", "Deception", "Detection", "Disguise", "Sneak"]), number(_gold, 100), listItem(_gear, "forged identity papers") ], "Storm Lance": [], "Stormblade": [ listItem(_careers, "Stormblade"), listItem(_notes, "Must choose between Aristocrat, Knight, Man-at-Arms, Military Officer, Soldier, or Warcaster for second career"), list(_abilities, ["Blaster", "Specialization (Storm Glaive)"]), listItem(_connections, "Cygnaran military"), listItem(_military_skills, "Great Weapon"), list(_occupational_skills, ["Command", "Detection", "Etiquette"]), listItem(_melee_weapons, "Storm Glaive"), // TODO: mechanikal weapon listItem(_armors, "Storm Knight Armor") ], "Stormguard": [], "Stormsmith": [], "Tempest Blazer": [], "Thamarite Advocate": [], "Thief": [ listItem(_careers, "Thief"), list(_abilities, ["Conniver", "Dodge"]), choices(arrayPairs(_military_skills, [ "Hand Weapon", "Thrown Weapon"]), "Choose 1"), list(_occupational_skills, [ "Bribery", "Deception", "Escape Artist", "Lock Picking", "Lock Picking", "Pickpocket", "Pickpocket", "Sneak", "Streetwise"]), number(_gold, 75), listItem(_gear, "thief's tools") ], "Tormentor": [], "Trencher": [ listItem(_careers, "Trencher"), listItem(_notes, "Must choose between Military Officer, Ranger, Rifleman, Soldier, or Warcaster for second career"), list(_abilities, ["Bayonet Charge", "Dig In"]), listItem(_connections, "Cygnaran military"), list(_military_skills, ["Great Weapon", "Rifle", "Thrown Weapon"]), list(_occupational_skills, ["Command", "Detection"]), number(_gold, 25), list(_gear, [ "ammo bandolier", "bayonet", "entrenching spade", "smoke grenate", "smoke grenate", "smoke grenate"]), listItem(_ranged_weapons, "Rifle, Military"), listItem(_armors, "Infantry Armor") ], "Trencher Commando": [], "Tyrant": [], "Urban Nomad": [], "Vassal of Menoth": [], "Venator": [], "Warcaster": [ listItem(_careers, "Warcaster"), listItem(_abilities, "Bond"), list(_military_skills, ["Hand Weapon", "Pistol"]), list(_occupational_skills, ["Command", "Detection"]), list(_spells, ["Boundless Charge", "Convection"]), choices([arrayPair(_armors, "Warcaster Armor, light"), arrayPair(_armors, "Warcaster Armor, medium"), arrayPair(_melee_weapons, "Mechanika Hand Weapon"), // TODO: mechanikal weapon arrayPair(_ranged_weapons, "Mechanika Hand Cannon (with 10 rounds of ammunition)")], "Choose 1") ], "Warcaster, Cyriss": [], "Warlock, Circle": [], "Warlock, Farrow": [], "Warlock, Legion": [], "Warlock, Swamp": [], "Warlock, Trollkin": [], "Warlock: Skorne": [], "Warmonger": [], "Warrior": [], "Wolf of Orboros": [], "Wolf Rider": [], "Wyrmwall Bruiser": [], "Wyrmwall Rider": [], "Wyrmwall Veteran": [] }; var adventuringCompanies = { "Agents of the Crucible": [], "Arcane Order": [ listItem(_notes, "Arcane Order"), listItem(_notes, "At least one of the characters must be Gifted"), listItem(_occupational_skills, "Lore (Arcane)"), choices(arrayPairs(_abilities, ["Arcane Scholar", "Shield Guard"]), "Choose 1") ], "Army of the Western Reaches": [], "Beast Hunters": [], "Bonded Porters": [], "Bone Grinder Hunting Party": [], "Caspian Cortex Smugglers": [], "Circle Orboros Conclave": [], "Crusaders": [], "Farrow Tribe": [], "Five Fingers Transporters": [], "Fringe Cultists": [], "Gatorman Tribe": [], "Greylords": [], "Heroes of the Resistance": [], "House Taberna": [], "Idrian Tribe": [], "Illuminated Ones": [], "Intrepid Investigators": [ listItem(_notes, "Intrepid Investigators"), list(_notes, [ "All characters must either be an Alchemist, Arcane Mechanik, Arcanist, Aristocrat, Explorer, Investigator, Military Officer, Priest, or Spy", "All characters can benefit from the Intellectual archetype benefit twice" ]), ], "Khadoran Military Detail": [], "Korsk Stanzynat Mustyn": [], "Law Dogs": [ listItem(_notes, "Law Dogs"), listItem(_notes, [ "All characters must either be a Bounty Hunter, Highwayman, Investigator, Military Officer, Ranger, or Soldier", "While pursuing a bounty, character gain boni on skill and attack rolls" ]) ], "Mercenary Charter": [ listItem(_notes, "Mercenary Charter"), listItem(_notes, "One character is the captain"), choices([ arrayPair(_abilities, "Natural Leader") ], "The leader gets the Natural Leader ability"), choices(arrayPairs(_occupational_skills, [ "Animal Handling", "Command", "Driving", "Gambling", "Interrogation", "Medicine", "Negotiation", "Riding"]), "Choose 1") ], "Mystics": [], "Nobile Exiles": [], "Nomads": [], "Northkin Kriel": [], "Nyss Refugees": [], "Ordic Naval Expedition": [], "Outlaws": [ listItem(_notes, "Outlaws"), list(_notes, [ "All characters must either be an Alchemist, Cutthroat, Duelist, Highwayman, Pistoleer, Rifleman, Sorcerer, Spy, or Thief", "One character is the boss" ]), list(_languages, ["Gang", "Five Cant"]) ], "Pirates of the Broken Cost": [ listItem(_notes, "Pirates of the Broken Cost"), listItem(_notes, "All characters must either be a Cutthroat, Explorer, Military Officer, Pirate, or Thief"), listItem(_notes, "One character is the captain"), choices([ arrayPair(_abilities, "Natural Leader") ], "The captain gets the Natural Leader ability"), listItem(_abilities, "Hit the Deck!") ], "Raiders": [], "Renegades": [], "Soldiers of Fortune": [], "Spy Ring": [ listItem(_notes, "Spy Ring"), list(_notes, [ "All characters must either be an Aristocrat, Investigator, Ranger, Spy, or Thief", "One character is the captain" ]), choices($.merge(arrayPairs(_languages, languages), arrayPairs(_occupational_skills, [ "Bribery", "Climbing", "Cryptography", "Deception", "Detection", "Disguise", "Escape Artist", "Etiquette", "Forensic Science", "Forgery", "Gambling", "Interrogation", "Intimidation", "Jumping", "Lock Picking", "Negotiation", "Pickpocket", "Research", "Riding", "Rope Use", "Seduction", "Sneak", "Streetwise"])), "Choose 1") ], "Thamarite Sept": [], "Tharn Tuath": [], "The Inner Circle": [], "United Kriels": [], "Unlikely Heroes": [], "Unorthodox Engagement Team": [], "Wilderness Expedition": [], "Wilderness Kriel": [] } // ## Character Generator Variables ## \\ var generator = ikrpg.generator; generator.races = races; generator.castes = castes; generator.archetypes = archetypes; generator.careers = careers; generator.adventuringCompanies = adventuringCompanies; })(); // # Add Option Tags to Character Generator Select Tags # \\ (function() { function addOption(selector) { return function(key, value) { if(value.length > 0) { var html = $(selector).html(); $(selector).html(html+'\n'); } } } $.each(ikrpg.generator.races, addOption("#race-select")); $.each(ikrpg.generator.castes, addOption("#caste-select")); $.each(ikrpg.generator.archetypes, addOption("#archetype-select")); $.each(ikrpg.generator.careers, addOption("#career1-select")); $.each(ikrpg.generator.careers, addOption("#career2-select")); $.each(ikrpg.generator.adventuringCompanies, addOption("#adventuring-company-select")); })(); function mkString(array, between, before, after) { var str = ""; if(before) str += before; if(array.length > 0) { str += array.slice(0, 1); $.each(array.slice(1, array.length), function(index, entry) { if(between) str += between; str += entry; }); } if(after) str += after; return str; } // # Read in Choices from input and select tags and fill out character sheet # \\ (function() { function hero() { return { "race": "", "PHY": 0, "SPD": 0, "STR": 0, "AGL": 0, "PRW": 0, "POI": 0, "INT": 0, "PER": 0, "DEF racial modifier": 0, "languages": [], "height": 0, "weight": 0, "archetype": "", "benefits": [], "careers": [], "abilities": [], "connections": [], "military skills": [], "occupational skills": [], "spells": [], "gear": [], "gold": 0, "notes": [], "ranged weapons": [], "melee weapons": [], "armors": [] }; } // ## Fill out values on Select box change ## \\ (function() { function lookupAndFillOut(selectSelector, dataSelector, data) { return function(event) { $(dataSelector).html(""); var option = $(selectSelector).val(); if(data[option]) { var stuff = data[option]; $(dataSelector).html(""); $.each(stuff, function(index, entry) { var html = $(dataSelector).html(); $(dataSelector).html(html+"\n"+entry.html()); }); } else { // TODO: option does not exist! } }; } $("#race-select").change(lookupAndFillOut("#race-select", "#race-data", ikrpg.generator.races)); $("#caste-select").change(lookupAndFillOut("#caste-select", "#caste-data", ikrpg.generator.castes)); $("#archetype-select").change(lookupAndFillOut("#archetype-select", "#archetype-data", ikrpg.generator.archetypes)); $("#career1-select").change(lookupAndFillOut("#career1-select", "#career1-data", ikrpg.generator.careers)); $("#career2-select").change(lookupAndFillOut("#career2-select", "#career2-data", ikrpg.generator.careers)); $("#adventuring-company-select").change(lookupAndFillOut("#adventuring-company-select", "#adventuring-company-data", ikrpg.generator.adventuringCompanies)); })(); function histogram(array) { var o = {}; $.each(array, function(index, item) { o[item] = o[item] || 0; o[item] += 1; }); return o; } // ## Read user choices from html and fill out character sheet ## \\ (function() { function fillCharacterSheet() { ikrpg.cards.cleanData(); ikrpg.cards.data["hero-name"] = "Hero's name"; var data = hero(); // ### Read in data from html user input ### \\ (function() { $(".character-generator-data input, .character-generator-data option:selected").each(function(index, entry) { var elem = $(entry); var clazz = elem.attr("class"); var value = elem.val(); var type = elem.attr("data-type"); switch(type) { case "number": if(!data[clazz]) data[clazz] = parseInt(value); else data[clazz] += parseInt(value); break; case "array": if(!data[clazz]) data[clazz] = [value]; else data[clazz].push(value); break; default: data[clazz] = value; } }); })(); var character = { "weight": data["weight"], "archetype": data["archetype"], "race": data["race"], "level": "Hero", "careers": mkString(data["careers"], ", "), "height": data["height"], "phy": data["PHY"], "phymax": data["PHY max"], "spd": data["SPD"], "spdmax": data["SPD max"], "str": data["STR"], "strmax": data["STR max"], "agl": data["AGL"], "aglmax": data["AGL max"], "poi": data["POI"], "poimax": data["POI max"], "prw": data["PRW"], "prwmax": data["PRW max"], "int": data["INT"], "intmax": data["INT max"], "arc": data["ARC"], "arcmax": data["ARC max"], "per": data["PER"], "permax": data["PER max"], "wil": parseInt(data["PHY"]) + parseInt(data["INT"]), "defracialmodifier": data["DEF racial modifier"], "note1": {"text": "Adventuring company: "+data["adventuring company"]}, "gold": data["gold"], "xp": 0, "feats": 3 }; // ### Fill character based on read in data ### \\ (function() { // #### Abilities #### \\ (function() { var abilities = $.merge(data["benefits"], data["abilities"]) || []; $.each(abilities.sort(), function(index, ability) { character["ability"+(index+1)] = character["ability"+(index+1)] || {}; character["ability"+(index+1)]["title"] = ability; var db = ikrpg.index.data; var entry = $.grep(db, function(e) { return e["name"] == ability; }); if(entry && entry.length > 0) { var page = entry[0]["page"]; character["ability"+(index+1)]["page"] = page; } }); })(); // #### Skills #### \\ (function() { var db = ikrpg.generator.db.skill; var skills = histogram($.merge(data["military skills"], data["occupational skills"])); var skillsKeys = Object.keys(skills) || []; var index = 0; $.each(skillsKeys.sort(), function(i, skill) { var value = skills[skill]; character["s"+(index+1)] = character["s"+(index+1)] || {}; character["s"+(index+1)]["title"] = skill; character["s"+(index+1)]["lvl"] = value; var skillBaseName = skill.replace(/(\(.*\))+/g, "").replace(/\s+$/, ""); var stats = db[skillBaseName]; if(stats && stats.length > 0) { var stat = stats[0]; var lowerStat = stat.toLowerCase(); character["s"+(index+1)]["stat"] = lowerStat; if(stat == "SOC") { character["s"+(index+1)]["base"] = "*"; character["s"+(index+1)]["sum"] = "*"; } else { var statValue = parseInt(data[stat]); character["s"+(index+1)]["base"] = statValue; character["s"+(index+1)]["sum"] = statValue + value; } } if(stats.length > 1) { var stat = stats[1]; var lowerStat = stat.toLowerCase(); index += 1; character["s"+(index+1)] = character["s"+(index+1)] || {}; character["s"+(index+1)]["title"] = skill; character["s"+(index+1)]["stat"] = lowerStat; character["s"+(index+1)]["lvl"] = value; if(stat == "SOC") { character["s"+(index+1)]["base"] = "*"; character["s"+(index+1)]["sum"] = "*"; } else { var statValue = parseInt(data[stat]); character["s"+(index+1)]["base"] = statValue; character["s"+(index+1)]["sum"] = statValue + value; } } index += 1; }); })(); // #### Spells #### \\ (function() { var db = ikrpg.generator.db.spell; var spells = data["spells"] || []; $.each(spells.sort(), function(index, spell) { character["spell"+(index+1)] = character["spell"+(index+1)] || {}; character["spell"+(index+1)]["title"] = spell; var spellData = db[spell]; if(spellData) { character["spell"+(index+1)]["cost"] = spellData["cost"]; character["spell"+(index+1)]["rng"] = spellData["rng"]; character["spell"+(index+1)]["aoe"] = spellData["aoe"]; character["spell"+(index+1)]["pow"] = spellData["pow"]; character["spell"+(index+1)]["up"] = spellData["up"]; character["spell"+(index+1)]["off"] = spellData["off"]; character["spell"+(index+1)]["description"] = spellData["description"]; } }); })(); // #### Gear #### \\ (function() { var gears = data["gear"] || []; $.each(gears.sort(), function(index, gear) { character["gear"+(index+1)] = character["gear"+(index+1)] || {}; character["gear"+(index+1)]["title"] = gear; }); })(); // #### Ranged Weapons #### \\ (function() { var rangedWeapons = data["ranged weapons"] || []; $.each(rangedWeapons.sort(), function(index, weapon) { character["rat"+(index+1)] = character["rat"+(index+1)] || {}; character["rat"+(index+1)]["name"] = weapon; }); })(); // #### Melee Weapons #### \\ (function() { var meleeWeapons = data["melee weapons"] || []; $.each(meleeWeapons.sort(), function(index, weapon) { character["mat"+(index+1)] = character["mat"+(index+1)] || {}; character["mat"+(index+1)]["name"] = weapon; }); })(); // #### Armor #### \\ (function() { var armors = data["armor"] || []; $.each(armors.sort(), function(index, armor) { character["wornarmor"+(index+1)] = character["wornarmor"+(index+1)] || {}; character["wornarmor"+(index+1)]["name"] = armor; }); })(); // #### Notes #### \\ (function() { var notes = data["notes"] || []; $.each(notes.sort(), function(index, note) { character["note"+(index+2)] = character["note"+(index+2)] || {}; character["note"+(index+2)]["text"] = note; }); })(); // #### Languages #### \\ (function() { var languages = data["languages"] || []; $.each(languages.sort(), function(index, language) { if(index < 3) character["spokenlanguage"+(index+1)] = language; else character["spokenlanguage"+((index % 3)+1)] += ", "+language; }); })(); // #### Connections #### \\ (function() { var connections = data["connections"] || []; $.each(connections.sort(), function(index, connection) { character["connection"+(index+1)] = character["connection"+(index+1)] || {}; character["connection"+(index+1)]["name"] = connection; }); })(); })(); // ### Fill character sheet with the data stored in character ### \\ ikrpg.sheet.fill(null, character); window.location.hash = ""; window.location.hash = "character-sheet-page1"; } ikrpg.generator.fillCharacterSheet = fillCharacterSheet; })(); })(); // # Bind character generation to submit button # \\ (function() { $("#generator-submit").click(ikrpg.generator.fillCharacterSheet); })(); })();