Merge pull request #7591 from nmbradley/nb-wfrp-v1.0.1

WFRP4E Official Sheet - v1.0.1
This commit is contained in:
Miguel Peres
2020-10-26 17:01:10 -03:00
committed by GitHub
15 changed files with 485 additions and 229 deletions
@@ -334,7 +334,7 @@ const wfrpDragAndDrop = ( () => {
let name = trait;
let damage = "";
let type = "Melee";
let type = "Weapon Skill";
let range = "Touch";
let attacks = "1";
@@ -343,7 +343,7 @@ const wfrpDragAndDrop = ( () => {
if (trait.match(/range/gi) && trait.match(/\(/)) {
[trait, range] = trait.split("(");
range = range.substr(0,range.length-1);
type = "Ranged";
type = "Ballistic Skill";
}
if (trait.match(/[0-9]+X/)) {
@@ -458,13 +458,13 @@ const wfrpDragAndDrop = ( () => {
const trait = compendium_pages;
if (trait.name.match(/(weapon|ranged|tentacle|bite|horn|tail|tongue)/gi)) {
if (trait.name.match(/(weapon|ranged|tentacle|bite|horn|tail|tongue|claw)/gi)) {
const attack = parseAttack(name, trait.data.Description);
updateAttrs = {...updateAttrs, ...attack};
} else {
} else if (trait) {
const repeating_id = generateRowID();
const row = `repeating_traits_${repeating_id}`;
@@ -86,7 +86,7 @@ const wfrpModule = ( () => {
"fencing",
"flail",
"parry",
"pole-arm",
"polearm",
"two-handed",
"blackpowder",
"bow",
@@ -381,26 +381,38 @@ const wfrpModule = ( () => {
// Characteristic Functions
const calculateCharacteristic = (characteristic) => {
getAttrs(["npc"], check => {
if (check["npc"] === "on") return;
const attrs = [
`${characteristic}_initial`,
`${characteristic}_advances`,
`${characteristic}_modifier`,
`${characteristic}_custom_mod`,
`${characteristic}_bonusmod`,
];
const attrs = [
`npc`,
`${characteristic}`,
`${characteristic}_initial`,
`${characteristic}_advances`,
`${characteristic}_modifier`,
`${characteristic}_custom_mod`,
`${characteristic}_bonusmod`,
];
getAttrs(attrs, values => {
const base = parseInt(values[`${characteristic}`]) || 0;
const initial = parseInt(values[`${characteristic}_initial`]) || 0;
const advances = parseInt(values[`${characteristic}_advances`]) || 0;
const modifier = parseInt(values[`${characteristic}_modifier`]) || 0;
const custom_mod = parseInt(values[`${characteristic}_custom_mod`]) || 0;
const bonusmod = parseInt(values[`${characteristic}_bonusmod`]) || 0;
if (values["npc"] === "on") {
getAttrs(attrs, values => {
const initial = parseInt(values[`${characteristic}_initial`]) || 0;
const advances = parseInt(values[`${characteristic}_advances`]) || 0;
const modifier = parseInt(values[`${characteristic}_modifier`]) || 0;
const custom_mod = parseInt(values[`${characteristic}_custom_mod`]) || 0;
const bonusmod = parseInt(values[`${characteristic}_bonusmod`]) || 0;
const updateAttrs = {};
const bonus = Math.floor(base / 10) + bonusmod;
updateAttrs[`${characteristic}_bonus`] = bonus;
setAttrs(updateAttrs);
return;
} else {
const current = initial + advances + modifier + custom_mod;
const bonus = Math.floor(current / 10) + bonusmod;
@@ -411,8 +423,8 @@ const wfrpModule = ( () => {
updateAttrs[`${characteristic}_bonus`] = bonus;
setAttrs(updateAttrs);
});
}
});
}
@@ -514,35 +526,41 @@ const wfrpModule = ( () => {
}
const calculateSpecialisation = (specialisation) => {
getAttrs(["npc"], check => {
if (check["npc"] === "on") return;
const attrs = [
`${specialisation}_characteristic`
];
getAttrs(attrs, values => {
const base = values[`${specialisation}_characteristic`];
const attrs = [
`${base}`,
`${specialisation}_advances`,
`${specialisation}_modifier`,
`${specialisation}_bonus`
`${specialisation}_characteristic`,
`npc`
];
getAttrs(attrs, values => {
const characteristic = parseInt(values[`${base}`]) || 0;
const advances = parseInt(values[`${specialisation}_advances`]) || 0;
const modifier = parseInt(values[`${specialisation}_modifier`]) || 0;
const bonus = parseInt(values[`${specialisation}_bonus`]) || 0;
const base = values[`${specialisation}_characteristic`];
const total = characteristic + advances + modifier + bonus;
const attrs = [
`${base}`,
`${specialisation}_advances`,
`${specialisation}_modifier`,
`${specialisation}_bonus`
];
const updateAttrs = {};
getAttrs(attrs, values => {
const characteristic = parseInt(values[`${base}`]) || 0;
const advances = parseInt(values[`${specialisation}_advances`]) || 0;
const modifier = parseInt(values[`${specialisation}_modifier`]) || 0;
const bonus = parseInt(values[`${specialisation}_bonus`]) || 0;
updateAttrs[`${specialisation}`] = total;
const total = characteristic + advances + modifier + bonus;
setAttrs(updateAttrs);
const updateAttrs = {};
updateAttrs[`${specialisation}`] = total;
setAttrs(updateAttrs);
});
});
});
}
@@ -1235,7 +1253,7 @@ const wfrpModule = ( () => {
}
const calculateMaxEncumbrance = () => {
const attrs = ["strength_bonus", "toughness_bonus", "encumbrance_bonus"];
const attrs = ["strength_bonus", "toughness_bonus", "encumbrance_bonus", "encumbrance_mod"];
getAttrs(attrs, values => {
const strength_bonus = parseInt(values["strength_bonus"]) || 0;
@@ -1297,10 +1315,10 @@ const wfrpModule = ( () => {
trappings_array.forEach(id => {
const enc = parseInt(values[`repeating_trappings_${id}_trappings_enc`]) || 0;
const amount = parseInt(values[`repeating_trappings_${id}_trappings_amount`]) || 1;
const worn = parseInt(values[`repeating_trappings_${id}_trappings_worn`]) || false;
const worn = values[`repeating_trappings_${id}_trappings_worn`] || false;
const inenc = values[`repeating_trappings_${id}_trappings_inenc`] || "0";
const total = (worn === "on") ? (enc -1) * amount : enc * amount;
const total = (worn === "on") ? (enc - 1) * amount : enc * amount;
if (inenc === "on") total_enc += total;
});
@@ -1476,21 +1494,48 @@ const wfrpModule = ( () => {
const request = [
`${repeating_id}_attack_type`,
`weapon_skill`,
`ballistic_skill`
"weapon_skill",
"ballistic_skill",
"basic",
"brawling",
"cavalry",
"fencing",
"flail",
"parry",
"polearm",
"two-handed",
"blackpowder",
"bow",
"crossbow",
"engineering",
"entangling",
"explosives",
"sling",
"throwing"
];
getAttrs(request, values => {
const {
[`${repeating_id}_attack_type`]:type,
weapon_skill,
ballistic_skill
} = values;
const type = values[`${repeating_id}_attack_type`];
if (type.toLowerCase() === "weapon skill") {
setAttrs({[`${repeating_id}_attack_target`]:weapon_skill});
} else {
setAttrs({[`${repeating_id}_attack_target`]:ballistic_skill});
if (type.toLowerCase() === "custom") {
setAttrs({[`${repeating_id}_attack_target`]:0});
} else {
const type_parsed = (!type.match(/\(/)) ? type.replace(/ /, "_")
.toLowerCase() :
type.split("(")[1]
.replace(/\)/g, "")
.replace(/ /, "_")
.toLowerCase();
const value = values[type_parsed];
const update = {};
update[`${repeating_id}_attack_target`] = value;
console.log(update)
setAttrs(update);
}
});
}
@@ -1500,7 +1545,23 @@ const wfrpModule = ( () => {
getSectionIDs("attacks", ids => {
const attrs = [
"weapon_skill",
"ballistic_skill"
"ballistic_skill",
"basic",
"brawling",
"cavalry",
"fencing",
"flail",
"parry",
"polearm",
"two-handed",
"blackpowder",
"bow",
"crossbow",
"engineering",
"entangling",
"explosives",
"sling",
"throwing"
];
for (const id of ids) {
@@ -1510,14 +1571,18 @@ const wfrpModule = ( () => {
getAttrs(attrs, values => {
const update = [];
const {weapon_skill, ballistic_skill} = values;
for (const id of ids) {
const type = values[`repeating_attacks_${id}_attack_type`].toLowerCase();
const type = values[`repeating_attacks_${id}_attack_type`].toLowerCase();
const type_parsed = (!type.match(/\(/)) ? type.replace(/ /, "_")
.toLowerCase() :
type.split("(")[1]
.replace(/\)/g, "")
.replace(/ /, "_")
.toLowerCase();
const target = `repeating_attacks_${id}_attack_target`;
if (type === "ranged") update[target] = ballistic_skill;
if (type === "melee") update[target] = weapon_skill;
if (type_parsed === "custom") return;
else update[target] = values[type_parsed];
}
setAttrs(update);
@@ -1649,7 +1714,10 @@ wfrpModule.wfrp.skills.forEach(skill => {
});
wfrpModule.wfrp.specialisations.forEach(specialisation => {
on(`change:${specialisation} change:${specialisation}_advances change:${specialisation}_bonus change:${specialisation}_characteristic`, eventInfo => {wfrpModule.calculateSpecialisation(specialisation)});
on(`change:${specialisation} change:${specialisation}_advances change:${specialisation}_bonus change:${specialisation}_characteristic`, eventInfo => {
wfrpModule.calculateSpecialisation(specialisation);
wfrpModule.cascadeNPCAttacks();
});
});
wfrpModule.wfrp.repeating_skills.forEach(section => {
@@ -425,7 +425,7 @@
"characteristic":"weapon skill",
"type":"basic",
"grouped":true,
"specialisations":["Basic","Brawling","Cavalry","Fencing","Flail","Parry","Pole-Arm","Two-Handed"],
"specialisations":["Basic","Brawling","Cavalry","Fencing","Flail","Parry","Polearm","Two-Handed"],
},
{
"name":"Navigation",
@@ -468,10 +468,12 @@
const ambitions = [
{
"name": "Short-term"
"name": "Short-term",
"attr": "short-personal"
},
{
"name": "Long-term"
"name": "Long-term",
"attr": "long-personal"
}
]
@@ -481,10 +483,12 @@
"field": "text"
},
{
"name": "Short-term"
"name": "Short-term",
"attr": "short-party"
},
{
"name": "Long-term"
"name": "Long-term",
"attr": "long-party"
},
{
"name": "Members"
@@ -1,6 +1,5 @@
mixin generic-textarea(name, box_type="flex")
mixin generic-textarea(name, box_type="flex", attr= name.toLowerCase().replace(/ /g,"_"))
-
const attr = name.toLowerCase().replace(/ /g,"_");
const box = (box_type === "flex") ? "wfrp-textarea" : `wfrp-textarea--grid${box_type}`;
div(class=box)
@@ -4,7 +4,7 @@ mixin career-level(level, first)
input(name=`attr_career_level_current`, type="hidden", value="1")
button(data-i18n="Switch", name=`act_newcareerlevel-${level}`, type="action")
span(data-i18n="Current" class=`wfrp-current_level--${level}`)
h2(data-i18n=`Level ${level}`)
h2(data-i18n=`Tier ${level}`)
.wfrp-settings__row--invert
.wfrp-settings__label(data-i18n=`Name`)
@@ -40,6 +40,22 @@ mixin npc-attack-row()
select.wfrp-settings__input(name=`attr_attack_type`)
option(data-i18n="Weapon Skill")
option(data-i18n="Ballistic Skill")
option(data-i18n="Melee (Basic)")
option(data-i18n="Melee (Brawling)")
option(data-i18n="Melee (Cavalry)")
option(data-i18n="Melee (Fencing)")
option(data-i18n="Melee (Flail)")
option(data-i18n="Melee (Parry)")
option(data-i18n="Melee (Polearm)")
option(data-i18n="Melee (Two-Handed)")
option(data-i18n="Ranged (Blackpowder)")
option(data-i18n="Ranged (Bow)")
option(data-i18n="Ranged (Crossbow)")
option(data-i18n="Ranged (Engineering)")
option(data-i18n="Ranged (Entangling)")
option(data-i18n="Ranged (Explosives)")
option(data-i18n="Ranged (Sling)")
option(data-i18n="Ranged (Throwing)")
option(data-i18n="Custom")
.wfrp-settings__row
@@ -39,14 +39,21 @@
return 1;
}
});
each skill in skill_list
-
const attr = skill.name.toLowerCase().replace(/ /g,"-");
console.log(attr);
if (skill.grouped !== true)
.wfrp-npcsettings__skill
.wfrp-npcsettings__label(data-i18n=skill.name)
input.wfrp-npcsettings__input(name=`attr_${attr}`, type="number")
if (skill.name === "Melee" || skill.name === "Ranged" || skill.name === "Channelling" || skill.name === "Language")
each specialism in skill.specialisations
.wfrp-npcsettings__skill
.wfrp-npcsettings__label(data-i18n=`${skill.name} (${specialism})`)
input.wfrp-npcsettings__input(name=`attr_${specialism}`, type="number")
h2(data-i18n="Settings")
.wfrp-npcsettings__settings
@@ -63,7 +63,6 @@ input(name="attr_setting_button_hide", type="hidden")
.wfrp-skilltable__cell(data-i18n="Adv.")
.wfrp-skilltable__cell--last(data-i18n="Total")
each skill in skills.basic
console.log(skill)
if skill.grouped === true
+skill-grouped(skill)
else
@@ -78,7 +77,6 @@ input(name="attr_setting_button_hide", type="hidden")
.wfrp-skilltable__cell(data-i18n="Adv.")
.wfrp-skilltable__cell--last(data-i18n="Total")
each skill in skills.advanced
console.log(skill)
if skill.grouped === true
+skill-grouped(skill)
else
@@ -122,15 +120,15 @@ input(name="attr_setting_button_hide", type="hidden")
.wfrp-ambitions.wfrp-panel.page__main
h1.wfrp-panel__header(data-i18n="Ambitions")
each ambition in ambitions
+generic-textarea(ambition.name, "1-25")
+generic-textarea(ambition.name, "1-25", ambition.attr)
.wfrp-party.wfrp-panel.page__main
h1.wfrp-panel__header(data-i18n="Party")
each ambition in party
if (ambition.field === "text")
+generic-field(ambition, "text", "1-25")
+generic-field(ambition, "text", "1-25", ambition.attr)
else
+generic-textarea(ambition.name, "1-25")
+generic-textarea(ambition.name, "1-25", ambition.attr)
.wfrp-careers.wfrp-panel.page__careers
input(name="attr_control_hide--characteristics", type="hidden")
@@ -74,7 +74,7 @@
});
[skills.basic[18], skills.advanced[2], skills.advanced[11]].forEach(skill => {
[skills.basic[18], skills.advanced[2], skills.advanced[5], skills.advanced[11]].forEach(skill => {
skill.specialisations.forEach(specialisation => {
const attr = specialisation.toLowerCase().replace(/ /g,"_");
@@ -3,7 +3,7 @@ include rolls.pug
include components/_component-index.pug
input(name="attr_sheet_version", type="hidden", value="1.0.0")
input(name="attr_sheet_version", type="hidden", value="1.0.1")
input(name="attr_npc", type="hidden", value="0")
input(name="attr_nav", type="hidden", value="main")
input(name="attr_difficulty_query", type="hidden", value="?{Difficulty|Average (+20), 20|Very Easy (+60), 60|Easy (+40), 40|Average (+20), 20|Challenging (0), 0|Difficult (-10), -10|Hard (-20), -20|Very Hard (-30), -30}")
@@ -83,7 +83,7 @@ $specialisations:
"fencing",
"flail",
"parry",
"pole-arm",
"polearm",
"two-handed",
"blackpowder",
"bow",
@@ -106,7 +106,7 @@
&__skill {
display: grid;
grid-template-columns: 1fr .25fr;
grid-template-columns: 1fr 1.5em;
}
&__settings {
@@ -104,7 +104,7 @@
"attr_Fencing":"attr_Fencing",
"attr_Flail":"attr_Flail",
"attr_Parry":"attr_Parry",
"attr_Pole-Arm":"attr_Pole-Arm",
"attr_Polearm":"attr_Polearm",
"attr_Two-Handed":"attr_Two-Handed",
"Navigation":"Navigation",
"Outdoor Survival":"Outdoor Survival",
@@ -197,7 +197,7 @@
"Basic":"Basic",
"Cavalry":"Cavalry",
"Flail":"Flail",
"Pole-Arm":"Pole-Arm",
"Polearm":"Polearm",
"Brawling":"Brawling",
"Fencing":"Fencing",
"Parry":"Parry",
@@ -254,10 +254,10 @@
"Notes":"Notes",
"Characteristic Advances":"Characteristic Advances",
"Current Career":"Current Career",
"Level 1":"Level 1",
"Level 2":"Level 2",
"Level 3":"Level 3",
"Level 4":"Level 4",
"Tier 1":"Tier 1",
"Tier 2":"Tier 2",
"Tier 3":"Tier 3",
"Tier 4":"Tier 4",
"Skill 1":"Skill 1",
"Skill 2":"Skill 2",
"Skill 3":"Skill 3",
@@ -341,5 +341,30 @@
"Show Trappings":"Show Trappings",
"Worn":"Worn",
"TB":"TB",
"Combat":"Combat"
"Combat":"Combat",
"Channelling (Aqshy)":"Channelling (Aqshy)",
"Channelling (Chamon)":"Channelling (Chamon)",
"Channelling (Dhar)":"Channelling (Dhar)",
"Channelling (Ghur)":"Channelling (Ghur)",
"Channelling (Ghyran)":"Channelling (Ghyran)",
"Channelling (Hysh)":"Channelling (Hysh)",
"Channelling (Shyish)":"Channelling (Shyish)",
"Channelling (Ulgu)":"Channelling (Ulgu)",
"Language (Magick)":"Language (Magick)",
"Melee (Basic)":"Melee (Basic)",
"Melee (Brawling)":"Melee (Brawling)",
"Melee (Cavalry)":"Melee (Cavalry)",
"Melee (Fencing)":"Melee (Fencing)",
"Melee (Flail)":"Melee (Flail)",
"Melee (Parry)":"Melee (Parry)",
"Melee (Polearm)":"Melee (Polearm)",
"Melee (Two-Handed)":"Melee (Two-Handed)",
"Ranged (Blackpowder)":"Ranged (Blackpowder)",
"Ranged (Bow)":"Ranged (Bow)",
"Ranged (Crossbow)":"Ranged (Crossbow)",
"Ranged (Engineering)":"Ranged (Engineering)",
"Ranged (Entangling)":"Ranged (Entangling)",
"Ranged (Explosives)":"Ranged (Explosives)",
"Ranged (Sling)":"Ranged (Sling)",
"Ranged (Throwing)":"Ranged (Throwing)"
}
File diff suppressed because one or more lines are too long
+276 -137
View File
@@ -1,5 +1,5 @@
<input name="attr_sheet_version" type="hidden" value="1.0.0"/>
<input name="attr_sheet_version" type="hidden" value="1.0.1"/>
<input name="attr_npc" type="hidden" value="0"/>
<input name="attr_nav" type="hidden" value="main"/>
<input name="attr_difficulty_query" type="hidden" value="?{Difficulty|Average (+20), 20|Very Easy (+60), 60|Easy (+40), 40|Average (+20), 20|Challenging (0), 0|Difficult (-10), -10|Hard (-20), -20|Very Hard (-30), -30}"/>
@@ -382,7 +382,6 @@
<div class="wfrp-skilltable__cell" data-i18n="Adv."></div>
<div class="wfrp-skilltable__cell--last" data-i18n="Total"></div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_art_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -442,7 +441,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_athletics_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -501,7 +499,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_bribery_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -560,7 +557,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_charm_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -619,7 +615,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_charm-animal_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -678,7 +673,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_climb_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -737,7 +731,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_consume-alcohol_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -796,7 +789,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_cool_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -855,7 +847,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_dodge_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -914,7 +905,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_drive_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -973,7 +963,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_endurance_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1032,7 +1021,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_entertain_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -1092,7 +1080,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_gamble_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1151,7 +1138,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_gossip_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1210,7 +1196,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_haggle_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1269,7 +1254,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_intimidate_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1328,7 +1312,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_intuition_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1387,7 +1370,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_leadership_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -1446,7 +1428,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_melee_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -1484,8 +1465,8 @@
<input class="wfrp-settings__checkbox" name="attr_parry_control" type="checkbox"/>
</div>
<div class="wfrp-settings__row">
<div class="wfrp-settings__label" data-i18n="Pole-Arm"></div>
<input class="wfrp-settings__checkbox" name="attr_pole-arm_control" type="checkbox"/>
<div class="wfrp-settings__label" data-i18n="Polearm"></div>
<input class="wfrp-settings__checkbox" name="attr_polearm_control" type="checkbox"/>
</div>
<div class="wfrp-settings__row">
<div class="wfrp-settings__label" data-i18n="Two-Handed"></div>
@@ -1957,20 +1938,20 @@
</div>
</div>
<div class="specialisation_wrapper">
<input name="attr_pole-arm_settings" type="hidden"/>
<input name="attr_pole-arm_control" type="hidden"/>
<div class="wfrp-skilltable__row--specialisation control__hide--pole-arm">
<input name="attr_pole-arm_characteristic" type="hidden" value="weapon_skill"/>
<input name="attr_polearm_settings" type="hidden"/>
<input name="attr_polearm_control" type="hidden"/>
<div class="wfrp-skilltable__row--specialisation control__hide--polearm">
<input name="attr_polearm_characteristic" type="hidden" value="weapon_skill"/>
<div class="wfrp-skilltable__cell--settingstoggle">
<label class="wfrp-displaytoggle">
<input class="wfrp-displaytoggle__hide" name="attr_pole-arm_settings" type="checkbox" value="1"/><span class="wfrp-displaytoggle__span">y</span>
<input class="wfrp-displaytoggle__hide" name="attr_polearm_settings" type="checkbox" value="1"/><span class="wfrp-displaytoggle__span">y</span>
</label>
</div>
<div class="wfrp-skilltable__cell">
<button data-i18n="Pole-Arm" name="roll_pole-arm" type="roll" value="@{roll_whisper} &amp;{template:wfrp} {{name=@{character_name}}} {{roll=[[1d100cs&lt;@{roll_cs}cf&gt;@{roll_cf}]]}} {{difficulty=[[@{difficulty_query}]]}} {{bonus=[[@{roll_query}]]}} @{roll_slbonus} {{target=[[@{pole-arm}+@{difficulty_query}+@{roll_query}]]}} {{roll_name=Melee - Pole-Arm}} {{roll_type=Specialisation}} {{roll_notes=@{pole-arm_notes}}} {{name=@{character_name}}}"></button>
<button data-i18n="Polearm" name="roll_polearm" type="roll" value="@{roll_whisper} &amp;{template:wfrp} {{name=@{character_name}}} {{roll=[[1d100cs&lt;@{roll_cs}cf&gt;@{roll_cf}]]}} {{difficulty=[[@{difficulty_query}]]}} {{bonus=[[@{roll_query}]]}} @{roll_slbonus} {{target=[[@{polearm}+@{difficulty_query}+@{roll_query}]]}} {{roll_name=Melee - Polearm}} {{roll_type=Specialisation}} {{roll_notes=@{polearm_notes}}} {{name=@{character_name}}}"></button>
</div>
<div class="wfrp-skilltable__cell">
<select name="attr_pole-arm_characteristic">
<select name="attr_polearm_characteristic">
<option selected="weapon skill" data-i18n="WS" value="weapon_skill"></option>
<option data-i18n="BS" value="ballistic_skill"></option>
<option data-i18n="S" value="strength"></option>
@@ -2014,21 +1995,21 @@
<input name="attr_fellowship" type="hidden" value="0"/>
</div>
<div class="wfrp-skilltable__cell">
<input name="attr_pole-arm_advances" type="hidden" value="0"/><span class="display" name="attr_pole-arm_advances"></span>
<input name="attr_polearm_advances" type="hidden" value="0"/><span class="display" name="attr_polearm_advances"></span>
</div>
<div class="wfrp-skilltable__cell--last wfrp-skilltable__cell--highlight"><span class="display" name="attr_pole-arm"></span></div>
<div class="wfrp-skilltable_row wfrp-settings control__hide--pole-arm_settings">
<div class="wfrp-skilltable__cell--last wfrp-skilltable__cell--highlight"><span class="display" name="attr_polearm"></span></div>
<div class="wfrp-skilltable_row wfrp-settings control__hide--polearm_settings">
<div class="wfrp-settings__row">
<div class="wfrp-settings__label" data-i18n="Modifier"> </div><span class="display" name="attr_pole-arm_modifier"></span>
<input name="attr_pole-arm_modifier" type="hidden" value="0"/>
<div class="wfrp-settings__label" data-i18n="Modifier"> </div><span class="display" name="attr_polearm_modifier"></span>
<input name="attr_polearm_modifier" type="hidden" value="0"/>
</div>
<div class="wfrp-settings__row">
<div class="wfrp-settings__label" data-i18n="Bonus"> </div>
<input class="wfrp-settings__input" name="attr_pole-arm_bonus" type="text"/>
<input class="wfrp-settings__input" name="attr_polearm_bonus" type="text"/>
</div>
<div class="wfrp-settings__row--span">
<div class="wfrp-settings__label" data-i18n="Roll Notes"> </div>
<input class="wfrp-settings__input" name="attr_pole-arm_notes" type="text"/>
<input class="wfrp-settings__input" name="attr_polearm_notes" type="text"/>
</div>
</div>
</div>
@@ -2110,7 +2091,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_navigation_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -2169,7 +2149,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_outdoor-survival_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -2228,7 +2207,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_perception_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -2287,7 +2265,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_ride_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -2347,7 +2324,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_row_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -2406,7 +2382,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_stealth_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -2477,7 +2452,6 @@
<div class="wfrp-skilltable__cell" data-i18n="Adv."></div>
<div class="wfrp-skilltable__cell--last" data-i18n="Total"></div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_animal-care_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -2536,7 +2510,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_animal-training_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -2596,7 +2569,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_channelling_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -3260,7 +3232,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_evaluate_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -3319,7 +3290,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_heal_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -3378,7 +3348,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_language_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -3409,7 +3378,7 @@
</label>
</div>
<div class="wfrp-skilltable__cell">
<button data-i18n="Magick" name="roll_magick" type="roll"></button>
<button data-i18n="Magick" name="roll_magick" type="roll" value="@{roll_whisper} &amp;{template:wfrp} {{name=@{character_name}}} {{roll=[[1d100cs&lt;@{roll_cs}cf&gt;@{roll_cf}]]}} {{difficulty=[[@{difficulty_query}]]}} {{bonus=[[@{roll_query}]]}} @{roll_slbonus} {{target=[[@{magick}+@{difficulty_query}+@{roll_query}]]}} {{roll_name=Language - Magick}} {{roll_type=Specialisation}} {{roll_notes=@{magick_notes}}} {{name=@{character_name}}}"></button>
</div>
<div class="wfrp-skilltable__cell">
<select name="attr_magick_characteristic">
@@ -3525,7 +3494,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_lore_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -3585,7 +3553,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_perform_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -3645,7 +3612,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_pick-lock_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -3704,7 +3670,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_play_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -3764,7 +3729,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_pray_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -3823,7 +3787,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_ranged_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -4487,7 +4450,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_research_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -4546,7 +4508,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_sail_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -4606,7 +4567,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_secret-signs_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -4666,7 +4626,6 @@
</div>
</div>
</fieldset>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_set-trap_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -4725,7 +4684,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_sleight-of-hand_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -4784,7 +4742,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_swim_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -4843,7 +4800,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_track_settings" type="hidden"/>
<div class="wfrp-skilltable__row">
@@ -4902,7 +4858,6 @@
</div>
</div>
</div>
<console class="log" skill="skill"></console>
<div class="wfrp-skillwrapper">
<input name="attr_trade_settings" type="hidden"/>
<div class="wfrp-skilltable__row--grouped">
@@ -5217,10 +5172,10 @@
<div class="wfrp-ambitions wfrp-panel page__main">
<h1 class="wfrp-panel__header" data-i18n="Ambitions"></h1>
<div class="wfrp-textarea--grid1-25"><span class="wfrp-textarea__header" data-i18n="Short-term"></span>
<textarea class="wfrp-textarea__textarea" name="attr_short-term"></textarea>
<textarea class="wfrp-textarea__textarea" name="attr_short-personal"></textarea>
</div>
<div class="wfrp-textarea--grid1-25"><span class="wfrp-textarea__header" data-i18n="Long-term"></span>
<textarea class="wfrp-textarea__textarea" name="attr_long-term"></textarea>
<textarea class="wfrp-textarea__textarea" name="attr_long-personal"></textarea>
</div>
</div>
<div class="wfrp-party wfrp-panel page__main">
@@ -5229,10 +5184,10 @@
<input class="wfrp-field__input" name="attr_party_name" type="text"/>
</div>
<div class="wfrp-textarea--grid1-25"><span class="wfrp-textarea__header" data-i18n="Short-term"></span>
<textarea class="wfrp-textarea__textarea" name="attr_short-term"></textarea>
<textarea class="wfrp-textarea__textarea" name="attr_short-party"></textarea>
</div>
<div class="wfrp-textarea--grid1-25"><span class="wfrp-textarea__header" data-i18n="Long-term"></span>
<textarea class="wfrp-textarea__textarea" name="attr_long-term"></textarea>
<textarea class="wfrp-textarea__textarea" name="attr_long-party"></textarea>
</div>
<div class="wfrp-textarea--grid1-25"><span class="wfrp-textarea__header" data-i18n="Members"></span>
<textarea class="wfrp-textarea__textarea" name="attr_members"></textarea>
@@ -5351,7 +5306,7 @@
<input name="attr_career_level_current" type="hidden" value="1"/>
<button data-i18n="Switch" name="act_newcareerlevel-1" type="action"></button><span class="wfrp-current_level--1" data-i18n="Current"> </span>
</div>
<h2 data-i18n="Level 1"> </h2>
<h2 data-i18n="Tier 1"> </h2>
</div>
<div class="wfrp-settings__row--invert">
<div class="wfrp-settings__label" data-i18n="Name"></div>
@@ -5461,7 +5416,7 @@
<input name="attr_career_level_current" type="hidden" value="1"/>
<button data-i18n="Switch" name="act_newcareerlevel-1" type="action"></button><span class="wfrp-current_level--1" data-i18n="Current"> </span>
</div>
<h2 data-i18n="Level 1"> </h2>
<h2 data-i18n="Tier 1"> </h2>
</div>
<div class="wfrp-settings__row--invert">
<div class="wfrp-settings__label" data-i18n="Name"></div>
@@ -5554,7 +5509,7 @@
<input name="attr_career_level_current" type="hidden" value="1"/>
<button data-i18n="Switch" name="act_newcareerlevel-2" type="action"></button><span class="wfrp-current_level--2" data-i18n="Current"> </span>
</div>
<h2 data-i18n="Level 2"> </h2>
<h2 data-i18n="Tier 2"> </h2>
</div>
<div class="wfrp-settings__row--invert">
<div class="wfrp-settings__label" data-i18n="Name"></div>
@@ -5647,7 +5602,7 @@
<input name="attr_career_level_current" type="hidden" value="1"/>
<button data-i18n="Switch" name="act_newcareerlevel-3" type="action"></button><span class="wfrp-current_level--3" data-i18n="Current"> </span>
</div>
<h2 data-i18n="Level 3"> </h2>
<h2 data-i18n="Tier 3"> </h2>
</div>
<div class="wfrp-settings__row--invert">
<div class="wfrp-settings__label" data-i18n="Name"></div>
@@ -5740,7 +5695,7 @@
<input name="attr_career_level_current" type="hidden" value="1"/>
<button data-i18n="Switch" name="act_newcareerlevel-4" type="action"></button><span class="wfrp-current_level--4" data-i18n="Current"> </span>
</div>
<h2 data-i18n="Level 4"> </h2>
<h2 data-i18n="Tier 4"> </h2>
</div>
<div class="wfrp-settings__row--invert">
<div class="wfrp-settings__label" data-i18n="Name"></div>
@@ -6215,7 +6170,7 @@
<option data-i18n="Fencing"></option>
<option data-i18n="Flail"></option>
<option data-i18n="Parry"></option>
<option data-i18n="Pole-Arm"></option>
<option data-i18n="Polearm"></option>
<option data-i18n="Two-Handed"></option>
<option data-i18n="Blackpowder"></option>
<option data-i18n="Bow"></option>
@@ -6634,6 +6589,38 @@
<div class="wfrp-npcsettings__label" data-i18n="Bribery"></div>
<input class="wfrp-npcsettings__input" name="attr_bribery" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Aqshy)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Aqshy" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Chamon)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Chamon" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Dhar)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Dhar" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Ghur)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Ghur" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Ghyran)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Ghyran" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Hysh)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Hysh" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Shyish)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Shyish" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Channelling (Ulgu)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Ulgu" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Charm"></div>
<input class="wfrp-npcsettings__input" name="attr_charm" type="number"/>
@@ -6694,10 +6681,46 @@
<div class="wfrp-npcsettings__label" data-i18n="Intuition"></div>
<input class="wfrp-npcsettings__input" name="attr_intuition" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Language (Magick)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Magick" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Leadership"></div>
<input class="wfrp-npcsettings__input" name="attr_leadership" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Basic)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Basic" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Brawling)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Brawling" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Cavalry)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Cavalry" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Fencing)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Fencing" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Flail)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Flail" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Parry)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Parry" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Polearm)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Polearm" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Melee (Two-Handed)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Two-Handed" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Navigation"></div>
<input class="wfrp-npcsettings__input" name="attr_navigation" type="number"/>
@@ -6718,6 +6741,38 @@
<div class="wfrp-npcsettings__label" data-i18n="Pray"></div>
<input class="wfrp-npcsettings__input" name="attr_pray" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Blackpowder)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Blackpowder" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Bow)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Bow" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Crossbow)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Crossbow" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Engineering)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Engineering" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Entangling)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Entangling" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Explosives)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Explosives" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Sling)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Sling" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Ranged (Throwing)"> </div>
<input class="wfrp-npcsettings__input" name="attr_Throwing" type="number"/>
</div>
<div class="wfrp-npcsettings__skill">
<div class="wfrp-npcsettings__label" data-i18n="Research"></div>
<input class="wfrp-npcsettings__input" name="attr_research" type="number"/>
@@ -7121,6 +7176,22 @@
<select class="wfrp-settings__input" name="attr_attack_type">
<option data-i18n="Weapon Skill"></option>
<option data-i18n="Ballistic Skill"></option>
<option data-i18n="Melee (Basic)"></option>
<option data-i18n="Melee (Brawling)"></option>
<option data-i18n="Melee (Cavalry)"></option>
<option data-i18n="Melee (Fencing)"></option>
<option data-i18n="Melee (Flail)"></option>
<option data-i18n="Melee (Parry)"></option>
<option data-i18n="Melee (Polearm)"></option>
<option data-i18n="Melee (Two-Handed)"></option>
<option data-i18n="Ranged (Blackpowder)"></option>
<option data-i18n="Ranged (Bow)"></option>
<option data-i18n="Ranged (Crossbow)"></option>
<option data-i18n="Ranged (Engineering)"></option>
<option data-i18n="Ranged (Entangling)"></option>
<option data-i18n="Ranged (Explosives)"></option>
<option data-i18n="Ranged (Sling)"></option>
<option data-i18n="Ranged (Throwing)"></option>
<option data-i18n="Custom"></option>
</select>
</div>
@@ -8398,7 +8469,7 @@
"fencing",
"flail",
"parry",
"pole-arm",
"polearm",
"two-handed",
"blackpowder",
"bow",
@@ -8693,26 +8764,38 @@
// Characteristic Functions
const calculateCharacteristic = (characteristic) => {
getAttrs(["npc"], check => {
if (check["npc"] === "on") return;
const attrs = [
`${characteristic}_initial`,
`${characteristic}_advances`,
`${characteristic}_modifier`,
`${characteristic}_custom_mod`,
`${characteristic}_bonusmod`,
];
const attrs = [
`npc`,
`${characteristic}`,
`${characteristic}_initial`,
`${characteristic}_advances`,
`${characteristic}_modifier`,
`${characteristic}_custom_mod`,
`${characteristic}_bonusmod`,
];
getAttrs(attrs, values => {
const base = parseInt(values[`${characteristic}`]) || 0;
const initial = parseInt(values[`${characteristic}_initial`]) || 0;
const advances = parseInt(values[`${characteristic}_advances`]) || 0;
const modifier = parseInt(values[`${characteristic}_modifier`]) || 0;
const custom_mod = parseInt(values[`${characteristic}_custom_mod`]) || 0;
const bonusmod = parseInt(values[`${characteristic}_bonusmod`]) || 0;
if (values["npc"] === "on") {
getAttrs(attrs, values => {
const initial = parseInt(values[`${characteristic}_initial`]) || 0;
const advances = parseInt(values[`${characteristic}_advances`]) || 0;
const modifier = parseInt(values[`${characteristic}_modifier`]) || 0;
const custom_mod = parseInt(values[`${characteristic}_custom_mod`]) || 0;
const bonusmod = parseInt(values[`${characteristic}_bonusmod`]) || 0;
const updateAttrs = {};
const bonus = Math.floor(base / 10) + bonusmod;
updateAttrs[`${characteristic}_bonus`] = bonus;
setAttrs(updateAttrs);
return;
} else {
const current = initial + advances + modifier + custom_mod;
const bonus = Math.floor(current / 10) + bonusmod;
@@ -8723,8 +8806,8 @@
updateAttrs[`${characteristic}_bonus`] = bonus;
setAttrs(updateAttrs);
});
}
});
}
@@ -8826,35 +8909,41 @@
}
const calculateSpecialisation = (specialisation) => {
getAttrs(["npc"], check => {
if (check["npc"] === "on") return;
const attrs = [
`${specialisation}_characteristic`
];
getAttrs(attrs, values => {
const base = values[`${specialisation}_characteristic`];
const attrs = [
`${base}`,
`${specialisation}_advances`,
`${specialisation}_modifier`,
`${specialisation}_bonus`
`${specialisation}_characteristic`,
`npc`
];
getAttrs(attrs, values => {
const characteristic = parseInt(values[`${base}`]) || 0;
const advances = parseInt(values[`${specialisation}_advances`]) || 0;
const modifier = parseInt(values[`${specialisation}_modifier`]) || 0;
const bonus = parseInt(values[`${specialisation}_bonus`]) || 0;
const base = values[`${specialisation}_characteristic`];
const total = characteristic + advances + modifier + bonus;
const attrs = [
`${base}`,
`${specialisation}_advances`,
`${specialisation}_modifier`,
`${specialisation}_bonus`
];
const updateAttrs = {};
getAttrs(attrs, values => {
const characteristic = parseInt(values[`${base}`]) || 0;
const advances = parseInt(values[`${specialisation}_advances`]) || 0;
const modifier = parseInt(values[`${specialisation}_modifier`]) || 0;
const bonus = parseInt(values[`${specialisation}_bonus`]) || 0;
updateAttrs[`${specialisation}`] = total;
const total = characteristic + advances + modifier + bonus;
setAttrs(updateAttrs);
const updateAttrs = {};
updateAttrs[`${specialisation}`] = total;
setAttrs(updateAttrs);
});
});
});
}
@@ -9547,7 +9636,7 @@
}
const calculateMaxEncumbrance = () => {
const attrs = ["strength_bonus", "toughness_bonus", "encumbrance_bonus"];
const attrs = ["strength_bonus", "toughness_bonus", "encumbrance_bonus", "encumbrance_mod"];
getAttrs(attrs, values => {
const strength_bonus = parseInt(values["strength_bonus"]) || 0;
@@ -9609,10 +9698,10 @@
trappings_array.forEach(id => {
const enc = parseInt(values[`repeating_trappings_${id}_trappings_enc`]) || 0;
const amount = parseInt(values[`repeating_trappings_${id}_trappings_amount`]) || 1;
const worn = parseInt(values[`repeating_trappings_${id}_trappings_worn`]) || false;
const worn = values[`repeating_trappings_${id}_trappings_worn`] || false;
const inenc = values[`repeating_trappings_${id}_trappings_inenc`] || "0";
const total = (worn === "on") ? (enc -1) * amount : enc * amount;
const total = (worn === "on") ? (enc - 1) * amount : enc * amount;
if (inenc === "on") total_enc += total;
});
@@ -9788,21 +9877,48 @@
const request = [
`${repeating_id}_attack_type`,
`weapon_skill`,
`ballistic_skill`
"weapon_skill",
"ballistic_skill",
"basic",
"brawling",
"cavalry",
"fencing",
"flail",
"parry",
"polearm",
"two-handed",
"blackpowder",
"bow",
"crossbow",
"engineering",
"entangling",
"explosives",
"sling",
"throwing"
];
getAttrs(request, values => {
const {
[`${repeating_id}_attack_type`]:type,
weapon_skill,
ballistic_skill
} = values;
const type = values[`${repeating_id}_attack_type`];
if (type.toLowerCase() === "weapon skill") {
setAttrs({[`${repeating_id}_attack_target`]:weapon_skill});
} else {
setAttrs({[`${repeating_id}_attack_target`]:ballistic_skill});
if (type.toLowerCase() === "custom") {
setAttrs({[`${repeating_id}_attack_target`]:0});
} else {
const type_parsed = (!type.match(/\(/)) ? type.replace(/ /, "_")
.toLowerCase() :
type.split("(")[1]
.replace(/\)/g, "")
.replace(/ /, "_")
.toLowerCase();
const value = values[type_parsed];
const update = {};
update[`${repeating_id}_attack_target`] = value;
console.log(update)
setAttrs(update);
}
});
}
@@ -9812,7 +9928,23 @@
getSectionIDs("attacks", ids => {
const attrs = [
"weapon_skill",
"ballistic_skill"
"ballistic_skill",
"basic",
"brawling",
"cavalry",
"fencing",
"flail",
"parry",
"polearm",
"two-handed",
"blackpowder",
"bow",
"crossbow",
"engineering",
"entangling",
"explosives",
"sling",
"throwing"
];
for (const id of ids) {
@@ -9822,14 +9954,18 @@
getAttrs(attrs, values => {
const update = [];
const {weapon_skill, ballistic_skill} = values;
for (const id of ids) {
const type = values[`repeating_attacks_${id}_attack_type`].toLowerCase();
const type = values[`repeating_attacks_${id}_attack_type`].toLowerCase();
const type_parsed = (!type.match(/\(/)) ? type.replace(/ /, "_")
.toLowerCase() :
type.split("(")[1]
.replace(/\)/g, "")
.replace(/ /, "_")
.toLowerCase();
const target = `repeating_attacks_${id}_attack_target`;
if (type === "ranged") update[target] = ballistic_skill;
if (type === "melee") update[target] = weapon_skill;
if (type_parsed === "custom") return;
else update[target] = values[type_parsed];
}
setAttrs(update);
@@ -9961,7 +10097,10 @@ wfrpModule.wfrp.skills.forEach(skill => {
});
wfrpModule.wfrp.specialisations.forEach(specialisation => {
on(`change:${specialisation} change:${specialisation}_advances change:${specialisation}_bonus change:${specialisation}_characteristic`, eventInfo => {wfrpModule.calculateSpecialisation(specialisation)});
on(`change:${specialisation} change:${specialisation}_advances change:${specialisation}_bonus change:${specialisation}_characteristic`, eventInfo => {
wfrpModule.calculateSpecialisation(specialisation);
wfrpModule.cascadeNPCAttacks();
});
});
wfrpModule.wfrp.repeating_skills.forEach(section => {
@@ -10404,7 +10543,7 @@ const wfrpDragAndDrop = ( () => {
let name = trait;
let damage = "";
let type = "Melee";
let type = "Weapon Skill";
let range = "Touch";
let attacks = "1";
@@ -10413,7 +10552,7 @@ const wfrpDragAndDrop = ( () => {
if (trait.match(/range/gi) && trait.match(/\(/)) {
[trait, range] = trait.split("(");
range = range.substr(0,range.length-1);
type = "Ranged";
type = "Ballistic Skill";
}
if (trait.match(/[0-9]+X/)) {
@@ -10528,13 +10667,13 @@ const wfrpDragAndDrop = ( () => {
const trait = compendium_pages;
if (trait.name.match(/(weapon|ranged|tentacle|bite|horn|tail|tongue)/gi)) {
if (trait.name.match(/(weapon|ranged|tentacle|bite|horn|tail|tongue|claw)/gi)) {
const attack = parseAttack(name, trait.data.Description);
updateAttrs = {...updateAttrs, ...attack};
} else {
} else if (trait) {
const repeating_id = generateRowID();
const row = `repeating_traits_${repeating_id}`;