mirror of
https://github.com/ikrpg/ikrpg.github.io.git
synced 2026-05-13 14:27:22 +00:00
2652 lines
No EOL
109 KiB
HTML
2652 lines
No EOL
109 KiB
HTML
---
|
|
layout: ikrpg
|
|
tags: [Character Generator]
|
|
---
|
|
|
|
<style>
|
|
div.data label { display: block; }
|
|
.character-generator-table tbody td:nth-of-type(2) { text-align: left; }
|
|
</style>
|
|
|
|
<h2>Race</h2>
|
|
<p>
|
|
<select id="race-select">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<table class="hero character-generator-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="race-data" class="character-generator-data">
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<h2>Caste</h2>
|
|
<p>
|
|
<select id="caste-select">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<table class="veteran character-generator-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="caste-data" class="character-generator-data">
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<h2>Archetype</h2>
|
|
<p>
|
|
<select id="archetype-select">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<table class="epic character-generator-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="archetype-data" class="character-generator-data">
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<h2>Career 1</h2>
|
|
<p>
|
|
<select id="career1-select">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<table class="hero character-generator-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="career1-data" class="character-generator-data">
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<h2>Career 2</h2>
|
|
<p>
|
|
<select id="career2-select">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<table class="veteran character-generator-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="career2-data" class="character-generator-data">
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<h2>Adventuring Company</h2>
|
|
<p>
|
|
<select id="adventuring-company-select">
|
|
<option value="empty"></option>
|
|
</select>
|
|
</p>
|
|
<table class="epic character-generator-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="adventuring-company-data" class="character-generator-data">
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<div><a href="javascript:test()">test</a></div>
|
|
|
|
|
|
<script type="text/javascript">
|
|
// global
|
|
// var ikrpg
|
|
|
|
var ikrpg = ikrpg || {};
|
|
|
|
(function() {
|
|
ikrpg.generator = ikrpg.generator || {};
|
|
var generator = ikrpg.generator;
|
|
|
|
function HeroNumber(key, value) {
|
|
this.key = key;
|
|
this.value = value;
|
|
this.html = function() {
|
|
var str = '';
|
|
str += '<tr>\n';
|
|
str += ' <td>'+this.key+'</td>\n';
|
|
str += ' <td><input class="'+this.key+'" type="number" data-type="number" min="'+this.value+'" max="'+this.value+'" value="'+this.value+'" disabled /></td>\n';
|
|
str += '</tr>\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 += '<tr>\n';
|
|
str += ' <td>'+this.key+'</td>\n';
|
|
str += ' <td><input class="'+this.key+'" type="number" data-type="number" min="'+this.min+'" max="'+this.max+'" value="'+this.min+'" /></td>\n';
|
|
str += '</tr>\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 += '<tr>\n';
|
|
str += ' <td>'+this.key+'</td>\n';
|
|
str += ' <td><input class="'+this.key+'" type="text" data-type="text" value="'+this.value+'" disabled /></td>\n';
|
|
str += '</tr>\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 += '<tr>\n';
|
|
str += ' <td>'+this.key+'</td>\n';
|
|
str += ' <td><input class="'+this.key+'" type="text" data-type="array" value="'+this.value+'" disabled /></td>\n';
|
|
str += '</tr>\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 '<option class="'+this.key+'" data-type="number" value="'+this.value+'">'+this.key+': '+this.value+'</option>\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 '<option class="'+this.key+'" data-type="array" value="'+this.value+'">'+this.key+': '+this.value+'</option>\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 += '<tr>\n';
|
|
if(label) str += ' <td><label>'+label+':</label></td>\n';
|
|
str += ' <td><select multiple>\n';
|
|
str += mkString($.map(pairs, function(pair) { return pair.html(); }), "\n ", "", "\n");
|
|
str += ' </select></td>\n';
|
|
str += '</tr>\n';
|
|
|
|
return str;
|
|
};
|
|
}
|
|
|
|
function choices(pairs, label) {
|
|
return new HeroChoices(pairs, label);
|
|
}
|
|
|
|
|
|
// keywords (to prevent invalid values)
|
|
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";
|
|
|
|
|
|
// TODO: All languages
|
|
generator.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 languages = generator.languages;
|
|
|
|
generator.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, "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),
|
|
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)": []
|
|
};
|
|
|
|
generator.castes = {
|
|
"Extoller": [],
|
|
"Outcast": [],
|
|
"Paingiver": [],
|
|
"Slave": [],
|
|
"Warrior": [],
|
|
"Worker": []
|
|
}
|
|
|
|
generator.archetypes = {
|
|
"Cunning": [],
|
|
"Gifted (FMF)": [
|
|
string(_archetype, "Gifted"),
|
|
choices(numberPairs(_ARC, [2, 3]), "Focusers start with ARC 2,<br />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)": []
|
|
};
|
|
|
|
generator.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, "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, "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"]) // TODO: Light Laborjack widget
|
|
],
|
|
"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, [
|
|
"magelock pistol",
|
|
"magelock rifle"]), "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, "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, "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, "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",
|
|
"repeating pistol",
|
|
"repeating pistol"]), "Choose either the hand cannon<br />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, "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, "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, [
|
|
"heavy rifle",
|
|
"repeating long rifle"]))
|
|
],
|
|
"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),
|
|
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, "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, "Connections (Cygnaran military)"),
|
|
listItem(_military_skills, "Great Weapon"),
|
|
list(_occupational_skills, ["Command", "Detection", "Etiquette"]),
|
|
listItem(_melee_weapons, "Storm Glaive"),
|
|
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, "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, "military rifle"),
|
|
listItem(_armors, "Trencher medium 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, "light suit of warcaster armor"),
|
|
arrayPair(_armors, "medium suit of warcaster armor"),
|
|
arrayPair(_melee_weapons, "mechanika hand 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": []
|
|
};
|
|
|
|
generator.adventuringCompanies = {
|
|
"Agents of the Crucible": [],
|
|
"Arcane Order": [
|
|
string(_adventuring_company, "Arcane Order"),
|
|
listItem(_notes, "At least one of the characters must be Gifted"),
|
|
listItem(_occupational_skills, "Lore (Arcane)"),
|
|
choices(arrayPairs(_occupational_skills, ["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": [
|
|
string(_adventuring_company, "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": [
|
|
string(_adventuring_company, "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": [
|
|
string(_adventuring_company, "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": [
|
|
string(_adventuring_company, "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(_abilities, ["Gang", "Language (Five Cant)"])
|
|
],
|
|
"Pirates of the Broken Cost": [
|
|
string(_adventuring_company, "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": [
|
|
string(_adventuring_company, "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": []
|
|
}
|
|
|
|
})();
|
|
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
(function() {
|
|
|
|
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(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"));
|
|
|
|
})();
|
|
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
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 () {
|
|
ikrpg.generator = ikrpg.generator || {};
|
|
var generator = ikrpg.generator;
|
|
|
|
generator.hero = function() {
|
|
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": [],
|
|
"adventuring company": "",
|
|
"ranged weapons": [],
|
|
"melee weapons": [],
|
|
"armors": []
|
|
};
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
function test() {
|
|
ikrpg.cards.cleanData();
|
|
ikrpg.cards.data["hero-name"] = "Hero's name";
|
|
|
|
var data = ikrpg.generator.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);
|
|
|
|
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"],
|
|
"defracialmodifier": data["defracialmodifier"],
|
|
"note1": {"text": "Adventuring company: "+data["adventuring company"]},
|
|
"gold": data["gold"],
|
|
"XP": 0
|
|
};
|
|
|
|
$.each($.merge(data["benefits"], data["abilities"]) || [], function(index, ability) {
|
|
character["ability"+(index+1)] = character["ability"+(index+1)] || {};
|
|
character["ability"+(index+1)]["title"] = ability;
|
|
});
|
|
|
|
(function() {
|
|
var skills = histogram($.merge(data["military skills"], data["occupational skills"]));
|
|
var index = 0;
|
|
$.each(skills || [], function(skill, value) {
|
|
character["s"+(index+1)] = character["s"+(index+1)] || {};
|
|
character["s"+(index+1)]["title"] = skill;
|
|
character["s"+(index+1)]["lvl"] = value;
|
|
index += 1;
|
|
});
|
|
})();
|
|
|
|
$.each(data["spells"] || [], function(index, spell) {
|
|
character["spell"+(index+1)] = character["spell"+(index+1)] || {};
|
|
character["spell"+(index+1)]["title"] = spell;
|
|
});
|
|
|
|
$.each(data["gear"] || [], function(index, gear) {
|
|
character["gear"+(index+1)] = character["gear"+(index+1)] || {};
|
|
character["gear"+(index+1)]["title"] = gear;
|
|
});
|
|
|
|
$.each(data["ranged weapon"] || [], function(index, weapon) {
|
|
character["rat"+(index+1)] = character["rat"+(index+1)] || {};
|
|
character["rat"+(index+1)]["name"] = weapon;
|
|
});
|
|
|
|
$.each(data["melee weapon"] || [], function(index, weapon) {
|
|
character["mat"+(index+1)] = character["mat"+(index+1)] || {};
|
|
character["mat"+(index+1)]["name"] = weapon;
|
|
});
|
|
|
|
$.each(data["armor"] || [], function(index, armor) {
|
|
character["wornarmor"+(index+1)] = character["wornarmor"+(index+1)] || {};
|
|
character["wornarmor"+(index+1)]["name"] = armor;
|
|
});
|
|
|
|
$.each(data["notes"] || [], function(index, note) {
|
|
character["note"+(index+2)] = character["note"+(index+2)] || {};
|
|
character["note"+(index+2)]["text"] = note;
|
|
});
|
|
|
|
console.log(character)
|
|
|
|
ikrpg.sheet.fill(null, character);
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
form#import-export { display: none; }
|
|
form#import-export:target { display: block; }
|
|
#seed { display: block; width: 100%; max-height: 26px; overflow: none; }
|
|
|
|
.character-sheet {
|
|
margin-top: 3em;
|
|
width: 980px; }
|
|
.fmf.page1 {
|
|
height: 711px;
|
|
background: url(/static/images/sheet/FMF-1.jpeg) no-repeat;
|
|
background-size: 980px 711px; }
|
|
.fmf.page2 {
|
|
height: 688px;
|
|
background: url(/static/images/sheet/FMF-2.jpeg) no-repeat;
|
|
background-size: 980px 688px; }
|
|
.iku.page1 {
|
|
height: 713px;
|
|
background: url(/static/images/sheet/IKU-1.jpeg) no-repeat;
|
|
background-size: 980px 713px; }
|
|
.iku.page2 {
|
|
height: 689px;
|
|
background: url(/static/images/sheet/IKU-2.jpeg) no-repeat;
|
|
background-size: 980px 689px; }
|
|
.character-sheet input { position: absolute; font-size: 13px; padding: 2px 1px; font-family: Arial; border: 0; background-color: transparent; }
|
|
.character-sheet .hero-name { margin: 20px 0 0 4px; width: 236px; }
|
|
.character-sheet #sex { margin: 20px 0 0 250px; width: 39px; }
|
|
.character-sheet #definingcharacteristics { margin: 20px 0 0 300px; width: 304px; }
|
|
.character-sheet #weight { margin: 20px 0 0 619px; width: 82px; }
|
|
.character-sheet #archetype { margin: 48px 0 0 4px; width: 86px; }
|
|
.character-sheet #race { margin: 48px 0 0 105px; width: 78px; }
|
|
.character-sheet #careers { margin: 48px 0 0 198px; width: 126px; }
|
|
.character-sheet #faith { margin: 48px 0 0 333px; width: 86px; }
|
|
.character-sheet #playername { margin: 48px 0 0 433px; width: 172px; }
|
|
.character-sheet #height { margin: 48px 0 0 619px; width: 82px; }
|
|
.character-sheet #level { margin: 20px 0 0 720px; width: 79px; text-align: center; }
|
|
.character-sheet #xp { margin: 48px 0 0 720px; width: 79px; text-align: center; }
|
|
.character-sheet div#portrait {}
|
|
.character-sheet #phy { margin: 330px 0 0 10px; width: 42px; font-size: 30px; text-align: center; }
|
|
.character-sheet #phymax { margin: 352px 0 0 60px; width: 18px; text-align: center; }
|
|
.character-sheet #agl { margin: 443px 0 0 10px; width: 42px; font-size: 30px; text-align: center; }
|
|
.character-sheet #aglmax { margin: 465px 0 0 60px; width: 18px; text-align: center; }
|
|
.character-sheet #str { margin: 363px 0 0 92px; width: 32px; font-size: 20px; text-align: center; }
|
|
.character-sheet #strmax { margin: 376px 0 0 129px; width: 13px; text-align: center; }
|
|
.character-sheet #int { margin: 556px 0 0 10px; width: 42px; font-size: 30px; text-align: center; }
|
|
.character-sheet #intmax { margin: 578px 0 0 60px; width: 18px; text-align: center; }
|
|
.character-sheet #prw { margin: 428px 0 0 92px; width: 32px; font-size: 20px; text-align: center; }
|
|
.character-sheet #prwmax { margin: 441px 0 0 129px; width: 13px; text-align: center; }
|
|
.character-sheet #poi { margin: 476px 0 0 92px; width: 32px; font-size: 20px; text-align: center; }
|
|
.character-sheet #poimax { margin: 489px 0 0 129px; width: 13px; text-align: center; }
|
|
.character-sheet #spd { margin: 315px 0 0 92px; width: 32px; font-size: 20px; text-align: center; }
|
|
.character-sheet #spdmax { margin: 328px 0 0 129px; width: 13px; text-align: center; }
|
|
.character-sheet #arc { margin: 541px 0 0 92px; width: 32px; font-size: 20px; text-align: center; }
|
|
.character-sheet #arcmax { margin: 554px 0 0 129px; width: 13px; text-align: center; }
|
|
.character-sheet #per { margin: 589px 0 0 92px; width: 32px; font-size: 20px; text-align: center; }
|
|
.character-sheet #permax { margin: 602px 0 0 129px; width: 13px; text-align: center; }
|
|
.character-sheet #wil { margin: 648px 0 0 50px; width: 48px; font-size: 30px; text-align: center; }
|
|
.character-sheet #rat1 { display: block !important; }
|
|
.character-sheet #rat1 .name { margin: 114px 0 0 224px; width: 103px; }
|
|
.character-sheet #rat1 .rng { margin: 106px 0 0 341px; width: 25px; text-align: center; }
|
|
.character-sheet #rat1 .rat { margin: 106px 0 0 375px; width: 25px; text-align: center; }
|
|
.character-sheet #rat1 .aoe {}
|
|
.character-sheet #rat1 .pow { margin: 106px 0 0 409px; width: 25px; text-align: center; }
|
|
.character-sheet #rat1 .notes { margin: 138px 0 0 224px; width: 103px; }
|
|
.character-sheet #rat1 .ammo { margin: 138px 0 0 341px; width: 99px; }
|
|
.character-sheet #rat2 { display: block !important; }
|
|
.character-sheet #rat2 .name { margin: 182px 0 0 224px; width: 103px; }
|
|
.character-sheet #rat2 .rng { margin: 174px 0 0 341px; width: 25px; text-align: center; }
|
|
.character-sheet #rat2 .rat { margin: 174px 0 0 375px; width: 25px; text-align: center; }
|
|
.character-sheet #rat2 .aoe {}
|
|
.character-sheet #rat2 .pow { margin: 174px 0 0 409px; width: 25px; text-align: center; }
|
|
.character-sheet #rat2 .notes { margin: 206px 0 0 224px; width: 103px; }
|
|
.character-sheet #rat2 .ammo { margin: 206px 0 0 341px; width: 99px; }
|
|
.character-sheet #mat1 { display: block !important; }
|
|
.character-sheet #mat1 .name { margin: 265px 0 0 224px; width: 140px; }
|
|
.character-sheet #mat1 .mat { margin: 277px 0 0 375px; width: 25px; text-align: center; }
|
|
.character-sheet #mat1 .pow {}
|
|
.character-sheet #mat1 .ps { margin: 277px 0 0 409px; width: 25px; text-align: center; }
|
|
.character-sheet #mat1 .notes { margin: 289px 0 0 224px; width: 140px; }
|
|
.character-sheet #mat2 { display: block !important; }
|
|
.character-sheet #mat2 .name { margin: 327px 0 0 224px; width: 140px; }
|
|
.character-sheet #mat2 .mat { margin: 339px 0 0 375px; width: 25px; text-align: center; }
|
|
.character-sheet #mat2 .pow {}
|
|
.character-sheet #mat2 .ps { margin: 339px 0 0 409px; width: 25px; text-align: center; }
|
|
.character-sheet #mat2 .notes { margin: 351px 0 0 224px; width: 140px; }
|
|
.character-sheet #mat3 { display: block !important; }
|
|
.character-sheet #mat3 .name { margin: 415px 0 0 171px; width: 160px; }
|
|
.character-sheet #mat3 .mat { margin: 429px 0 0 375px; width: 25px; text-align: center; }
|
|
.character-sheet #mat3 .pow {}
|
|
.character-sheet #mat3 .ps { margin: 429px 0 0 409px; width: 25px; text-align: center; }
|
|
.character-sheet #mat3 .notes { margin: 439px 0 0 171px; width: 160px; }
|
|
.character-sheet #mat3 .free { margin: 429px 0 0 341px; width: 25px; text-align: center; }
|
|
.character-sheet #defracialmodifier { margin: 496px 0 0 289px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #defequipmentmodifiers { margin: 496px 0 0 344px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #def { margin: 496px 0 0 399px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #armshieldmodifier { margin: 554px 0 0 231px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #armarmormodifiers { margin: 554px 0 0 288px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #armothermodifiers { margin: 554px 0 0 344px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #arm { margin: 554px 0 0 399px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #iniequipmentmodifiers { margin: 611px 0 0 289px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #iniadditionalmodifiers { margin: 611px 0 0 344px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #ini { margin: 611px 0 0 399px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #cmdcommandskill { margin: 668px 0 0 289px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #cmdabilitymodifier { margin: 668px 0 0 344px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet #cmd { margin: 668px 0 0 399px; width: 34px; font-size: 20px; text-align: center; }
|
|
.character-sheet div.stat .title { margin: 2px 0 0 460px; width: 105px; }
|
|
.character-sheet div.stat .base { margin: 2px 0 0 570px; width: 15px; text-align: center; }
|
|
.character-sheet div.stat .lvl { margin: 2px 0 0 610px; width: 15px; text-align: center; }
|
|
.character-sheet div.stat .sum { margin: 2px 0 0 643px; width: 15px; text-align: center; }
|
|
.character-sheet div.stat { position: absolute; }
|
|
.character-sheet div#s1 { margin-top: 120px; }
|
|
.character-sheet div#s2 { margin-top: 141px; }
|
|
.character-sheet div#s3 { margin-top: 162px; }
|
|
.character-sheet div#s4 { margin-top: 184px; }
|
|
.character-sheet div#s5 { margin-top: 205px; }
|
|
.character-sheet div#s6 { margin-top: 226px; }
|
|
.character-sheet div#s7 { margin-top: 247px; }
|
|
.character-sheet div#s8 { margin-top: 269px; }
|
|
.character-sheet div#s9 { margin-top: 290px; }
|
|
.character-sheet div#s10 { margin-top: 311px; }
|
|
.character-sheet div#s11 { margin-top: 332px; }
|
|
.character-sheet div#s12 { margin-top: 353px; }
|
|
.character-sheet div#s13 { margin-top: 374px; }
|
|
.character-sheet div#s14 { margin-top: 396px; }
|
|
.character-sheet div#s15 { margin-top: 417px; }
|
|
.character-sheet div#s16 { margin-top: 438px; }
|
|
.character-sheet div#s17 { margin-top: 459px; }
|
|
.character-sheet div#s18 {}
|
|
.character-sheet div#s19 {}
|
|
.character-sheet div#s20 {}
|
|
.character-sheet div#s21 {}
|
|
.character-sheet div.ability { position: absolute; }
|
|
.character-sheet div.ability .title { margin-left: 689px; width: 100px; }
|
|
.character-sheet div.ability .description { margin-left: 796px; width: 150px; }
|
|
.character-sheet div.ability .page { margin-left: 946px; width: 28px; text-align: right; }
|
|
.character-sheet div#ability1 { margin-top: 135px; }
|
|
.character-sheet div#ability2 { margin-top: 156px; }
|
|
.character-sheet div#ability3 { margin-top: 177px; }
|
|
.character-sheet div#ability4 { margin-top: 198px; }
|
|
.character-sheet div#ability5 { margin-top: 219px; }
|
|
.character-sheet div#ability6 { margin-top: 240px; }
|
|
.character-sheet div#ability7 { margin-top: 261px; }
|
|
.character-sheet div#ability8 { margin-top: 282px; }
|
|
.character-sheet div#ability9 { margin-top: 303px; }
|
|
.character-sheet div#ability10 { margin-top: 324px; }
|
|
.character-sheet div#ability11 { margin-top: 345px; }
|
|
.character-sheet div#ability12 { margin-top: 366px; }
|
|
.character-sheet div#ability13 { margin-top: 387px; }
|
|
.character-sheet div#ability14 { margin-top: 408px; }
|
|
.character-sheet div#ability15 { margin-top: 429px; }
|
|
.character-sheet div#ability16 { margin-top: 450px; }
|
|
.character-sheet div#ability17 { margin-top: 471px; }
|
|
.character-sheet div#ability18 { margin-top: 492px; }
|
|
.character-sheet div#ability19 { margin-top: 513px; }
|
|
.character-sheet div#ability20 { margin-top: 534px; }
|
|
.character-sheet #feats { font-size: 40px; margin: 606px 0 0 698px; width: 51px; text-align: center; }
|
|
|
|
.character-sheet .gear { position: absolute; margin-left: 5px; }
|
|
.character-sheet .gear .title { width: 125px; }
|
|
.character-sheet .gear .benefit { margin-left: 125px; width: 160px; }
|
|
.character-sheet #gear1 { margin-top: 38px; }
|
|
.character-sheet #gear2 { margin-top: 58px; }
|
|
.character-sheet #gear3 { margin-top: 78px; }
|
|
.character-sheet #gear4 { margin-top: 97px; }
|
|
.character-sheet #gear5 { margin-top: 117px; }
|
|
.character-sheet #gear6 { margin-top: 137px; }
|
|
.character-sheet #gear7 { margin-top: 157px; }
|
|
.character-sheet #gear8 { margin-top: 177px; }
|
|
.character-sheet #gear9 { margin-top: 197px; }
|
|
.character-sheet #gear10 { margin-top: 217px; }
|
|
.character-sheet #gear11 { margin-top: 237px; }
|
|
.character-sheet #gear12 { margin-top: 257px; }
|
|
.character-sheet #gear13 { margin-top: 276px; }
|
|
.character-sheet #gear14 { margin-top: 296px; }
|
|
.character-sheet #gear15 { margin-top: 316px; }
|
|
.character-sheet #gear16 { margin-top: 336px; }
|
|
.character-sheet #gear17 { margin-top: 356px; }
|
|
.character-sheet #gear18 { margin-top: 376px; }
|
|
.character-sheet #gear19 { margin-top: 396px; }
|
|
.character-sheet .wornarmor { position: absolute; margin-left: 5px; }
|
|
.character-sheet .wornarmor .name { width: 70px; }
|
|
.character-sheet .wornarmor .notes { margin-left: 75px; width: 108px; }
|
|
.character-sheet .wornarmor .spd { margin-left: 186px; width: 17px; text-align: center; }
|
|
.character-sheet .wornarmor .def { margin-left: 225px; width: 17px; text-align: center; }
|
|
.character-sheet .wornarmor .arm { margin-left: 260px; width: 17px; text-align: center; }
|
|
.character-sheet #wornarmor1 { margin-top: 468px; }
|
|
.character-sheet #wornarmor2 { margin-top: 488px; }
|
|
.character-sheet #wornarmor3 { margin-top: 508px; }
|
|
.character-sheet #wornarmor4 { margin-top: 528px; }
|
|
.character-sheet .connection { position: absolute; margin-left: 5px; }
|
|
.character-sheet .connection .name { width: 98px; }
|
|
.character-sheet .connection .notes { margin-left: 98px; width: 140px; }
|
|
.character-sheet .connection .page { margin-left: 238px; width: 48px; text-align: right; }
|
|
.character-sheet #connection1 { margin-top: 600px; }
|
|
.character-sheet #connection2 { margin-top: 620px; }
|
|
.character-sheet #connection3 { margin-top: 640px; }
|
|
.character-sheet #connection4 { margin-top: 660px; }
|
|
.character-sheet #arcanetradition { position: absolute; margin: 12px 0 0 398px; width: 256px; }
|
|
.character-sheet .spell { position: absolute; margin-left: 312px; }
|
|
.character-sheet .spell .title { width: 134px; }
|
|
.character-sheet .spell .cost { margin-left: 140px; width: 33px; text-align: center; }
|
|
.character-sheet .spell .rng { margin-left: 178px; width: 32px; text-align: center; }
|
|
.character-sheet .spell .aoe { margin-left: 215px; width: 32px; text-align: center; }
|
|
.character-sheet .spell .pow { margin-left: 252px; width: 33px; text-align: center; }
|
|
.character-sheet .spell .up { margin-left: 290px; width: 32px; text-align: center; }
|
|
.character-sheet .spell .off { margin-left: 327px; width: 28px; text-align: center; }
|
|
.character-sheet .spell .description { margin-top: 23px; width: 355px; }
|
|
.character-sheet .iku .mechanika { display: none; }
|
|
.character-sheet .mechanika { position: absolute; margin-left: 312px; }
|
|
.character-sheet .mechanika .housing { width: 84px; }
|
|
.character-sheet .mechanika .runeplate { margin-left: 90px; width: 84px; }
|
|
.character-sheet .mechanika .capacitor { margin-left: 180px; width: 84px; }
|
|
.character-sheet .mechanika .notes { margin-left: 270px; width: 84px; }
|
|
.character-sheet #mechanika1 { margin-top: 486px; }
|
|
.character-sheet #mechanika2 { margin-top: 506px; }
|
|
.character-sheet #mechanika3 { margin-top: 526px; }
|
|
.character-sheet #mechanika4 { margin-top: 546px; }
|
|
.character-sheet #mechanika5 { margin-top: 566px; }
|
|
.character-sheet .iku .runeplate { display: none; }
|
|
.character-sheet .runeplate { position: absolute; margin-left: 312px; }
|
|
.character-sheet .runeplate .title { width: 84px; }
|
|
.character-sheet .runeplate .benefit { margin-left: 90px; width: 78px; }
|
|
.character-sheet #runeplate1 { margin-top: 602px; }
|
|
.character-sheet #runeplate2 { margin-top: 622px; }
|
|
.character-sheet #runeplate3 { margin-top: 642px; }
|
|
.character-sheet #runeplate4 { margin-top: 662px; }
|
|
.character-sheet .iku .capacitor { display: none; }
|
|
.character-sheet .capacitor { position: absolute; margin-left: 498px; }
|
|
.character-sheet .capacitor .title { width: 78px; }
|
|
.character-sheet .capacitor .charges { margin-left: 84px; width: 84px; }
|
|
.character-sheet #capacitor1 { margin-top: 602px; }
|
|
.character-sheet #capacitor2 { margin-top: 622px; }
|
|
.character-sheet #capacitor3 { margin-top: 642px; }
|
|
.character-sheet #capacitor4 { margin-top: 662px; }
|
|
.character-sheet #spell1 { margin-top: 50px; }
|
|
.character-sheet #spell2 { margin-top: 100px; }
|
|
.character-sheet #spell3 { margin-top: 150px; }
|
|
.character-sheet #spell4 { margin-top: 200px; }
|
|
.character-sheet #spell5 { margin-top: 250px; }
|
|
.character-sheet #spell6 { margin-top: 299px; }
|
|
.character-sheet #spell7 { margin-top: 348px; }
|
|
.character-sheet #spell8 { margin-top: 398px; }
|
|
.character-sheet .note { position: absolute; margin-left: 698px; }
|
|
.character-sheet .note .text { width: 265px; }
|
|
.character-sheet #note1 { margin-top: 37px; }
|
|
.character-sheet #note2 { margin-top: 56px; }
|
|
.character-sheet #note3 { margin-top: 75px; }
|
|
.character-sheet #note4 { margin-top: 94px; }
|
|
.character-sheet #note5 { margin-top: 112px; }
|
|
.character-sheet #note6 { margin-top: 131px; }
|
|
.character-sheet #note7 { margin-top: 150px; }
|
|
.character-sheet #note8 { margin-top: 168px; }
|
|
.character-sheet #note9 { margin-top: 187px; }
|
|
.character-sheet #note10 { margin-top: 206px; }
|
|
.character-sheet #note11 { margin-top: 225px; }
|
|
.character-sheet #note12 { margin-top: 244px; }
|
|
.character-sheet #permanentinjury1 { position: absolute; margin-top: 310px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #permanentinjury2 { position: absolute; margin-top: 330px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #permanentinjury3 { position: absolute; margin-top: 350px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #spokenlanguage1 { position: absolute; margin-top: 411px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #spokenlanguage2 { position: absolute; margin-top: 431px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #spokenlanguage3 { position: absolute; margin-top: 451px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #religiousbelief1 { position: absolute; margin-top: 512px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #religiousbelief2 { position: absolute; margin-top: 532px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #religiousbelief3 { position: absolute; margin-top: 552px; margin-left: 698px; width: 265px; }
|
|
.character-sheet #gold { position: absolute; margin-top: 613px; margin-left: 698px; font-size: 50px; width: 100px; text-align: right; }
|
|
|
|
@media print {
|
|
html { zoom: 140%; }
|
|
form.character-sheet {
|
|
margin: 200px 0 0 -130px;
|
|
display: inline-block;
|
|
-webkit-transform: rotate(-90deg);
|
|
-moz-transform:rotate(-90deg);
|
|
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); }
|
|
form.character-sheet.page2 {
|
|
margin-top: 228px; }
|
|
}
|
|
</style>
|
|
|
|
|
|
<p>
|
|
These are the (slightly modified) official Full Metal Fantasy and Unleashed character sheets
|
|
that can be downloaded at <a href="http://privateerpress.com/iron-kingdoms/downloads">privateerpress.com</a>.
|
|
We have modified them so you can fill, print, and save them in your browser!
|
|
After you saved them they are only visible to you.
|
|
We do not have access to your characters.
|
|
Only you can access them and only in the browser you saved them in.
|
|
</p>
|
|
<p>
|
|
<strong>Beware:</strong>
|
|
If you <strong>clear your browser cache</strong>, your character sheets <strong>will be lost</strong>!
|
|
Additionally, if you <strong>save</strong> a new character sheet <strong>under an existing hero name</strong>, the old sheet <strong>will be lost</strong>!
|
|
</p>
|
|
<p>
|
|
<em>Tip:</em>
|
|
Use your browser's print function to print your character sheet!
|
|
</p>
|
|
<p>
|
|
You can import/export character cards should you need them in a different browser, clear your browser cache or email them to a friend.
|
|
Exporting cards will give you a gibberish representation of your character that you can copy.
|
|
Pasting that gibberish into the import/export field and clicking to import the character will update your sheet.
|
|
Have fun using the character sheets!
|
|
</p>
|
|
|
|
<h2 style="font-weight:300;margin:1em 0 2em 0;">
|
|
| <a href="javascript:ikrpg.sheet.saveHero();">Save</a> |
|
|
<a href="#import-export">Import/Export Character</a> |
|
|
</h2>
|
|
|
|
<form id="import-export">
|
|
<textarea id="seed"></textarea>
|
|
<button id="generate-seed">Export seed for current cards</button>
|
|
<button id="update-seed">Fill out cards using current seed</button>
|
|
</form>
|
|
|
|
<div style="text-align:center;">
|
|
<table id="characters" class="hero">
|
|
<thead>
|
|
<tr>
|
|
<th>Hero Name</th>
|
|
<th>Archetype</th>
|
|
<th>Race</th>
|
|
<th>Careers</th>
|
|
<th>Load</th>
|
|
<th>Delete</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<script>
|
|
|
|
function makeUnleashed() {
|
|
$(".character-sheet.fmf").removeClass("fmf").addClass("iku");
|
|
}
|
|
|
|
function makeFullMetalFantasy() {
|
|
$(".character-sheet.iku").removeClass("iku").addClass("fmf");
|
|
}
|
|
|
|
</script>
|
|
|
|
<div style="margin-top:4em;">
|
|
<strong>Choose your character sheet design:</strong>
|
|
<ul style="list-style-type:disc;">
|
|
<li><a href="javascript:makeFullMetalFantasy();">Full Metal Fantasy</a> (slightly modified)</li>
|
|
<li><a href="javascript:makeUnleashed();">Unleashed</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<form class="character-sheet fmf page1">
|
|
<input class="hero-name" title="Hero's Name" type="text" />
|
|
<input id="sex" title="Sex" type="text" />
|
|
<input id="definingcharacteristics" title="Defining Characteristics" type="text" />
|
|
<input id="weight" title="Weight" type="text" />
|
|
<input id="archetype" title="Archetype" type="text" />
|
|
<input id="race" title="Race" type="text" />
|
|
<input id="careers" title="Careers" type="text" />
|
|
<input id="faith" title="Faith" type="text" />
|
|
<input id="playername" title="Player Name" type="text" />
|
|
<input id="height" title="Height" type="text" />
|
|
<input id="level" title="Level" type="text" />
|
|
<input id="xp" title="XP" type="text" />
|
|
<!--div id="portrait"></div-->
|
|
<input id="phy" title="PHY" type="text" />
|
|
<input id="phymax" title="PHY max" type="text" />
|
|
<input id="spd" title="SPD" type="text" />
|
|
<input id="spdmax" title="SPD max" type="text" />
|
|
<input id="str" title="STR" type="text" />
|
|
<input id="strmax" title="STR max" type="text" />
|
|
<input id="agl" title="AGL" type="text" />
|
|
<input id="aglmax" title="AGL max" type="text" />
|
|
<input id="prw" title="PRW" type="text" />
|
|
<input id="prwmax" title="PRW max" type="text" />
|
|
<input id="poi" title="POI" type="text" />
|
|
<input id="poimax" title="POI max" type="text" />
|
|
<input id="int" title="INT" type="text" />
|
|
<input id="intmax" title="INT max" type="text" />
|
|
<input id="arc" title="ARC" type="text" />
|
|
<input id="arcmax" title="ARC max" type="text" />
|
|
<input id="per" title="PER" type="text" />
|
|
<input id="permax" title="PER max" type="text" />
|
|
<input id="wil" title="WIL" type="text" />
|
|
<div id="rat1">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="rng" title="RNG" type="text" />
|
|
<input class="rat" title="RAT" type="text" />
|
|
<input class="pow" title="POW" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="ammo" title="Ammo" type="text" />
|
|
</div>
|
|
<div id="rat2">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="rng" title="RNG" type="text" />
|
|
<input class="rat" title="RAT" type="text" />
|
|
<input class="pow" title="POW" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="ammo" title="Ammo" type="text" />
|
|
</div>
|
|
<div id="mat1">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="mat" title="MAT" type="text" />
|
|
<input class="ps" title="POW" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
</div>
|
|
<div id="mat2">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="mat" title="MAT" type="text" />
|
|
<input class="ps" title="POW" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
</div>
|
|
<div id="mat3">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="free" title="Free" type="text" />
|
|
<input class="mat" title="MAT" type="text" />
|
|
<input class="ps" title="POW" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
</div>
|
|
<input id="defracialmodifier" title="DEF racial modifier" type="text" />
|
|
<input id="defequipmentmodifiers" title="DEF equipment modifiers" type="text" />
|
|
<input id="def" title="DEF" type="text" />
|
|
<input id="armshieldmodifier" title="ARM shield modifier" type="text" />
|
|
<input id="armarmormodifiers" title="ARM armor modifiers" type="text" />
|
|
<input id="armothermodifiers" title="ARM other modifiers" type="text" />
|
|
<input id="arm" title="ARM" type="text" />
|
|
<input id="iniequipmentmodifiers" title="INI equipment modifiers" type="text" />
|
|
<input id="iniadditionalmodifiers" title="INI additional modifiers" type="text" />
|
|
<input id="ini" title="INI" type="text" />
|
|
<input id="cmdcommandskill" title="CMD" type="text" />
|
|
<input id="cmdabilitymodifier" title="CMD" type="text" />
|
|
<input id="cmd" title="CMD" type="text" />
|
|
<div id="s1" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s2" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s3" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s4" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s5" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s6" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s7" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s8" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s9" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s10" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s11" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s12" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s13" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s14" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s15" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s16" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="s17" class="stat">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="base" title="Base" type="text" />
|
|
<input class="lvl" title="Level" type="text" />
|
|
<input class="sum" title="Sum" type="text" />
|
|
</div>
|
|
<div id="ability1" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability2" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability3" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability4" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability5" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability6" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability7" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability8" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability9" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability10" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability11" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability12" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability13" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability14" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability15" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability16" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability17" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability18" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability19" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="ability20" class="ability">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="description" title="Description" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<input id="feats" title="Feats" type="text" />
|
|
</form>
|
|
|
|
<form class="character-sheet fmf page2">
|
|
<div id="gear1" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear2" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear3" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear4" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear5" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear6" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear7" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear8" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear9" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear10" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear11" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear12" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear13" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear14" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear15" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear16" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear17" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear18" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="gear19" class="gear">
|
|
<input class="title" title="Title" type="text" />
|
|
<input class="benefit" title="Benefit" type="text" />
|
|
</div>
|
|
<div id="wornarmor1" class="wornarmor">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="spd" title="SPD" type="text" />
|
|
<input class="def" title="DEF" type="text" />
|
|
<input class="arm" title="ARM" type="text" />
|
|
</div>
|
|
<div id="wornarmor2" class="wornarmor">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="spd" title="SPD" type="text" />
|
|
<input class="def" title="DEF" type="text" />
|
|
<input class="arm" title="ARM" type="text" />
|
|
</div>
|
|
<div id="wornarmor3" class="wornarmor">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="spd" title="SPD" type="text" />
|
|
<input class="def" title="DEF" type="text" />
|
|
<input class="arm" title="ARM" type="text" />
|
|
</div>
|
|
<div id="wornarmor4" class="wornarmor">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="spd" title="SPD" type="text" />
|
|
<input class="def" title="DEF" type="text" />
|
|
<input class="arm" title="ARM" type="text" />
|
|
</div>
|
|
<div id="connection1" class="connection">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="connection2" class="connection">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="connection3" class="connection">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<div id="connection4" class="connection">
|
|
<input class="name" title="Name" type="text" />
|
|
<input class="notes" title="Notes" type="text" />
|
|
<input class="page" title="Page" type="text" />
|
|
</div>
|
|
<input id="arcanetradition" title="Arcane Tradition" type="text" />
|
|
<div id="spell1" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell2" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell3" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell4" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell5" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell6" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell7" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="spell8" class="spell">
|
|
<input type="text" title="Spell" class="title" />
|
|
<input type="text" title="Cost" class="cost" />
|
|
<input type="text" title="RNG" class="rng" />
|
|
<input type="text" title="AOE" class="aoe" />
|
|
<input type="text" title="POW" class="pow" />
|
|
<input type="text" title="UP" class="up" />
|
|
<input type="text" title="OFF" class="off" />
|
|
<input type="text" title="Description" class="description" />
|
|
</div>
|
|
<div id="mechanika1" class="mechanika">
|
|
<input type="text" title="Housing" class="housing" />
|
|
<input type="text" title="Runeplate" class="runeplate" />
|
|
<input type="text" title="Capacitor" class="capacitor" />
|
|
<input type="text" title="Notes" class="notes" />
|
|
</div>
|
|
<div id="mechanika2" class="mechanika">
|
|
<input type="text" title="Housing" class="housing" />
|
|
<input type="text" title="Runeplate" class="runeplate" />
|
|
<input type="text" title="Capacitor" class="capacitor" />
|
|
<input type="text" title="Notes" class="notes" />
|
|
</div>
|
|
<div id="mechanika3" class="mechanika">
|
|
<input type="text" title="Housing" class="housing" />
|
|
<input type="text" title="Runeplate" class="runeplate" />
|
|
<input type="text" title="Capacitor" class="capacitor" />
|
|
<input type="text" title="Notes" class="notes" />
|
|
</div>
|
|
<div id="mechanika4" class="mechanika">
|
|
<input type="text" title="Housing" class="housing" />
|
|
<input type="text" title="Runeplate" class="runeplate" />
|
|
<input type="text" title="Capacitor" class="capacitor" />
|
|
<input type="text" title="Notes" class="notes" />
|
|
</div>
|
|
<div id="mechanika5" class="mechanika">
|
|
<input type="text" title="Housing" class="housing" />
|
|
<input type="text" title="Runeplate" class="runeplate" />
|
|
<input type="text" title="Capacitor" class="capacitor" />
|
|
<input type="text" title="Notes" class="notes" />
|
|
</div>
|
|
<div id="runeplate1" class="runeplate">
|
|
<input type="text" title="Rune Plate" class="title" />
|
|
<input type="text" title="Benefit" class="benefit" />
|
|
</div>
|
|
<div id="runeplate2" class="runeplate">
|
|
<input type="text" title="Rune Plate" class="title" />
|
|
<input type="text" title="Benefit" class="benefit" />
|
|
</div>
|
|
<div id="runeplate3" class="runeplate">
|
|
<input type="text" title="Rune Plate" class="title" />
|
|
<input type="text" title="Benefit" class="benefit" />
|
|
</div>
|
|
<div id="runeplate4" class="runeplate">
|
|
<input type="text" title="Rune Plate" class="title" />
|
|
<input type="text" title="Benefit" class="benefit" />
|
|
</div>
|
|
<div id="capacitor1" class="capacitor">
|
|
<input type="text" title="Capacitor" class="title" />
|
|
<input type="text" title="Charges" class="charges" />
|
|
</div>
|
|
<div id="capacitor2" class="capacitor">
|
|
<input type="text" title="Capacitor" class="title" />
|
|
<input type="text" title="Charges" class="charges" />
|
|
</div>
|
|
<div id="capacitor3" class="capacitor">
|
|
<input type="text" title="Capacitor" class="title" />
|
|
<input type="text" title="Charges" class="charges" />
|
|
</div>
|
|
<div id="capacitor4" class="capacitor">
|
|
<input type="text" title="Capacitor" class="title" />
|
|
<input type="text" title="Charges" class="charges" />
|
|
</div>
|
|
<div id="note1" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note2" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note3" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note4" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note5" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note6" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note7" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note8" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note9" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note10" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note11" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<div id="note12" class="note">
|
|
<input type="text" title="Text" class="text" />
|
|
</div>
|
|
<input type="text" title="Permanent Injury" id="permanentinjury1" />
|
|
<input type="text" title="Permanent Injury" id="permanentinjury2" />
|
|
<input type="text" title="Permanent Injury" id="permanentinjury3" />
|
|
<input type="text" title="Spoken Language" id="spokenlanguage1" />
|
|
<input type="text" title="Spoken Language" id="spokenlanguage2" />
|
|
<input type="text" title="Spoken Language" id="spokenlanguage3" />
|
|
<input type="text" title="Religious Belief" id="religiousbelief1" />
|
|
<input type="text" title="Religious Belief" id="religiousbelief2" />
|
|
<input type="text" title="Religious Belief" id="religiousbelief3" />
|
|
<input type="text" title="Gold" id="gold" />
|
|
</form>
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="/static/javascripts/heroic.js"></script>
|
|
<script type="text/javascript">
|
|
ikrpg.cards.init();
|
|
</script>
|
|
<script type="text/javascript">
|
|
|
|
(function() {
|
|
|
|
ikrpg.sheet = ikrpg.sheet || {};
|
|
var sheet = ikrpg.sheet;
|
|
|
|
var db2 = new PouchDB('characters.ikrpg');
|
|
|
|
var hero = ikrpg.cards.data;
|
|
|
|
listCharacters();
|
|
|
|
sheet.saveHero = function() {
|
|
ikrpg.cards.updateData();
|
|
hero = ikrpg.cards.data;
|
|
|
|
var _id = hero["hero-name"].replace(/["']/g, "");
|
|
|
|
db2.get(_id, function(error, doc) {
|
|
if(error) { // hero not in db yet
|
|
doc = hero;
|
|
doc["_id"] = _id;
|
|
db2.put(doc);
|
|
} else { // hero already in db
|
|
hero["_id"] = doc["_id"];
|
|
hero["_rev"] = doc["_rev"];
|
|
db2.put(hero);
|
|
}
|
|
listCharacters();
|
|
});
|
|
}
|
|
|
|
function listCharacters() {
|
|
$("#characters > tbody").remove();
|
|
|
|
$("#characters").append("<tbody>");
|
|
|
|
db2.allDocs({include_docs: true}, function(error, results) {
|
|
var rows = results.rows;
|
|
|
|
$.each(rows, function(index, row) {
|
|
var character = row.doc;
|
|
|
|
function appendTr() {
|
|
$("#characters > tbody").append("<tr>");
|
|
}
|
|
|
|
function appendTd() {
|
|
$("#characters > tbody > tr:last-of-type").append("<td>");
|
|
}
|
|
|
|
function lastTd() {
|
|
return $("#characters > tbody > tr:last-of-type > td:last-of-type");
|
|
}
|
|
|
|
appendTr();
|
|
appendTd();
|
|
lastTd().text(character["hero-name"]);
|
|
appendTd();
|
|
lastTd().text(character["archetype"]);
|
|
appendTd();
|
|
lastTd().text(character["race"]);
|
|
appendTd();
|
|
lastTd().text(character["careers"]);
|
|
appendTd();
|
|
lastTd().html("<a href=\"javascript:ikrpg.sheet.showCharacter('"+character["_id"]+"')\">Load</a>");
|
|
appendTd();
|
|
lastTd().html("<a href=\"javascript:ikrpg.sheet.deleteCharacter('"+character["_id"]+"', '"+character["_rev"]+"')\"><strong>Delete</strong></a>");
|
|
});
|
|
});
|
|
}
|
|
|
|
sheet.fill = function(error, character) {
|
|
if(!error) {
|
|
ikrpg.cards.data = $.extend(ikrpg.cards.data, character);
|
|
ikrpg.cards.init();
|
|
ikrpg.cards.switchWeapons();
|
|
ikrpg.cards.heroNameHack();
|
|
ikrpg.cards.setPortrait();
|
|
}
|
|
}
|
|
|
|
sheet.showCharacter = function(characterId) {
|
|
db2.get(characterId, sheet.fill);
|
|
}
|
|
|
|
sheet.deleteCharacter = function(characterId, characterRev) {
|
|
db2.remove(characterId, characterRev, function(error, code) {
|
|
listCharacters();
|
|
});
|
|
}
|
|
|
|
})();
|
|
|
|
</script> |