mirror of
https://github.com/ikrpg/ikrpg.github.io.git
synced 2026-05-13 14:27:22 +00:00
750 lines
No EOL
24 KiB
HTML
750 lines
No EOL
24 KiB
HTML
---
|
|
layout: ikrpg
|
|
tags: [Character Generator]
|
|
---
|
|
|
|
<style>
|
|
div.data label { display: block; }
|
|
</style>
|
|
|
|
<h2>Race</h2>
|
|
<p>
|
|
<select id="race">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<p id="race-data" class="character-generator-data"></p>
|
|
|
|
<h2>Caste</h2>
|
|
<p>
|
|
<select id="caste">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<p id="caste-data" class="character-generator-data"></p>
|
|
|
|
<h2>Archetype</h2>
|
|
<p>
|
|
<select id="archetype">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<p id="archetype-data" class="character-generator-data"></p>
|
|
|
|
<h2>Career 1</h2>
|
|
<p>
|
|
<select id="career1">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<p id="career1-data" class="character-generator-data"></p>
|
|
|
|
<h2>Career 2</h2>
|
|
<p>
|
|
<select id="career2">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<p id="career2-data" class="character-generator-data"></p>
|
|
|
|
<h2>Adventuring Company</h2>
|
|
<p>
|
|
<select id="adventuring-company">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<p id="adventuring-company-data" class="character-generator-data"></p>
|
|
|
|
<div><a href="javascript:test()">test</a></div>
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
function HeroNumber(key, value) {
|
|
this.key = key;
|
|
this.value = value;
|
|
this.html = function() {
|
|
var str = '';
|
|
str += '<div class="data">';
|
|
str += ' '+this.key+': ';
|
|
str += ' <input class="'+this.key+'" type="number" data-type="number" min="'+this.value+'" max="'+this.value+'" value="'+this.value+'" disabled />';
|
|
str += '</div>';
|
|
|
|
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 += '<div class="data">';
|
|
str += ' '+this.key+': ';
|
|
str += ' <input class="'+this.key+'" type="number" data-type="number" min="'+this.min+'" max="'+this.max+'" value="'+this.min+'" />';
|
|
str += '</div>';
|
|
|
|
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 += '<div class="data">';
|
|
str += ' '+this.key+': ';
|
|
str += ' <input class="'+this.key+'" type="text" data-type="text" value="'+this.value+'" disabled />';
|
|
str += '</div>';
|
|
|
|
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 += '<div class="data">';
|
|
str += ' '+this.key+': ';
|
|
str += ' <input class="'+this.key+'" type="text" data-type="array" value="'+this.value+'" disabled />';
|
|
str += '</div>';
|
|
|
|
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 '<option class="'+this.key+'" data-type="number" value="'+this.value+'">'+this.key+': '+this.value+'</option>';
|
|
};
|
|
}
|
|
|
|
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 '<option class="'+this.key+'" data-type="array" value="'+this.value+'">'+this.key+': '+this.value+'</option>';
|
|
};
|
|
}
|
|
|
|
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 += '<div class="data">\n';
|
|
if(label) str += ' <label>'+label+':</label>\n';
|
|
str += ' <select multiple>\n';
|
|
str += mkString($.map(pairs, function(pair) { return pair.html(); }), "\n ", "", "\n");
|
|
str += ' </select>\n';
|
|
str += '</div>\n';
|
|
|
|
return str;
|
|
};
|
|
}
|
|
|
|
function choices(pairs, label) {
|
|
return new HeroChoices(pairs, label);
|
|
}
|
|
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
// TODO: All languages
|
|
var languages = ["Cygnaran", "Khadoran", "Ordic"];
|
|
|
|
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),
|
|
listItem("languages", "Rhulic"),
|
|
choices(arrayPairs("languages", languages), "Choose 1"),
|
|
range("height", 47, 60),
|
|
range("weight", 105, 190),
|
|
listItem("abilities", "Load Bearing"),
|
|
listItem("connections", "Connection (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),
|
|
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),
|
|
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),
|
|
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),
|
|
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),
|
|
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),
|
|
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"]),
|
|
list("gear", ["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": [],
|
|
"Archer": [],
|
|
"Aristocrat": [],
|
|
"Artillerist": [],
|
|
"Ascetic": [],
|
|
"Assault Kommando": [],
|
|
"Beast Handler": [],
|
|
"Blackclad": [],
|
|
"Bloodrunner": [],
|
|
"Bloodtracker": [],
|
|
"Bloodweaver": [],
|
|
"Bokor": [],
|
|
"Bone Grinder": [],
|
|
"Bounty Hunter": [],
|
|
"Brigand": [],
|
|
"Bushwhacker": [],
|
|
"Cataphract": [],
|
|
"Chieftain": [],
|
|
"Chirurgeon": [],
|
|
"Chymist": [],
|
|
"Crucible Guard": [],
|
|
"Cutthroat": [],
|
|
"Cygnaran Warcaster": [],
|
|
"Deathstalker": [],
|
|
"Doom Reaver": [],
|
|
"Duelist": [],
|
|
"Exemplar": [],
|
|
"Exemplar Errant": [],
|
|
"Exemplar Vengar": [],
|
|
"Explorer": [],
|
|
"Extoller": [],
|
|
"Fell Caller": [],
|
|
"Fennblade": [],
|
|
"Ferox Rider": [],
|
|
"Field Mechanik": [],
|
|
"Flame Bringers": [],
|
|
"Greylord": [],
|
|
"Greylord Outrider": [],
|
|
"Gun Mage": [],
|
|
"Gun Mage of the Amethyst Rose": [],
|
|
"Guttersnipe": [],
|
|
"Highwayman": [],
|
|
"Horseman": [],
|
|
"Illuminated Arcanist": [],
|
|
"Investigator": [],
|
|
"Iron Fang": [],
|
|
"Iron Fang Uhlan": [],
|
|
"Ironhead": [],
|
|
"Khadoran Warcaster": [],
|
|
"Knight": [],
|
|
"Kriel Champion": [],
|
|
"Labor Korune": [],
|
|
"Llaelese Warcaster": [],
|
|
"Long Rider": [],
|
|
"Mage Hunter": [],
|
|
"Man-at-Arms": [],
|
|
"Man-O-War": [],
|
|
"Man-O-War Drakhun": [],
|
|
"Marine": [],
|
|
"Maritime Order of the Trident Arcanist": [],
|
|
"Military Officer": [],
|
|
"Mist Speaker": [],
|
|
"Monster Hunter": [],
|
|
"Mortitheurge": [],
|
|
"Nihilator": [],
|
|
"Nomad": [],
|
|
"Ordic Warcaster": [],
|
|
"Paladin": [],
|
|
"Pirate": [],
|
|
"Pistoleer": [],
|
|
"Praetorian": [],
|
|
"Priest of Cyriss": [],
|
|
"Priest of Menoth": [],
|
|
"Priest of Morrow": [],
|
|
"Priest of Nyssor": [],
|
|
"Protectorate Warcaster": [],
|
|
"Pugilist": [],
|
|
"Raider": [],
|
|
"Ranger": [],
|
|
"Raptor": [],
|
|
"Ravager": [],
|
|
"Reclaimer": [],
|
|
"Rhulic 'Jack Marshal": [],
|
|
"Rhulic Field Mechanik": [],
|
|
"Rhulic Warcaster": [],
|
|
"Rifleman": [],
|
|
"Ryssovass": [],
|
|
"Scout": [],
|
|
"Scrutator": [],
|
|
"Searforge Trader": [],
|
|
"Seeker": [],
|
|
"Shaman (Devourer Wurm)": [],
|
|
"Shaman (Dhunia)": [],
|
|
"Slaughterhouser": [],
|
|
"Soldier": [],
|
|
"Sorcerer (Fire) (FMF)": [],
|
|
"Sorcerer (Fire) (IKU)": [],
|
|
"Sorcerer (Ice) (FMF)": [],
|
|
"Sorcerer (Ice) (IKU)": [],
|
|
"Sorcerer (Stone) (FMF)": [],
|
|
"Sorcerer (Stone) (IKU)": [],
|
|
"Sorcerer (Storm) (FMF)": [],
|
|
"Sorcerer (Storm) (IKU)": [],
|
|
"Spy": [],
|
|
"Storm Lance": [],
|
|
"Stormblade": [],
|
|
"Stormguard": [],
|
|
"Stormsmith": [],
|
|
"Tempest Blazer": [],
|
|
"Thamarite Advocate": [],
|
|
"Thief": [],
|
|
"Tormentor": [],
|
|
"Trencher": [],
|
|
"Trencher Commando": [],
|
|
"Tyrant": [],
|
|
"Urban Nomad": [],
|
|
"Vassal of Menoth": [],
|
|
"Venator": [],
|
|
"Warcaster": [],
|
|
"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": [],
|
|
"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": [],
|
|
"Khadoran Military Detail": [],
|
|
"Korsk Stanzynat Mustyn": [],
|
|
"Law Dogs": [],
|
|
"Mercenary Charter": [],
|
|
"Mystics": [],
|
|
"Nobile Exiles": [],
|
|
"Nomads": [],
|
|
"Northkin Kriel": [],
|
|
"Nyss Refugees": [],
|
|
"Ordic Naval Expedition": [],
|
|
"Outlaws": [],
|
|
"Pirates of the Broken Cost": [],
|
|
"Raiders": [],
|
|
"Renegades": [],
|
|
"Soldiers of Fortune": [],
|
|
"Spy Ring": [],
|
|
"Thamarite Sept": [],
|
|
"Tharn Tuath": [],
|
|
"The Inner Circle": [],
|
|
"United Kriels": [],
|
|
"Unlikely Heroes": [],
|
|
"Unorthodox Engagement Team": [],
|
|
"Wilderness Expedition": [],
|
|
"Wilderness Kriel": []
|
|
}
|
|
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
function addOption(selector) {
|
|
return function(key, value) {
|
|
if(value.length > 0) {
|
|
var html = $(selector).html();
|
|
$(selector).html(html+'\n<option value="'+key+'">'+key+'</option>');
|
|
}
|
|
}
|
|
}
|
|
|
|
$.each(races, addOption("#race"));
|
|
$.each(castes, addOption("#caste"));
|
|
$.each(archetypes, addOption("#archetype"));
|
|
$.each(careers, addOption("#career1"));
|
|
$.each(careers, addOption("#career2"));
|
|
$.each(adventuringCompanies, addOption("#adventuring-company"));
|
|
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
// global
|
|
// var ikrpg
|
|
|
|
var ikrpg = ikrpg || {};
|
|
|
|
|
|
//(function () {
|
|
//'use strict';
|
|
|
|
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": []
|
|
};
|
|
}
|
|
|
|
function test() {
|
|
var data = hero();
|
|
|
|
$(".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;
|
|
}
|
|
});
|
|
|
|
console.log(data);
|
|
}
|
|
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
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").change(lookupAndFillOut("#race", "#race-data", races));
|
|
$("#caste").change(lookupAndFillOut("#caste", "#caste-data", castes));
|
|
$("#archetype").change(lookupAndFillOut("#archetype", "#archetype-data", archetypes));
|
|
$("#career1").change(lookupAndFillOut("#career1", "#career1-data", careers));
|
|
$("#career2").change(lookupAndFillOut("#career2", "#career2-data", careers));
|
|
$("#adventuring-company").change(lookupAndFillOut("#adventuring-company", "#adventuring-company-data", adventuringCompanies));
|
|
|
|
|
|
// generator
|
|
ikrpg.generator = {
|
|
|
|
//hero: {
|
|
// race: "",
|
|
// PHY: 0,
|
|
// SPD: 0,
|
|
// STR: 0,
|
|
// AGL: 0,
|
|
// PRW: 0,
|
|
// POI: 0,
|
|
// INT: 0,
|
|
// ARC: 0,
|
|
// PER: 0,
|
|
// //archetype: "",
|
|
// //careers: [],
|
|
// //level: "hero",
|
|
// //languages: [],
|
|
// //benefits: [],
|
|
// //careers: [],
|
|
// //abilities: [],
|
|
// //"military skills": {},
|
|
// //connections: [],
|
|
// //"occupational skills": {},
|
|
// //"gold coins": 0,
|
|
// //"starting assets": []
|
|
//}
|
|
|
|
};
|
|
|
|
//})();
|
|
</script> |