Compare commits
8 Commits
Author | SHA1 | Date |
---|---|---|
|
a26cc89686 | |
|
58c3fbcd42 | |
|
6962d6fc04 | |
|
3f044c0b97 | |
|
cace9cc899 | |
|
0c1729a4b4 | |
|
77806b38c4 | |
|
3fd49d32bc |
|
@ -1,7 +1,7 @@
|
|||
# Kopparhavets Hjältar
|
||||
Detta "Game System" till FoundryVTT utvecklas privat och är officiellt godkänt fan-material av Helmgast och personerna bakom Kopparhavets Hjältar and Hjältarnas Tid.
|
||||
|
||||
#### Kopparhavets Hjältar och Hjältarnas Tid är copyright Helmgast och detta är publiceras med deras medgivande.
|
||||
#### Kopparhavets Hjältar och Hjältarnas Tid är copyright Helmgast och detta är publicerat med deras medgivande.
|
||||
###
|
||||
|
||||
---
|
||||
|
|
13
lang/en.json
13
lang/en.json
|
@ -72,6 +72,13 @@
|
|||
"MENU.SHOWROLLDIALOG": "Show diceroller dialog",
|
||||
"ROLL.OPENCLOSE": "Open / Close",
|
||||
"ROLL.EXCEPTIONAL": "Exceptional",
|
||||
"ROLL.SUBPAR": "Subpar result",
|
||||
"ROLL.LOW": "Low result",
|
||||
"ROLL.LIMITED": "Limited result",
|
||||
"ROLL.GOOD": "Good result",
|
||||
"ROLL.SUPERIOR": "Superior result",
|
||||
"ROLL.OR": "or",
|
||||
"ROLL.OPPOSITE": "Resisted by",
|
||||
|
||||
"SHIP.CARGO": "Cargo capacity",
|
||||
"SHIP.HULL": "Hull",
|
||||
|
@ -88,8 +95,10 @@
|
|||
"SKILL.COMBAT": "Combat",
|
||||
"SKILL.STARTVALUE": "Start value",
|
||||
"SKILL.LANGUAGE": "Language",
|
||||
"SKILL.NONE": "None",
|
||||
|
||||
"SPELL.DIFFICULTY": "Difficulty",
|
||||
"SPELL.ROLLTITLE": "Roll",
|
||||
"SPELL.ROLL": "Roll",
|
||||
"SPELL.COST": "Cost",
|
||||
"SPELL.ATTACKROLL": "Attack roll",
|
||||
|
@ -97,8 +106,8 @@
|
|||
"SPELL.RITUAL": "Ritual",
|
||||
|
||||
"STATS.HEALTH": "Health",
|
||||
"STATS.MANA": "Mana",
|
||||
"STATS.STAMINA": "Stamina",
|
||||
"STATS.MANA": "Guilt",
|
||||
"STATS.STAMINA": "Guard",
|
||||
|
||||
"TAB.BIO": "Background",
|
||||
"TAB.COMBAT": "Combat",
|
||||
|
|
|
@ -73,6 +73,13 @@
|
|||
"MENU.SHOWROLLDIALOG": "Visa tärningsdialog",
|
||||
"ROLL.OPENCLOSE": "Öppna / Stäng",
|
||||
"ROLL.EXCEPTIONAL": "Exceptionellt",
|
||||
"ROLL.SUBPAR": "Undermålig kvalitet",
|
||||
"ROLL.LOW": "Låg kvalitet",
|
||||
"ROLL.LIMITED": "Begränsad kvalitet",
|
||||
"ROLL.GOOD": "God kvalitet",
|
||||
"ROLL.SUPERIOR": "Överlägsen kvalitet",
|
||||
"ROLL.OR": "eller",
|
||||
"ROLL.OPPOSITE": "Motsatt av",
|
||||
|
||||
"SHIP.CARGO": "Lastförmåga",
|
||||
"SHIP.HULL": "Skrov",
|
||||
|
@ -89,6 +96,7 @@
|
|||
"SKILL.COMBAT": "Stridsfärdigheter",
|
||||
"SKILL.STARTVALUE": "Grundvärde",
|
||||
"SKILL.LANGUAGE": "Språk",
|
||||
"SKILL.NONE": "Ingen",
|
||||
|
||||
"SPELL.DIFFICULTY": "Svårighet",
|
||||
"SPELL.ROLLTITLE": "Slag",
|
||||
|
|
|
@ -154,13 +154,13 @@ export class ActorSheetKH extends ActorSheet {
|
|||
icon: '<i class="far dice"></i>',
|
||||
callback: (li) => {
|
||||
let itemId = li.data("itemId");
|
||||
let _item = this.actor.items.find((element) => element._id == itemId);
|
||||
let _item = this.actor.items.find((element) => element.id == itemId);
|
||||
|
||||
// Retrieve skill based on name
|
||||
let skill = this.actor.items.find((element) => element.name === _item.data.data.skill.value);
|
||||
let skill = this.actor.items.find((element) => element.name === _item.data.skill.value);
|
||||
|
||||
let skillName = skill.name
|
||||
let skillValue = skill.data.data.value
|
||||
let skillValue = skill.data.value
|
||||
let showValue = false
|
||||
|
||||
if(this.actor.data.type === "character") {
|
||||
|
@ -186,10 +186,10 @@ export class ActorSheetKH extends ActorSheet {
|
|||
icon: '<i class="far dice"></i>',
|
||||
callback: (li) => {
|
||||
let itemId = li.data("itemId");
|
||||
let _item = this.actor.items.find((element) => element._id == itemId);
|
||||
let _item = this.actor.items.find((element) => element.id == itemId);
|
||||
|
||||
let skillName = _item.name
|
||||
let skillValue = _item.data.data.value
|
||||
let skillValue = _item.data.value
|
||||
let showValue = false
|
||||
|
||||
if(this.actor.data.type === "character") {
|
||||
|
@ -214,14 +214,14 @@ export class ActorSheetKH extends ActorSheet {
|
|||
name: game.i18n.localize("MENU.SHOWROLLDIALOG"),
|
||||
icon: '<i class="far dice"></i>',
|
||||
callback: (li) => {
|
||||
let itemId = li.data("itemId");
|
||||
let _item = this.actor.items.find((element) => element._id == itemId);
|
||||
let itemId = li.data("item-id");
|
||||
let _item = this.actor.items.find((element) => element.id == itemId);
|
||||
|
||||
if (!_item) {
|
||||
_item = game.items.get(itemId);
|
||||
|
||||
if (!_item) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 1")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ export class ActorSheetKH extends ActorSheet {
|
|||
showValue = true
|
||||
}
|
||||
|
||||
switch (_item.data.data.difficulty.value) {
|
||||
switch (_item.data.difficulty.value) {
|
||||
case "simple":
|
||||
difficulty = 5
|
||||
break;
|
||||
|
@ -248,33 +248,92 @@ export class ActorSheetKH extends ActorSheet {
|
|||
break;
|
||||
}
|
||||
|
||||
if(_item.data.data.roll.value === "roll" || _item.data.data.roll.value === "attackroll") {
|
||||
if(_item.data.roll.value === "roll" || _item.data.roll.value === "attackroll") {
|
||||
// Retrieve skill based on name
|
||||
let skill = this.actor.items.find((element) => element.name === _item.data.data.roll.skill);
|
||||
let skill = this.actor.items.find((element) => element.name === _item.data.roll.skill);
|
||||
|
||||
let skillName = _item.name
|
||||
let skillValue = skill.data.data.value
|
||||
let skillValue = skill.data.value
|
||||
|
||||
if(this.actor.data.type === "character") {
|
||||
skillName = _item.name + " (" + skill.name + ")"
|
||||
}
|
||||
|
||||
this.khRoller.rollSkillDialogInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
||||
} else if(_item.data.data.roll.value === "opposite") {
|
||||
} else if(_item.data.roll.value === "opposite") {
|
||||
// Retrieve skill based on name
|
||||
let skill = this.actor.items.find((element) => element.name === _item.data.data.roll.skill);
|
||||
let skill = this.actor.items.find((element) => element.name === _item.data.roll.skill);
|
||||
|
||||
let skillName = _item.name
|
||||
let skillValue = skill.data.data.value
|
||||
let skillValue = skill.data.value
|
||||
|
||||
if(this.actor.data.type === "character") {
|
||||
skillName = _item.name + " (" + skill.name + ")"
|
||||
}
|
||||
|
||||
this.khRoller.rollSkillDialogInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
||||
} else if(_item.data.data.roll.value === "ritual") {
|
||||
console.log("Not supported yet")
|
||||
this.khRoller.rollSkillDialogInChat("Ritual", -1, showValue, this.actor, difficulty)
|
||||
let opposite = []
|
||||
// Retrieve skill based on name
|
||||
|
||||
if(_item.data.roll.oppositeskill !== "") {
|
||||
let skill1 = this.actor.items.find((element) => element.name === _item.data.roll.oppositeskill);
|
||||
opposite.push(skill1.name)
|
||||
}
|
||||
|
||||
if(_item.data.roll.oppositeskilltwo !== "") {
|
||||
let skill2 = this.actor.items.find((element) => element.name === _item.data.roll.oppositeskilltwo);
|
||||
opposite.push(skill2.name)
|
||||
}
|
||||
|
||||
this.khRoller.rollSkillDialogInChat(skillName, skillValue, showValue, this.actor, difficulty, opposite)
|
||||
} else if(_item.data.roll.value === "ritual") {
|
||||
let skills = []
|
||||
|
||||
if(_item.data.roll.ritual.skillone !== "") {
|
||||
let skill1 = this.actor.items.find((element) => element.name === _item.data.roll.ritual.skillone);
|
||||
|
||||
skills.push({
|
||||
name: skill1.name,
|
||||
value: skill1.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(_item.data.roll.ritual.skilltwo !== "") {
|
||||
let skill2 = this.actor.items.find((element) => element.name === _item.data.roll.ritual.skilltwo);
|
||||
|
||||
skills.push({
|
||||
name: skill2.name,
|
||||
value: skill2.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(_item.data.roll.ritual.skillthree !== "") {
|
||||
let skill3 = this.actor.items.find((element) => element.name === _item.data.roll.ritual.skillthree);
|
||||
|
||||
skills.push({
|
||||
name: skill3.name,
|
||||
value: skill3.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(_item.data.roll.ritual.skillfour !== "") {
|
||||
let skill4 = this.actor.items.find((element) => element.name === _item.data.roll.ritual.skillfour);
|
||||
|
||||
skills.push({
|
||||
name: skill4.name,
|
||||
value: skill4.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(_item.data.roll.ritual.skillfive !== "") {
|
||||
let skill5 = this.actor.items.find((element) => element.name === _item.data.roll.ritual.skillfive);
|
||||
|
||||
skills.push({
|
||||
name: skill5.name,
|
||||
value: skill5.data.value
|
||||
});
|
||||
}
|
||||
|
||||
this.khRoller.rollSkillChallangeDialogInChat(_item.name, skills, showValue, this.actor, difficulty)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -329,6 +388,7 @@ export class ActorSheetKH extends ActorSheet {
|
|||
]);
|
||||
|
||||
html.find(".feature").click(async (ev) => {
|
||||
console.log("feature")
|
||||
const featureName = $(ev.currentTarget).data("feature");
|
||||
const featureValue = this.actor.data.data.feature[featureName].value;
|
||||
if (featureName === "one") {
|
||||
|
@ -347,7 +407,7 @@ export class ActorSheetKH extends ActorSheet {
|
|||
html.find(".item-delete").click((ev) => {
|
||||
let parent = $(ev.currentTarget).data("parent")
|
||||
const li = $(ev.currentTarget).parents(parent);
|
||||
const item = this.actor.getOwnedItem(li.data("itemId"));
|
||||
const item = this.actor.items.get(li.data("itemId"));
|
||||
|
||||
if(item) {
|
||||
if (item.type === "armor") {
|
||||
|
@ -358,10 +418,10 @@ export class ActorSheetKH extends ActorSheet {
|
|||
|
||||
this.actor.items.map((i) => {
|
||||
if (i.type === "armor") {
|
||||
if (i._id !== item._id && i.data.data.equipable.equipped && i.data?.data?.modifications) {
|
||||
for (let k of Object.keys(i.data.data.modifications)) {
|
||||
if (i.data.data.modifications[k].modtype === "init") {
|
||||
initValue = i.data.data.modifications[k].value;
|
||||
if (i.id !== item.id && i.data.equipable.equipped && i.data?.data?.modifications) {
|
||||
for (let k of Object.keys(i.data.modifications)) {
|
||||
if (i.data.modifications[k].modtype === "init") {
|
||||
initValue = i.data.modifications[k].value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -375,23 +435,26 @@ export class ActorSheetKH extends ActorSheet {
|
|||
}
|
||||
}
|
||||
|
||||
this.actor.deleteOwnedItem(li.data("itemId"));
|
||||
this.actor.deleteEmbeddedDocuments("Item", [li.data("itemId")]);
|
||||
|
||||
//this.actor.deleteOwnedItem(li.data("itemId"));
|
||||
|
||||
li.slideUp(200, () => this.render(false));
|
||||
});
|
||||
|
||||
// Edit Inventory Item
|
||||
html.find(".item-edit").click(async (ev) => {
|
||||
console.log("item-edit")
|
||||
let parent = $(ev.currentTarget).data("parent")
|
||||
let li = $(ev.currentTarget).parents(parent);
|
||||
let itemId = li.data("itemId");
|
||||
let item = this.actor.getOwnedItem(itemId);
|
||||
let item = this.actor.items.get(itemId);
|
||||
|
||||
if (!item) {
|
||||
item = game.items.get(itemId);
|
||||
|
||||
if (!item) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 2")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -404,13 +467,13 @@ export class ActorSheetKH extends ActorSheet {
|
|||
html.find(".roll-spell-cost").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item-spell");
|
||||
let itemId = li.data("itemId");
|
||||
let spell = this.actor.getOwnedItem(itemId);
|
||||
let spell = this.actor.items.get(itemId);
|
||||
|
||||
if (!spell) {
|
||||
spell = game.items.get(itemId);
|
||||
|
||||
if (!spell) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 3")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -427,14 +490,14 @@ export class ActorSheetKH extends ActorSheet {
|
|||
|
||||
html.find(".roll-spell-skill").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item-spell");
|
||||
let itemId = li.data("itemId");
|
||||
let spell = this.actor.getOwnedItem(itemId);
|
||||
let itemId = li.data("item-id");
|
||||
let spell = this.actor.items.get(itemId);
|
||||
|
||||
if (!spell) {
|
||||
spell = game.items.get(itemId);
|
||||
|
||||
if (!spell) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 4")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -474,9 +537,20 @@ export class ActorSheetKH extends ActorSheet {
|
|||
|
||||
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
||||
} else if(spell.data.data.roll.value === "opposite") {
|
||||
let opposite = []
|
||||
// Retrieve skill based on name
|
||||
let skill = this.actor.items.find((element) => element.name === spell.data.data.roll.skill);
|
||||
|
||||
if(spell.data.data.roll.oppositeskill !== "") {
|
||||
let skill1 = this.actor.items.find((element) => element.name === spell.data.data.roll.oppositeskill);
|
||||
opposite.push(skill1.name)
|
||||
}
|
||||
|
||||
if(spell.data.data.roll.oppositeskilltwo !== "") {
|
||||
let skill2 = this.actor.items.find((element) => element.name === spell.data.data.roll.oppositeskilltwo);
|
||||
opposite.push(skill2.name)
|
||||
}
|
||||
|
||||
let skillName = spell.name
|
||||
let skillValue = skill.data.data.value
|
||||
|
||||
|
@ -484,17 +558,68 @@ export class ActorSheetKH extends ActorSheet {
|
|||
skillName = spell.name + " (" + skill.name + ")"
|
||||
}
|
||||
|
||||
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
||||
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty, opposite)
|
||||
} else if(spell.data.data.roll.value === "ritual") {
|
||||
console.log("Not supported yet")
|
||||
let skill1, skill2, skill3, skill4, skill5;
|
||||
let skills = []
|
||||
|
||||
// Retrieve skill based on name
|
||||
if(spell.data.data.roll.ritual.skillone !== "") {
|
||||
skill1 = this.actor.items.find((element) => element.name === spell.data.data.roll.ritual.skillone);
|
||||
|
||||
skills.push({
|
||||
name: skill1.name,
|
||||
value: skill1.data.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(spell.data.data.roll.ritual.skilltwo !== "") {
|
||||
skill2 = this.actor.items.find((element) => element.name === spell.data.data.roll.ritual.skilltwo);
|
||||
|
||||
skills.push({
|
||||
name: skill2.name,
|
||||
value: skill2.data.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(spell.data.data.roll.ritual.skillthree !== "") {
|
||||
skill3 = this.actor.items.find((element) => element.name === spell.data.data.roll.ritual.skillthree);
|
||||
|
||||
skills.push({
|
||||
name: skill3.name,
|
||||
value: skill3.data.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(spell.data.data.roll.ritual.skillfour !== "") {
|
||||
skill4 = this.actor.items.find((element) => element.name === spell.data.data.roll.ritual.skillfour);
|
||||
|
||||
skills.push({
|
||||
name: skill4.name,
|
||||
value: skill4.data.data.value
|
||||
});
|
||||
}
|
||||
|
||||
if(spell.data.data.roll.ritual.skillfive !== "") {
|
||||
skill5 = this.actor.items.find((element) => element.name === spell.data.data.roll.ritual.skillfive);
|
||||
|
||||
skills.push({
|
||||
name: skill5.name,
|
||||
value: skill5.data.data.value
|
||||
});
|
||||
}
|
||||
|
||||
let skillName = spell.name
|
||||
|
||||
this.khRoller.rollSkillRitualInChat(skillName, skills, showValue, this.actor, difficulty)
|
||||
}
|
||||
});
|
||||
|
||||
/* Roll skill */
|
||||
html.find(".roll-skill").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item-skill");
|
||||
let itemId = li.data("itemId");
|
||||
let _item = this.actor.items.find((element) => element._id == itemId);
|
||||
let itemId = li.data("item-id");
|
||||
let _item = this.actor.items.find((element) => element.id === itemId);
|
||||
|
||||
let skillName = _item.name
|
||||
let skillValue = _item.data.data.value
|
||||
|
@ -511,13 +636,13 @@ export class ActorSheetKH extends ActorSheet {
|
|||
html.find(".roll-weapon-skill").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item-weapon");
|
||||
let itemId = li.data("itemId");
|
||||
let weapon = this.actor.getOwnedItem(itemId);
|
||||
let weapon = this.actor.items.get(itemId);
|
||||
|
||||
if (!weapon) {
|
||||
weapon = game.items.get(itemId);
|
||||
|
||||
if (!weapon) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 5")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -540,13 +665,13 @@ export class ActorSheetKH extends ActorSheet {
|
|||
html.find(".roll-damage").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item-weapon");
|
||||
let itemId = li.data("itemId");
|
||||
let weapon = this.actor.getOwnedItem(itemId);
|
||||
let weapon = this.actor.items.get(itemId);
|
||||
|
||||
if (!weapon) {
|
||||
weapon = game.items.get(itemId);
|
||||
|
||||
if (!weapon) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 6")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -565,13 +690,13 @@ export class ActorSheetKH extends ActorSheet {
|
|||
html.find(".roll-armor").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("itemId");
|
||||
let armor = this.actor.getOwnedItem(itemId);
|
||||
let armor = this.actor.items.get(itemId);
|
||||
|
||||
if (!armor) {
|
||||
armor = game.items.get(itemId);
|
||||
|
||||
if (!armor) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 7")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -626,13 +751,13 @@ export class ActorSheetKH extends ActorSheet {
|
|||
html.find(".roll-attack-damage").click((ev) => {
|
||||
const li = $(ev.currentTarget).parents(".item-attack");
|
||||
let itemId = li.data("itemId");
|
||||
let weapon = this.actor.getOwnedItem(itemId);
|
||||
let weapon = this.actor.items.get(itemId);
|
||||
|
||||
if (!weapon) {
|
||||
weapon = game.items.get(itemId);
|
||||
|
||||
if (!weapon) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 8")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -686,6 +811,12 @@ export class ActorSheetKH extends ActorSheet {
|
|||
|
||||
// Add or Remove relationship
|
||||
html.find(".learning-control").click(this._onClickLearningControl.bind(this));
|
||||
html.find(".learning-delete").click(async (event) => {
|
||||
event.preventDefault();
|
||||
const a = event.currentTarget.closest(".learning");
|
||||
const id = a.dataset["attribute"];
|
||||
this.object.update({ "data.learning": { ["-=" + id]: null } });
|
||||
});
|
||||
html.find(".learning-click").click(this._onClickLearingLearned.bind(this));
|
||||
|
||||
/* Hjältarnas Tid specefic */
|
||||
|
@ -697,6 +828,7 @@ export class ActorSheetKH extends ActorSheet {
|
|||
}
|
||||
|
||||
async _onClickLearingLearned(event) {
|
||||
console.log("_onClickLearingLearned")
|
||||
event.stopPropagation();
|
||||
const li1 = $(event.currentTarget);
|
||||
const li2 = $(event.currentTarget).parents(".learning");
|
||||
|
@ -716,13 +848,11 @@ export class ActorSheetKH extends ActorSheet {
|
|||
|
||||
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;
|
||||
const action = event.currentTarget.dataset.action;
|
||||
|
||||
// Add new modification
|
||||
if (action === "create") {
|
||||
const form = this.form;
|
||||
const nk = new Date().getTime();
|
||||
let newKey = document.createElement("div");
|
||||
|
||||
|
@ -732,41 +862,43 @@ export class ActorSheetKH extends ActorSheet {
|
|||
await this._onSubmit(event);
|
||||
}
|
||||
|
||||
/*
|
||||
// Remove existing modification
|
||||
else if (action === "delete") {
|
||||
const li = a.closest(".learning");
|
||||
li.parentElement.removeChild(li);
|
||||
await this._onSubmit(event);
|
||||
const a = event.currentTarget.closest(".learning");
|
||||
const id = a.dataset["attribute"];
|
||||
this.object.update({ "data.learning": { ["-=" + id]: null } });
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
async _onClickRelationshipControl(event) {
|
||||
console.log("_onClickRelationshipControl")
|
||||
event.preventDefault();
|
||||
const a = event.currentTarget;
|
||||
const action = a.dataset.action;
|
||||
const attrs = this.object.data.data.relationships;
|
||||
const form = this.form;
|
||||
const action = event.currentTarget.dataset.action;
|
||||
|
||||
// Add new modification
|
||||
if (action === "create") {
|
||||
const form = this.form;
|
||||
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);
|
||||
const ability = $(event.currentTarget).closest(".relation").data("attribute");
|
||||
await this.object.update({ "data.relationships": { ["-=" + ability]: null } });
|
||||
}
|
||||
|
||||
await this._onSubmit(event);
|
||||
}
|
||||
|
||||
async _onClickRelationshipUsed(event) {
|
||||
console.log("_onClickRelationshipUsed")
|
||||
event.stopPropagation();
|
||||
|
||||
const li = $(event.currentTarget).parents(".relation");
|
||||
|
@ -784,8 +916,9 @@ export class ActorSheetKH extends ActorSheet {
|
|||
}
|
||||
|
||||
async _toggleEquippedItem(event) {
|
||||
console.log("_toggleEquippedItem")
|
||||
const li = $(event.currentTarget);
|
||||
const item = this.actor.getOwnedItem(li.data("itemId"));
|
||||
const item = this.actor.items.get(li.data("itemId"));
|
||||
const actor = this.actor;
|
||||
|
||||
if(item) {
|
||||
|
@ -797,7 +930,7 @@ export class ActorSheetKH extends ActorSheet {
|
|||
|
||||
actor.items.map((i) => {
|
||||
if(i.type === "armor") {
|
||||
if(i._id !== item._id && i.data.data.equipable.equipped && i.data?.data?.modifications) {
|
||||
if(i.id !== item.id && i.data.data.equipable.equipped && i.data?.data?.modifications) {
|
||||
for(let k of Object.keys(i.data.data.modifications)) {
|
||||
if(i.data.data.modifications[k].modtype === "init") {
|
||||
initValue = i.data.data.modifications[k].value;
|
||||
|
@ -828,28 +961,30 @@ export class ActorSheetKH extends ActorSheet {
|
|||
}
|
||||
|
||||
async _increaseQuantity(event) {
|
||||
console.log("_increaseQuantity")
|
||||
event.stopPropagation();
|
||||
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
let itemId = li.data("itemId");
|
||||
let item = this.actor.getOwnedItem(itemId);
|
||||
let item = this.actor.items.get(itemId);
|
||||
|
||||
if (!item) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 9")
|
||||
}
|
||||
|
||||
item.update({ ["data.quantity.value"]: item.data.data.quantity.value + 1 });
|
||||
}
|
||||
|
||||
async _decreaseQuantity(event) {
|
||||
console.log("_decreaseQuantity")
|
||||
event.stopPropagation();
|
||||
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
let itemId = li.data("itemId");
|
||||
let item = this.actor.getOwnedItem(itemId);
|
||||
let item = this.actor.items.get(itemId);
|
||||
|
||||
if (!item) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 10")
|
||||
}
|
||||
|
||||
let count = item.data.data.quantity.value - 1 > 0 ? item.data.data.quantity.value - 1 : 0;
|
||||
|
@ -858,25 +993,27 @@ export class ActorSheetKH extends ActorSheet {
|
|||
}
|
||||
|
||||
async _onChangeSkillValue(event) {
|
||||
console.log("_decreaseQuantity")
|
||||
event.preventDefault();
|
||||
|
||||
const itemId = $(event.currentTarget).data("item-id");
|
||||
let _item = this.actor.items.find((element) => element._id == itemId);
|
||||
let _item = this.actor.items.find((element) => element.id == itemId);
|
||||
|
||||
if (_item) {
|
||||
let update = {
|
||||
_id: _item._id,
|
||||
_id: _item.id,
|
||||
data: { value: $(event.currentTarget).val() },
|
||||
};
|
||||
await this.actor.updateEmbeddedEntity("OwnedItem", update);
|
||||
await this.actor.updateEmbeddedDocuments("Item", [update]);
|
||||
}
|
||||
}
|
||||
|
||||
async _onClickSkill(event) {
|
||||
console.log("_onClickSkill")
|
||||
event.preventDefault();
|
||||
|
||||
const itemId = $(event.currentTarget).data("item-id");
|
||||
let _item = this.actor.items.find((element) => element._id == itemId);
|
||||
let _item = this.actor.items.find((element) => element.id == itemId);
|
||||
|
||||
if (_item) {
|
||||
let newVal = true;
|
||||
|
@ -886,10 +1023,10 @@ export class ActorSheetKH extends ActorSheet {
|
|||
}
|
||||
|
||||
let update = {
|
||||
_id: _item._id,
|
||||
_id: _item.id,
|
||||
data: { used: newVal },
|
||||
};
|
||||
await this.actor.updateEmbeddedEntity("OwnedItem", update);
|
||||
await this.actor.updateEmbeddedDocuments("Item", [update]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -905,14 +1042,15 @@ export class ActorSheetKH extends ActorSheet {
|
|||
* @private
|
||||
*/
|
||||
async _itemDetailsToChat(itemId) {
|
||||
let item = this.actor.getOwnedItem(itemId);
|
||||
console.log("_itemDetailsToChat")
|
||||
let item = this.actor.items.get(itemId);
|
||||
|
||||
if (!item) {
|
||||
item = game.items.get(itemId);
|
||||
}
|
||||
|
||||
if (!item) {
|
||||
console.log("IMPORT ERROR")
|
||||
console.log("IMPORT ERROR 11")
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -920,11 +1058,11 @@ export class ActorSheetKH extends ActorSheet {
|
|||
const html = await renderTemplate("systems/kopparhavet/templates/chat/item-card.html", itemDetails);
|
||||
|
||||
const messageData = {
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
type: CONST.CHAT_MESSAGE_TYPES.OTHER,
|
||||
content: html,
|
||||
speaker: {
|
||||
actor: this.actor._id,
|
||||
actor: this.actor.id,
|
||||
token: this.actor.token,
|
||||
alias: this.actor.name,
|
||||
},
|
||||
|
|
|
@ -13,8 +13,8 @@ export default class ActorHelpers {
|
|||
}, {});
|
||||
|
||||
// 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 (this.object.data?.relationships) {
|
||||
for (let k of Object.keys(this.object.data.relationships)) {
|
||||
if (!relationships.hasOwnProperty(k)) relationships[`-=${k}`] = null;
|
||||
}
|
||||
}
|
||||
|
@ -36,8 +36,8 @@ export default class ActorHelpers {
|
|||
}, {});
|
||||
|
||||
// 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 (this.object.data?.learning) {
|
||||
for (let k of Object.keys(this.object.data.learning)) {
|
||||
if (!learning.hasOwnProperty(k)) learning[`-=${k}`] = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,11 +4,11 @@ export default class KHDiceRoller {
|
|||
|
||||
const roll = new Roll(formula);
|
||||
|
||||
let res = roll.roll();
|
||||
await roll.evaluate();
|
||||
|
||||
let rollData = {
|
||||
name: "SPELL.COST",
|
||||
res: res,
|
||||
res: roll,
|
||||
showFormula: true
|
||||
};
|
||||
|
||||
|
@ -23,9 +23,9 @@ export default class KHDiceRoller {
|
|||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
actor: speaker.id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
|
@ -37,11 +37,11 @@ export default class KHDiceRoller {
|
|||
|
||||
const roll = new Roll(formula);
|
||||
|
||||
let res = roll.roll();
|
||||
await roll.evaluate();
|
||||
|
||||
let rollData = {
|
||||
name: "ITEM.DAMAGE",
|
||||
res: res,
|
||||
res: roll,
|
||||
showFormula: true
|
||||
};
|
||||
|
||||
|
@ -50,9 +50,9 @@ export default class KHDiceRoller {
|
|||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
actor: speaker.id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
|
@ -68,11 +68,11 @@ export default class KHDiceRoller {
|
|||
|
||||
const roll = new Roll(formula);
|
||||
|
||||
let res = roll.roll();
|
||||
await roll.evaluate();
|
||||
|
||||
let rollData = {
|
||||
name: "ITEM.DEFENCE",
|
||||
res: res,
|
||||
res: roll,
|
||||
showFormula: true
|
||||
};
|
||||
|
||||
|
@ -81,19 +81,19 @@ export default class KHDiceRoller {
|
|||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
actor: speaker.id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async rollSkillInChat(skillName, skillValue, showValue, speaker, openclosed) {
|
||||
async rollSkillInChat(skillName, skillValue, showValue, speaker, openclosed, opposite) {
|
||||
const roll = new Roll(`1d100`);
|
||||
|
||||
let res = roll.roll();
|
||||
await roll.evaluate();
|
||||
|
||||
let computedName = skillName
|
||||
|
||||
|
@ -105,14 +105,28 @@ export default class KHDiceRoller {
|
|||
openclosed = 0
|
||||
}
|
||||
|
||||
if(opposite === undefined) {
|
||||
opposite = []
|
||||
}
|
||||
|
||||
let oppositeValue = ""
|
||||
|
||||
opposite.forEach(function(skill) {
|
||||
if(oppositeValue !== "") {
|
||||
oppositeValue = oppositeValue + " " + game.i18n.localize("ROLL.OR") + " "
|
||||
}
|
||||
oppositeValue = oppositeValue + skill
|
||||
})
|
||||
|
||||
let rollData = {
|
||||
name: computedName,
|
||||
res: res
|
||||
res: roll,
|
||||
opposite: oppositeValue
|
||||
};
|
||||
|
||||
if(skillValue > 0) {
|
||||
let oneRes = Math.floor((res.total / 1) % 10);
|
||||
let tenRes = Math.floor((res.total / 10) % 10);
|
||||
let oneRes = Math.floor((roll.total / 1) % 10);
|
||||
let tenRes = Math.floor((roll.total / 10) % 10);
|
||||
|
||||
if(openclosed < 0) {
|
||||
rollData.closed = Math.abs(openclosed)
|
||||
|
@ -129,7 +143,7 @@ export default class KHDiceRoller {
|
|||
// roll is opened
|
||||
rollData.success = true
|
||||
} else {
|
||||
if (res.total <= skillValue) {
|
||||
if (roll.total <= skillValue) {
|
||||
rollData.success = true
|
||||
} else {
|
||||
rollData.failure = true
|
||||
|
@ -146,16 +160,16 @@ export default class KHDiceRoller {
|
|||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
actor: speaker.id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async rollSkillDialogInChat(skillName, skillValue, showValue, speaker, startopen) {
|
||||
async rollSkillDialogInChat(skillName, skillValue, showValue, speaker, startopen, opposite) {
|
||||
const id = randomID();
|
||||
|
||||
if(startopen === undefined) {
|
||||
|
@ -180,6 +194,9 @@ export default class KHDiceRoller {
|
|||
const container = document.getElementById(id);
|
||||
let openclosed = container.querySelector('[name="openclosed"]').value
|
||||
|
||||
await this.rollSkillInChat(skillName, skillValue, showValue, speaker, openclosed, opposite)
|
||||
|
||||
/*
|
||||
const roll = new Roll(`1d100`);
|
||||
|
||||
let res = roll.roll();
|
||||
|
@ -239,6 +256,7 @@ export default class KHDiceRoller {
|
|||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
*/
|
||||
},
|
||||
},
|
||||
two: {
|
||||
|
@ -251,4 +269,208 @@ export default class KHDiceRoller {
|
|||
classes: ["dialog", "kopparhavet"],
|
||||
}).render(true);
|
||||
}
|
||||
|
||||
async rollSkillRitualInChat(ritualName, skills, showValue, speaker, openclosed) {
|
||||
let rollData = {
|
||||
name: ritualName,
|
||||
res: []
|
||||
};
|
||||
|
||||
if(openclosed === undefined) {
|
||||
openclosed = 0
|
||||
}
|
||||
|
||||
if(openclosed < 0) {
|
||||
rollData.closed = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
if(openclosed > 0) {
|
||||
rollData.opened = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
let successes = 0
|
||||
let totalrolls = 0
|
||||
|
||||
for (const skill of skills) {
|
||||
totalrolls++
|
||||
const roll = new Roll(`1d100`);
|
||||
|
||||
await roll.evaluate();
|
||||
|
||||
let skillName = skill.name
|
||||
let success = false
|
||||
let failure = false
|
||||
|
||||
if(showValue) {
|
||||
skillName = skillName + " (" + skill.value + ")"
|
||||
}
|
||||
|
||||
let rollData2 = {
|
||||
name: skillName,
|
||||
res: roll,
|
||||
};
|
||||
|
||||
if(openclosed < 0) {
|
||||
rollData2.closed = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
if(openclosed > 0) {
|
||||
rollData2.opened = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
if(skill.value > 0) {
|
||||
let oneRes = Math.floor((roll.total / 1) % 10);
|
||||
//let tenRes = Math.floor((res.total / 10) % 10);
|
||||
|
||||
if(openclosed < 0 && oneRes !== 0 && Math.abs(openclosed) >= oneRes) {
|
||||
// roll is closed
|
||||
failure = true
|
||||
} else if(openclosed > 0 && oneRes !== 0 && Math.abs(openclosed) >= oneRes){
|
||||
// roll is opened
|
||||
success = true
|
||||
successes++
|
||||
} else {
|
||||
if (roll.total <= skill.value) {
|
||||
success = true
|
||||
successes++
|
||||
} else {
|
||||
failure = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rollData.res.push({
|
||||
name: skillName,
|
||||
failure: failure,
|
||||
success: success,
|
||||
result: roll,
|
||||
})
|
||||
|
||||
rollData2.success = success
|
||||
rollData2.failure = failure
|
||||
|
||||
const html = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData2);
|
||||
|
||||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user.id,
|
||||
speaker: {
|
||||
actor: speaker.id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
switch (totalrolls) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
if(successes === 0) {
|
||||
rollData.result = "0"
|
||||
} else if(successes === 1) {
|
||||
rollData.result = "2"
|
||||
} else if(successes === 2) {
|
||||
rollData.result = "3"
|
||||
} else if(successes === 3) {
|
||||
rollData.result = "4"
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if(successes === 0) {
|
||||
rollData.result = "0"
|
||||
} else if(successes === 1) {
|
||||
rollData.result = "1"
|
||||
} else if(successes === 2) {
|
||||
rollData.result = "2"
|
||||
} else if(successes === 3) {
|
||||
rollData.result = "3"
|
||||
} else if(successes === 4) {
|
||||
rollData.result = "4"
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if(successes === 0) {
|
||||
rollData.result = "0"
|
||||
} else if(successes === 1) {
|
||||
rollData.result = "1"
|
||||
} else if(successes === 2) {
|
||||
rollData.result = "1"
|
||||
} else if(successes === 3) {
|
||||
rollData.result = "2"
|
||||
} else if(successes === 4) {
|
||||
rollData.result = "3"
|
||||
} else if(successes === 5) {
|
||||
rollData.result = "4"
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const html = await renderTemplate("systems/kopparhavet/templates/dice/ritual-roll.html", rollData);
|
||||
|
||||
/*
|
||||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
*/
|
||||
|
||||
await ChatMessage.create({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user.id,
|
||||
speaker: {
|
||||
actor: speaker.id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async rollSkillChallangeDialogInChat(name, skills, showValue, speaker, startopen) {
|
||||
const id = randomID();
|
||||
|
||||
if(startopen === undefined) {
|
||||
startopen = 0
|
||||
}
|
||||
|
||||
const content = await renderTemplate("systems/kopparhavet/templates/roll-dialog.html", {
|
||||
id,
|
||||
startopen,
|
||||
name,
|
||||
});
|
||||
|
||||
await new Dialog({
|
||||
title: game.i18n.localize("ROLL.TITLE"),
|
||||
content,
|
||||
buttons: {
|
||||
one: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: game.i18n.localize("BUTTON.ROLL"),
|
||||
callback: async () => {
|
||||
const container = document.getElementById(id);
|
||||
let openclosed = container.querySelector('[name="openclosed"]').value
|
||||
|
||||
await this.rollSkillRitualInChat(name, skills, showValue, speaker, openclosed)
|
||||
},
|
||||
},
|
||||
two: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: game.i18n.localize("BUTTON.CANCEL"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
classes: ["dialog", "kopparhavet"],
|
||||
}).render(true);
|
||||
}
|
||||
}
|
|
@ -17,8 +17,8 @@ export default class ItemHelpers {
|
|||
}, {});
|
||||
|
||||
// Remove modifications which are no longer used
|
||||
if (this.object.data?.data?.modifications) {
|
||||
for (let k of Object.keys(this.object.data.data.modifications)) {
|
||||
if (this.object.data?.modifications) {
|
||||
for (let k of Object.keys(this.object.data.modifications)) {
|
||||
if (!modifications.hasOwnProperty(k)) modifications[`-=${k}`] = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ export class ItemSheetKH extends ItemSheet {
|
|||
data.dtypes = ["String", "Number", "Boolean"];
|
||||
|
||||
if (data?.data?.modifications) {
|
||||
for (let attr of Object.values(data.data.modifications)) {
|
||||
for (let attr of Object.values(data.modifications)) {
|
||||
attr.isCheckbox = attr.dtype === "Boolean";
|
||||
}
|
||||
}
|
||||
|
@ -39,23 +39,32 @@ export class ItemSheetKH extends ItemSheet {
|
|||
let skillList2
|
||||
|
||||
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
|
||||
skillList2 = await game.packs.get("kopparhavet.skills-ht").getContent();
|
||||
skillList2 = await game.packs.get("kopparhavet.skills-ht").getDocuments();
|
||||
} else {
|
||||
skillList2 = await game.packs.get("kopparhavet.skills").getContent();
|
||||
skillList2 = await game.packs.get("kopparhavet.skills").getDocuments();
|
||||
}
|
||||
|
||||
for (let item of skillList2) {
|
||||
if(item.data.type === "skill" && item.data.data.type.value === "combat") {
|
||||
skillList.push(item)
|
||||
skillList.push(item.data)
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve any created skills as well
|
||||
for (let item of game.items.entities) {
|
||||
game.items.forEach((item) => {
|
||||
if(item.data.type === "skill" && item.data.data.type.value === "combat") {
|
||||
skillList.push(item)
|
||||
skillList.push(item.data)
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
for (let item of game.items.entities) {
|
||||
if(item.data.type === "skill" && item.data.type.value === "combat") {
|
||||
skillList.push(item.data)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
this.position.width = 530;
|
||||
this.position.height = 750;
|
||||
break;
|
||||
|
@ -77,23 +86,33 @@ export class ItemSheetKH extends ItemSheet {
|
|||
let skillList3
|
||||
|
||||
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
|
||||
skillList3 = await game.packs.get("kopparhavet.skills-ht").getContent();
|
||||
skillList3 = await game.packs.get("kopparhavet.skills-ht").getDocuments();
|
||||
} else {
|
||||
skillList3 = await game.packs.get("kopparhavet.skills").getContent();
|
||||
skillList3 = await game.packs.get("kopparhavet.skills").getDocuments();
|
||||
}
|
||||
|
||||
for (let item of skillList3) {
|
||||
if(item.data.type === "skill") {
|
||||
skillList.push(item)
|
||||
skillList.push(item.data)
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve any created skills as well
|
||||
game.items.forEach((item) => {
|
||||
if(item.data.type === "skill") {
|
||||
skillList.push(item.data)
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
// Retrieve any created skills as well
|
||||
for (let item of game.items.entities) {
|
||||
if(item.data.type === "skill") {
|
||||
skillList.push(item)
|
||||
skillList.push(item.data)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
this.position.width = 450;
|
||||
this.position.height = 605;
|
||||
break;
|
||||
|
@ -102,23 +121,32 @@ export class ItemSheetKH extends ItemSheet {
|
|||
let skillList4
|
||||
|
||||
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
|
||||
skillList4 = await game.packs.get("kopparhavet.skills-ht").getContent();
|
||||
skillList4 = await game.packs.get("kopparhavet.skills-ht").getDocuments();
|
||||
} else {
|
||||
skillList4 = await game.packs.get("kopparhavet.skills").getContent();
|
||||
skillList4 = await game.packs.get("kopparhavet.skills").getDocuments();
|
||||
}
|
||||
|
||||
for (let item of skillList4) {
|
||||
if(item.data.type === "skill" && item.data.data.type.value === "combat") {
|
||||
skillList.push(item)
|
||||
skillList.push(item.data)
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve any created skills as well
|
||||
game.items.forEach((item) => {
|
||||
if(item.data.type === "skill" && item.data.data.type.value === "combat") {
|
||||
skillList.push(item.data)
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
// Retrieve any created skills as well
|
||||
for (let item of game.items.entities) {
|
||||
if(item.data.type === "skill" && item.data.data.type.value === "combat") {
|
||||
skillList.push(item)
|
||||
skillList.push(item.data)
|
||||
}
|
||||
}
|
||||
*/
|
||||
this.position.width = 530;
|
||||
this.position.height = 750;
|
||||
break;
|
||||
|
@ -146,11 +174,11 @@ export class ItemSheetKH extends ItemSheet {
|
|||
const clickedName = $(ev.currentTarget).data("name");
|
||||
|
||||
if(clickedName === "equipped") {
|
||||
const equppiedValue = this.item.data.data.equipable.equipped;
|
||||
const equppiedValue = this.item.data.equipable.equipped;
|
||||
|
||||
this.item.update({ "data.equipped.equipped": !equppiedValue });
|
||||
} else {
|
||||
const clickedValue = (this.item.data.data[clickedName].value == undefined ? false : this.item.data.data[clickedName].value);
|
||||
const clickedValue = (this.item.data[clickedName].value == undefined ? false : this.item.data[clickedName].value);
|
||||
let dataName = "data." + clickedName + ".value"
|
||||
let tempData = {}
|
||||
|
||||
|
@ -174,7 +202,7 @@ export class ItemSheetKH extends ItemSheet {
|
|||
event.preventDefault();
|
||||
const a = event.currentTarget;
|
||||
const action = a.dataset.action;
|
||||
const attrs = this.object.data.data.modifications;
|
||||
const attrs = this.object.data.modifications;
|
||||
const form = this.form;
|
||||
|
||||
// Add new modification
|
||||
|
|
|
@ -27,7 +27,7 @@ export class ItemKH extends Item {
|
|||
const html = await renderTemplate("systems/kopparhavet/templates/chat/item-card.html", itemData);
|
||||
|
||||
const chatData = {
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
content: html,
|
||||
};
|
||||
|
|
|
@ -57,7 +57,7 @@ class KHDice {
|
|||
const html2 = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData);
|
||||
|
||||
await r.toMessage({
|
||||
user: game.user._id,
|
||||
user: game.user.id,
|
||||
create: true,
|
||||
content: html2
|
||||
});
|
||||
|
|
|
@ -10,10 +10,10 @@ export default class KHHooks {
|
|||
actor.update({ "data.currency.shekel.label": "CURRENCY.SILVER" });
|
||||
|
||||
actorbaseSkills = CONFIG.KH.baseSkillsHT
|
||||
skillIndex = await game.packs.get("kopparhavet.skills-ht").getContent();
|
||||
skillIndex = await game.packs.get("kopparhavet.skills-ht").getDocuments();
|
||||
} else {
|
||||
actorbaseSkills = CONFIG.KH.baseSkills;
|
||||
skillIndex = await game.packs.get("kopparhavet.skills").getContent();
|
||||
skillIndex = await game.packs.get("kopparhavet.skills").getDocuments();
|
||||
}
|
||||
|
||||
// Check if skill already exists by some chance
|
||||
|
@ -23,7 +23,15 @@ export default class KHHooks {
|
|||
// Filter skillIndex array to include only skills for Actor Type.
|
||||
let _skillsList = skillIndex.filter((i) => skillsToAdd.includes(i.data.name));
|
||||
|
||||
await actor.createEmbeddedEntity("OwnedItem", _skillsList);
|
||||
let _sl = [];
|
||||
_skillsList.forEach((s) => {
|
||||
//s.data._source.data["creatureType"] = actor.data.type;
|
||||
//s.data._source.data["coreSkill"] = true;
|
||||
_sl.push(s.data);
|
||||
});
|
||||
|
||||
await actor.createEmbeddedDocuments("Item", _sl);
|
||||
//await actor.createEmbeddedDocuments("Item", [_skillsList.toObject()]);
|
||||
} else {
|
||||
setTimeout(async function () {
|
||||
await actor.sheet.render(true);
|
||||
|
|
|
@ -9,8 +9,8 @@ import * as migrations from "./helpers/migration-helper.js";
|
|||
Hooks.once("init", () => {
|
||||
CONFIG.Combat.initiative = { formula: "(@combat.init)d6kh2", decimals: 0 };
|
||||
|
||||
CONFIG.Actor.entityClass = ActorKH;
|
||||
CONFIG.Item.entityClass = ItemKH;
|
||||
CONFIG.Actor.documentClass = ActorKH;
|
||||
CONFIG.Item.documentClass = ItemKH;
|
||||
|
||||
// Give global access to FFG config.
|
||||
CONFIG.KH = KH;
|
||||
|
@ -204,6 +204,40 @@ function registerHandlebarsHelpers() {
|
|||
}
|
||||
});
|
||||
|
||||
// Allows {if X = Y} type syntax in html using handlebars
|
||||
Handlebars.registerHelper("iff", function (a, operator, b, opts) {
|
||||
var bool = false;
|
||||
switch (operator) {
|
||||
case "==":
|
||||
bool = a == b;
|
||||
break;
|
||||
case ">":
|
||||
bool = a > b;
|
||||
break;
|
||||
case "<":
|
||||
bool = a < b;
|
||||
break;
|
||||
case "!=":
|
||||
bool = a != b;
|
||||
break;
|
||||
case "contains":
|
||||
if (a && b) {
|
||||
bool = a.includes(b);
|
||||
} else {
|
||||
bool = false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw "Unknown operator " + operator;
|
||||
}
|
||||
|
||||
if (bool) {
|
||||
return opts.fn(this);
|
||||
} else {
|
||||
return opts.inverse(this);
|
||||
}
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('plaintextToHTML', function(value) {
|
||||
// strip tags, add <br/> tags
|
||||
return new Handlebars.SafeString(value.replace(/(<([^>]+)>)/gi, "").replace(/(?:\r\n|\r|\n)/g, '<br/>'));
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
{"name":"Fördriva elementvarelse","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du fördriver en eldfågel, intighetsklot, stenträl, stormdrake eller vattenväktare i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Wyrd","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"0WauBuWnuags8CCH"}
|
||||
{"name":"Åkalla blodets och stridens ande","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du åkallar ett illasinnat andeväsen.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6 och 1T6 Hälsa","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"3duR1TKM6nFBSfHy"}
|
||||
{"name":"Eldvägg","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kallar upp en vägg som spärrar av din zon från en annan eller delar din zon i två.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"42Re03XheCQLRthl"}
|
||||
{"name":"Häxbarriär","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du formar wyrdväven till en skyddande vägg mellan dig och en annan zon som en försvarshandling eller vanlig handling.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"42c7TrgtfyjdDwIf"}
|
||||
{"name":"Hjältestyrka","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Din beröring ger kraft och styrka åt en person som du nuddar vid så att hon kan utföra fantastiska styrkeprov, till exempel att slå ner dörrar eller kasta upp personer till ett fönster.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"49n1O14m1o0lN5FO"}
|
||||
{"name":"Dimma","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du sveper in grannskapet i en grå kall dimma.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"5MJJ7mRz6Ynp5FHp"}
|
||||
{"name":"Häxstöt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skickar en tryckvåg av kraft mot en valfri punkt som du kan se upp till tre zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Styrkeprov","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"5uFOSRVGEZa0A2ah"}
|
||||
{"name":"Sprängsejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förhäxar ett mål upp till en zon bort med kokande blod.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Uthållighet","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6 + 1T6 per runda","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"7DMZXoFiSPh0v0UX"}
|
||||
{"name":"Dubbelgångare","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan skapa en illusion som är en exakt kopia av dig själv och uppträder ungefär som du gör.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"7pJ540Wyoj6vwcU9"}
|
||||
{"name":"Isklinga","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan sticka ner din hand i en vattensamling och ur den dra upp ett vapen av is.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"8tPkB84rE2JYMyhj"}
|
||||
{"name":"Skydd mot is och eld","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar en virvlande bubbla runt omkring dig som skyddar dig mot köld och hetta.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"AoejefPiTBrTmCv0"}
|
||||
{"name":"Skugga","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du sveper in en zon i mörker och skugga.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"B4i56WvZBKN3rCmN"}
|
||||
{"name":"Söva minne","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du lägger dina händer på målets huvud och dämpar ett minne i målets sinne.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"CU5kTdb2U7WOdM4i"}
|
||||
{"name":"Vintergrepp","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Välj en zon upp till två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Uthållighet","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Ec2bhExzCsZEHYAY"}
|
||||
{"name":"Fjärrsyn","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Välj en zon i grannskapet som du har varit i.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"EgIxekm0wEjhuTFm"}
|
||||
{"name":"Törnevägg","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du reser en vägg av törnen ur marken.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"ErdPlDiV13Wb2Rx0"}
|
||||
{"name":"Vandrande blick","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du sluter ögonen och låter din blick vandra fritt från den plats du befinner dig och upp till två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"GOQUMWQjuijKIyeU"}
|
||||
{"name":"Häxblixt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>En stråle av häxljus slår ut från din hand eller ditt fokus.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"attackroll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Go3IJrc7E06g01F4"}
|
||||
{"name":"Frammana stormdrake","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kallar samman vindar och moln ur luften till en drakliknande skepnad av dimma och blixtar.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Grm7sG7kdzGzkye6"}
|
||||
{"name":"Fjäderfall","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kallar fram en plötsligt uppvind som dämpar fall.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"GtGc8sp6KxR2G8UH"}
|
||||
{"name":"Frammana eldfågel","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Från en öppen låga kallar du fram en fågel av eld.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"INvYOe3dZwvbvBkl"}
|
||||
{"name":"Sårbarhetssejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förhäxar ett synligt mål högst två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"IOPJ8dmRnO7PN9gY"}
|
||||
{"name":"Stridssejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förtrollar ett vapen så att det nästan är som att det anfaller själv mot sina mål.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"KDEUdgcfFfeAzxtz"}
|
||||
{"name":"Fornsyn","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du håller i ett föremål och upplever vad det har varit med om.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"KGdRgD7P0chJiQXi"}
|
||||
{"name":"Kontrollera djur","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du tar kontrollen över ett djur inom din zon eller en närliggande zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6 + 1T6 per extra djur","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"MUpNWhMSa4Qtpti4"}
|
||||
{"name":"Häxljus","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du frammanar ett fladdrande häxljus som följer med dig upp till en timme och som lyser upp i mörkret.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"ON4NrGanB0iVRNyZ"}
|
||||
{"name":"Slå blind","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förhäxar ögonen hos ett mål i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Uthållighet","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PA6VkitfNE02envJ"}
|
||||
{"name":"Stenskrud","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Din hud blir hård som sten och skyddar mot skada.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PJzFgSXZZadfKU07"}
|
||||
{"name":"Dra gift","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du drar med din magi ut gift ur kroppen så att det blir svagare.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PLSEZASdWrNC0Kiu"}
|
||||
{"name":"Vapenbane","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du snärjer ett vapen i wyrd så att det blir trögare och svårare att använda.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PN4q48VAA62TIQ4G"}
|
||||
{"name":"Tystnad","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan fördriva alla ljud från den zonen där du befinner dig eller en angränsande zon, i den förhäxade zonen hörs inga ljud över huvud taget.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PQcbEd6X9K5XZA7O"}
|
||||
{"name":"Avståndshugg","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förtrollar ett närstridsvapen som du håller i handen, eller dina händer och fötter.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PVtcV3eALUveMEuR"}
|
||||
{"name":"Frammana intighetsklot","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du frammanar ett klot av intighet ur skuggorna.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"WXkddTWzqHpaLDV5"}
|
||||
{"name":"Slöjspegel","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du öppnar ett fönster genom slöjan till Andra sidan med hjälp av en spegel eller kristall.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"WnrSCv9qSiR8UVtQ"}
|
||||
{"name":"Stjäla livskraft","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du stjäl livskraft från en person i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Uthållighet","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"XXD5JkmDfLJ9C6Ld"}
|
||||
{"name":"Låna ett djurs sinne","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du lånar ett djurs sinne så att du uppfattar det som djuret uppfattar.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"XlCwMK7WeTWeYdtk"}
|
||||
{"name":"Mörkersyn","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan genom din beröring ge någon förmågan att se i mörker lika väl som en katt under en scen.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"YZKgZaQYp7OVBdSB"}
|
||||
{"name":"Häxlås","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du väver en förslutning på en dörr, en fönsterlucka, en ask, ett brunnslock, en svärdsskida eller något annat som går att stänga.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Ydrs3Vjz7zfZSywS"}
|
||||
{"name":"Växtsejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du besvärjer målet och får det att växa sig större och starkare.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Styrkeprov","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"YkqsxYP3HmaMapi8"}
|
||||
{"name":"Häxflamma","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>En eldstråle skjuter ut från dina händer eller din stav, med vilken du kan anfalla mål i samma zon som dig.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"attackroll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Ys5Lh0VHYHBwSsVB"}
|
||||
{"name":"Förvränga tid","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du väver en bubbla runt om ett mål som förvrider tiden så att tiden går fortare eller långsammare för denne.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Wyrd","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"aQJMXW1a6Ylm06pV"}
|
||||
{"name":"Skyddsruna","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du ritar en skyddsruna på ett föremål eller en person.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"b7fDC8N6t9cH3Vko"}
|
||||
{"name":"Kontrollera elementvarelse","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du stjäl en annan magikers eldfågel, intighetsklot, stenträl, stormdrake eller vattenväktare i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Wyrd","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"daunting","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"bikGBK8hvXfz3wtA"}
|
||||
{"name":"Tillkalla djur","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan kalla till dig ett djur som efter bästa förmåga omedelbart tar sig till den zon där du befinner dig.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"coNhJZkEtktlaqzn"}
|
||||
{"name":"Ansiktsförändring","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan förändra ditt utseende så att du ser ut som en helt annan person, men kan inte avvika från det som är naturligt förekommande inom ditt folkslag.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"dFLr3MLkXdoFP2id"}
|
||||
{"name":"Ljusblixt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan skapa en stark ljusblixt som bländar en person i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Manövrer","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"djBJTsGEI3CnPQuB"}
|
||||
{"name":"Häxsköld","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du använder din häxkraft för att skydda dig mot andras besvärjelser.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"f5C29nSf6q2uJcG5"}
|
||||
{"name":"Frammana vattenväktare","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Ur vattnet kallar du fram en virvlande pelare av vatten.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"fTW6pDuaMX0luL5B"}
|
||||
{"name":"Den rämnande kölden","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du ingjuter vinterns bitande köld in i sprickor och håligheter i luckor, portar, murar, mindre stenväggar eller klippblock som inte är magiska eller levande.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"Speciell","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"fsHr8HdXgGW3guZ6"}
|
||||
{"name":"Smedshänder","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan hålla eller röra vid brinnande föremål och kokheta föremål med dina händer utan att du tar någon skada.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"gi371R1kA9jkBbEO"}
|
||||
{"name":"Svaghetssejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förhäxar en synlig motståndare upp till två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"h56QrNVQtbcwyaj2"}
|
||||
{"name":"Luftbro","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan skapa en bro av förtätad luft som är så gott som osynlig men stark nog att bära en grupp ryttare.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"hvQ5KpkLb1JHWtAz"}
|
||||
{"name":"Trollsteg","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du klipper wyrdtrådarna som binder dig till en plats, och fäster dem vid en annan plats i grannskapet.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"imeuzkc8mZYvsP1q"}
|
||||
{"name":"Den skälvande marken","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du får marken kring dina fötter att skälva som om det vore jordbävning.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"imf5mk2FUhkWpgpj"}
|
||||
{"name":"Ingjuta livskraft","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förstärker en varelses livskraft och gör att alla hans skador, både de han har och de han orsakas, läker dubbelt så snabbt.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"j5JBTRbRFFgx8xnx"}
|
||||
{"name":"Fasa","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du samlar skuggor omkring dig och förvrider ljuset så att du verkar större och farligare än du är.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"k7YnASOJNtz8V3IV"}
|
||||
{"name":"Vattenandning","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan genom din beröring ge någon förmågan att andas under vattnet.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"k9ipu82NRXtzxx1M"}
|
||||
{"name":"Frammana stenträl","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kallar upp lösa stenar stenar ur marken som samlar sig och staplar sig på varandra till en människoliknande form.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"kOxqUuIjn2VVyNte"}
|
||||
{"name":"Spårsyn","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Rör vid dina ögon eller en villig persons ögon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"ksx3W6nGVkHp2Hvt"}
|
||||
{"name":"Klor","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan genom din beröring få någons naglar, även dina egna, att omformas till kraftiga klor.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"leLbWVz4l8Wga2nn"}
|
||||
{"name":"Skenbild","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar en skenbild av något som du någon gång har sett.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"m75po1Iq13JyVxn7"}
|
||||
{"name":"Flygande kvast","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Förtrolla en kvast eller stav och använd den för att flyga.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"mfOlQ745YzhlIRrn"}
|
||||
{"name":"Vindstämma","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du flyttar din röst till en annan plats upp till två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"mxa9Y8GmFZfuNjcJ"}
|
||||
{"name":"Virvelvind","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar en virvelvind som slungar runt damm, smuts och andra lösa och lätta föremål i omgivningen.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"no2vD8NlfkeJ2IHm"}
|
||||
{"name":"Hamnskiftare","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>När du väver besvärjelsen byter du omedelbart hamn till antingen ett valfritt medelstort fyrfota djur som varg, räv eller hund; eller till en valfri normalstor fågel, exempelvis korp, uggla eller örn.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"o0ngfNZhDIaK8nuu"}
|
||||
{"name":"Binda elementvarelse","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du binder en eldfågel, intighetsklot, stenträl, stormdrake eller vattenväktare som du kontrollerar och är i samma zon som du själv.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"o2pR0Wi37LJzQz3U"}
|
||||
{"name":"Skuggflykt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du river upp wyrdväven så mycket att du hamnar på andra sidan.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6 + special","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"oUXGoyt3TWjWWK7V"}
|
||||
{"name":"Läkesejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Din beröring får sår att sluta sig och ben att läka.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"pYBdKmJrE1IdxWn7"}
|
||||
{"name":"Djurlänk","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan skapa en permanent länk till ett djur som är välvilligt inställt till dig.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"pbybfO7wcljlHAP3"}
|
||||
{"name":"Skyddscirkel","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du ritar en skyddscirkel kring en zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"pt1Wcj4YvHeba0qS"}
|
||||
{"name":"Stennäve","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du slungar en sten med magisk kraft mot en fiende upp till två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"attackroll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"qlyVoVkRPCrQLt5k"}
|
||||
{"name":"Osynlighetsslöja","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Rör vid en mantel, kappa, rock eller annat heltäckande plagg.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"qp3Kddpj7Nkexv4Q"}
|
||||
{"name":"Blixthand","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>En ljusbåge slår ut från dina händer eller från änden på en stav, och slår ner i en närliggande zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"rrjoQEe4L6ZpS9UP"}
|
||||
{"name":"Bedövningssejd","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förhäxar ett synligt mål högst två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"sOF6TJ1k4cFwimIO"}
|
||||
{"name":"Söndra väv","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du sliter sönder de wyrdtrådar som binder en annan varelse till den fysiska världen.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"t0GV8PevaVXpik79"}
|
||||
{"name":"Silvertunga","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>En trollkarls röst kan vara förhäxande.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"wUa97IO7drguxS0o"}
|
||||
{"name":"Trollviskning","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Sök ögonkontakt med en person.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Wyrd","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"xeqDV6OvZx9AFhmn"}
|
||||
{"name":"Snabbväxt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan få en växt att växa lika mycket på ett dygn som den skulle ha gjort under ett år.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"z7Hvy0ZleizM4pJm"}
|
||||
{"name":"Skuggvandring","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du öppnar ett hål till Andra sidan och faller dit, trots att du inte har tillräckligt hög Skuld.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"zFwc7IdKGzOzujz7"}
|
||||
{"name":"Förnimmelse","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du väver en besvärjelse som hjälper dig att hitta något du vill finna.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"zly1ApyygoPw4oEq"}
|
|
@ -0,0 +1,34 @@
|
|||
{"name":"Ansiktsförändring","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan förändra ditt utseende så att du ser ut som en helt annan person, men kan inte avvika från det som är naturligt förekommande inom ditt folkslag.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Fingerfärdighet","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"iEAR1DYfnZRN6oKx"}
|
||||
{"name":"Blixt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>En blixt slår ut från din hand eller din stav.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"attackroll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Jp52HoVZbPBgKpSW"}
|
||||
{"name":"Djurlänk","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan skapa en permanent länk till ett djur som är välvilligt inställt till dig.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"7WHtngaD6U7mswoZ"}
|
||||
{"name":"Dubbelgångare","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan skapa en illusion som är en exakt kopia av dig själv och uppträder ungefär som du gör.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"CHLcUsSavtuMp0GZ"}
|
||||
{"name":"Fasa","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du samlar skuggor omkring dig och förvrider ljuset så att du verkar större och farligare än du är.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"FaNKqbGmpkcQA9JZ"}
|
||||
{"name":"Flamma","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>En eldstråle skjuter ut från dina händer eller din stav, med vilken du kan anfalla mål i samma zon som dig.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"attackroll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"50BCCXTTZqberYtb"}
|
||||
{"name":"Frammana Salamander","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Från en öppen låga kallar du fram en liten, blygrå och kall ödlevarelse med förmågan att få saker omkring sig att fatta eld.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Lärdom","skillthree":"Insikt","skillfour":"Viljestyrka","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"SPnlI0aRSmZ9G7OM"}
|
||||
{"name":"Frammana tjänsteande","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du frammanar en lägre tjänsteande eller små­ demon som kan hjälpa dig med småbestyr.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Lärdom","skillthree":"Insikt","skillfour":"Viljestyrka","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"wMzkRb5q2PlLvdiR"}
|
||||
{"name":"Frammana Undin","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Ur havet eller en större samling saltvatten stiger en vagt människoliknande form av vatten.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Lärdom","skillthree":"Insikt","skillfour":"Viljestyrka","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"7iXPAvuVdYNXPh1k"}
|
||||
{"name":"Frammana Åskfågel","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Från ett moln på öppen himmel kallar du ned en stor, kolsvart och korpliknande fågelvarelse.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Lärdom","skillthree":"Insikt","skillfour":"Viljestyrka","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"jxLKWEr2svRL8xf4"}
|
||||
{"name":"Fyrljus","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar ett oerhört kraftigt ljussken från en specifik punkt.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"hWrbfEhunY5t1eOc"}
|
||||
{"name":"Fördriva","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du fördriver en utomvärldslig varelse i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"Insikt","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"4T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"4jlwjnpgS0oikWCO"}
|
||||
{"name":"Förvirra","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du förhäxar ett synligt mål högst två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Viljestyrka","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"XfyPKxoefGAFOAzO"}
|
||||
{"name":"Hamnskiftare","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du tecknar en magisk cirkel runt dig själv, med en päls eller ett skinn av den varelse du vill byta form till i cirkelns mitt.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Insikt","skillthree":"Viljestyrka","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"lBb7IR3o3hPWnB1A"}
|
||||
{"name":"Hela","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Din beröring får sår att sluta sig och ben att läka.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"ZRMT4dTJx8fu4FF9"}
|
||||
{"name":"Hägring","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du får övriga i samma zon som du att se en hägring vid horisonten.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Insikt","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"vqe4hJ8AHfmONZo2"}
|
||||
{"name":"Kontrollera djur","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du tar kontrollen över ett djur i din eller en när­ liggande zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6 + 1T6 per extra djur","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"wPCChabZXvQUY2GH"}
|
||||
{"name":"Ljus","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du frammanar ett fladdrande magiskt ljus som följer med dig scenen ut och som lyser upp i mörkret.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"2Oi2ZaLxb4XLvQ2O"}
|
||||
{"name":"Magisk sköld","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du använder din magiska kraft för att skydda dig mot andras besvärjelser.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"uKpkzE4GEv5Kvviv"}
|
||||
{"name":"Magisk stämning","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar småeffekter i din zon som bidrar till en förtrollande och förhäxande stämning.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"819ZmsvSGUp7qQrv"}
|
||||
{"name":"Omtolka tecken","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Ett tecken kan omtolkas av magikern och få ny innebörd.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"mNp8tq4lrX3dvAi6"}
|
||||
{"name":"Osynlighetsslöja","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Besvärjelsen kastas på en mantel, kappa, rock eller annat heltäckande plagg.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"vZiUoBEA3ZlUVryk"}
|
||||
{"name":"Silvertunga","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Din röst blir övertygande.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"mhtNi55391NTtv20"}
|
||||
{"name":"Skenbild","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar en skenbild av något som du någon gång har sett.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"yLEa6eLHR15vPViT"}
|
||||
{"name":"Skyddscirkel","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du ritar en skyddande magisk cirkel kring en zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"FKlkahAMWh9MWUjg"}
|
||||
{"name":"Stenskrud","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Din hud blir hård som sten och ökar ditt skydd mot skada med 1T6.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"easy","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"DXmyY1OsysPL1FgP"}
|
||||
{"name":"Stjäla livskraft","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du stjäl livskraft från en person i samma zon.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Uthållighet","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"RFYOmR097YwKEdgc"}
|
||||
{"name":"Villospår","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar falska spår som döljer dina egna och får förföljare att tappa spåret och istället följa dina falska spår.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"opposite","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"Stigvana","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"jw8kWHwu5foUO5vN"}
|
||||
{"name":"Vindstöt","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du frammanar en kortlivad vindande som slungar sig mot en fiende upp till två zoner bort.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"attackroll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"1T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"rqRpYOtHvUP1xpI4"}
|
||||
{"name":"Vindviskare","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du kan tala med vindarnas andar, och få dem att antingen byta riktning, lugna sin framfart, eller blåsa upp.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"a5dYS93yPFjjxcCw"}
|
||||
{"name":"Vågsvall","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du skapar en stor magisk våg.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"sczrNCK7lCtD4hih"}
|
||||
{"name":"Åkalla beskyddaren [namn]","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Kräver förmågan Magisk Pakt (se sida 46).</p>\n<p>Varje beskyddare har en unik besvärjelse.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Lärdom","skillthree":"Insikt","skillfour":"Viljestyrka","skillfive":""}},"cost":{"value":"(Ritual) 2T6; (Kontrollera) 2T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"tjoGC2RmIwwRrFpY"}
|
||||
{"name":"Åkalla demonen Azag","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Du åkallar Azag, en monstruös stendemon. Azag har särdraget Blodtörstig.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"ritual","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"Trolldom","skilltwo":"Lärdom","skillthree":"Insikt","skillfour":"Viljestyrka","skillfive":""}},"cost":{"value":"(Ritual) 4T6 och 1T6 Hälsa*; (Kontrollera) 3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"average","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"PI0kXTPcq48fcrWd"}
|
||||
{"name":"Åskvigg","permission":{"default":0,"fJj85fq65UTTN7mU":3},"type":"spell","data":{"description":{"value":"<p>Besvärjelsen kan bara kastas om både magikern och målet befinner sig under bar himmel.</p>","type":"String","label":"ITEM.DESCRIPTION"},"roll":{"value":"roll","type":"String","label":"SPELL.ROLLTITLE","skill":"Trolldom","oppositeskill":"","oppositeskilltwo":"","ritual":{"skillone":"","skilltwo":"","skillthree":"","skillfour":"","skillfive":""}},"cost":{"value":"3T6","type":"String","label":"SPELL.COST"},"difficulty":{"value":"hard","type":"String","label":"SPELL.DIFFICULTY"}},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"ImzNHTJjjCyRkY7A"}
|
22
system.json
22
system.json
|
@ -2,9 +2,9 @@
|
|||
"name": "kopparhavet",
|
||||
"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.",
|
||||
"version": "0.0.4",
|
||||
"minimumCoreVersion": "0.7.5",
|
||||
"compatibleCoreVersion": "0.7.8",
|
||||
"version": "0.1.2",
|
||||
"minimumCoreVersion": "9",
|
||||
"compatibleCoreVersion": "9",
|
||||
"templateVersion": 4,
|
||||
"author": "Erebus",
|
||||
"scripts": [],
|
||||
|
@ -60,6 +60,20 @@
|
|||
"system": "kopparhavet",
|
||||
"path": "./packs/weapons-ht.db",
|
||||
"entity": "Item"
|
||||
},
|
||||
{
|
||||
"name": "besvarjelser",
|
||||
"label": "Kopparhavets Hjältar Besvärjelser",
|
||||
"system": "kopparhavet",
|
||||
"path": "./packs/besvarjelser.db",
|
||||
"entity": "Item"
|
||||
},
|
||||
{
|
||||
"name": "besvarjelser-ht",
|
||||
"label": "Hjältarnas Tid Besvärjelser",
|
||||
"system": "kopparhavet",
|
||||
"path": "./packs/besvarjelser-ht.db",
|
||||
"entity": "Item"
|
||||
}
|
||||
],
|
||||
"languages": [
|
||||
|
@ -81,6 +95,6 @@
|
|||
"url": "https://pi.rikspolisen.se/foundryvtt/kopparhavet",
|
||||
"socket": true,
|
||||
"manifest": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/raw/branch/master/system.json",
|
||||
"download": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/archive/v0.0.4.zip",
|
||||
"download": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/archive/v0.1.2.zip",
|
||||
"license": "LICENCE.txt"
|
||||
}
|
||||
|
|
|
@ -278,7 +278,14 @@
|
|||
"label": "SPELL.ROLLTITLE",
|
||||
"skill": "Trolldom",
|
||||
"oppositeskill": "",
|
||||
"ritual": {}
|
||||
"oppositeskilltwo": "",
|
||||
"ritual": {
|
||||
"skillone": "",
|
||||
"skilltwo": "",
|
||||
"skillthree": "",
|
||||
"skillfour": "",
|
||||
"skillfive": ""
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"value": "",
|
||||
|
|
|
@ -8,25 +8,25 @@
|
|||
<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>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.health.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.health.max" value="{{data.data.health.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.stamina.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.max" value="{{data.data.stamina.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.mana.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.max" value="{{data.data.mana.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
|||
{{> 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}}
|
||||
{{editor content=data.data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,31 +8,31 @@
|
|||
<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.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.data.bio.kin.label}}:</label>
|
||||
<input name="data.bio.kin.value" type="text" value="{{data.data.bio.kin.value}}" placeholder="{{localize data.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.data.bio.profession.label}}:</label>
|
||||
<input name="data.bio.profession.value" type="text" value="{{data.data.bio.profession.value}}" placeholder="{{localize data.data.bio.profession.label}}" />
|
||||
|
||||
<label style="margin: auto;">{{localize data.health.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.health.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.health.max" value="{{data.data.health.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.stamina.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.max" value="{{data.data.stamina.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.mana.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.max" value="{{data.data.mana.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -62,7 +62,7 @@
|
|||
{{> systems/kopparhavet/templates/parts/actor/bio.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}}
|
||||
{{editor content=data.data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,25 +8,25 @@
|
|||
<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>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.health.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.health.max" value="{{data.data.health.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.stamina.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.max" value="{{data.data.stamina.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.mana.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.max" value="{{data.data.mana.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
|||
{{> 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}}
|
||||
{{editor content=data.data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,34 +8,34 @@
|
|||
<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.data.bio.nickname.label}}:</label>
|
||||
<input name="data.bio.nickname.value" style="grid-column: 3/6;" type="text" value="{{data.data.bio.nickname.value}}" placeholder="{{localize data.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.data.bio.kin.label}}:</label>
|
||||
<input name="data.bio.kin.value" type="text" value="{{data.data.bio.kin.value}}" placeholder="{{localize data.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.data.bio.profession.label}}:</label>
|
||||
<input name="data.bio.profession.value" type="text" value="{{data.data.bio.profession.value}}" placeholder="{{localize data.data.bio.profession.label}}" />
|
||||
|
||||
<label style="margin: auto;">{{localize data.health.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.health.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.health.max" value="{{data.data.health.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.stamina.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.stamina.max" value="{{data.data.stamina.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.mana.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.value" value="{{data.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" />
|
||||
<input class="center-text" type="text" name="data.mana.max" value="{{data.data.mana.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
{{> 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}}
|
||||
{{editor content=data.data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,27 +8,27 @@
|
|||
<label style="margin-top: auto; margin-bottom: 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-top: auto; margin-bottom: auto;">{{localize data.class.label}}:</label>
|
||||
<span class="charname" style="margin-bottom: 0;grid-column: 3/6;"><input name="data.class.value" type="text" value="{{data.class.value}}" placeholder="{{localize data.class.label}}" /></span>
|
||||
<label style="margin-top: auto; margin-bottom: auto;">{{localize data.data.class.label}}:</label>
|
||||
<span class="charname" style="margin-bottom: 0;grid-column: 3/6;"><input name="data.class.value" type="text" value="{{data.data.class.value}}" placeholder="{{localize data.data.class.label}}" /></span>
|
||||
|
||||
<label style="margin: auto;">{{localize data.operationscost.label}}:</label>
|
||||
<input class="center-text" type="text" name="data.operationscost.value" value="{{data.operationscost.value}}" data-dtype="Number" />
|
||||
<label style="margin: auto;">{{localize data.data.operationscost.label}}:</label>
|
||||
<input class="center-text" type="text" name="data.operationscost.value" value="{{data.data.operationscost.value}}" data-dtype="Number" />
|
||||
|
||||
<label style="margin: auto;">{{localize data.operationssupply.label}}:</label>
|
||||
<input class="center-text" type="text" name="data.operationssupply.value" value="{{data.operationssupply.value}}" data-dtype="Number" />
|
||||
<label style="margin: auto;">{{localize data.data.operationssupply.label}}:</label>
|
||||
<input class="center-text" type="text" name="data.operationssupply.value" value="{{data.data.operationssupply.value}}" data-dtype="Number" />
|
||||
|
||||
<label style="margin: auto;">{{localize data.hull.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.data.hull.label}}:</label>
|
||||
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
|
||||
<input class="center-text" type="text" name="data.hull.value" value="{{data.hull.value}}" data-dtype="Number" />
|
||||
<input class="center-text" type="text" name="data.hull.value" value="{{data.data.hull.value}}" data-dtype="Number" />
|
||||
<span style="margin-bottom: auto; margin-top: auto;"> / </span>
|
||||
<input class="center-text" type="text" name="data.hull.max" value="{{data.hull.max}}" data-dtype="Number" />
|
||||
<input class="center-text" type="text" name="data.hull.max" value="{{data.data.hull.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<label style="margin: auto;">{{localize data.cargo.label}}:</label>
|
||||
<label style="margin: auto;">{{localize data.data.cargo.label}}:</label>
|
||||
<div class="grid-container" style="grid-template-columns: auto 1fr auto;">
|
||||
<input class="center-text" type="text" name="data.cargo.value" value="{{data.cargo.value}}" data-dtype="Number" />
|
||||
<input class="center-text" type="text" name="data.cargo.value" value="{{data.data.cargo.value}}" data-dtype="Number" />
|
||||
<span style="margin-bottom: auto; margin-top: auto;"> / </span>
|
||||
<input class="center-text" type="text" name="data.cargo.max" value="{{data.cargo.max}}" data-dtype="Number" />
|
||||
<input class="center-text" type="text" name="data.cargo.max" value="{{data.data.cargo.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -46,7 +46,7 @@
|
|||
{{> systems/kopparhavet/templates/parts/actor/ship-combat.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}}
|
||||
{{editor content=data.data.bio.note.value target="data.bio.note.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -100,5 +100,19 @@
|
|||
{{{data.description.value}}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isShipWeapon}}
|
||||
{{#if data.description}}
|
||||
<h5>{{localize data.description.label}}</h5>
|
||||
{{{data.description.value}}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isShipTalent}}
|
||||
{{#if data.description}}
|
||||
<h5>{{localize data.description.label}}</h5>
|
||||
{{{data.description.value}}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,47 @@
|
|||
<div class="kopparhavet roll-item">
|
||||
<div class="border">
|
||||
<h3>{{localize name}}</h3>
|
||||
|
||||
{{#if closed}}
|
||||
<div style="text-align: center; margin-bottom: 0.5rem;">
|
||||
{{localize "ROLL.CLOSED"}}: {{closed}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if opened}}
|
||||
<div style="text-align: center; margin-bottom: 0.5rem;">
|
||||
{{localize "ROLL.OPENED"}}: {{opened}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="roll" style="padding-bottom: 10px; border-bottom: 1px solid #782e22; margin-bottom: 5px;">
|
||||
|
||||
{{#each res as |res1 key|}}
|
||||
<div class="dice-roll">
|
||||
<div class="dice-result">
|
||||
{{#if showFormula}}
|
||||
<div class="dice-formula-kh">{{res1.result.formula}}</div>
|
||||
{{/if}}
|
||||
{{#if res1.success}}
|
||||
<div style="border: none; text-align: center; width: 100%; font-weight: bold; color: limegreen;">
|
||||
{{res1.name}}: {{res1.result.total}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if res1.failure}}
|
||||
<div style="border: none; text-align: center; width: 100%; font-weight: bold; color: darkred;">
|
||||
{{res1.name}}: {{res1.result.total}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
</div>
|
||||
<h2 style="border: none; text-align: center; width: 100%; font-weight: bold;">
|
||||
{{#iff result '==' "0"}}{{localize "ROLL.SUBPAR"}}{{/iff}}
|
||||
{{#iff result '==' "1"}}{{localize "ROLL.LOW"}}{{/iff}}
|
||||
{{#iff result '==' "2"}}{{localize "ROLL.LIMITED"}}{{/iff}}
|
||||
{{#iff result '==' "3"}}{{localize "ROLL.GOOD"}}{{/iff}}
|
||||
{{#iff result '==' "4"}}{{localize "ROLL.SUPERIOR"}}{{/iff}}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
|
@ -21,6 +21,11 @@
|
|||
<h2>{{res.total}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
{{#if opposite}}
|
||||
<div class="dice-roll" style="text-align: center; margin-bottom: 0.5rem;">
|
||||
{{localize "ROLL.OPPOSITE"}}: {{opposite}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if success}}
|
||||
<h2 style="border: none; text-align: center; width: 100%; font-weight: bold; color: limegreen;">
|
||||
|
|
|
@ -9,17 +9,17 @@
|
|||
</div>
|
||||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<div class="rating">
|
||||
<label>{{localize data.damage.label}}</label>
|
||||
<input name="data.damage.value" type="text" value="{{data.damage.value}}" />
|
||||
<label>{{localize data.data.damage.label}}</label>
|
||||
<input name="data.damage.value" type="text" value="{{data.data.damage.value}}" />
|
||||
</div>
|
||||
<div class="rating">
|
||||
<label>{{localize data.skill.label}}</label>
|
||||
<input name="data.skill.value" type="text" value="{{data.skill.value}}" />
|
||||
<label>{{localize data.data.skill.label}}</label>
|
||||
<input name="data.skill.value" type="text" value="{{data.data.skill.value}}" />
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize data.category.label}}</label>
|
||||
<label>{{localize data.data.category.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.category.value">
|
||||
{{#select data.category.value}}
|
||||
{{#select data.data.category.value}}
|
||||
<option value="melee">{{localize "WEAPON.MELEE"}}</option>
|
||||
<option value="ranged">{{localize "WEAPON.RANGED"}}</option>
|
||||
{{/select}}
|
||||
|
@ -28,10 +28,10 @@
|
|||
</div>
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,22 +10,22 @@
|
|||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<!--
|
||||
<div class="supply">
|
||||
<label>{{localize data.quantity.label}}</label>
|
||||
<input name="data.quantity.value" type="number" value="{{data.quantity.value}}" />
|
||||
<label>{{localize data.data.quantity.label}}</label>
|
||||
<input name="data.quantity.value" type="number" value="{{data.data.quantity.value}}" />
|
||||
</div>
|
||||
-->
|
||||
<div class="cost">
|
||||
<label>{{localize data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.price.value}}" />
|
||||
<label>{{localize data.data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.data.price.value}}" />
|
||||
</div>
|
||||
<div class="rating">
|
||||
<label>{{localize data.defence.label}}</label>
|
||||
<input name="data.defence.value" type="text" value="{{data.defence.value}}" />
|
||||
<label>{{localize data.data.defence.label}}</label>
|
||||
<input name="data.defence.value" type="text" value="{{data.data.defence.value}}" />
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize data.type.label}}</label>
|
||||
<label>{{localize data.data.type.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.type.value">
|
||||
{{#select data.type.value}}
|
||||
{{#select data.data.type.value}}
|
||||
{{#each this.KH.armor_types as |t|}}
|
||||
<option value="{{t.value}}">{{localize t.label}}</option>
|
||||
{{/each}}
|
||||
|
@ -34,14 +34,14 @@
|
|||
</div>
|
||||
<div class="grid-container" style="grid-template-columns: 1fr auto;">
|
||||
<!--
|
||||
<label>{{localize data.equipable.label}}</label>
|
||||
<a class="item-bool-click {{#if data.equipable.value}}active{{/if}}" data-name="equipable" title="equipable">
|
||||
<i class="far {{#if data.equipable.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
<label>{{localize data.data.equipable.label}}</label>
|
||||
<a class="item-bool-click {{#if data.data.equipable.value}}active{{/if}}" data-name="equipable" title="equipable">
|
||||
<i class="far {{#if data.data.equipable.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
</a>
|
||||
-->
|
||||
<label>{{localize data.helmet.label}}</label>
|
||||
<a class="item-bool-click {{#if data.helmet.value}}active{{/if}}" data-name="helmet" title="helmet">
|
||||
<i class="far {{#if data.helmet.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
<label>{{localize data.data.helmet.label}}</label>
|
||||
<a class="item-bool-click {{#if data.data.helmet.value}}active{{/if}}" data-name="helmet" title="helmet">
|
||||
<i class="far {{#if data.data.helmet.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -55,10 +55,10 @@
|
|||
<div class="tab scroll-y" data-group="primary" data-tab="description">
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,21 +8,21 @@
|
|||
</div>
|
||||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<div class="supply">
|
||||
<label>{{localize data.quantity.label}}</label>
|
||||
<input name="data.quantity.value" type="number" value="{{data.quantity.value}}" />
|
||||
<label>{{localize data.data.quantity.label}}</label>
|
||||
<input name="data.quantity.value" type="number" value="{{data.data.quantity.value}}" />
|
||||
</div>
|
||||
<div class="cost">
|
||||
<label>{{localize data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.price.value}}" />
|
||||
<label>{{localize data.data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.data.price.value}}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info-mid">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
</div>
|
||||
<div class="item">
|
||||
<div class="talent-description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info-mid">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,17 +9,17 @@
|
|||
</div>
|
||||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<div class="cost">
|
||||
<label>{{localize data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.price.value}}" />
|
||||
<label>{{localize data.data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.data.price.value}}" />
|
||||
</div>
|
||||
<div class="rating">
|
||||
<label>{{localize data.damage.label}}</label>
|
||||
<input name="data.damage.value" type="text" value="{{data.damage.value}}" />
|
||||
<label>{{localize data.data.damage.label}}</label>
|
||||
<input name="data.damage.value" type="text" value="{{data.data.damage.value}}" />
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.skill.value">
|
||||
{{#select data.skill.value}}
|
||||
{{#select data.data.skill.value}}
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
|
@ -29,10 +29,10 @@
|
|||
</div>
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
</div>
|
||||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<div>
|
||||
<label>{{localize data.type.label}}</label>
|
||||
<label>{{localize data.data.type.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.type.value">
|
||||
{{#select data.type.value}}
|
||||
{{#select data.data.type.value}}
|
||||
<option value="base">{{localize "SKILL.BASE"}}</option>
|
||||
<option value="adventure">{{localize "SKILL.ADVENTURE"}}</option>
|
||||
<option value="combat">{{localize "SKILL.COMBAT"}}</option>
|
||||
|
@ -20,15 +20,15 @@
|
|||
</div>
|
||||
<div>
|
||||
<label>{{localize "SKILL.STARTVALUE"}}</label>
|
||||
<input name="data.value" type="text" value="{{data.value}}" />
|
||||
<input name="data.value" type="text" value="{{data.data.value}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info-mid">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
</div>
|
||||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<div class="cost">
|
||||
<label>{{localize data.cost.label}}</label>
|
||||
<input name="data.cost.value" type="text" value="{{data.cost.value}}" />
|
||||
<label>{{localize data.data.cost.label}}</label>
|
||||
<input name="data.cost.value" type="text" value="{{data.data.cost.value}}" />
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize data.difficulty.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.difficulty.value">
|
||||
{{#select data.difficulty.value}}
|
||||
<label>{{localize data.data.difficulty.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.data.difficulty.value">
|
||||
{{#select data.data.difficulty.value}}
|
||||
<option value="simple">{{localize "DIFFICULTY.SIMPLE"}}</option>
|
||||
<option value="easy">{{localize "DIFFICULTY.EASY"}}</option>
|
||||
<option value="average">{{localize "DIFFICULTY.AVERAGE"}}</option>
|
||||
|
@ -25,9 +25,9 @@
|
|||
</select>
|
||||
</div>
|
||||
<div style="grid-column-start: 1; grid-column-end: 3;">
|
||||
<label>{{localize data.roll.label}}</label>
|
||||
<label>{{localize data.data.roll.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.roll.value">
|
||||
{{#select data.roll.value}}
|
||||
{{#select data.data.roll.value}}
|
||||
<option value="roll">{{localize "SPELL.ROLL"}}</option>
|
||||
<option value="attackroll">{{localize "SPELL.ATTACKROLL"}}</option>
|
||||
<option value="opposite">{{localize "SPELL.OPPOSITE"}}</option>
|
||||
|
@ -35,23 +35,114 @@
|
|||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div style="grid-column-start: 1; grid-column-end: 3;">
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.skill">
|
||||
{{#select data.roll.skill}}
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{#iff data.data.roll.value '==' "opposite" }}
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.skill">
|
||||
{{#select data.data.roll.skill}}
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.oppositeskill">
|
||||
{{#select data.data.roll.oppositeskill}}
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div> </div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.oppositeskilltwo">
|
||||
{{#select data.data.roll.oppositeskilltwo}}
|
||||
<option value="">{{localize "SKILL.NONE"}}</option>
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{else iff data.data.roll.value '==' "ritual" }}
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.ritual.skillone">
|
||||
{{#select data.data.roll.ritual.skillone}}
|
||||
<option value="">{{localize "SKILL.NONE"}}</option>
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.ritual.skilltwo">
|
||||
{{#select data.data.roll.ritual.skilltwo}}
|
||||
<option value="">{{localize "SKILL.NONE"}}</option>
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.ritual.skillthree">
|
||||
{{#select data.data.roll.ritual.skillthree}}
|
||||
<option value="">{{localize "SKILL.NONE"}}</option>
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.ritual.skillfour">
|
||||
{{#select data.data.roll.ritual.skillfour}}
|
||||
<option value="">{{localize "SKILL.NONE"}}</option>
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.ritual.skillfive">
|
||||
{{#select data.data.roll.ritual.skillfive}}
|
||||
<option value="">{{localize "SKILL.NONE"}}</option>
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{else}}
|
||||
<div style="grid-column-start: 1; grid-column-end: 3;">
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.roll.skill">
|
||||
{{#select data.data.roll.skill}}
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{/iff}}
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
</div>
|
||||
<div class="item">
|
||||
<div class="talent-description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info-mid">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,22 +10,22 @@
|
|||
<div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
||||
<!--
|
||||
<div class="supply">
|
||||
<label>{{localize data.quantity.label}}</label>
|
||||
<input name="data.quantity.value" type="number" value="{{data.quantity.value}}" />
|
||||
<label>{{localize data.data.quantity.label}}</label>
|
||||
<input name="data.quantity.value" type="number" value="{{data.data.quantity.value}}" />
|
||||
</div>
|
||||
-->
|
||||
<div class="cost">
|
||||
<label>{{localize data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.price.value}}" />
|
||||
<label>{{localize data.data.price.label}}</label>
|
||||
<input name="data.price.value" type="text" value="{{data.data.price.value}}" />
|
||||
</div>
|
||||
<div class="rating">
|
||||
<label>{{localize data.damage.label}}</label>
|
||||
<input name="data.damage.value" type="text" value="{{data.damage.value}}" />
|
||||
<label>{{localize data.data.damage.label}}</label>
|
||||
<input name="data.damage.value" type="text" value="{{data.data.damage.value}}" />
|
||||
</div>
|
||||
<div>
|
||||
<label>{{localize data.category.label}}</label>
|
||||
<label>{{localize data.data.category.label}}</label>
|
||||
<select class="item-weapon-cat-select" name="data.category.value">
|
||||
{{#select data.category.value}}
|
||||
{{#select data.data.category.value}}
|
||||
<option value="melee">{{localize "WEAPON.MELEE"}}</option>
|
||||
<option value="ranged">{{localize "WEAPON.RANGED"}}</option>
|
||||
{{/select}}
|
||||
|
@ -34,7 +34,7 @@
|
|||
<div>
|
||||
<label>{{localize "ITEM.SKILL"}}</label>
|
||||
<select class="item-weapon-skill-select" name="data.skill.value">
|
||||
{{#select data.skill.value}}
|
||||
{{#select data.data.skill.value}}
|
||||
{{#each this.khskills as |t|}}
|
||||
<option value="{{t.name}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
|
@ -43,19 +43,19 @@
|
|||
</div>
|
||||
<!--
|
||||
<div class="grid-container" style="grid-template-columns: 1fr auto;">
|
||||
<label>{{localize data.equipable.label}}</label>
|
||||
<a class="item-bool-click {{#if data.equipable.value}}active{{/if}}" data-name="equipable" title="equipable">
|
||||
<i class="far {{#if data.equipable.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
<label>{{localize data.data.equipable.label}}</label>
|
||||
<a class="item-bool-click {{#if data.data.equipable.value}}active{{/if}}" data-name="equipable" title="equipable">
|
||||
<i class="far {{#if data.data.equipable.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="description">
|
||||
<h2>{{localize data.description.label}}</h2>
|
||||
<h2>{{localize data.data.description.label}}</h2>
|
||||
<div class="info">
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,30 +2,30 @@
|
|||
<div class="bio-background grid-container" style="height: 100%; grid-column-gap: 5px; grid-template-rows: auto auto auto 1fr; grid-template-columns: auto 1fr auto 1fr;">
|
||||
<h1>{{localize "BACKGROUND.TITLE"}}</h1>
|
||||
|
||||
<div class="name">{{localize data.bio.age.label}}:</div>
|
||||
<input name="data.bio.age.value" type="text" value="{{data.bio.age.value}}" />
|
||||
<div class="name">{{localize data.data.bio.age.label}}:</div>
|
||||
<input name="data.bio.age.value" type="text" value="{{data.data.bio.age.value}}" />
|
||||
|
||||
<div class="name">{{localize data.background.birthplace.label}}</div>
|
||||
<input name="data.background.birthplace.value" type="text" value="{{data.background.birthplace.value}}" />
|
||||
<div class="name">{{localize data.data.background.birthplace.label}}</div>
|
||||
<input name="data.background.birthplace.value" type="text" value="{{data.data.background.birthplace.value}}" />
|
||||
|
||||
<div class="name">{{localize data.background.social.label}}</div>
|
||||
<input name="data.background.social.value" type="text" value="{{data.background.social.value}}" />
|
||||
<div class="name">{{localize data.data.background.social.label}}</div>
|
||||
<input name="data.background.social.value" type="text" value="{{data.data.background.social.value}}" />
|
||||
|
||||
<div></div>
|
||||
<div></div>
|
||||
|
||||
<div class="name-top">{{localize data.background.events.label}}</div>
|
||||
<div class="name-top">{{localize data.data.background.events.label}}</div>
|
||||
<div class="info-bio border-thin" style="/*grid-row: 4/6; grid-column: 2;*/">
|
||||
<div class="description">
|
||||
{{editor content=data.background.events.value target="data.background.events.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.background.events.value target="data.background.events.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="name-top">{{localize data.background.contacts.label}}</div>
|
||||
<div class="name-top">{{localize data.data.background.contacts.label}}</div>
|
||||
<div class="info-bio border-thin" style="/*grid-row: 4/6; grid-column: 4;*/">
|
||||
<div class="description">
|
||||
{{editor content=data.background.contacts.value target="data.background.contacts.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.background.contacts.value target="data.background.contacts.value" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,25 +4,25 @@
|
|||
<ul class="items-list">
|
||||
<li class="item-nor 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>
|
||||
<div class="item-value" style="flex: none;"><input name="data.combat.init" class="skill-value" type="number" value="{{data.data.combat.init}}" data-dtype="Number" /></div>
|
||||
</li>
|
||||
|
||||
<li class="item-defence flexrow" data-defence="{{data.combat.defence}}">
|
||||
<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 class="item-defence flexrow" data-defence="{{data.data.combat.defence}}">
|
||||
<div class="item-name roll-defence rollable" data-defence="{{data.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.data.combat.defence}}" /></div>
|
||||
</li>
|
||||
<li class="item-nor flexrow">
|
||||
<div class="item-name" style="flex-grow: 8;">{{localize "ADVERSARY.HASHELMET"}}</div>
|
||||
<div style="align-self: flex-end">
|
||||
<a style="margin: auto;" class="adversary-helmet-click {{#if data.combat.helmet}}active{{/if}}">
|
||||
<i class="far {{#if data.combat.helmet}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
<a style="margin: auto;" class="adversary-helmet-click {{#if data.data.combat.helmet}}active{{/if}}">
|
||||
<i class="far {{#if data.data.combat.helmet}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="item-nor 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>
|
||||
<div class="item-name roll-adversary-armor rollable" data-armor="{{data.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.data.combat.armor}}" /></div>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
@ -35,7 +35,7 @@
|
|||
{{#each actor.skills as |skill key|}}
|
||||
<li class="item-skill 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>
|
||||
<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 class="item-controls">
|
||||
<a class="item-control item-delete" data-parent=".item-skill" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
<div class="currencies border">
|
||||
<div class="header grid-container" style="grid-template-columns: auto 1fr auto 1fr;">
|
||||
<h1 style="margin-bottom: 0; grid-column: 1/5;">{{localize "CURRENCY.TITLE"}}</h1>
|
||||
<label style="margin: auto;">{{localize data.currency.shekel.label}}:</label>
|
||||
<input class="center-text" name="data.currency.shekel.value" type="number" value="{{data.currency.shekel.value}}" />
|
||||
<label style="margin: auto;">{{localize data.currency.quarter.label}}:</label>
|
||||
<input class="center-text" name="data.currency.quarter.value" type="number" value="{{data.currency.quarter.value}}" />
|
||||
<label style="margin: auto;">{{localize data.data.currency.shekel.label}}:</label>
|
||||
<input class="center-text" name="data.currency.shekel.value" type="number" value="{{data.data.currency.shekel.value}}" />
|
||||
<label style="margin: auto;">{{localize data.data.currency.quarter.label}}:</label>
|
||||
<input class="center-text" name="data.currency.quarter.value" type="number" value="{{data.data.currency.quarter.value}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="gear border scroll-y">
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
<ul class="items-list">
|
||||
<li class="item-nor 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>
|
||||
<div class="item-value" style="flex: none;"><input name="data.combat.init" class="skill-value" type="number" value="{{data.data.combat.init}}" data-dtype="Number" /></div>
|
||||
</li>
|
||||
|
||||
<li class="item-defence flexrow" data-defence="{{data.combat.defence}}">
|
||||
<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 class="item-defence flexrow" data-defence="{{data.data.combat.defence}}">
|
||||
<div class="item-name roll-defence rollable" data-defence="{{data.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.data.combat.defence}}" /></div>
|
||||
</li>
|
||||
|
||||
<li class="item-nor 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>
|
||||
<div class="item-name roll-adversary-armor rollable" data-armor="{{data.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.data.combat.armor}}" /></div>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
<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>
|
||||
<h2 style="margin-bottom: 0;">{{localize data.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}}
|
||||
{{editor content=data.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>
|
||||
<input name="data.feature.one.label" class="roll-feature" type="text" value="{{data.data.feature.one.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.one.value}}active{{/if}}" data-feature="one">
|
||||
<i class="far {{#if data.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>
|
||||
<input name="data.feature.two.label" class="roll-feature" type="text" value="{{data.data.feature.two.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.two.value}}active{{/if}}" data-feature="two">
|
||||
<i class="far {{#if data.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>
|
||||
<input name="data.feature.three.label" class="roll-feature" type="text" value="{{data.data.feature.three.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.three.value}}active{{/if}}" data-feature="three">
|
||||
<i class="far {{#if data.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>
|
||||
<input name="data.feature.four.label" class="roll-feature" type="text" value="{{data.data.feature.four.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.four.value}}active{{/if}}" data-feature="four">
|
||||
<i class="far {{#if data.data.feature.four.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="border">
|
||||
|
@ -38,7 +38,7 @@
|
|||
</h2>
|
||||
</header>
|
||||
<ol class="relation-list" style="padding: 0;">
|
||||
{{#each data.relationships as |attr key|}}
|
||||
{{#each data.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}}" />
|
||||
|
@ -59,7 +59,7 @@
|
|||
</h2>
|
||||
</header>
|
||||
<ol class="learning-list" style="padding: 0;">
|
||||
{{#each data.learning as |attr key|}}
|
||||
{{#each data.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}}" />
|
||||
|
@ -90,7 +90,7 @@
|
|||
</a>
|
||||
|
||||
</div>
|
||||
<a style="margin: auto;" class="learning-control" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
<a style="margin: auto;" class="learning-delete" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
</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}}" />
|
||||
<h1 style="grid-column: unset;">{{localize data.data.languages.label}}</h1>
|
||||
<input name="data.languages.value" type="text" value="{{data.data.languages.value}}" />
|
||||
</div>
|
||||
</div>
|
|
@ -1,32 +1,32 @@
|
|||
<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>
|
||||
<h2 style="margin-bottom: 0;">{{localize data.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}}
|
||||
{{editor content=data.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>
|
||||
<input name="data.feature.one.label" class="roll-feature" type="text" value="{{data.data.feature.one.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.one.value}}active{{/if}}" data-feature="one">
|
||||
<i class="far {{#if data.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>
|
||||
<input name="data.feature.two.label" class="roll-feature" type="text" value="{{data.data.feature.two.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.two.value}}active{{/if}}" data-feature="two">
|
||||
<i class="far {{#if data.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>
|
||||
<input name="data.feature.three.label" class="roll-feature" type="text" value="{{data.data.feature.three.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.three.value}}active{{/if}}" data-feature="three">
|
||||
<i class="far {{#if data.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>
|
||||
<input name="data.feature.four.label" class="roll-feature" type="text" value="{{data.data.feature.four.label}}" />
|
||||
<a style="margin: auto;" class="feature {{#if data.data.feature.four.value}}active{{/if}}" data-feature="four">
|
||||
<i class="far {{#if data.data.feature.four.value}}fa-times-circle{{else}}fa-circle{{/if}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="border">
|
||||
|
@ -38,7 +38,7 @@
|
|||
</h2>
|
||||
</header>
|
||||
<ol class="learning-list" style="padding: 0;">
|
||||
{{#each data.learning as |attr key|}}
|
||||
{{#each data.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}}" />
|
||||
|
@ -69,7 +69,7 @@
|
|||
</a>
|
||||
|
||||
</div>
|
||||
<a style="margin: auto;" class="learning-control" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
<a style="margin: auto;" class="learning-delete" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
WEAPONS
|
||||
|
||||
<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="grid-column-gap: 5px; grid-template-columns: auto 1fr; max-height: 163px; height: fit-content;">
|
||||
<label style="margin-top: auto; margin-bottom: auto;">{{localize data.rammingdmg.label}}:</label>
|
||||
<input style="text-align: center;" name="data.rammingdmg.value" type="text" value="{{data.rammingdmg.value}}" placeholder="{{localize data.rammingdmg.label}}" />
|
||||
<label style="margin-top: auto; margin-bottom: auto;">{{localize data.data.rammingdmg.label}}:</label>
|
||||
<input style="text-align: center;" name="data.rammingdmg.value" type="text" value="{{data.data.rammingdmg.value}}" placeholder="{{localize data.data.rammingdmg.label}}" />
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<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: 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.description.label}}</h2>
|
||||
<h2 style="margin-bottom: 0;">{{localize data.data.description.label}}</h2>
|
||||
<div class="description">
|
||||
{{editor content=data.description.value target="data.description.value" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description.value target="data.description.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; height: fit-content;">
|
||||
<label style="margin-top: auto; margin-bottom: auto;">{{localize data.crew.label}}:</label>
|
||||
<input name="data.crew.value" style="text-align: center;" type="text" value="{{data.crew.value}}" placeholder="{{localize data.crew.label}}" />
|
||||
<label style="margin-top: auto; margin-bottom: auto;">{{localize data.data.crew.label}}:</label>
|
||||
<input name="data.crew.value" style="text-align: center;" type="text" value="{{data.data.crew.value}}" placeholder="{{localize data.data.crew.label}}" />
|
||||
</div>
|
||||
|
||||
<div class="spells border">
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
</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}}" />
|
||||
<h1 style="grid-column: unset;">{{localize data.data.languages.label}}</h1>
|
||||
<input name="data.languages.value" type="text" value="{{data.data.languages.value}}" />
|
||||
</div>
|
||||
</div>
|
|
@ -4,7 +4,7 @@
|
|||
<a class="modification-control" data-action="create"><i class="fas fa-plus"></i></a>
|
||||
</header>
|
||||
<ol class="modifications-list" style="padding: 0;">
|
||||
{{#each data.modifications as |attr key|}}
|
||||
{{#each data.data.modifications as |attr key|}}
|
||||
<li class="modification grid-container" style="grid-template-columns: 2fr 1fr auto;" data-attribute="{{key}}">
|
||||
<input class="modification-key" type="text" name="data.modifications.{{key}}.key" value="{{key}}" style="display: none;" />
|
||||
<select class="modification-modtype" name="data.modifications.{{key}}.modtype">
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
<div id="{{id}}" class="roll-dialog">
|
||||
{{#if skillName}}
|
||||
<h1 style="text-align: center;">{{localize skillName}} ({{skillValue}})</h1>
|
||||
{{else}}
|
||||
<h1 style="text-align: center;">{{name}}</h1>
|
||||
{{/if}}
|
||||
<div class="flexrow" style="margin-bottom: 10px;">
|
||||
<label style="margin: auto;">{{localize "ROLL.OPENCLOSE"}}</label>
|
||||
<input type="button" name="openclosed" min="0" value="{{startopen}}" style="min-height: 30px; min-width: 45px;" />
|
||||
|
|
Loading…
Reference in New Issue