5 Commits

Author SHA1 Message Date
6f030bd6b5 Final v0.0.2 2020-11-30 06:23:35 +01:00
512d0de4e5 Updated README 2020-11-29 15:34:47 +01:00
ef6cc11bcb Updated README 2020-11-29 15:34:14 +01:00
bb5d29e28e Updated README 2020-11-29 15:23:59 +01:00
d42988e859 Updated README 2020-11-29 15:15:10 +01:00
21 changed files with 902 additions and 135 deletions

View File

@@ -0,0 +1,18 @@
# Kopparhavets Hjältar
Detta är utveklat privat och inte officielt stöttat av personerna bakom Kopparhavets Hjältar.
## Installera Kopparhavet game system
1. Öppna Foundry VTT
2. Gå till "Game Systems" fliken
3. Klicka på "Install System" knappen
4. Kopiera följande länk och klistra in i "Manifest URL" fältet:
https://pi.rikspolisen.se/foundryvtt/kopparhavet/raw/branch/master/system.json
5. Klicka Install, efter en kort tid borde systemet vara installerat.
## Rustning
Instruktioner för hur man skapar en rustning hittas i Wikin
https://pi.rikspolisen.se/foundryvtt/kopparhavet/wiki/Skapa-rustning.

View File

@@ -17,6 +17,7 @@
"BIO.AGE": "Age", "BIO.AGE": "Age",
"BIO.KIN": "Kin", "BIO.KIN": "Kin",
"BIO.NAME": "Name", "BIO.NAME": "Name",
"BIO.NICKNAME": "Nickname",
"BIO.PROFESSION": "Profession", "BIO.PROFESSION": "Profession",
"CURRENCY.QUARTER": "Quarter", "CURRENCY.QUARTER": "Quarter",
@@ -33,6 +34,9 @@
"FEATURES.TITLE": "Features", "FEATURES.TITLE": "Features",
"HT.FEATURES.TITLE": "Features",
"HT.RELATIONSHIP.TITLE": "Relationships",
"ITEM.ARMOR": "Rustning", "ITEM.ARMOR": "Rustning",
"ITEM.ATTACK": "Attack", "ITEM.ATTACK": "Attack",
"ITEM.DAMAGE": "Damage", "ITEM.DAMAGE": "Damage",
@@ -48,6 +52,8 @@
"ITEM.TALENT": "Talent", "ITEM.TALENT": "Talent",
"ITEM.WEAPON": "Weapon", "ITEM.WEAPON": "Weapon",
"LEARNING.TITLE": "Learning",
"MENU.SENTTOCHAT": "Send To Chat", "MENU.SENTTOCHAT": "Send To Chat",
"MOD.INIT": "Initiative", "MOD.INIT": "Initiative",
@@ -76,6 +82,7 @@
"TAB.COMBAT": "Combat", "TAB.COMBAT": "Combat",
"TAB.DESCRIPTION": "Description", "TAB.DESCRIPTION": "Description",
"TAB.GEAR": "Gear", "TAB.GEAR": "Gear",
"TAB.MAIN": "Main",
"TAB.MODIFICATION": "Modifications", "TAB.MODIFICATION": "Modifications",
"TAB.NOTE": "Note", "TAB.NOTE": "Note",
"TAB.SKILLS": "Skills", "TAB.SKILLS": "Skills",

View File

@@ -17,7 +17,9 @@
"BIO.AGE": "Ålder", "BIO.AGE": "Ålder",
"BIO.KIN": "Folkslag", "BIO.KIN": "Folkslag",
"BIO.NAME": "Namn", "BIO.NAME": "Namn",
"BIO.NICKNAME": "Tillnamn",
"BIO.PROFESSION": "Värv", "BIO.PROFESSION": "Värv",
"BIO.APPEARANCE": "Utseende",
"CURRENCY.QUARTER": "Kvarting", "CURRENCY.QUARTER": "Kvarting",
"CURRENCY.SHEKEL": "Shekel", "CURRENCY.SHEKEL": "Shekel",
@@ -33,6 +35,9 @@
"FEATURES.TITLE": "Särdrag", "FEATURES.TITLE": "Särdrag",
"HT.FEATURES.TITLE": "Karaktärsdrag",
"HT.RELATIONSHIP.TITLE": "Relationer",
"ITEM.ARMOR": "Rustning", "ITEM.ARMOR": "Rustning",
"ITEM.ATTACK": "Anfall", "ITEM.ATTACK": "Anfall",
"ITEM.DAMAGE": "Skada", "ITEM.DAMAGE": "Skada",
@@ -48,6 +53,8 @@
"ITEM.TALENT": "Förmåga", "ITEM.TALENT": "Förmåga",
"ITEM.WEAPON": "Vapen", "ITEM.WEAPON": "Vapen",
"LEARNING.TITLE": "Inlärning",
"MENU.SENTTOCHAT": "Skicka till chat", "MENU.SENTTOCHAT": "Skicka till chat",
"MOD.INIT": "Turordning", "MOD.INIT": "Turordning",
@@ -76,6 +83,7 @@
"TAB.COMBAT": "Strid", "TAB.COMBAT": "Strid",
"TAB.DESCRIPTION": "Beskrivning", "TAB.DESCRIPTION": "Beskrivning",
"TAB.GEAR": "Utrustning", "TAB.GEAR": "Utrustning",
"TAB.MAIN": "Allmänt",
"TAB.MODIFICATION": "Modifikationer", "TAB.MODIFICATION": "Modifikationer",
"TAB.NOTE": "Anteckning", "TAB.NOTE": "Anteckning",
"TAB.SKILLS": "Färdigheter", "TAB.SKILLS": "Färdigheter",

View File

@@ -1,4 +1,5 @@
import KHDiceRoller from "../helpers/dice-helper.js" import KHDiceRoller from "../helpers/dice-helper.js"
import ActorHelpers from "../helpers/actor-helper.js";
/** /**
* Extend the basic ActorSheet with some very simple modifications * Extend the basic ActorSheet with some very simple modifications
@@ -9,12 +10,23 @@ export class ActorSheetKH extends ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
return mergeObject(super.defaultOptions, {
classes: ["kopparhavet", "sheet", "actor"],
template: "systems/kopparhavet/templates/actors/ht-character-sheet.html",
width: 710,
height: 650,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "main" }],
scrollY: [".skills-tab .skills", ".talent-tab .items"],
});
}
return mergeObject(super.defaultOptions, { return mergeObject(super.defaultOptions, {
classes: ["kopparhavet", "sheet", "actor"], classes: ["kopparhavet", "sheet", "actor"],
template: "systems/kopparhavet/templates/actors/character-sheet.html", template: "systems/kopparhavet/templates/actors/character-sheet.html",
width: 710, width: 710,
height: 650, height: 650,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" }], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "main" }],
scrollY: [".skills-tab .skills", ".talent-tab .items"], scrollY: [".skills-tab .skills", ".talent-tab .items"],
}); });
} }
@@ -22,7 +34,13 @@ export class ActorSheetKH extends ActorSheet {
/** @override */ /** @override */
get template() { get template() {
const path = "systems/kopparhavet/templates/actors"; const path = "systems/kopparhavet/templates/actors";
return `${path}/${this.actor.data.type}-sheet.html`; let prefix = "";
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
prefix = "ht-";
}
return `${path}/${prefix}${this.actor.data.type}-sheet.html`;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -278,15 +296,17 @@ export class ActorSheetKH extends ActorSheet {
let defence = armor.data.data.defence.value; let defence = armor.data.data.defence.value;
let hasHelmet = false; let hasHelmet = false;
if(game.settings.get("kopparhavet", "gameSystem") === "kopparhavet") {
this.actor.items.map((i) => { this.actor.items.map((i) => {
if(i.type === "armor") { if (i.type === "armor") {
if(i.data.data.equipable.equipped && i.data.data.helmet.value) { if (i.data.data.equipable.equipped && i.data.data.helmet.value) {
if(CONFIG.KH.armor_types[i.data.data.type.value]?.ac >= CONFIG.KH.armor_types[armor.data.data.type.value]?.ac) { if (CONFIG.KH.armor_types[i.data.data.type.value]?.ac >= CONFIG.KH.armor_types[armor.data.data.type.value]?.ac) {
hasHelmet = true hasHelmet = true
} }
} }
} }
}); });
}
let regex = /([0-9]*)t([0-9]*)/g; let regex = /([0-9]*)t([0-9]*)/g;
let regexMatch; let regexMatch;
@@ -314,8 +334,6 @@ export class ActorSheetKH extends ActorSheet {
const li = $(ev.currentTarget).parents(".item"); const li = $(ev.currentTarget).parents(".item");
let skillValue = li.data("ability"); let skillValue = li.data("ability");
console.log(skillValue)
let skillName = "ITEM.ATTACK"; let skillName = "ITEM.ATTACK";
this.khRoller.rollSkillInChat(skillName, skillValue, false, this.actor) this.khRoller.rollSkillInChat(skillName, skillValue, false, this.actor)
@@ -357,6 +375,104 @@ export class ActorSheetKH extends ActorSheet {
this.khRoller.rollArmorInChat(regexMatch[1], hasHelmet, this.actor) this.khRoller.rollArmorInChat(regexMatch[1], hasHelmet, this.actor)
} }
}); });
// Add or Remove relationship
html.find(".learning-control").click(this._onClickLearningControl.bind(this));
html.find(".learning-click").click(this._onClickLearingLearned.bind(this));
/* Hjältarnas Tid specefic */
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
// Add or Remove relationship
html.find(".relation-control").click(this._onClickRelationshipControl.bind(this));
html.find(".relation-click").click(this._onClickRelationshipUsed.bind(this));
}
}
async _onClickLearingLearned(event) {
event.stopPropagation();
const li1 = $(event.currentTarget);
const li2 = $(event.currentTarget).parents(".learning");
let box = li1.data("num")
let learingKey = li2.data("attribute");
const clickedValue = (this.actor.data.data.learning[learingKey][box] == undefined ? false : this.actor.data.data.learning[learingKey][box]);
let dataName = "data.learning." + learingKey + "." + box
let tempData = {}
tempData[dataName] = !clickedValue
this.actor.update(tempData);
this._render();
}
async _onClickLearningControl(event) {
event.preventDefault();
const a = event.currentTarget;
const action = a.dataset.action;
const attrs = this.object.data.data.learning;
const form = this.form;
// Add new modification
if (action === "create") {
const nk = new Date().getTime();
let newKey = document.createElement("div");
newKey.innerHTML = `<input class="learning-key" type="text" name="data.learning.attr${nk}.key" value="attr${nk}" style="display: none;" /><input class="learning-key" type="text" name="data.learning.attr${nk}.value" value="" style="display: none;" />`;
form.appendChild(newKey);
await this._onSubmit(event);
}
// Remove existing modification
else if (action === "delete") {
const li = a.closest(".learning");
li.parentElement.removeChild(li);
await this._onSubmit(event);
}
}
async _onClickRelationshipControl(event) {
event.preventDefault();
const a = event.currentTarget;
const action = a.dataset.action;
const attrs = this.object.data.data.relationships;
const form = this.form;
// Add new modification
if (action === "create") {
const nk = new Date().getTime();
let newKey = document.createElement("div");
newKey.innerHTML = `<input class="relation-key" type="text" name="data.relationships.attr${nk}.key" value="attr${nk}" style="display: none;" /><input class="relation-key" type="text" name="data.relationships.attr${nk}.value" value="" style="display: none;" />`;
form.appendChild(newKey);
await this._onSubmit(event);
}
// Remove existing modification
else if (action === "delete") {
const li = a.closest(".relation");
li.parentElement.removeChild(li);
await this._onSubmit(event);
}
}
async _onClickRelationshipUsed(event) {
event.stopPropagation();
const li = $(event.currentTarget).parents(".relation");
let relationshipKey = li.data("attribute");
const clickedValue = (this.actor.data.data.relationships[relationshipKey].check == undefined ? false : this.actor.data.data.relationships[relationshipKey].check);
let dataName = "data.relationships." + relationshipKey + ".check"
let tempData = {}
tempData[dataName] = !clickedValue
this.actor.update(tempData);
this._render();
} }
async _toggleEquippedItem(event) { async _toggleEquippedItem(event) {
@@ -469,6 +585,13 @@ export class ActorSheetKH extends ActorSheet {
} }
} }
/** @override */
_updateObject(event, formData) {
const actorUpdate = ActorHelpers.actorUpdate.bind(this);
actorUpdate(event, formData);
}
/** /**
* Send details of an item to chat. * Send details of an item to chat.
* @private * @private

View File

@@ -0,0 +1,54 @@
export default class ActorHelpers {
static async actorUpdate(event, formData) {
formData = expandObject(formData);
// Handle the free-form relationship list
const formAttrs = expandObject(formData)?.data?.relationships || {};
const relationships = Object.values(formAttrs).reduce((obj, v) => {
let k = v["key"].trim();
delete v["key"];
obj[k] = v;
return obj;
}, {});
// Remove modifications which are no longer used
if (this.object.data?.data?.relationships) {
for (let k of Object.keys(this.object.data.data.relationships)) {
if (!relationships.hasOwnProperty(k)) relationships[`-=${k}`] = null;
}
}
// recombine modifications to formData
if (Object.keys(relationships).length > 0) {
setProperty(formData, `data.relationships`, relationships);
}
// Handle the free-form learnign list
const formAttrsLearning = expandObject(formData)?.data?.learning || {};
const learning = Object.values(formAttrsLearning).reduce((obj, v) => {
let k = v["key"].trim();
delete v["key"];
obj[k] = v;
return obj;
}, {});
// Remove modifications which are no longer used
if (this.object.data?.data?.learning) {
for (let k of Object.keys(this.object.data.data.learning)) {
if (!learning.hasOwnProperty(k)) learning[`-=${k}`] = null;
}
}
// recombine modifications to formData
if (Object.keys(learning).length > 0) {
setProperty(formData, `data.learning`, learning);
}
// Update the Item
this.actor.data.flags.loaded = false;
this.object.update(formData);
}
}

View File

@@ -8,7 +8,7 @@ export class ItemSheetKH extends ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return mergeObject(super.defaultOptions, {
classes: ["starwarsffg", "sheet", "item"], classes: ["kopparhavet", "sheet", "item"],
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }],
scrollY: [".sheet-body", ".tab"], scrollY: [".sheet-body", ".tab"],
}); });
@@ -139,6 +139,7 @@ export class ItemSheetKH extends ItemSheet {
/** @override */ /** @override */
_updateObject(event, formData) { _updateObject(event, formData) {
const itemUpdate = ItemHelpers.itemUpdate.bind(this); const itemUpdate = ItemHelpers.itemUpdate.bind(this);
itemUpdate(event, formData); itemUpdate(event, formData);
} }

View File

@@ -24,3 +24,81 @@ KH.armor_types = {
"ac": 30, "ac": 30,
}, },
}; };
KH.baseSkills = [
"Smidighet",
"Trolldom",
"Fingerfärdighet",
"Finna dolda ting",
"Förleda",
"Gömma sig",
"Handel",
"Hantverk",
"Insikt",
"Jakt",
"Kastvapen",
"Knivar",
"Lagkunskap",
"Legender",
"Läkekonst",
"Lärdom",
"Musik",
"Rida",
"Sjömanskap",
"Skytte",
"Sköldar",
"Slagsmål",
"Spana",
"Spel",
"Spjut",
"Språk",
"Status",
"Stigvana",
"Styrka",
"Svärd",
"Taktik",
"Uthållighet",
"Utstrålning",
"Viljestyrka",
"Väderkunskap",
"Yxor"
]
KH.baseSkillsHT = [
"Fingerfärdighet",
"Gömma sig",
"Handel",
"Härkonst",
"Jakt",
"Lagkunskap",
"Ledarskap",
"Leta",
"Läkekonst",
"Lärdom",
"Manövrer",
"Rida",
"Sjömannaskap",
"Skaldekonst",
"Skapa",
"Spana",
"Spel",
"Spelmannaskap",
"Språk",
"Status",
"Stigvana",
"Styrkeprov",
"Trolldom",
"Uthållighet",
"Viljestyrka",
"Väderkunskap",
"Vältalighet",
"Wyrd",
"Kastvapen",
"Knivkamp",
"Skytte",
"Sköldkamp",
"Slagsmål",
"Spjutkamp",
"Svärdskamp",
"Yxkamp"
]

View File

@@ -1,15 +1,22 @@
export default class KHHooks { export default class KHHooks {
static async onCreateActor(actor, options, userId) { static async onCreateActor(actor, options, userId) {
if (actor.data.type == "character") { if (actor.data.type == "character") {
const actorbaseSkills = actor.data.data.baseSkills; // Load Skills Compendium skills
let skillIndex;
let actorbaseSkills;
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
actorbaseSkills = CONFIG.KH.baseSkillsHT
skillIndex = await game.packs.get("kopparhavet.skills-ht").getContent();
} else {
actorbaseSkills = CONFIG.KH.baseSkills;
skillIndex = await game.packs.get("kopparhavet.skills").getContent();
}
// Check if skill already exists by some chance // Check if skill already exists by some chance
const existingSkills = actor.items.filter((i) => i.type === ItemType.Skill).map((i) => i.name); const existingSkills = actor.items.filter((i) => i.type === ItemType.Skill).map((i) => i.name);
const skillsToAdd = actorbaseSkills.filter((s) => !existingSkills.includes(s)); const skillsToAdd = actorbaseSkills.filter((s) => !existingSkills.includes(s));
// Load Skills Compendium skills
const skillIndex = await game.packs.get("kopparhavet.skills").getContent();
// Filter skillIndex array to include only skills for Actor Type. // Filter skillIndex array to include only skills for Actor Type.
let _skillsList = skillIndex.filter((i) => skillsToAdd.includes(i.data.name)); let _skillsList = skillIndex.filter((i) => skillsToAdd.includes(i.data.name));

View File

@@ -14,10 +14,6 @@ Hooks.once("init", () => {
// Give global access to FFG config. // Give global access to FFG config.
CONFIG.KH = KH; CONFIG.KH = KH;
//registerFonts();
registerSheets();
preloadHandlebarsTemplates();
registerHandlebarsHelpers();
game.settings.register("kopparhavet", "worldSchemaVersion", { game.settings.register("kopparhavet", "worldSchemaVersion", {
name: "World Version", name: "World Version",
hint: "Used to automatically upgrade worlds data when the system is upgraded.", hint: "Used to automatically upgrade worlds data when the system is upgraded.",
@@ -26,10 +22,36 @@ Hooks.once("init", () => {
default: 0, default: 0,
type: Number, type: Number,
}); });
game.settings.register("kopparhavet", "gameSystem", {
name: "Game System",
hint: "Select what game system is being used..",
scope: "world",
config: true,
default: "kopparhavet",
choices: {
"kopparhavet": "Kopparhavets Hjältar",
"hjaltarnas-tid": "Hjältarnas Tid"
},
type: String,
onChange: (rule) => {
window.location.reload();
},
});
//registerFonts();
registerSheets();
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
preloadHandlebarsTemplatesHT();
} else {
preloadHandlebarsTemplates();
}
registerHandlebarsHelpers();
}); });
Hooks.once("ready", () => { Hooks.once("ready", () => {
//migrateWorld(); migrateWorld();
}); });
/* POPULATE CHARACTER WITH DEFAULT SKILLS */ /* POPULATE CHARACTER WITH DEFAULT SKILLS */
@@ -66,6 +88,7 @@ function preloadHandlebarsTemplates() {
"systems/kopparhavet/templates/items/spell-sheet.html", "systems/kopparhavet/templates/items/spell-sheet.html",
"systems/kopparhavet/templates/items/talent-sheet.html", "systems/kopparhavet/templates/items/talent-sheet.html",
"systems/kopparhavet/templates/items/weapon-sheet.html", "systems/kopparhavet/templates/items/weapon-sheet.html",
"systems/kopparhavet/templates/parts/actor/main.html",
"systems/kopparhavet/templates/parts/actor/bio.html", "systems/kopparhavet/templates/parts/actor/bio.html",
"systems/kopparhavet/templates/parts/actor/combat.html", "systems/kopparhavet/templates/parts/actor/combat.html",
"systems/kopparhavet/templates/parts/actor/gear.html", "systems/kopparhavet/templates/parts/actor/gear.html",
@@ -76,6 +99,29 @@ function preloadHandlebarsTemplates() {
return loadTemplates(templatePaths); return loadTemplates(templatePaths);
} }
function preloadHandlebarsTemplatesHT() {
const templatePaths = [
"systems/kopparhavet/templates/chat/item-card.html",
"systems/kopparhavet/templates/actors/ht-adversary-sheet.html",
"systems/kopparhavet/templates/actors/ht-character-sheet.html",
"systems/kopparhavet/templates/dice/roll.html",
"systems/kopparhavet/templates/items/adversaryAttack-sheet.html",
"systems/kopparhavet/templates/items/armor-sheet.html",
"systems/kopparhavet/templates/items/gear-sheet.html",
"systems/kopparhavet/templates/items/skill-sheet.html",
"systems/kopparhavet/templates/items/spell-sheet.html",
"systems/kopparhavet/templates/items/talent-sheet.html",
"systems/kopparhavet/templates/items/weapon-sheet.html",
"systems/kopparhavet/templates/parts/actor/ht-main.html",
"systems/kopparhavet/templates/parts/actor/ht-combat.html",
"systems/kopparhavet/templates/parts/actor/gear.html",
"systems/kopparhavet/templates/parts/actor/ht-skills.html",
"systems/kopparhavet/templates/parts/actor/talent.html",
"systems/kopparhavet/templates/parts/shared/modifications.html",
];
return loadTemplates(templatePaths);
}
function normalize(data, defaultValue) { function normalize(data, defaultValue) {
if (data) { if (data) {
return data.toLowerCase(); return data.toLowerCase();
@@ -129,3 +175,14 @@ function registerHandlebarsHelpers() {
return new Handlebars.SafeString(value.replace(/(<([^>]+)>)/gi, "").replace(/(?:\r\n|\r|\n)/g, '<br/>')); return new Handlebars.SafeString(value.replace(/(<([^>]+)>)/gi, "").replace(/(?:\r\n|\r|\n)/g, '<br/>'));
}); });
} }
function migrateWorld() {
game.actors.forEach((actor) => {
// Migrate to v0.0.2 from v0.0.1
if(actor.data.type === "character") {
if(!actor.data?.data?.bio?.appearance) {
actor.update({"data.bio.appearance.label": "BIO.APPEARANCE", "data.bio.appearance.value": ""});
}
}
});
}

37
packs/skills-ht.db Normal file
View File

@@ -0,0 +1,37 @@
{"name":"Fingerfärdighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.tmNI5YIYYjGuZK5i"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"AY9pFa3b9qB65CVM"}
{"name":"Gömma sig","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Ewo6mu7WdoOcF6DD"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"LsEwsYN90mrMAwJC"}
{"name":"Handel","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.syxeJlio8vIrx0Lr"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"JjXlb1GNQEmgXut1"}
{"name":"Härkonst","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Yvy3Ej3tDNhp0VVA"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"a1AxdXijThSi6VNG"}
{"name":"Jakt","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.orNrL49vWUePhLaU"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"tPSscak2iUxVNKyP"}
{"name":"Kastvapen","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.YpheXmaKsX9omtBA"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"BN9Y5YRwBk8rbWba"}
{"name":"Knivkamp","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.uctwxo07FCKCk2K4"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"TVRH99cyiGmAkUNY"}
{"name":"Lagkunskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.b9U8BXjNvI4LwlRX"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"fJQm2snkj0C6GcGG"}
{"name":"Läkekonst","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.bVEJBtXhXOkqIBek"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"RHcwYXp1WfnPDcTT"}
{"name":"Lärdom","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5wz37ypKMn6tgtTr"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"2G92IWn9BCGtmqHv"}
{"name":"Ledarskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.DDZkgceLisZOYHEi"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"tHF9QafgX9sqfpAW"}
{"name":"Leta","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.0m5bA14oR16bB2Gt"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"sWHSbMOOBlhShKrP"}
{"name":"Manövrer","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.XF2eNRo6uMhDs5Uv"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"N4nreeMOFTOCmJWa"}
{"name":"Rida","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.boR4AGF8LD12ykoc"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"kEi1G8CoDO8R2Yqw"}
{"name":"Sjömannaskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.8org0OaWuKO6rCqm"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"12sCrhriIkvlBhZR"}
{"name":"Skaldekonst","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.dYcVgFgx6WmBWCeZ"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Lgp89BnjQQ0QbWFG"}
{"name":"Skapa","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.DSWruhUT6DT9kY7Z"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"58gGOTfVYLJaYly0"}
{"name":"Sköldkamp","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Qg4PmjVCFSylYlHM"}
{"name":"Skytte","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.KJLF5fDrZaA1DKg1"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"izHncfq2g44vxrOj"}
{"name":"Slagsmål","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.UkwUABDT8NB8y1mQ"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"LK3tbOXHrBpWxALq"}
{"name":"Spana","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5oQCvQNiDSeIe8vI"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"YuPS88e7mNq0Ixm1"}
{"name":"Spel","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.bcRVOx8M3Ue6tgGz"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"bwfnRUbXSNEluqgP"}
{"name":"Spelmannaskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.eFeMJtv30eImpUMn"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"kpmj729kiYYHe8kS"}
{"name":"Spjutkamp","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.GxkoQ2KdPh9ogGuJ"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"MCw0iaS0jicX4EhH"}
{"name":"Språk","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.BkCe8HPX1wVYlsmV"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"082XSYN2gkCu7eiw"}
{"name":"Status","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5NCkdBZ4lWwLzGwk"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Hgpw4KoUqsE69Tgm"}
{"name":"Stigvana","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.NBRV1tzrIV9AmGka"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"DKSzGZr7iKavSq7A"}
{"name":"Styrkeprov","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.IC2RGKp9cEYzyIln"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"ULy4VKzv7TpbjBdK"}
{"name":"Svärdskamp","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.b9no6ZeE5KyG9AfT"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"tibPHZGChVumrm2B"}
{"name":"Trolldom","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.EVCN4lxeferZYP0P"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"WvUs3O5F7aksjM6D"}
{"name":"Uthållighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Uc9XLdzkI7mGMTLL"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"bazsFyBhvZMOWKxh"}
{"name":"Väderkunskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.elGMSOQROaYXCEPA"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"AvQobAh7dQ3coziY"}
{"name":"Vältalighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.F5lkuwhO3WGl5yWk"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"qijUm0Gz9zSIr55P"}
{"name":"Viljestyrka","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.qbi9SN1V4bPT3T3Y"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"sqInbChYhQ1VhVUv"}
{"name":"Wyrd","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.TjVsmOs0PqbAzNUf"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"MD7Gz5QJYw1C98NM"}
{"name":"Yxkamp","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.VWaRRqiUlMw1nPUn"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"UJhsMDi2VNNFN9st"}

View File

@@ -1,36 +1,36 @@
{"name":"Smidighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.tmNI5YIYYjGuZK5i"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"INlHwwv9wG4VA13D"} {"name":"Fingerfärdighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.syxeJlio8vIrx0Lr"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"IVuFDobCZTw5sEOw"}
{"name":"Trolldom","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Ewo6mu7WdoOcF6DD"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"kIu2AL79urDjZV8z"} {"name":"Finna dolda ting","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Yvy3Ej3tDNhp0VVA"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Jp0pc8PlQ08uIQ81"}
{"name":"Fingerfärdighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.syxeJlio8vIrx0Lr"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"9gkb0ONyCuBcWwoB"} {"name":"Förleda","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.orNrL49vWUePhLaU"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"4WYeODaMqXG2Urxb"}
{"name":"Finna dolda ting","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Yvy3Ej3tDNhp0VVA"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PaieUawcyfKhfSCv"} {"name":"Gömma sig","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.b9U8BXjNvI4LwlRX"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"fUAmqrS5m3rlBqu3"}
{"name":"Förleda","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.orNrL49vWUePhLaU"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"JN1b5A5QHoinB5Gd"} {"name":"Handel","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.DDZkgceLisZOYHEi"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Mw5OL5irndqEV0Cf"}
{"name":"Gömma sig","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.b9U8BXjNvI4LwlRX"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"A8DBqRLBJ0yU3Ebp"} {"name":"Hantverk","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.0m5bA14oR16bB2Gt"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"4XKApBWTI9agpijF"}
{"name":"Handel","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.DDZkgceLisZOYHEi"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"GS4NknpWIKYWceky"} {"name":"Insikt","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.bVEJBtXhXOkqIBek"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"DnixLDN5YqDmQ3w7"}
{"name":"Hantverk","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.0m5bA14oR16bB2Gt"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"imcYcYl21T4xewNa"} {"name":"Jakt","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5wz37ypKMn6tgtTr"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"dhjKxKklgTKDQ6LI"}
{"name":"Insikt","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.bVEJBtXhXOkqIBek"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"NXJMfsrhYeCCEFP2"} {"name":"Kastvapen","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.XF2eNRo6uMhDs5Uv"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"MTwMDLf5SyNPpPaM"}
{"name":"Jakt","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5wz37ypKMn6tgtTr"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"3EuThKpVWrtV1Myy"} {"name":"Knivar","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.boR4AGF8LD12ykoc"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"4Qz1KWm2vzYSviGo"}
{"name":"Kastvapen","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.XF2eNRo6uMhDs5Uv"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"33aM81M73ZyO1NNT"} {"name":"Lagkunskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.8org0OaWuKO6rCqm"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"OZZNcLo8kJEl5bxz"}
{"name":"Knivar","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.boR4AGF8LD12ykoc"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"dGpYfI8CLwxKSzas"} {"name":"Läkekonst","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.DSWruhUT6DT9kY7Z"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"39W3RKp0OYJ6ODHc"}
{"name":"Lagkunskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.8org0OaWuKO6rCqm"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"SYa97JM5u0aCNJMA"} {"name":"Lärdom","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5oQCvQNiDSeIe8vI"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"3SIpCpZrFJ0Wo1yG"}
{"name":"Legender","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.dYcVgFgx6WmBWCeZ"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"JcmDWE2GxJ9HKIuT"} {"name":"Legender","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.dYcVgFgx6WmBWCeZ"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"9U3LFDwN8maRuB4O"}
{"name":"Läkekonst","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.DSWruhUT6DT9kY7Z"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"DqnFfN91ovo86QOn"} {"name":"Musik","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.bcRVOx8M3Ue6tgGz"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"07lF8ECXawymH6sJ"}
{"name":"Lärdom","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.5oQCvQNiDSeIe8vI"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Y6kDWokNA81POqvG"} {"name":"Rida","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.eFeMJtv30eImpUMn"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"KwypnNBcjbpJHgNw"}
{"name":"Musik","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.bcRVOx8M3Ue6tgGz"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"5nMScpCnMbb77QfD"} {"name":"Sjömanskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.BkCe8HPX1wVYlsmV"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"dGFnaEQAwsbMe06A"}
{"name":"Rida","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.eFeMJtv30eImpUMn"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"lqRRrd1Qdmbv5Nay"} {"name":"Sköldar","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.NBRV1tzrIV9AmGka"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"h0t1HszSchtAU4CD"}
{"name":"Sjömanskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.BkCe8HPX1wVYlsmV"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"JIEl6a3sIkH2V5wX"} {"name":"Skytte","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.5NCkdBZ4lWwLzGwk"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"IuE45fz0yTGXeAeg"}
{"name":"Skytte","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.5NCkdBZ4lWwLzGwk"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"jEoMTkqoxQ9iSaoB"} {"name":"Slagsmål","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.IC2RGKp9cEYzyIln"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"93J8eMq8Ruii7HGQ"}
{"name":"Sköldar","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.NBRV1tzrIV9AmGka"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"OkDh0xCD26hUrthN"} {"name":"Smidighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.tmNI5YIYYjGuZK5i"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"bj1YnS866BInFyBC"}
{"name":"Slagsmål","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.IC2RGKp9cEYzyIln"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"afCvHSTrmDWNkj31"} {"name":"Spana","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.EVCN4lxeferZYP0P"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"9thUjlghPlpJCeVu"}
{"name":"Spana","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.EVCN4lxeferZYP0P"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Z0pWniEH3MBU69g6"} {"name":"Spel","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Uc9XLdzkI7mGMTLL"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"kPJ2fnAXyQJYn9r7"}
{"name":"Spel","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Uc9XLdzkI7mGMTLL"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"HigGBE4oUC9yYMYw"} {"name":"Spjut","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.qbi9SN1V4bPT3T3Y"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"yFBhPZrfG35GZlJ6"}
{"name":"Spjut","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.qbi9SN1V4bPT3T3Y"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Ab22ZgWUiHl83kLQ"} {"name":"Språk","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.elGMSOQROaYXCEPA"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"YjhRgpl5EKPuLfqd"}
{"name":"Språk","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.elGMSOQROaYXCEPA"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"VZx4zxd72g4tKvAd"} {"name":"Status","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.F5lkuwhO3WGl5yWk"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"B9l1Gg5jDycSRvmN"}
{"name":"Status","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.F5lkuwhO3WGl5yWk"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"eaooVeqja7pzzC1X"} {"name":"Stigvana","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.TjVsmOs0PqbAzNUf"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"nBfDHdCERZngNS3o"}
{"name":"Stigvana","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.TjVsmOs0PqbAzNUf"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"dR4UbIXYyCovTGzA"} {"name":"Styrka","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.YpheXmaKsX9omtBA"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"K47Rdtaomx6ixCj6"}
{"name":"Styrka","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.YpheXmaKsX9omtBA"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"anObCIyX3DdSjNPY"} {"name":"Svärd","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.uctwxo07FCKCk2K4"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"BLw8iWU04QAVCwI1"}
{"name":"Svärd","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.uctwxo07FCKCk2K4"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"IketG7YFZuGHnihF"} {"name":"Taktik","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.KJLF5fDrZaA1DKg1"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"my0qR3hj3MW6q0pW"}
{"name":"Taktik","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.KJLF5fDrZaA1DKg1"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"5xTZzjUd7x2EgmG2"} {"name":"Trolldom","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.Ewo6mu7WdoOcF6DD"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"LUq6INKpJDcNtG20"}
{"name":"Uthållighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.VWaRRqiUlMw1nPUn"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"4yFL38tdvBenZKBQ"} {"name":"Utstrålning","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.VWaRRqiUlMw1nPUn"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"7Bu4TQh7TvH01Kld"}
{"name":"Viljestyrka","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.UkwUABDT8NB8y1mQ"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"vyW9DUMDPYqBSCtz"} {"name":"Väderkunskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.GxkoQ2KdPh9ogGuJ"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"BkBOOXT7r5D1O2dd"}
{"name":"Väderkunskap","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"adventure","label":"SKILL.TYPE"},"value":"15","used":false},"flags":{"core":{"sourceId":"Item.GxkoQ2KdPh9ogGuJ"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"TEOcwEm0Z9GzJS6h"} {"name":"Viljestyrka","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.UkwUABDT8NB8y1mQ"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"f3hTLYs6zBhLfpTE"}
{"name":"Yxor","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.b9no6ZeE5KyG9AfT"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"BKu4BwEspAMQ5Yn3"} {"name":"Yxor","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"combat","label":"SKILL.TYPE"},"value":"30","used":false},"flags":{"core":{"sourceId":"Item.b9no6ZeE5KyG9AfT"},"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"cn51JP1hsyEz8u56"}
{"name":"Utstrålning","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"core":{"sourceId":"Item.VWaRRqiUlMw1nPUn"}},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"4yFL38tdvBenZKBQ"} {"name":"Uthållighet","permission":{"default":0,"tSnD115pP1EPBAXK":3},"type":"skill","data":{"description":{"value":"","type":"String","label":"ITEM.DESCRIPTION"},"type":{"value":"base","label":"SKILL.TYPE"},"value":"25","used":false},"flags":{"loaded":false},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"MnkH6ttZ29JN1vI6"}

View File

@@ -189,3 +189,18 @@
.sheet-tabs { .sheet-tabs {
} }
.relation-list li:not(:last-child) {
margin-bottom: 5px;
}
.learning-list li:not(:last-child) {
margin-bottom: 5px;
}
.learning-list .learning,
.relation-list .relation {
padding: 0 0 5px;
border-bottom: 1px solid #bbb;
text-align: center;
}

View File

@@ -2,7 +2,7 @@
"name": "kopparhavet", "name": "kopparhavet",
"title": "Kopparhavets Hjältar", "title": "Kopparhavets Hjältar",
"description": "The Molten Sea is a dangerous but exciting place, where pirates, sorcerers and secretive orders of knighthood struggle for power, wealth and ancient lore.", "description": "The Molten Sea is a dangerous but exciting place, where pirates, sorcerers and secretive orders of knighthood struggle for power, wealth and ancient lore.",
"version": "0.0.1", "version": "0.0.2",
"minimumCoreVersion": "0.7.5", "minimumCoreVersion": "0.7.5",
"compatibleCoreVersion": "0.7.7", "compatibleCoreVersion": "0.7.7",
"templateVersion": 3, "templateVersion": 3,
@@ -21,10 +21,17 @@
"packs": [ "packs": [
{ {
"name": "skills", "name": "skills",
"label": "Skills", "label": "Kopparhavets Hjältar Färdigheter",
"system": "kopparhavet", "system": "kopparhavet",
"path": "./packs/skills.db", "path": "./packs/skills.db",
"entity": "Item" "entity": "Item"
},
{
"name": "skills-ht",
"label": "Hjältarnas Tid Färdigheter",
"system": "kopparhavet",
"path": "./packs/skills-ht.db",
"entity": "Item"
} }
], ],
"languages": [ "languages": [
@@ -46,6 +53,6 @@
"url": "https://pi.rikspolisen.se/foundryvtt/kopparhavet", "url": "https://pi.rikspolisen.se/foundryvtt/kopparhavet",
"socket": true, "socket": true,
"manifest": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/raw/branch/master/system.json", "manifest": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/raw/branch/master/system.json",
"download": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/archive/v0.0.1.zip", "download": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/archive/v0.0.2.zip",
"license": "" "license": ""
} }

View File

@@ -41,44 +41,6 @@
"stats", "stats",
"combat" "combat"
], ],
"baseSkills": [
"Smidighet",
"Trolldom",
"Fingerfärdighet",
"Finna dolda ting",
"Förleda",
"Gömma sig",
"Handel",
"Hantverk",
"Insikt",
"Jakt",
"Kastvapen",
"Knivar",
"Lagkunskap",
"Legender",
"Läkekonst",
"Lärdom",
"Musik",
"Rida",
"Sjömanskap",
"Skytte",
"Sköldar",
"Slagsmål",
"Spana",
"Spel",
"Spjut",
"Språk",
"Status",
"Stigvana",
"Styrka",
"Svärd",
"Taktik",
"Uthållighet",
"Utstrålning",
"Viljestyrka",
"Väderkunskap",
"Yxor"
],
"bio": { "bio": {
"kin": { "kin": {
"label": "BIO.KIN", "label": "BIO.KIN",
@@ -88,9 +50,17 @@
"label": "BIO.PROFESSION", "label": "BIO.PROFESSION",
"value": "" "value": ""
}, },
"nickname": {
"label": "BIO.NICKNAME",
"value": ""
},
"age": { "age": {
"label": "BIO.AGE", "label": "BIO.AGE",
"value": "" "value": ""
},
"appearance": {
"label": "BIO.APPEARANCE",
"value": ""
} }
}, },
"background": { "background": {
@@ -142,7 +112,8 @@
"label": "CURRENCY.QUARTER", "label": "CURRENCY.QUARTER",
"value": 0 "value": 0
} }
} },
"relationships": {}
}, },
"adversary": { "adversary": {
"templates": [ "templates": [

View File

@@ -1,19 +1,19 @@
<form class="{{cssClass}}" autocomplete="off"> <form class="{{cssClass}}" autocomplete="off">
<div class="character"> <div class="character">
<div class="header grid-container" style="grid-template-columns: auto auto 1.7fr 2fr;"> <div class="header grid-container" style="grid-template-columns: auto auto 1fr auto 1fr; margin-bottom: 10px;">
<div class="avatar flex-group-center" style="grid-row: 1/7;"> <div class="avatar flex-group-center" style="grid-row: 1/7;">
<img class="profile-img actor-avatar-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" /> <img class="profile-img actor-avatar-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
</div> </div>
<label style="margin: auto;">{{localize "BIO.NAME"}}:</label> <label style="margin: auto;">{{localize "BIO.NAME"}}:</label>
<h1 class="charname" style="margin-bottom: 0;grid-column: 3/5;"><input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "BIO.NAME"}}" /></h1> <h1 class="charname" style="margin-bottom: 0;grid-column: 3/6;"><input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "BIO.NAME"}}" /></h1>
<label style="margin: auto;">{{localize data.bio.profession.label}}:</label>
<input name="data.bio.profession.value" type="text" value="{{data.bio.profession.value}}" placeholder="{{localize data.bio.profession.label}}" />
<label style="margin: auto;">{{localize data.bio.kin.label}}:</label> <label style="margin: auto;">{{localize data.bio.kin.label}}:</label>
<input name="data.bio.kin.value" type="text" value="{{data.bio.kin.value}}" placeholder="{{localize data.bio.kin.label}}" /> <input name="data.bio.kin.value" type="text" value="{{data.bio.kin.value}}" placeholder="{{localize data.bio.kin.label}}" />
<label style="margin: auto;">{{localize data.bio.profession.label}}:</label>
<input name="data.bio.profession.value" type="text" value="{{data.bio.profession.value}}" placeholder="{{localize data.bio.profession.label}}" />
<label style="margin: auto;">{{localize data.health.label}}:</label> <label style="margin: auto;">{{localize data.health.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;"> <div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.health.value" value="{{data.health.value}}" data-dtype="Number" /> <input class="center-text" type="text" name="data.health.value" value="{{data.health.value}}" data-dtype="Number" />
@@ -34,35 +34,11 @@
<span> / </span> <span> / </span>
<input class="center-text" type="text" name="data.mana.max" value="{{data.mana.max}}" data-dtype="Number" /> <input class="center-text" type="text" name="data.mana.max" value="{{data.mana.max}}" data-dtype="Number" />
</div> </div>
<div class="border grid-container" style="grid-column-gap: 5px; grid-column: 4; grid-row: 2/7; grid-template-columns: 1fr auto;">
<h2 style="margin-bottom: 0; grid-column: 1/3;">{{localize "FEATURES.TITLE"}}</h2>
<input name="data.feature.one.label" class="roll-feature" type="text" value="{{data.feature.one.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.one.value}}active{{/if}}" data-feature="one">
<i class="far {{#if data.feature.one.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.two.label" class="roll-feature" type="text" value="{{data.feature.two.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.two.value}}active{{/if}}" data-feature="two">
<i class="far {{#if data.feature.two.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.three.label" class="roll-feature" type="text" value="{{data.feature.three.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.three.value}}active{{/if}}" data-feature="three">
<i class="far {{#if data.feature.three.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.four.label" class="roll-feature" type="text" value="{{data.feature.four.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.four.value}}active{{/if}}" data-feature="four">
<i class="far {{#if data.feature.four.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
</div> </div>
<div class="sheet-tabs tabs flex row" data-group="primary"> <div class="sheet-tabs tabs flex row" data-group="primary">
<b class="item" data-tab="main">{{localize "TAB.MAIN"}}</b>
<b class="item" data-tab="skills">{{localize "TAB.SKILLS"}}</b> <b class="item" data-tab="skills">{{localize "TAB.SKILLS"}}</b>
<!-- <b class="item" data-tab="combat">{{localize "TAB.COMBAT"}}</b> -->
<b class="item" data-tab="talent">{{localize "TAB.TALENTS"}}</b> <b class="item" data-tab="talent">{{localize "TAB.TALENTS"}}</b>
<b class="item" data-tab="gear">{{localize "TAB.GEAR"}}</b> <b class="item" data-tab="gear">{{localize "TAB.GEAR"}}</b>
<b class="item" data-tab="bio">{{localize "TAB.BIO"}}</b> <b class="item" data-tab="bio">{{localize "TAB.BIO"}}</b>
@@ -70,14 +46,12 @@
</div> </div>
<div class="sheet-body"> <div class="sheet-body">
<div class="tab" data-group="primary" data-tab="main">
{{> systems/kopparhavet/templates/parts/actor/main.html}}
</div>
<div class="tab" data-group="primary" data-tab="skills"> <div class="tab" data-group="primary" data-tab="skills">
{{> systems/kopparhavet/templates/parts/actor/skills.html}} {{> systems/kopparhavet/templates/parts/actor/skills.html}}
</div> </div>
<!--
<div class="tab" data-group="primary" data-tab="combat">
{{> systems/kopparhavet/templates/parts/actor/combat.html}}
</div>
-->
<div class="tab" data-group="primary" data-tab="talent"> <div class="tab" data-group="primary" data-tab="talent">
{{> systems/kopparhavet/templates/parts/actor/talent.html}} {{> systems/kopparhavet/templates/parts/actor/talent.html}}
</div> </div>

View File

@@ -0,0 +1,51 @@
<form class="{{cssClass}}" autocomplete="off">
<div class="adversary">
<div class="header grid-container" style="grid-template-columns: auto 1fr auto 1fr auto;margin-bottom: 5px">
<div class="avatar flex-group-center" style="grid-row: 1/7;">
<img class="profile-img actor-avatar-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
</div>
<label style="margin: auto;">{{localize "BIO.NAME"}}:</label>
<h1 class="charname" style="margin-bottom: 0;grid-column: 3/6;"><input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "BIO.NAME"}}" /></h1>
<label style="margin: auto;">{{localize data.health.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.health.value" value="{{data.health.value}}" data-dtype="Number" />
<span> / </span>
<input class="center-text" type="text" name="data.health.max" value="{{data.health.max}}" data-dtype="Number" />
</div>
<label style="margin: auto;">{{localize data.stamina.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.stamina.value" value="{{data.stamina.value}}" data-dtype="Number" />
<span> / </span>
<input class="center-text" type="text" name="data.stamina.max" value="{{data.stamina.max}}" data-dtype="Number" />
</div>
<label style="margin: auto;">{{localize data.mana.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.mana.value" value="{{data.mana.value}}" data-dtype="Number" />
<span> / </span>
<input class="center-text" type="text" name="data.mana.max" value="{{data.mana.max}}" data-dtype="Number" />
</div>
</div>
<div class="sheet-tabs tabs flex row" data-group="primary">
<b class="item" data-tab="combat">{{localize "TAB.COMBAT"}}</b>
<b class="item" data-tab="talent">{{localize "TAB.TALENTS"}}</b>
<b class="item" data-tab="note">{{localize "TAB.NOTE"}}</b>
</div>
<div class="sheet-body">
<div class="tab" data-group="primary" data-tab="combat">
{{> systems/kopparhavet/templates/parts/actor/ht-combat.html}}
</div>
<div class="tab" data-group="primary" data-tab="talent">
{{> systems/kopparhavet/templates/parts/actor/talent.html}}
</div>
<div class="tab border note" data-group="primary" data-tab="note" style="height: 100%; border-top: none;">
{{editor content=data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
</div>
</div>
</div>
</form>

View File

@@ -0,0 +1,68 @@
<form class="{{cssClass}}" autocomplete="off">
<div class="character">
<div class="header grid-container" style="grid-template-columns: auto auto 1fr auto 1fr; margin-bottom: 10px;">
<div class="avatar flex-group-center" style="grid-row: 1/8;">
<img class="profile-img actor-avatar-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
</div>
<label style="margin: auto;">{{localize "BIO.NAME"}}:</label>
<h1 class="charname" style="margin-bottom: 0; grid-column: 3/6;"><input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "BIO.NAME"}}" /></h1>
<label style="margin: auto;">{{localize data.bio.nickname.label}}:</label>
<input name="data.bio.nickname.value" style="grid-column: 3/6;" type="text" value="{{data.bio.nickname.value}}" placeholder="{{localize data.bio.nickname.label}}" />
<label style="margin: auto;">{{localize data.bio.kin.label}}:</label>
<input name="data.bio.kin.value" type="text" value="{{data.bio.kin.value}}" placeholder="{{localize data.bio.kin.label}}" />
<label style="margin: auto;">{{localize data.bio.profession.label}}:</label>
<input name="data.bio.profession.value" type="text" value="{{data.bio.profession.value}}" placeholder="{{localize data.bio.profession.label}}" />
<label style="margin: auto;">{{localize data.health.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.health.value" value="{{data.health.value}}" data-dtype="Number" />
<span> / </span>
<input class="center-text" type="text" name="data.health.max" value="{{data.health.max}}" data-dtype="Number" />
</div>
<label style="margin: auto;">{{localize data.stamina.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.stamina.value" value="{{data.stamina.value}}" data-dtype="Number" />
<span> / </span>
<input class="center-text" type="text" name="data.stamina.max" value="{{data.stamina.max}}" data-dtype="Number" />
</div>
<label style="margin: auto;">{{localize data.mana.label}}:</label>
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
<input class="center-text" type="text" name="data.mana.value" value="{{data.mana.value}}" data-dtype="Number" />
<span> / </span>
<input class="center-text" type="text" name="data.mana.max" value="{{data.mana.max}}" data-dtype="Number" />
</div>
</div>
<div class="sheet-tabs tabs flex row" data-group="primary">
<b class="item" data-tab="main">{{localize "TAB.MAIN"}}</b>
<b class="item" data-tab="skills">{{localize "TAB.SKILLS"}}</b>
<b class="item" data-tab="talent">{{localize "TAB.TALENTS"}}</b>
<b class="item" data-tab="gear">{{localize "TAB.GEAR"}}</b>
<b class="item" data-tab="note">{{localize "TAB.NOTE"}}</b>
</div>
<div class="sheet-body">
<div class="tab" data-group="primary" data-tab="main">
{{> systems/kopparhavet/templates/parts/actor/ht-main.html}}
</div>
<div class="tab" data-group="primary" data-tab="skills">
{{> systems/kopparhavet/templates/parts/actor/ht-skills.html}}
</div>
<div class="tab" data-group="primary" data-tab="talent">
{{> systems/kopparhavet/templates/parts/actor/talent.html}}
</div>
<div class="tab" data-group="primary" data-tab="gear">
{{> systems/kopparhavet/templates/parts/actor/gear.html}}
</div>
<div class="tab note border" data-group="primary" data-tab="note" style="border-top: none;">
{{editor content=data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
</div>
</div>
</div>
</form>

View File

@@ -0,0 +1,68 @@
<div class="border grid-container" style="height: 100%; border-top: none; grid-template-columns: 1fr 1fr; grid-template-rows: auto 1fr;">
<div class="combat border">
<ul class="items">
<ul class="items-list">
<li class="item flexrow">
<div class="item-name" style="flex-grow: 8;">{{localize "MOD.INIT"}}</div>
<div class="item-value" style="flex: none;"><input name="data.combat.init" class="skill-value" type="number" value="{{data.combat.init}}" data-dtype="Number" /></div>
</li>
<li class="item flexrow">
<div class="item-name roll-defence rollable" data-defence="{{data.combat.defence}}" style="flex-grow: 8;">{{localize "ADVERSARY.DEFENCE"}}</div>
<div class="item-value" style="flex: none;"><input name="data.combat.defence" class="skill-value" type="text" value="{{data.combat.defence}}" /></div>
</li>
<li class="item flexrow">
<div class="item-name roll-adversary-armor rollable" data-armor="{{data.combat.armor}}" style="flex-grow: 8;">{{localize "ITEM.DEFENCE"}}</div>
<div class="item-value" style="flex: none;"><input name="data.combat.armor" class="skill-value" type="text" value="{{data.combat.armor}}" /></div>
</li>
</ul>
</ul>
</div>
<div class="talents border" style="grid-row: 1/3; grid-column-start: 2;">
<h1 style="margin-bottom: 0; grid-column: 1/4;">{{localize "TAB.SKILLS"}}</h1>
<ul class="items">
<ul class="items-list">
{{#each actor.skills as |skill key|}}
<li class="item flexrow" data-item-id="{{skill._id}}">
<div class="item-name roll-skill rollable" style="flex-grow: 8;">{{skill.name}}</div>
<div class="item-value" style="flex: none;"><input class="skill-value" type="number" value="{{skill.data.value}}" min="0" data-item-id="{{skill._id}}" data-dtype="Number" /></div>
</li>
{{/each}}
</ul>
</ul>
</div>
<div class="attacks border">
<ul class="items">
<li class="items-header flexrow">
<div class="header-name">{{localize "ITEM.ATTACK"}}</div>
<div class="">{{localize "ITEM.SKILL"}}</div>
<div>{{localize "ITEM.DAMAGE"}}</div>
<div></div>
</li>
<ul class="items-list">
{{#each actor.attacks as |item key|}}
<li class="item flexrow" data-item-id="{{item._id}}" data-ability="{{item.data.skill.value}}">
<div class="item-name">{{item.name}}</div>
<div class="skill-roll">
<div class="roll-button">
<div class="roll-adversary-attack rollable">{{item.data.skill.value}}</div>
</div>
</div>
<div class="skill-roll">
<div class="roll-button">
<div class="roll-damage rollable">{{item.data.damage.value}}</div>
</div>
</div>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</ul>
</div>
</div>

View File

@@ -0,0 +1,99 @@
<div class="bio-tab border scroll-y" style="height: 100%; border-top: none;">
<div class="grid-container" style="height: fit-content; border-top: none; grid-template-rows: 1fr auto auto; grid-template-columns: 1fr 1fr;">
<div class="border grid-container" style="height: 100%; grid-row: 1/4; grid-template-rows: auto 1fr; height: fit-content; min-height: 200px;">
<h2 style="margin-bottom: 0;">{{localize data.bio.appearance.label}}</h2>
<div class="description">
{{editor content=data.bio.appearance.value target="data.bio.appearance.value" button=true owner=owner editable=editable}}
</div>
</div>
<div class="border grid-container" style="grid-column-gap: 5px; grid-template-columns: 1fr auto; max-height: 163px;">
<h2 style="margin-bottom: 0; grid-column: 1/3;">{{localize "HT.FEATURES.TITLE"}}</h2>
<input name="data.feature.one.label" class="roll-feature" type="text" value="{{data.feature.one.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.one.value}}active{{/if}}" data-feature="one">
<i class="far {{#if data.feature.one.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.two.label" class="roll-feature" type="text" value="{{data.feature.two.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.two.value}}active{{/if}}" data-feature="two">
<i class="far {{#if data.feature.two.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.three.label" class="roll-feature" type="text" value="{{data.feature.three.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.three.value}}active{{/if}}" data-feature="three">
<i class="far {{#if data.feature.three.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.four.label" class="roll-feature" type="text" value="{{data.feature.four.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.four.value}}active{{/if}}" data-feature="four">
<i class="far {{#if data.feature.four.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
<div class="border">
<header class="relation-header" >
<h2 class="grid-container" style="margin-bottom: 0; grid-template-columns: 2fr 1fr auto;">
{{localize "HT.RELATIONSHIP.TITLE"}}
<div></div>
<a class="relation-control" data-action="create"><i class="fas fa-plus"></i></a>
</h2>
</header>
<ol class="relation-list" style="padding: 0;">
{{#each data.relationships as |attr key|}}
<li class="relation grid-container" style="grid-template-columns: 2fr auto auto;" data-attribute="{{key}}">
<input class="relation-key" type="text" name="data.relationships.{{key}}.key" value="{{key}}" style="display: none;" />
<input class="relation-value" type="text" name="data.relationships.{{key}}.value" value="{{attr.value}}" />
<a style="margin: auto 10px;" class="relation-click {{#if attr.check}}active{{/if}}">
<i class="far {{#if attr.check}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a style="margin: auto;" class="relation-control" data-action="delete"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
</div>
<div class="border">
<header class="learning-header" >
<h2 class="grid-container" style="margin-bottom: 0; grid-template-columns: 2fr 1fr auto;">
{{localize "LEARNING.TITLE"}}
<div></div>
<a class="learning-control" data-action="create"><i class="fas fa-plus"></i></a>
</h2>
</header>
<ol class="learning-list" style="padding: 0;">
{{#each data.learning as |attr key|}}
<li class="learning grid-container" style="grid-template-columns: 2fr auto auto;" data-attribute="{{key}}">
<input class="learning-key" type="text" name="data.learning.{{key}}.key" value="{{key}}" style="display: none;" />
<input style="margin-top: auto; margin-bottom: auto;" class="learning-value" type="text" name="data.learning.{{key}}.value" value="{{attr.value}}" />
<div class="grid-container" style="margin: auto 10px; grid-template-rows: auto auto; grid-template-columns: auto auto auto auto;">
<a data-num="one" class="learning-click {{#if attr.one}}active{{/if}}">
<i class="far {{#if attr.one}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="two" class="learning-click {{#if attr.two}}active{{/if}}">
<i class="far {{#if attr.two}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="three" class="learning-click {{#if attr.three}}active{{/if}}">
<i class="far {{#if attr.three}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="four" class="learning-click {{#if attr.four}}active{{/if}}">
<i class="far {{#if attr.four}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="five" class="learning-click {{#if attr.five}}active{{/if}}">
<i class="far {{#if attr.five}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="six" class="learning-click {{#if attr.six}}active{{/if}}">
<i class="far {{#if attr.six}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="seven" class="learning-click {{#if attr.seven}}active{{/if}}">
<i class="far {{#if attr.seven}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="eight" class="learning-click {{#if attr.eight}}active{{/if}}">
<i class="far {{#if attr.eight}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
<a style="margin: auto;" class="learning-control" data-action="delete"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
</div>
</div>
</div>

View File

@@ -0,0 +1,46 @@
<div class="skills-tab border scroll-y grid-container" style="grid-template-columns: 1fr 1fr; border-top: none;">
<div class="skills border" style="grid-column: 2; grid-row: 1/5;">
<h1 style="margin-bottom: 0; grid-column: 1/4;">{{localize "SKILL.ADVENTURE"}}</h1>
<ul class="items">
<ul class="items-list">
{{#each actor.skills as |skill key|}}
{{#if skill.hasAdventure}}
<li class="item flexrow" data-item-id="{{skill._id}}">
<div class="item-name roll-skill" style="flex-grow: 8;">{{skill.name}}</div>
<div class="item-value" style="flex: none;"><input class="skill-value" type="number" value="{{skill.data.value}}" min="0" data-item-id="{{skill._id}}" data-dtype="Number" /></div>
<div style="align-self: flex-end">
<a style="margin: auto;" class="click-skill {{#if skill.data.used}}active{{/if}}" data-item-id="{{skill._id}}">
<i class="far {{#if skill.data.used}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
</li>
{{/if}}
{{/each}}
</ul>
</ul>
</div>
<div class="skills border">
<h1 style="margin-bottom: 0; grid-column: 1/4;">{{localize "SKILL.COMBAT"}}</h1>
<ul class="items">
<ul class="items-list">
{{#each actor.skills as |skill key|}}
{{#if skill.hasCombat}}
<li class="item flexrow" data-item-id="{{skill._id}}">
<div class="item-name roll-skill" style="flex-grow: 8;">{{skill.name}}</div>
<div class="item-value" style="flex: none;"><input class="skill-value" type="number" value="{{skill.data.value}}" min="0" data-item-id="{{skill._id}}" data-dtype="Number" /></div>
<div style="align-self: flex-end">
<a style="margin: auto;" class="click-skill {{#if skill.data.used}}active{{/if}}" data-item-id="{{skill._id}}">
<i class="far {{#if skill.data.used}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
</li>
{{/if}}
{{/each}}
</ul>
</ul>
</div>
<div class="skills border grid-container" style="grid-column-gap: 5px; grid-template-columns: 1fr;">
<h1 style="grid-column: unset;">{{localize data.languages.label}}</h1>
<input name="data.languages.value" type="text" value="{{data.languages.value}}" />
</div>
</div>

View File

@@ -0,0 +1,78 @@
<div class="bio-tab border scroll-y" style="height: 100%; border-top: none;">
<div class="grid-container" style="height: fit-content; border-top: none; grid-template-rows: 1fr auto; grid-template-columns: 1fr 1fr;">
<div class="border grid-container" style="height: 100%; grid-row: 1/4; grid-template-rows: auto 1fr; height: fit-content; min-height: 200px;">
<h2 style="margin-bottom: 0;">{{localize data.bio.appearance.label}}</h2>
<div class="description">
{{editor content=data.bio.appearance.value target="data.bio.appearance.value" button=true owner=owner editable=editable}}
</div>
</div>
<div class="border grid-container" style="grid-column-gap: 5px; grid-template-columns: 1fr auto; max-height: 163px;">
<h2 style="margin-bottom: 0; grid-column: 1/3;">{{localize "FEATURES.TITLE"}}</h2>
<input name="data.feature.one.label" class="roll-feature" type="text" value="{{data.feature.one.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.one.value}}active{{/if}}" data-feature="one">
<i class="far {{#if data.feature.one.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.two.label" class="roll-feature" type="text" value="{{data.feature.two.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.two.value}}active{{/if}}" data-feature="two">
<i class="far {{#if data.feature.two.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.three.label" class="roll-feature" type="text" value="{{data.feature.three.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.three.value}}active{{/if}}" data-feature="three">
<i class="far {{#if data.feature.three.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<input name="data.feature.four.label" class="roll-feature" type="text" value="{{data.feature.four.label}}" />
<a style="margin: auto;" class="feature {{#if data.feature.four.value}}active{{/if}}" data-feature="four">
<i class="far {{#if data.feature.four.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
<div class="border">
<header class="learning-header" >
<h2 class="grid-container" style="margin-bottom: 0; grid-template-columns: 2fr 1fr auto;">
{{localize "LEARNING.TITLE"}}
<div></div>
<a class="learning-control" data-action="create"><i class="fas fa-plus"></i></a>
</h2>
</header>
<ol class="learning-list" style="padding: 0;">
{{#each data.learning as |attr key|}}
<li class="learning grid-container" style="grid-template-columns: 2fr auto auto;" data-attribute="{{key}}">
<input class="learning-key" type="text" name="data.learning.{{key}}.key" value="{{key}}" style="display: none;" />
<input style="margin-top: auto; margin-bottom: auto;" class="learning-value" type="text" name="data.learning.{{key}}.value" value="{{attr.value}}" />
<div class="grid-container" style="margin: auto 10px; grid-template-rows: auto auto; grid-template-columns: auto auto auto auto;">
<a data-num="one" class="learning-click {{#if attr.one}}active{{/if}}">
<i class="far {{#if attr.one}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="two" class="learning-click {{#if attr.two}}active{{/if}}">
<i class="far {{#if attr.two}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="three" class="learning-click {{#if attr.three}}active{{/if}}">
<i class="far {{#if attr.three}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="four" class="learning-click {{#if attr.four}}active{{/if}}">
<i class="far {{#if attr.four}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="five" class="learning-click {{#if attr.five}}active{{/if}}">
<i class="far {{#if attr.five}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="six" class="learning-click {{#if attr.six}}active{{/if}}">
<i class="far {{#if attr.six}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="seven" class="learning-click {{#if attr.seven}}active{{/if}}">
<i class="far {{#if attr.seven}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
<a data-num="eight" class="learning-click {{#if attr.eight}}active{{/if}}">
<i class="far {{#if attr.eight}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
</a>
</div>
<a style="margin: auto;" class="learning-control" data-action="delete"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
</div>
</div>
</div>