mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
translation updates
This commit is contained in:
@@ -319,7 +319,7 @@ var ConanAPI = ConanAPI || (function()
|
||||
let expertise = findInArray(a,"expertise",0);
|
||||
let skilled_roll_index = findInArray(a,"successes1",0);
|
||||
let unskilled_roll_index = findInArray(a,"successes2",0);
|
||||
let num_dice_index = findInArray(a,"num_dice",0);
|
||||
let show_tn = findInArray(aclone,"show_tn",0);
|
||||
|
||||
//get these actual roll values from the converted clone
|
||||
let expertise_chk = findInArray(aclone,"expertise_chk",0);
|
||||
@@ -328,9 +328,8 @@ var ConanAPI = ConanAPI || (function()
|
||||
let encumbered_chk = findInArray(aclone,"encumbered",0);
|
||||
let num_dice = findInArray(aclone,"num_dice",0);
|
||||
let target_number = findInArray(aclone,"target_number",0);
|
||||
let show_tn = findInArray(aclone,"show_tn",0);
|
||||
let bk_nbr = findInArray(aclone,"bk_nbr",0);
|
||||
let api_chk = findInArray(aclone,"api_chk",0);
|
||||
let bk_nbr = findInArray(aclone,"bk_nbr",3);
|
||||
let api_chk = findInArray(aclone,"api_chk",1);
|
||||
|
||||
let fail_count = libInline.getDice(msg.inlinerolls[0], 'fumble').length;
|
||||
let crit_count = libInline.getDice(msg.inlinerolls[0], 'crit').length;
|
||||
@@ -345,13 +344,17 @@ var ConanAPI = ConanAPI || (function()
|
||||
|
||||
total_successes += crit_count;
|
||||
|
||||
let roll_msg = "";
|
||||
let roll_msg = "&{template:skillapi} {{skill_name="+skill_name+"}} {{character_name="+character_name+"}} {{successes1="+libInline.getRollTip(msg.inlinerolls[skilled_roll_index])+"}}{{successes2="+libInline.getRollTip(msg.inlinerolls[unskilled_roll_index])+"}}{{num_dice="+num_dice+"}} {{target_number="+target_number+"}}{{expertise_chk=[["+expertise_chk+"]]}}{{expertise="+expertise+"}}{{crit_chk=[["+crit_count+"]]}}{{fail_chk=[["+fail_count+"]]}}{{crit_count="+crit_count+"}}{{fail_count="+fail_count+"}}{{total_successes="+total_successes+"}}{{api_chk=[[1]]}}{{bk_nbr=[["+bk_nbr+"]]}}";
|
||||
|
||||
if (show_tn > 0)
|
||||
roll_msg += "{{show_tn="+show_tn+"}}";
|
||||
|
||||
if (trauma_chk > -1)
|
||||
//tramuma based roll
|
||||
roll_msg = "&{template:skillapi} {{skill_name="+skill_name+"}} {{character_name="+character_name+"}} {{successes1="+libInline.getRollTip(msg.inlinerolls[skilled_roll_index])+"}} {{successes2="+libInline.getRollTip(msg.inlinerolls[unskilled_roll_index])+"}}{{num_dice="+num_dice+"}} {{target_number="+target_number+"}}{{trauma_chk=[["+trauma_chk+"]]}}{{trauma="+trauma+"}}{{trauma_treated="+trauma_treated+"}}{{expertise_chk=[["+expertise_chk+"]]}}{{expertise="+expertise+"}}{{crit_chk=[["+crit_count+"]]}}{{fail_chk=[["+fail_count+"]]}}{{crit_count="+crit_count+"}}{{fail_count="+fail_count+"}}{{total_successes="+total_successes+"}}{{show_tn=[["+show_tn+"]]}}{{api_chk=[[1]]}}{{bk_nbr=[["+bk_nbr+"]]}}";
|
||||
roll_msg += "{{trauma_chk=[["+trauma_chk+"]]}}{{trauma="+trauma+"}}{{trauma_treated="+trauma_treated+"}}";
|
||||
else
|
||||
//physcical based roll
|
||||
roll_msg = "&{template:skillapi} {{skill_name="+skill_name+"}} {{character_name="+character_name+"}} {{successes1="+libInline.getRollTip(msg.inlinerolls[skilled_roll_index])+"}} {{successes2="+libInline.getRollTip(msg.inlinerolls[unskilled_roll_index])+"}}{{num_dice="+num_dice+"}} {{target_number="+target_number+"}}{{wounds_chk=[["+wounds_chk+"]]}}{{wounds="+wounds+"}}{{wounds_treated="+wounds_treated+"}}{{expertise_chk=[["+expertise_chk+"]]}}{{expertise="+expertise+"}}{{encumbered=[["+encumbered_chk+"]]}}{{crit_chk=[["+crit_count+"]]}}{{fail_chk=[["+fail_count+"]]}}{{crit_count="+crit_count+"}}{{fail_count="+fail_count+"}}{{total_successes="+total_successes+"}}{{show_tn=[["+show_tn+"]]}}{{api_chk=[[1]]}}{{bk_nbr=[["+bk_nbr+"]]}}";
|
||||
roll_msg += "{{wounds_chk=[["+wounds_chk+"]]}}{{wounds="+wounds+"}}{{wounds_treated="+wounds_treated+"}}{{encumbered=[["+encumbered_chk+"]]}}";
|
||||
|
||||
if (api_chk > 0) //only sending to skillapi template if chk value greater than zero
|
||||
sendChat(msg.who, roll_msg);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,332 +0,0 @@
|
||||
/*
|
||||
=========================================================
|
||||
Name : libInline
|
||||
GitHub : https://github.com/TimRohr22/Cauldron/tree/master/libInline
|
||||
Roll20 Contact : timmaugh & The Aaron
|
||||
Version : 1.0.3
|
||||
Last Update : 5/10/2021
|
||||
=========================================================
|
||||
*/
|
||||
var API_Meta = API_Meta || {};
|
||||
API_Meta.libInline = { offset: Number.MAX_SAFE_INTEGER, lineCount: -1 };
|
||||
{
|
||||
try { throw new Error(''); } catch (e) { API_Meta.libInline.offset = (parseInt(e.stack.split(/\n/)[1].replace(/^.*:(\d+):.*$/, '$1'), 10) - (13)); }
|
||||
}
|
||||
|
||||
const libInline = (() => {
|
||||
// ==================================================
|
||||
// VERSION
|
||||
// ==================================================
|
||||
const apiproject = 'libInline';
|
||||
API_Meta[apiproject].version = '1.0.3';
|
||||
const vd = new Date(1620699540738);
|
||||
const versionInfo = () => {
|
||||
log(`\u0166\u0166 ${apiproject} v${API_Meta[apiproject].version}, ${vd.getFullYear()}/${vd.getMonth() + 1}/${vd.getDate()} \u0166\u0166 -- offset ${API_Meta[apiproject].offset}`);
|
||||
return;
|
||||
};
|
||||
const logsig = () => {
|
||||
// initialize shared namespace for all signed projects, if needed
|
||||
state.torii = state.torii || {};
|
||||
// initialize siglogged check, if needed
|
||||
state.torii.siglogged = state.torii.siglogged || false;
|
||||
state.torii.sigtime = state.torii.sigtime || Date.now() - 3001;
|
||||
if (!state.torii.siglogged || Date.now() - state.torii.sigtime > 3000) {
|
||||
const logsig = '\n' +
|
||||
' _____________________________________________ ' + '\n' +
|
||||
' )_________________________________________( ' + '\n' +
|
||||
' )_____________________________________( ' + '\n' +
|
||||
' ___| |_______________| |___ ' + '\n' +
|
||||
' |___ _______________ ___| ' + '\n' +
|
||||
' | | | | ' + '\n' +
|
||||
' | | | | ' + '\n' +
|
||||
' | | | | ' + '\n' +
|
||||
' | | | | ' + '\n' +
|
||||
' | | | | ' + '\n' +
|
||||
'______________|_|_______________|_|_______________' + '\n' +
|
||||
' ' + '\n';
|
||||
log(`${logsig}`);
|
||||
state.torii.siglogged = true;
|
||||
state.torii.sigtime = Date.now();
|
||||
}
|
||||
return;
|
||||
};
|
||||
// ==================================================
|
||||
// MESSAGING / CHAT REPORTING
|
||||
// ==================================================
|
||||
const HE = (() => {
|
||||
const esRE = (s) => s.replace(/(\\|\/|\[|\]|\(|\)|\{|\}|\?|\+|\*|\||\.|\^|\$)/g, '\\$1');
|
||||
const e = (s) => `&${s};`;
|
||||
const entities = {
|
||||
'<': e('lt'),
|
||||
'>': e('gt'),
|
||||
"'": e('#39'),
|
||||
'@': e('#64'),
|
||||
'{': e('#123'),
|
||||
'|': e('#124'),
|
||||
'}': e('#125'),
|
||||
'[': e('#91'),
|
||||
']': e('#93'),
|
||||
'"': e('quot'),
|
||||
'*': e('#42')
|
||||
};
|
||||
const re = new RegExp(`(${Object.keys(entities).map(esRE).join('|')})`, 'g');
|
||||
return (s) => s.replace(re, (c) => (entities[c] || c));
|
||||
})();
|
||||
|
||||
// ==================================================
|
||||
// PARSING OPERATIONS
|
||||
// ==================================================
|
||||
|
||||
const conditionalPluck = (array, key, cobj = {}) => {
|
||||
// test array of objects to return a given property of each object if all conditions are met
|
||||
// cobj properties are functions testing that property (k) in the evaluated object (o)
|
||||
// to test if testedproperty equals a given value: { testedProperty: (k,o) => { return o[k] === 'given value'; } }
|
||||
// to test if testedproperty exists: { testedProperty: (k,o) => { return o.hasOwnProperty(k); } }
|
||||
return array.map(o => {
|
||||
let b = true;
|
||||
if (cobj) {
|
||||
Object.keys(cobj).forEach(k => {
|
||||
if (b && !cobj[k](k, o)) {
|
||||
b = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
if (b) return o[key];
|
||||
}).filter(e => e);
|
||||
};
|
||||
const ops = {
|
||||
'==': (v, p) => v === p,
|
||||
'>=': (v, p) => v >= p,
|
||||
'<=': (v, p) => v <= p
|
||||
};
|
||||
|
||||
const getQuantum = (roll) => {
|
||||
return (roll.dice.length || roll.total) ? true : false;
|
||||
};
|
||||
const fatedie = {
|
||||
[-2]: '=',
|
||||
[-1]: '-',
|
||||
[0]: '0',
|
||||
[1]: '+'
|
||||
};
|
||||
const typeLib = {
|
||||
all: {},
|
||||
included: { type: (k, o) => { return o[k] !== 'drop'; } },
|
||||
success: { type: (k, o) => { return o[k] === 'success'; } },
|
||||
crit: { type: (k, o) => { return o[k] === 'success'; } },
|
||||
fail: { type: (k, o) => { return o[k] === 'fail'; } },
|
||||
fumble: { type: (k, o) => { return o[k] === 'fail'; } },
|
||||
allcrit: { type: (k, o) => { return ['fail', 'success'].includes(o[k]); } },
|
||||
dropped: { type: (k, o) => { return o[k] === 'drop'; } }
|
||||
};
|
||||
|
||||
const collectRollData = (r) => {
|
||||
const rollspancss1 = `<span class="basicdiceroll`;
|
||||
const rollspanend = `</span>`;
|
||||
const cssClassLib = {
|
||||
dropped: 'drop',
|
||||
critfail: 'fail',
|
||||
critsuccess: 'success',
|
||||
'critsuccess critfail': 'fail'
|
||||
};
|
||||
let matchFormatObj = {};
|
||||
let rollData = {
|
||||
parsed: '',
|
||||
tableReturns: [],
|
||||
display: '',
|
||||
dice: [],
|
||||
};
|
||||
let gRoll,
|
||||
cssclass = '',
|
||||
type = '';
|
||||
switch (r.type) {
|
||||
case 'R': // ROLL
|
||||
if (r.table) { // table roll
|
||||
rollData.parsed = '(' + r.results.map(nr => nr.tableItem ? nr.tableItem.name : nr.v).join('+') + ')';
|
||||
rollData.display = rollData.parsed;
|
||||
rollData.tableReturns.push({ table: r.table, returns: r.results.map(nr => nr.tableItem ? nr.tableItem.name : nr.v) });
|
||||
} else { // standard roll (might include fate or matched dice)
|
||||
// fate dice should be joined on empty string (no operator); normal rolls on +
|
||||
rollData.parsed = !r.results ? '{}' : '(' + r.results.map(nr => r.fate ? fatedie[nr.v] : nr.v).join(r.fate ? '' : '+') + ')';
|
||||
rollData.dice = !r.results ? [] : r.results.map(nr => {
|
||||
cssclass = '';
|
||||
if (nr.d) cssclass = 'dropped'; //dropped die
|
||||
if (!cssclass) {
|
||||
if (r.mods && r.mods.hasOwnProperty('customCrit')) {
|
||||
if (r.mods.customCrit.reduce((m, o) => ops[o.comp](nr.v, o.point) || m, false)) cssclass = 'critsuccess';
|
||||
} else if (!r.fate && nr.v === r.sides) { // standard success
|
||||
cssclass = 'critsuccess';
|
||||
} // fate has no default success threshold
|
||||
if (r.mods && r.mods.hasOwnProperty('customFumble')) {
|
||||
if (r.mods.customFumble.reduce((m, o) => ops[o.comp](nr.v, o.point) || m, false)) cssclass = cssclass ? cssclass + ' ': 'critfail';
|
||||
} else if (!r.fate && nr.v === 1) { // standard fail
|
||||
cssclass = cssclass ? cssclass + ' critfail' : 'critfail';
|
||||
} // fate has no default fail threshold
|
||||
}
|
||||
|
||||
type = cssClassLib[cssclass] || '';
|
||||
|
||||
// match (and drop) dice formatting
|
||||
matchFormatObj = { drop: ` style="color: #888;"` }; // initialize with dropped-die coloration
|
||||
if (r.mods && r.mods.match && r.mods.match.matches) {
|
||||
matchFormatObj = { drop: ` style="color: #888;"` }; // initialize with dropped-die coloration
|
||||
if (Array.isArray(r.mods.match.matches)) {
|
||||
r.mods.match.matches.forEach((m, i) => {
|
||||
if (m) matchFormatObj[i] = ` style="color: ${m}"`;
|
||||
});
|
||||
} else {
|
||||
Object.keys(r.mods.match.matches).forEach(k => matchFormatObj[k] = ` style="color: ${r.mods.match.matches[k]}"`);
|
||||
}
|
||||
}
|
||||
return { v: nr.v, type: type, display: `${rollspancss1}${cssclass ? ' ' : ''}${cssclass}${/^crit/g.test(cssclass) ? ' ' : ''}"${matchFormatObj[type] || matchFormatObj[nr.v] || ''}>${r.fate ? fatedie[nr.v] : nr.v}${rollspanend}` };
|
||||
});
|
||||
// fate dice should be joined on empty string (no operator); normal rolls on +
|
||||
rollData.display = '(' + conditionalPluck(rollData.dice, 'display').join(r.fate ? '' : '+') + ')';
|
||||
}
|
||||
break;
|
||||
case 'G': // ROLL
|
||||
gRoll = r.rolls.map(nr => {
|
||||
return nr.map(collectRollData);
|
||||
});
|
||||
rollData.parsed = '{' + gRoll.map(nr => nr.map(nr2 => nr2.parsed).join('')).join(',') + '}';
|
||||
rollData.dice = [].concat(...gRoll.map(nr => [].concat(...nr.map(nr2 => nr2.dice))));
|
||||
rollData.tableReturns = [].concat(...gRoll.map(nr => [].concat(...nr.map(nr2 => nr2.tableReturns))));
|
||||
rollData.display = '{' + gRoll.map(nr => nr.map(nr2 => nr2.display).join('')).join(',') + '}';
|
||||
break;
|
||||
case 'M': // MODIFIER
|
||||
rollData.parsed = r.expr;
|
||||
rollData.display = r.expr;
|
||||
break;
|
||||
case 'L': // LABEL
|
||||
|
||||
break;
|
||||
case 'C': // CATCH
|
||||
|
||||
break;
|
||||
default: // UNKNOWN
|
||||
|
||||
break;
|
||||
}
|
||||
return rollData;
|
||||
};
|
||||
|
||||
const parseInlineRolls = (inlinerolls) => {
|
||||
let labelrx = /(?:\s*(\+|-|\\|\*)\s*)?(?<value>[^\]{}]+)(?<!\d+t)\[(?<key>.*?)]/g;
|
||||
const baseInlineCSS = `style="-webkit-tap-highlight-color: rgba(0,0,0,0);font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;color: #404040;line-height: 1.25em;` +
|
||||
`box-sizing: content-box; background-color: #FEF68E; padding: 0 3px 0 3px; font-weight: bold; cursor: help; font-size: 1.1em;border: 2px solid `;
|
||||
const bordercolors = {
|
||||
0: '#FEF68E;',
|
||||
1: '#B31515;',
|
||||
2: '#3FB315;',
|
||||
3: '#4A57ED;'
|
||||
};
|
||||
return inlinerolls.map(r => {
|
||||
let roll = {
|
||||
expression: HE(r.expression.replace(/</g,'<')),
|
||||
parsed: '',
|
||||
resultType: r.results.resultType,
|
||||
total: r.results.total,
|
||||
value: r.results.total, // changed later, if necessary
|
||||
labels: [],
|
||||
tableReturns: [],
|
||||
display: '',
|
||||
dice: [],
|
||||
};
|
||||
// LABELS
|
||||
let m;
|
||||
labelrx.lastIndex = 0;
|
||||
while ((m = labelrx.exec(r.expression)) !== null) {
|
||||
if (m.index === labelrx.lastIndex) {
|
||||
labelrx.lastIndex++;
|
||||
}
|
||||
roll.labels.push({ label: m.groups.key, value: m.groups.value });
|
||||
};
|
||||
let rollData = r.results.rolls.map(collectRollData);
|
||||
// PARSED
|
||||
roll.parsed = conditionalPluck(rollData, 'parsed').join('');
|
||||
// TABLE RETURNS
|
||||
roll.tableReturns = [].concat(...conditionalPluck(rollData, 'tableReturns'));
|
||||
// ALL DICE
|
||||
roll.dice = [].concat(...conditionalPluck(rollData, 'dice'));
|
||||
// CHAT VALUE
|
||||
roll.value = getQuantum(roll) || !roll.tableReturns.length ? roll.total : roll.tableReturns[0].returns[0];
|
||||
// DISPLAY
|
||||
roll.display = conditionalPluck(rollData, 'display').join('');
|
||||
|
||||
// LATE EVAL METHODS
|
||||
roll.getDice = (type) => { return conditionalPluck(roll.dice, 'v', (typeLib[type] || typeLib.included)) };
|
||||
roll.getTableValues = () => {
|
||||
return roll.tableReturns.reduce((m, r) => {
|
||||
m.push(...r.returns);
|
||||
return m;
|
||||
}, []);
|
||||
};
|
||||
roll.getRollTip = () => {
|
||||
let parts = [];
|
||||
parts.push(`<span class="inlinerollresult showtip tipsy-n-right" ${baseInlineCSS}`);
|
||||
parts.push(`${bordercolors[(/basicdiceroll(?:\scritsuccess)?\scritfail/.test(roll.display) ? 1 : 0) + (/basicdiceroll\scritsuccess/.test(roll.display) ? 2 : 0)]}" `);
|
||||
parts.push(`title="${HE(HE(`Rolling ${roll.expression} = ${roll.display}`))}">${roll.value}</span>`);
|
||||
return parts.join('');
|
||||
};
|
||||
return roll;
|
||||
});
|
||||
};
|
||||
const getRollFromInline = (ira) => {
|
||||
if (Array.isArray(ira) && ira.length) {
|
||||
return parseInlineRolls([ira[0]])[0];
|
||||
} else if (typeof ira === 'object') {
|
||||
return parseInlineRolls([ira])[0];
|
||||
} else return;
|
||||
};
|
||||
|
||||
// ==================================================
|
||||
// EXPOSED INTERFACE FUNCTIONS
|
||||
// ==================================================
|
||||
const getRollData = (ira) => {
|
||||
let pir;
|
||||
if (typeof ira === 'object' && ira.hasOwnProperty('inlinerolls')) {
|
||||
pir = parseInlineRolls(ira.inlinerolls);
|
||||
} else if (Array.isArray(ira) && ira.length) {
|
||||
pir = parseInlineRolls(ira);
|
||||
}
|
||||
return pir;
|
||||
};
|
||||
const getDice = (inlinerolls, type = 'included') => {
|
||||
return conditionalPluck((getRollFromInline(inlinerolls) || { dice: [] }).dice, 'v', (typeLib[type] || typeLib.included));
|
||||
};
|
||||
const getValue = (inlinerolls) => {
|
||||
return (getRollFromInline(inlinerolls) || { value: '' }).value;
|
||||
};
|
||||
const getTables = (inlinerolls, reduce = true) => {
|
||||
if (reduce) {
|
||||
return (getRollFromInline(inlinerolls) || { getTableValues: () => { return ''; } }).getTableValues();
|
||||
} else {
|
||||
return (getRollFromInline(inlinerolls) || { tableReturns: [] }).tableReturns;
|
||||
}
|
||||
};
|
||||
const getParsed = (inlinerolls) => {
|
||||
return (getRollFromInline(inlinerolls) || { parsed: '' }).parsed;
|
||||
};
|
||||
const getRollTip = (inlinerolls) => {
|
||||
return (getRollFromInline(inlinerolls) || { display: '' }).getRollTip();
|
||||
};
|
||||
|
||||
// ==================================================
|
||||
// ON READY
|
||||
// ==================================================
|
||||
on('ready', () => {
|
||||
versionInfo();
|
||||
logsig();
|
||||
});
|
||||
|
||||
return {
|
||||
getRollData: getRollData,
|
||||
getDice: getDice,
|
||||
getValue: getValue,
|
||||
getTables: getTables,
|
||||
getParsed: getParsed,
|
||||
getRollTip: getRollTip
|
||||
};
|
||||
|
||||
})();
|
||||
{ try { throw new Error(''); } catch (e) { API_Meta.libInline.lineCount = (parseInt(e.stack.split(/\n/)[1].replace(/^.*:(\d+):.*$/, '$1'), 10) - API_Meta.libInline.offset); } }
|
||||
@@ -0,0 +1,289 @@
|
||||
{
|
||||
"log": "Log",
|
||||
"status": "Status",
|
||||
"info": "Info",
|
||||
"encumbrance": "Encumbrance",
|
||||
"fortune-points": "Fortune Points",
|
||||
"gold": "Gold",
|
||||
"trauma-treated": "Trauma Treated",
|
||||
"wounds-treated": "Wounds Treated",
|
||||
"shows-item": "Show Items",
|
||||
"damage-dice": "Damage Dice",
|
||||
"weapon-damage": "Weapon Damage",
|
||||
"bonus-damage": "Bonus Damage",
|
||||
"total-damage": "Total Damage",
|
||||
"area-struck": "Area Struck",
|
||||
"despair": "Despair",
|
||||
"fatigue": "Fatigue",
|
||||
"pa-primary-attack": "Primary Attacks",
|
||||
"pa-bonus-damage-tt": "Bonus damage is based on Awareness (Ranged), Brawn (Melee), and Personality (Threaten)",
|
||||
"pa-bonus-damage": "BONUS DAMAGE",
|
||||
"pa-bonus-damage-tt-ranged": "",
|
||||
"pa-ranged-bonus": "Ranged",
|
||||
"pa-bonus-damage-tt-melee": "",
|
||||
"pa-melee-bonus": "Melee",
|
||||
"pa-bonus-damage-tt-threaten": "",
|
||||
"pa-threaten-bonus": "Threaten",
|
||||
"pa-weapon-name": "Weapon Name",
|
||||
"pa-dmg": "DMG:",
|
||||
"pa-type": "Type",
|
||||
"pa-range-reach": "Range/Reach",
|
||||
"pa-size": "Size",
|
||||
"pa-weapon-size-tt": "Weapon Size: 1-Handed, 2-Handed, Unbalanced, Unwieldy, Fixed, Monstrous",
|
||||
"pa-damage": "Damage",
|
||||
"pa-loads": "Loads",
|
||||
"pa-melee": "Melee",
|
||||
"pa-ranged": "Ranged",
|
||||
"pa-threaten": "Threaten",
|
||||
"pa-1H": "1H",
|
||||
"pa-2H": "2H",
|
||||
"pa-display": "Display",
|
||||
"pa-ub": "UB",
|
||||
"pa-uw": "UW",
|
||||
"pa-fixed": "Fixed",
|
||||
"pa-m": "M",
|
||||
"pa-qualities": "Qualities",
|
||||
"sh-stress-and-harms": "Stress & Harms",
|
||||
"sh-physical": "PHYSICAL",
|
||||
"sh-vigor": "Vigor",
|
||||
"sh-courage": "COURAGE",
|
||||
"sh-armour-soak": "Armour Soak",
|
||||
"sh-armour-soak-tt": "Click to mark this armour damaged or sacrificed",
|
||||
"sh-head": "HEAD",
|
||||
"sh-0-naked": "(0) Naked",
|
||||
"sh-0-cloth-hat-coif": "(0) Cloth Hat or Coif",
|
||||
"sh-1-padded-coif": "(1) Padded Coif",
|
||||
"sh-1-leather-cap": "(1) Leather Cap",
|
||||
"sh-2-mail-coif": "(2) Mail Coif",
|
||||
"sh-2-skull-cap": "(2) Skull Cap",
|
||||
"sh-3-aventail-heavy": "(3) Aventail (heavy)",
|
||||
"sh-3-sallet-heavy": "(3) Sallet (heavy)",
|
||||
"sh-3-bascinet-heavy": "(3) Bascinet (heavy)",
|
||||
"sh-3-helmut-coif-heavy": "(3) Helmut Coif (heavy)",
|
||||
"sh-3-turban-helmut-heavy": "(3) Turban Helmut (heavy)",
|
||||
"sh-3-nord-helmut-heavy": "(3) Nord Helmut (heavy)",
|
||||
"sh-4-great-helm-noisy-very-heavy": "(4) Great Helm (noisy/very heavy)",
|
||||
"sh-4-bascient-with-visor-noisy-very-heavy": "(4) Bascient w/visor (noisy/very heavy)",
|
||||
"sh-wounds": "Wounds",
|
||||
"sh-r-arm": "R. ARM",
|
||||
"sh-l-arm": "L. ARM",
|
||||
"sh-treated": "Treated:",
|
||||
"sh-fatigue": "Fatigue:",
|
||||
"sh-torso": "TORSO",
|
||||
"sh-mental": "MENTAL",
|
||||
"sh-resolve": "Resolve",
|
||||
"sh-0-light-cloth": "(0) Light cloth",
|
||||
"sh-0-skins-leather": "(0) Skins/Leather",
|
||||
"sh-1-padded-gambeson": "(1) Padded Gambeson",
|
||||
"sh-1-thick-furs-hides": "(1) Thick Furs & Hides",
|
||||
"sh-1-brigadine-jacket": "(2) Brigandine Jacket",
|
||||
"sh-2-brigadine-sleeve": "(2) Brigandine Sleeve",
|
||||
"sh-2-ring-armour": "(2) Ring Armour",
|
||||
"sh-2-light-scale": "(2) Light Scale",
|
||||
"sh-2-bone-wood": "(2) Bone/Wood",
|
||||
"sh-2-mail": "(2) Mail",
|
||||
"sh-3-scale-noisy-heavy": "(3) Scale (noisy/heavy)",
|
||||
"sh-3-lamellar-noisy-heavy": "(3) Lamellar (noisy/heavy)",
|
||||
"sh-3-coat-of-plates-noisy-heavy": "(3) Coat of Plates (noisy/heavy)",
|
||||
"sh-3-bronze-plate-noisy-heavy": "(3) Bronze Plate (noisy/heavy)",
|
||||
"sh-3-heavy-hauberk-coat-noisy-heavy": "(3) Heavy Hauberk/Coat (noisy/heavy)",
|
||||
"sh-3-heavy-shirt-heavy": "(3) Heavy Shirt (heavy)",
|
||||
"sh-3-heavy-sleeves-heavy": "(3) Heavy Sleeve (heavy)",
|
||||
"sh-4-arm-plates-noisy-heavy": "(4) Arm Plates (noisy/heavy)",
|
||||
"sh-4-full-plate-noisy-heavy": "(4) Full Plate (noisy/heavy)",
|
||||
"sh-2-brigadine-jacket": "(2) Brigandine Jacket",
|
||||
"sh-2-brigadine-vest": "(2) Brigandine Vest",
|
||||
"sh-3-heavy-vest-heavy": "(3) Heavy Vest (heavy)",
|
||||
"sh-3-mail-noisy-heavy": "(3) Mail (noisy/heavy)",
|
||||
"sh-4-cuirass-noisy-very-heavy": "(4) Cuirass (noisy/very heavy)",
|
||||
"sh-4-full-plate-noisy-very-heavy": "(4) Full Plate (noisy/very heavy)",
|
||||
"sh-r-leg": "R. LEG",
|
||||
"sh-l-leg": "L. LEG",
|
||||
"sh-1-trousers": "(1) Trousers",
|
||||
"sh-2-brigadine-trousers": "(2) Brigandine Trousers",
|
||||
"sh-trauma": "Trauma",
|
||||
"sh-armour-qualities": "Armour Qualities",
|
||||
"sh-treaated": "Treated:",
|
||||
"sh-despair": "Despair:",
|
||||
"b-belongings": "Belongings",
|
||||
"b-gold": "GOLD",
|
||||
"b-upkeep": "UPKEEP",
|
||||
"b-spend": "Spend",
|
||||
"b-name-type": "Name/Type",
|
||||
"b-location": "Location",
|
||||
"b-condition": "Condition",
|
||||
"b-value": "Value",
|
||||
"b-equip": "Equip",
|
||||
"b-description": "Description",
|
||||
"b-total-worth": "Total Worth: ",
|
||||
"b-total-encumbrance": "Total Encumbrance:",
|
||||
"b-you-are-emcumbered": "You are encumbered!",
|
||||
"b-your-emcumrance-limit-is-your-brawn-times-2": "Your encumbrance limit is your Brawn x 2",
|
||||
"npc-npc-companions": "NPC / Companions",
|
||||
"npc-name": "Name",
|
||||
"npc-dmg": "DMG:",
|
||||
"npc-agility": "Agility",
|
||||
"npc-awareness": "Awareness",
|
||||
"npc-brawn": "Brawn",
|
||||
"npc-coordination": "Coord.",
|
||||
"npc-intelligence": "Intell.",
|
||||
"npc-personality": "Person.",
|
||||
"npc-willpower": "Willpower",
|
||||
"npc-skills-details": "Skills/Details",
|
||||
"char-gender": "Gender ",
|
||||
"char-age": "Age ",
|
||||
"char-homeland": "Homeland ",
|
||||
"char-caste": "Caste ",
|
||||
"char-trait": "Trait ",
|
||||
"char-archetype": "Archetype ",
|
||||
"char-nature": "Nature ",
|
||||
"char-education": "Education ",
|
||||
"char-appearance": "Appearance ",
|
||||
"char-personality": "Personality ",
|
||||
"char-languages": "Languages ",
|
||||
"char-war-story": "War Story ",
|
||||
"char-fortune-points": "FORTUNE POINTS",
|
||||
"char-renown": "RENOWN",
|
||||
"char-standing": "STANDING",
|
||||
"char-xp-total-spent-available": "XP TOTAL / SPENT / AVAIL.",
|
||||
"char-xp": "XP",
|
||||
"t-talents": "Talents",
|
||||
"t-base": "Base",
|
||||
"t-base-talents": "BASE TALENTS",
|
||||
"t-homeland": "Homeland",
|
||||
"t-caste-a": "Caste A",
|
||||
"t-caste-b": "Caste B",
|
||||
"t-bloodline": "Bloodline",
|
||||
"t-education": "Education",
|
||||
"t-nature": "Nature",
|
||||
"t-archetype": "Archetype",
|
||||
"t-other": "Other",
|
||||
"t-attributes": "ATTRIBUTES",
|
||||
"t-agility": "Agility",
|
||||
"t-awareness": "Awareness",
|
||||
"t-brawn": "Brawn",
|
||||
"t-coordination": "Coordination",
|
||||
"t-intelligence": "Intelligence",
|
||||
"t-personality": "Personality",
|
||||
"t-willpower": "Willpower",
|
||||
"t-name": "Name",
|
||||
"t-rank": "Rank",
|
||||
"t-skill": "Skill",
|
||||
"t-none": "None",
|
||||
"t-acrobat": "Acrobatics",
|
||||
"t-alchemy": "Alchemy",
|
||||
"t-animal-handling": "Animal Handling",
|
||||
"t-athletics": "Athletics",
|
||||
"t-command": "Command",
|
||||
"t-counsel": "Counsel",
|
||||
"t-craft": "Craft",
|
||||
"t-discipline": "Discipline",
|
||||
"t-healing": "Healing",
|
||||
"t-insight": "Insight",
|
||||
"t-linguistics": "Linguistics",
|
||||
"t-lore": "Lore",
|
||||
"t-melee": "Melee",
|
||||
"t-observation": "Observation",
|
||||
"t-parry": "Parry",
|
||||
"t-persude": "Persuade",
|
||||
"t-ranged-weapons": "Ranged Weapons",
|
||||
"t-resistance": "Resistance",
|
||||
"t-sailing": "Sailing",
|
||||
"t-society": "Society",
|
||||
"t-sorcery": "Sorcery",
|
||||
"t-stealth": "Stealth",
|
||||
"t-survival": "Survival",
|
||||
"t-thievery": "Thievery",
|
||||
"t-warfare": "Warfare",
|
||||
"t-effect": "Effect",
|
||||
"as-attributes-and-skills": "Attributes & Skills",
|
||||
"as-agility": "AGILITY",
|
||||
"as-skill": "Skill",
|
||||
"as-expertise": "Exp",
|
||||
"as-focus": "Foc",
|
||||
"as-target-number": "TN",
|
||||
"as-acrobatics": "Acrobatics",
|
||||
"as-melee": "Melee",
|
||||
"as-stealth": "Stealth",
|
||||
"as-awareness": "AWARENESS",
|
||||
"as-insight": "Insight",
|
||||
"as-observation": "Observation",
|
||||
"as-survival": "Survival",
|
||||
"as-thievery": "Thievery",
|
||||
"as-brawn": "BRAWN",
|
||||
"as-athletics": "Athletics",
|
||||
"as-resistance": "Resistance",
|
||||
"as-coordination": "COORDINATION",
|
||||
"as-parry": "Parry",
|
||||
"as-ranged-weapons": "Ranged/W",
|
||||
"as-sailing": "Sailing",
|
||||
"as-intelligence": "INTELLIGENCE",
|
||||
"as-alchemy": "Alchemy",
|
||||
"as-craft": "Craft",
|
||||
"as-healing": "Healing",
|
||||
"as-linguistics": "Linguistics",
|
||||
"as-lore": "Lore",
|
||||
"as-warfare": "Warfare",
|
||||
"as-personality": "PERSONALITY",
|
||||
"as-animal-handling": "Animal/H",
|
||||
"as-command": "Command",
|
||||
"as-counsel": "Counsel",
|
||||
"as-persuade": "Persuade",
|
||||
"as-society": "Society",
|
||||
"as-willpower": "WILLPOWER",
|
||||
"as-discipline": "Discipline",
|
||||
"as-sorcery": "Sorcery",
|
||||
"m-magic": "Magic",
|
||||
"m-spell": "Spell",
|
||||
"m-difficulty": "Difficulty",
|
||||
"m-duration": "Duration",
|
||||
"m-cost": "Cost",
|
||||
"m-momentum": "Momentum",
|
||||
"m-description": "Description",
|
||||
"xp-xp-tracker": "XP Tracker",
|
||||
"xp-total-xp": "Total XP:",
|
||||
"xp-spent-xp": "Spent XP:",
|
||||
"xp-available-xp": "Available XP:",
|
||||
"xp-date": "Date",
|
||||
"xp-xp-gain": "XP Gain",
|
||||
"xp-xp-spend": "XP Spend",
|
||||
"xp-spend-description": "Spend Description",
|
||||
"al-adventuring-log": "Adventuring Log",
|
||||
"al-date": "Date:",
|
||||
"al-title": "Title:",
|
||||
"al-value-amount": "Value/Amt:",
|
||||
"al-search": "Search",
|
||||
"al-clear": "Clear",
|
||||
"tp-4": "Skill",
|
||||
"tp-5": "Rolls ",
|
||||
"tp-6": "dice!",
|
||||
"tp-7": "Target number is:",
|
||||
"tp-16": "Roll result:",
|
||||
"tp-23": "Total Success:",
|
||||
"tp-17": "",
|
||||
"tp-18": "Unskilled!",
|
||||
"tp-9": "Scores $[[2]]",
|
||||
"tp-10": "unskilled!",
|
||||
"tp-11": "successes!",
|
||||
"tp-8": "Scores $[[1]] successes!",
|
||||
"tp-1": "You are missing the api_chk key/value in your macro.",
|
||||
"tp-2": "Please see the character sheet ",
|
||||
"tp-3": " scroll for more details.",
|
||||
"tp-31": "Location",
|
||||
"tp-32": "Weight",
|
||||
"tp-33": "Condition",
|
||||
"tp-35": "Value",
|
||||
"tp-36": "Equipped",
|
||||
"tp-37": "Description :",
|
||||
"tp-24": "Wounds,",
|
||||
"tp-25": "Treated",
|
||||
"tp-15": "You are Encumbered !!!",
|
||||
"tp-19": "Plus",
|
||||
"tp-20": "focus!",
|
||||
"tp-27": "Base",
|
||||
"tp-28": "Skill",
|
||||
"tp-29": "Rank",
|
||||
"tp-30": "Effects :",
|
||||
"tp-39": "Qualities :"
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user