Finishing v0.0.3
parent
ce1e29aefb
commit
4cb6c390a4
|
@ -23,6 +23,7 @@
|
||||||
"CURRENCY.QUARTER": "Quarter",
|
"CURRENCY.QUARTER": "Quarter",
|
||||||
"CURRENCY.SHEKEL": "Shekel",
|
"CURRENCY.SHEKEL": "Shekel",
|
||||||
"CURRENCY.TITLE": "Currency",
|
"CURRENCY.TITLE": "Currency",
|
||||||
|
"CURRENCY.SILVER": "Silver",
|
||||||
|
|
||||||
"DICE.ROLL": "Dice roll",
|
"DICE.ROLL": "Dice roll",
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
"CURRENCY.QUARTER": "Kvarting",
|
"CURRENCY.QUARTER": "Kvarting",
|
||||||
"CURRENCY.SHEKEL": "Shekel",
|
"CURRENCY.SHEKEL": "Shekel",
|
||||||
"CURRENCY.TITLE": "Mynt",
|
"CURRENCY.TITLE": "Mynt",
|
||||||
|
"CURRENCY.SILVER": "Silver",
|
||||||
|
|
||||||
"DICE.ROLL": "Tärningsslag",
|
"DICE.ROLL": "Tärningsslag",
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,85 @@ export class ActorSheetKH extends ActorSheet {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
new ContextMenu(html, "li.item-spell", [
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
|
||||||
|
if (!_item) {
|
||||||
|
_item = game.items.get(itemId);
|
||||||
|
|
||||||
|
if (!_item) {
|
||||||
|
console.log("IMPORT ERROR")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let showValue = false
|
||||||
|
let difficulty = 0
|
||||||
|
|
||||||
|
if(this.actor.data.type === "character") {
|
||||||
|
showValue = true
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (_item.data.data.difficulty.value) {
|
||||||
|
case "simple":
|
||||||
|
difficulty = 5
|
||||||
|
break;
|
||||||
|
case "easy":
|
||||||
|
difficulty = 2
|
||||||
|
break;
|
||||||
|
case "hard":
|
||||||
|
difficulty = -2
|
||||||
|
break;
|
||||||
|
case "daunting":
|
||||||
|
difficulty = -5
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_item.data.data.roll.value === "roll" || _item.data.data.roll.value === "attackroll") {
|
||||||
|
// Retrieve skill based on name
|
||||||
|
let skill = this.actor.items.find((element) => element.name === _item.data.data.roll.skill);
|
||||||
|
|
||||||
|
let skillName = _item.name
|
||||||
|
let skillValue = skill.data.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") {
|
||||||
|
// Retrieve skill based on name
|
||||||
|
let skill = this.actor.items.find((element) => element.name === _item.data.data.roll.skill);
|
||||||
|
|
||||||
|
let skillName = _item.name
|
||||||
|
let skillValue = skill.data.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)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: game.i18n.localize("MENU.SENTTOCHAT"),
|
||||||
|
icon: '<i class="far fa-comment"></i>',
|
||||||
|
callback: (li) => {
|
||||||
|
let itemId = li.data("itemId");
|
||||||
|
this._itemDetailsToChat(itemId);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
new ContextMenu(html, "li.item-attack", [
|
new ContextMenu(html, "li.item-attack", [
|
||||||
{
|
{
|
||||||
name: game.i18n.localize("MENU.SHOWROLLDIALOG"),
|
name: game.i18n.localize("MENU.SHOWROLLDIALOG"),
|
||||||
|
@ -226,6 +305,20 @@ export class ActorSheetKH extends ActorSheet {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
new ContextMenu(html, "li.item-defence", [
|
||||||
|
{
|
||||||
|
name: game.i18n.localize("MENU.SHOWROLLDIALOG"),
|
||||||
|
icon: '<i class="far dice"></i>',
|
||||||
|
callback: (li) => {
|
||||||
|
const skillValue = li.data("defence");
|
||||||
|
|
||||||
|
let skillName = "ADVERSARY.DEFENCE";
|
||||||
|
|
||||||
|
this.khRoller.rollSkillDialogInChat(skillName, skillValue, false, this.actor)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
html.find(".feature").click(async (ev) => {
|
html.find(".feature").click(async (ev) => {
|
||||||
const featureName = $(ev.currentTarget).data("feature");
|
const featureName = $(ev.currentTarget).data("feature");
|
||||||
const featureValue = this.actor.data.data.feature[featureName].value;
|
const featureValue = this.actor.data.data.feature[featureName].value;
|
||||||
|
@ -245,6 +338,33 @@ export class ActorSheetKH extends ActorSheet {
|
||||||
html.find(".item-delete").click((ev) => {
|
html.find(".item-delete").click((ev) => {
|
||||||
let parent = $(ev.currentTarget).data("parent")
|
let parent = $(ev.currentTarget).data("parent")
|
||||||
const li = $(ev.currentTarget).parents(parent);
|
const li = $(ev.currentTarget).parents(parent);
|
||||||
|
const item = this.actor.getOwnedItem(li.data("itemId"));
|
||||||
|
|
||||||
|
if(item) {
|
||||||
|
if (item.type === "armor") {
|
||||||
|
let initValue = -1
|
||||||
|
|
||||||
|
if (item.data.data.equipable.equipped) {
|
||||||
|
initValue = 4
|
||||||
|
|
||||||
|
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 (initValue > 0) {
|
||||||
|
this.actor.update({["data.combat.init"]: initValue});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.actor.deleteOwnedItem(li.data("itemId"));
|
this.actor.deleteOwnedItem(li.data("itemId"));
|
||||||
|
|
||||||
|
@ -336,17 +456,25 @@ export class ActorSheetKH extends ActorSheet {
|
||||||
// Retrieve skill based on name
|
// Retrieve skill based on name
|
||||||
let skill = this.actor.items.find((element) => element.name === spell.data.data.roll.skill);
|
let skill = this.actor.items.find((element) => element.name === spell.data.data.roll.skill);
|
||||||
|
|
||||||
let skillName = spell.name + " (" + skill.name + ")"
|
let skillName = spell.name
|
||||||
let skillValue = skill.data.data.value
|
let skillValue = skill.data.data.value
|
||||||
|
|
||||||
|
if(this.actor.data.type === "character") {
|
||||||
|
skillName = spell.name + " (" + skill.name + ")"
|
||||||
|
}
|
||||||
|
|
||||||
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
||||||
} else if(spell.data.data.roll.value === "opposite") {
|
} else if(spell.data.data.roll.value === "opposite") {
|
||||||
// Retrieve skill based on name
|
// Retrieve skill based on name
|
||||||
let skill = this.actor.items.find((element) => element.name === spell.data.data.roll.skill);
|
let skill = this.actor.items.find((element) => element.name === spell.data.data.roll.skill);
|
||||||
|
|
||||||
let skillName = spell.name + " (" + skill.name + ")"
|
let skillName = spell.name
|
||||||
let skillValue = skill.data.data.value
|
let skillValue = skill.data.data.value
|
||||||
|
|
||||||
|
if(this.actor.data.type === "character") {
|
||||||
|
skillName = spell.name + " (" + skill.name + ")"
|
||||||
|
}
|
||||||
|
|
||||||
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
this.khRoller.rollSkillInChat(skillName, skillValue, showValue, this.actor, difficulty)
|
||||||
} else if(spell.data.data.roll.value === "ritual") {
|
} else if(spell.data.data.roll.value === "ritual") {
|
||||||
console.log("Not supported yet")
|
console.log("Not supported yet")
|
||||||
|
|
|
@ -6,6 +6,9 @@ export default class KHHooks {
|
||||||
let actorbaseSkills;
|
let actorbaseSkills;
|
||||||
|
|
||||||
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
|
if(game.settings.get("kopparhavet", "gameSystem") === "hjaltarnas-tid") {
|
||||||
|
// Set currency name
|
||||||
|
actor.update({ "data.currency.shekel.label": "CURRENCY.SILVER" });
|
||||||
|
|
||||||
actorbaseSkills = CONFIG.KH.baseSkillsHT
|
actorbaseSkills = CONFIG.KH.baseSkillsHT
|
||||||
skillIndex = await game.packs.get("kopparhavet.skills-ht").getContent();
|
skillIndex = await game.packs.get("kopparhavet.skills-ht").getContent();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -169,6 +169,20 @@ function registerHandlebarsHelpers() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Handlebars.registerHelper("spellRoll", function (roll) {
|
||||||
|
roll = normalize(roll, "roll");
|
||||||
|
switch (roll) {
|
||||||
|
case "roll":
|
||||||
|
return game.i18n.localize("SPELL.ROLL");
|
||||||
|
case "attackroll":
|
||||||
|
return game.i18n.localize("SPELL.ATTACKROLL");
|
||||||
|
case "opposite":
|
||||||
|
return game.i18n.localize("SPELL.OPPOSITE");
|
||||||
|
case "ritual":
|
||||||
|
return game.i18n.localize("SPELL.RITUAL");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Handlebars.registerHelper('plaintextToHTML', function(value) {
|
Handlebars.registerHelper('plaintextToHTML', function(value) {
|
||||||
// strip tags, add <br/> tags
|
// strip tags, add <br/> tags
|
||||||
return new Handlebars.SafeString(value.replace(/(<([^>]+)>)/gi, "").replace(/(?:\r\n|\r|\n)/g, '<br/>'));
|
return new Handlebars.SafeString(value.replace(/(<([^>]+)>)/gi, "").replace(/(?:\r\n|\r|\n)/g, '<br/>'));
|
||||||
|
|
|
@ -100,14 +100,9 @@
|
||||||
.items .items-list .item,
|
.items .items-list .item,
|
||||||
.items .items-list .item-spell,
|
.items .items-list .item-spell,
|
||||||
.items .items-list .item-weapon,
|
.items .items-list .item-weapon,
|
||||||
.items .items-list .item-skill {
|
.items .items-list .item-skill,
|
||||||
line-height: 24px;
|
.items .items-list .item-nor,
|
||||||
padding: 3px 0;
|
.items .items-list .item-defence {
|
||||||
border-bottom: 1px solid #bbb;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.items .items-list .item-nor {
|
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
padding: 3px 0;
|
padding: 3px 0;
|
||||||
border-bottom: 1px solid #bbb;
|
border-bottom: 1px solid #bbb;
|
||||||
|
|
|
@ -53,6 +53,6 @@
|
||||||
"url": "https://pi.rikspolisen.se/foundryvtt/kopparhavet",
|
"url": "https://pi.rikspolisen.se/foundryvtt/kopparhavet",
|
||||||
"socket": true,
|
"socket": true,
|
||||||
"manifest": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/raw/branch/master/system.json",
|
"manifest": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/raw/branch/master/system.json",
|
||||||
"download": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/archive/v0.1.zip",
|
"download": "https://pi.rikspolisen.se/foundryvtt/kopparhavet/archive/v0.0.3.zip",
|
||||||
"license": ""
|
"license": ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,8 +74,7 @@
|
||||||
<strong>{{localize data.cost.label}}:</strong> {{data.cost.value}}
|
<strong>{{localize data.cost.label}}:</strong> {{data.cost.value}}
|
||||||
<strong>{{localize data.difficulty.label}}:</strong> {{rollDifficulty data.difficulty.value}}
|
<strong>{{localize data.difficulty.label}}:</strong> {{rollDifficulty data.difficulty.value}}
|
||||||
<div style="grid-column-start: 1; grid-column-end: 5;">
|
<div style="grid-column-start: 1; grid-column-end: 5;">
|
||||||
<strong>{{localize data.roll.label}}</strong>
|
<strong>{{localize data.roll.label}}:</strong> {{spellRoll data.roll.value}}
|
||||||
{{data.roll.value}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if data.description}}
|
{{#if data.description}}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<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.combat.init}}" data-dtype="Number" /></div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="item-nor flexrow">
|
<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-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>
|
<div class="item-value" style="flex: none;"><input name="data.combat.defence" class="skill-value" type="text" value="{{data.combat.defence}}" /></div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<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.combat.init}}" data-dtype="Number" /></div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="item-nor flexrow">
|
<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-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>
|
<div class="item-value" style="flex: none;"><input name="data.combat.defence" class="skill-value" type="text" value="{{data.combat.defence}}" /></div>
|
||||||
</li>
|
</li>
|
||||||
|
|
Loading…
Reference in New Issue