Compare commits
10 Commits
fvtt-mourn
...
fvtt-mourn
| Author | SHA1 | Date | |
|---|---|---|---|
| cd1ecf1d96 | |||
| ea0de0e8cd | |||
| c7a1133334 | |||
| 8a4efaad9a | |||
| 7654401f37 | |||
| 2ee6c285ea | |||
| eda51dec7f | |||
| cca4383c33 | |||
| dca9dab577 | |||
| 960f380306 |
BIN
assets/fonts/CentaurMT.otf
Normal file
BIN
assets/fonts/Chaparral Pro Regular.ttf
Normal file
BIN
assets/fonts/CharlemagneStd-Bold.otf
Normal file
BIN
assets/icons/adresse.webp
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
assets/icons/arme.webp
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/icons/bonneaventure.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/icons/capacite.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/icons/clairvoyance.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/icons/competence.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/icons/don.webp
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
assets/icons/eclat.webp
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/icons/equipement.webp
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
assets/icons/monnaie.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/icons/pacte.webp
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
assets/icons/predilection.webp
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
assets/icons/presence.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/icons/protection.webp
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
assets/icons/puissance.webp
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/icons/rune.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/icons/tendance.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/icons/traitchaotique.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/icons/trempe.webp
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
@@ -27,7 +27,7 @@ export class MournbladeActorSheet extends ActorSheet {
|
||||
async getData() {
|
||||
const objectData = MournbladeUtility.data(this.object);
|
||||
|
||||
let actorData = duplicate(MournbladeUtility.templateData(this.object));
|
||||
let actorData = duplicate(MournbladeUtility.templateData(this.object))
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
@@ -40,8 +40,10 @@ export class MournbladeActorSheet extends ActorSheet {
|
||||
data: actorData,
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
skills: duplicate(this.actor.getSkills()),
|
||||
weapons: duplicate(this.actor.getWeapons()),
|
||||
armors: duplicate(this.actor.getArmors()),
|
||||
alignement: this.actor.getAlignement(),
|
||||
//equipments: duplicate(this.actor.getEquipments()),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
@@ -63,80 +65,27 @@ export class MournbladeActorSheet extends ActorSheet {
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.options.editable) return;
|
||||
|
||||
html.bind("keydown", function(e) { // Ignore Enter in actores sheet
|
||||
if (e.keyCode === 13) return false;
|
||||
});
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
const item = this.actor.items.get( itemId );
|
||||
item.sheet.render(true);
|
||||
});
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
const item = this.actor.items.get( itemId )
|
||||
item.sheet.render(true)
|
||||
})
|
||||
// Delete Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
MournbladeUtility.confirmDelete(this, li);
|
||||
});
|
||||
|
||||
html.find('.spec-group-activate').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
this.actor.specPowerActivate( itemId)
|
||||
});
|
||||
html.find('.spec-group-deactivate').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
this.actor.specPowerDeactivate( itemId)
|
||||
});
|
||||
|
||||
html.find('.equip-activate').click(ev => {
|
||||
})
|
||||
html.find('.edit-item-data').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
this.actor.equipActivate( itemId)
|
||||
});
|
||||
html.find('.equip-deactivate').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
this.actor.equipDeactivate( itemId)
|
||||
});
|
||||
|
||||
html.find('.effect-used').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
this.actor.perkEffectUsed( itemId)
|
||||
});
|
||||
|
||||
html.find('.perk-status').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
this.actor.updatePerkStatus( itemId, ev.currentTarget.value)
|
||||
});
|
||||
html.find('.power-cost-spent').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
this.actor.updatePowerSpentCost( itemId, ev.currentTarget.value)
|
||||
});
|
||||
html.find('.perk-used').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
let index = Number($(ev.currentTarget).data("use-index") )
|
||||
this.actor.updatePerkUsed( itemId, index, ev.currentTarget.checked )
|
||||
});
|
||||
|
||||
html.find('.subactor-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let actorId = li.data("actor-id");
|
||||
let actor = game.actors.get( actorId );
|
||||
actor.sheet.render(true);
|
||||
});
|
||||
|
||||
html.find('.subactor-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let actorId = li.data("actor-id");
|
||||
this.actor.delSubActor(actorId);
|
||||
});
|
||||
let itemId = li.data("item-id")
|
||||
let itemType = li.data("item-type")
|
||||
let itemField = $(ev.currentTarget).data("item-field")
|
||||
let dataType = $(ev.currentTarget).data("dtype")
|
||||
let value = ev.currentTarget.value
|
||||
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
||||
})
|
||||
|
||||
html.find('.quantity-minus').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
@@ -147,49 +96,23 @@ export class MournbladeActorSheet extends ActorSheet {
|
||||
this.actor.incDecQuantity( li.data("item-id"), +1 );
|
||||
} );
|
||||
|
||||
html.find('.unarmed-attack').click((event) => {
|
||||
this.actor.rollUnarmedAttack();
|
||||
});
|
||||
html.find('.generic-pool-roll').click((event) => {
|
||||
this.openGenericRoll()
|
||||
} );
|
||||
html.find('.attack-melee').click((event) => {
|
||||
this.actor.rollPool( 'com');
|
||||
});
|
||||
html.find('.attack-ranged').click((event) => {
|
||||
this.actor.rollPool( 'agi');
|
||||
});
|
||||
html.find('.defense-roll').click((event) => {
|
||||
this.actor.rollPool( 'def', true);
|
||||
});
|
||||
html.find('.damage-melee').click((event) => {
|
||||
this.actor.rollPool( 'str');
|
||||
});
|
||||
html.find('.damage-ranged').click((event) => {
|
||||
this.actor.rollPool( 'per');
|
||||
});
|
||||
html.find('.damage-resistance').click((event) => {
|
||||
this.actor.rollPool( 'phy');
|
||||
});
|
||||
|
||||
html.find('.roll-stat').click((event) => {
|
||||
const statId = $(event.currentTarget).data("stat-key");
|
||||
this.actor.rollStat(statId);
|
||||
});
|
||||
html.find('.roll-mr').click((event) => {
|
||||
this.actor.rollMR();
|
||||
});
|
||||
html.find('.roll-attribut').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let attrKey = li.data("attr-key")
|
||||
this.actor.rollAttribut(attrKey)
|
||||
})
|
||||
html.find('.roll-competence').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let attrKey = $(event.currentTarget).data("attr-key")
|
||||
let compId = li.data("item-id")
|
||||
this.actor.rollCompetence(attrKey, compId)
|
||||
})
|
||||
|
||||
html.find('.roll-spec').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const specId = li.data("item-id");
|
||||
this.actor.rollSpec(specId);
|
||||
});
|
||||
html.find('.power-roll').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const powerId = li.data("item-id");
|
||||
this.actor.rollPower(powerId);
|
||||
});
|
||||
html.find('.weapon-roll').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const weaponId = li.data("item-id");
|
||||
@@ -207,49 +130,15 @@ export class MournbladeActorSheet extends ActorSheet {
|
||||
this.actor.rollWeapon(weaponId, true);
|
||||
});
|
||||
|
||||
html.find('.weapon-damage').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const weapon = this.actor.getOwnedItem(li.data("item-id"));
|
||||
this.actor.rollDamage(weapon, 'damage');
|
||||
});
|
||||
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.item-link a').click((event) => {
|
||||
const itemId = $(event.currentTarget).data("item-id");
|
||||
const item = this.actor.getOwnedItem(itemId);
|
||||
item.sheet.render(true);
|
||||
});
|
||||
html.find('.item-equip').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
this.actor.equipItem( li.data("item-id") );
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.power-activate').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
this.actor.activatePower( li.data("item-id") );
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
html.find('.change-worstfear').change(ev => {
|
||||
this.actor.manageWorstFear( ev.currentTarget.checked )
|
||||
});
|
||||
html.find('.change-desires').change(ev => {
|
||||
this.actor.manageDesires( ev.currentTarget.checked )
|
||||
});
|
||||
|
||||
html.find('.update-field').change(ev => {
|
||||
const fieldName = $(ev.currentTarget).data("field-name");
|
||||
let value = Number(ev.currentTarget.value);
|
||||
this.actor.update( { [`${fieldName}`]: value } );
|
||||
});
|
||||
html.find('.perk-active').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
this.actor.activatePerk( li.data("item-id") );
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ export class MournbladeActor extends Actor {
|
||||
return actor;
|
||||
}
|
||||
|
||||
if (data.type == 'character') {
|
||||
if (data.type == 'personnage') {
|
||||
const skills = await MournbladeUtility.loadCompendium("fvtt-mournblade.skills")
|
||||
data.items = skills.map(i => i.toObject());
|
||||
}
|
||||
if (data.type == 'npc') {
|
||||
if (data.type == 'pnj') {
|
||||
}
|
||||
|
||||
return super.create(data, options);
|
||||
@@ -46,12 +46,40 @@ export class MournbladeActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getWeapons() {
|
||||
return this.data.items.filter(item => item.type == "arme" )
|
||||
return this.data.items.filter(item => item.type == "arme")
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getArmors() {
|
||||
return this.data.items.filter(item => item.type == "protection" )
|
||||
return this.data.items.filter(item => item.type == "protection")
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getSkills() {
|
||||
let comp = []
|
||||
for (let item of this.data.items) {
|
||||
item = duplicate(item)
|
||||
if (item.type == "competence") {
|
||||
item.data.attribut1total = item.data.niveau + (this.data.data.attributs[item.data.attribut1]?.value || 0)
|
||||
item.data.attribut2total = item.data.niveau + (this.data.data.attributs[item.data.attribut2]?.value || 0)
|
||||
item.data.attribut3total = item.data.niveau + (this.data.data.attributs[item.data.attribut3]?.value || 0)
|
||||
if (item.data.niveau == 0) {
|
||||
item.data.attribut1total -= 3
|
||||
item.data.attribut2total -= 3
|
||||
item.data.attribut3total -= 3
|
||||
}
|
||||
item.data.attribut1label = this.data.data.attributs[item.data.attribut1]?.label || ""
|
||||
item.data.attribut2label = this.data.data.attributs[item.data.attribut2]?.label || ""
|
||||
item.data.attribut3label = this.data.data.attributs[item.data.attribut3]?.label || ""
|
||||
comp.push(item)
|
||||
}
|
||||
}
|
||||
return comp
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getAlignement() {
|
||||
return (this.data.data.balance.loi > this.data.data.balance.chaos) ? "loyal" : "chaotique"
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareBaseData() {
|
||||
}
|
||||
@@ -76,11 +104,6 @@ export class MournbladeActor extends Actor {
|
||||
super._preUpdate(changed, options, user);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getActivePerks() {
|
||||
let perks = this.data.items.filter(item => item.type == 'perk' && item.data.data.active);
|
||||
return perks;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getItemById(id) {
|
||||
let item = this.data.items.find(item => item.id == id);
|
||||
@@ -99,6 +122,50 @@ export class MournbladeActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
editItemField(itemId, itemType, itemField, dataType, value) {
|
||||
let item = this.data.items.find(item => item.id == itemId)
|
||||
if (item) {
|
||||
console.log("Item ", item, itemField, dataType, value)
|
||||
if (dataType.toLowerCase() == "number") {
|
||||
value = Number(value)
|
||||
} else {
|
||||
value = String(value)
|
||||
}
|
||||
let update = { _id: item.id, [`data.${itemField}`]: value };
|
||||
this.updateEmbeddedDocuments("Item", [update])
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getBonneAventure() {
|
||||
return this.data.data.bonneaventure.actuelle
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
changeBonneAventure(value) {
|
||||
let newBA = this.data.data.bonneaventure.actuelle
|
||||
newBA += value
|
||||
this.update({ 'data.bonneaventure.actuelle': newBA })
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getEclat() {
|
||||
return this.data.data.eclat.value
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
changeEclat(value) {
|
||||
let newE = this.data.data.eclat.value
|
||||
newE += value
|
||||
this.update({ 'data.eclat.value': newE })
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
canEclatDoubleD20() {
|
||||
return (this.getAlignement() == "loyal" && this.data.data.eclat.value > 0)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
compareName(a, b) {
|
||||
if (a.name < b.name) {
|
||||
@@ -112,7 +179,7 @@ export class MournbladeActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getAttribute(attrKey) {
|
||||
return this.data.data.attributes[attrKey];
|
||||
return this.data.data.attributes[attrKey]
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -159,39 +226,44 @@ export class MournbladeActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getCommonRollData(statKey = undefined, useShield = false) {
|
||||
getCommonRollData(attrKey = undefined, compId = undefined) {
|
||||
let rollData = MournbladeUtility.getBasicRollData()
|
||||
rollData.alias = this.name
|
||||
rollData.actorImg = this.img
|
||||
rollData.actorId = this.id
|
||||
rollData.img = this.img
|
||||
rollData.activePerks = duplicate(this.getActivePerks())
|
||||
rollData.canEclatDoubleD20 = this.canEclatDoubleD20()
|
||||
rollData.doubleD20 = false
|
||||
rollData.attributs = MournbladeUtility.getAttributs()
|
||||
|
||||
if (statKey) {
|
||||
rollData.statKey = statKey
|
||||
rollData.stat = this.getStat(statKey)
|
||||
rollData.statDicesLevel = rollData.stat.value
|
||||
rollData.statMod = rollData.stat.mod
|
||||
rollData.specList = this.getRelevantSpec(statKey)
|
||||
rollData.selectedSpec = "0"
|
||||
if (attrKey) {
|
||||
rollData.attrKey = attrKey
|
||||
if (attrKey != "tochoose") {
|
||||
rollData.actionImg = "systems/fvtt-mournblade/assets/icons/" + this.data.data.attributs[attrKey].labelnorm + ".webp"
|
||||
rollData.attr = duplicate(this.data.data.attributs[attrKey])
|
||||
}
|
||||
}
|
||||
if (compId) {
|
||||
rollData.competence = duplicate(this.data.items.get(compId) || {})
|
||||
rollData.actionImg = rollData.competence.img
|
||||
}
|
||||
|
||||
this.addEffects(rollData)
|
||||
this.addArmorsShields(rollData, statKey, useShield)
|
||||
this.addWeapons(rollData, statKey, useShield)
|
||||
this.addEquipments(rollData, statKey)
|
||||
|
||||
return rollData
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async startRoll(rollData) {
|
||||
this.syncRoll(rollData);
|
||||
//console.log("ROLL DATA", rollData)
|
||||
let rollDialog = await MournbladeRollDialog.create(this, rollData);
|
||||
console.log(rollDialog);
|
||||
rollDialog.render(true);
|
||||
async rollAttribut(attrKey) {
|
||||
let rollData = this.getCommonRollData(attrKey)
|
||||
console.log("RollDatra", rollData)
|
||||
let rollDialog = await MournbladeRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollCompetence(attrKey, compId) {
|
||||
let rollData = this.getCommonRollData(attrKey, compId)
|
||||
console.log("RollDatra", rollData)
|
||||
let rollDialog = await MournbladeRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -124,21 +124,10 @@ export class MournbladeItemSheet extends ItemSheet {
|
||||
item.sheet.render(true);
|
||||
});
|
||||
|
||||
html.find('.delete-spec').click(ev => {
|
||||
this.object.update({ "data.specialisation": [{ name: 'None' }] });
|
||||
});
|
||||
|
||||
html.find('.delete-subitem').click(ev => {
|
||||
this.deleteSubitem(ev);
|
||||
});
|
||||
|
||||
html.find('.stat-choice-flag').click(ev => {
|
||||
let idx = $(ev.currentTarget).data("stat-idx");
|
||||
let array = duplicate(this.object.data.data.statincreasechoice);
|
||||
array[Number(idx)].flag = !array[Number(idx)].flag;
|
||||
this.object.update({ "data.statincreasechoice": array });
|
||||
});
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
import { MournbladeUtility } from "./mournblade-utility.js";
|
||||
|
||||
export const defaultItemImg = {
|
||||
competence: "systems/fvtt-mournblade/assets/icons/competence.webp",
|
||||
arme: "systems/fvtt-mournblade/assets/icons/arme.webp",
|
||||
capacite: "systems/fvtt-mournblade/assets/icons/capacite.webp",
|
||||
don: "systems/fvtt-mournblade/assets/icons/don.webp",
|
||||
equipement: "systems/fvtt-mournblade/assets/icons/equipement.webp",
|
||||
monnaie: "systems/fvtt-mournblade/assets/icons/monnaie.webp",
|
||||
pacte: "systems/fvtt-mournblade/assets/icons/pacte.webp",
|
||||
predilection: "systems/fvtt-mournblade/assets/icons/predilection.webp",
|
||||
protection: "systems/fvtt-mournblade/assets/icons/protection.webp",
|
||||
rune: "systems/fvtt-mournblade/assets/icons/rune.webp",
|
||||
tendance: "systems/fvtt-mournblade/assets/icons/tendance.webp",
|
||||
traitchaotique: "systems/fvtt-mournblade/assets/icons/traitchaotique.webp",
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -50,11 +50,11 @@ Hooks.once("init", async function () {
|
||||
/* -------------------------------------------- */
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("fvtt-mournblade", MournbladeActorSheet, { types: ["character"], makeDefault: true });
|
||||
Actors.registerSheet("fvtt-mournblade", MournbladeActorSheet, { types: ["personnage"], makeDefault: true })
|
||||
//Actors.registerSheet("fvtt-mournblade", MournbladeNPCSheet, { types: ["npc"], makeDefault: false });
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-mournblade", MournbladeItemSheet, { makeDefault: true });
|
||||
Items.registerSheet("fvtt-mournblade", MournbladeItemSheet, { makeDefault: true })
|
||||
|
||||
MournbladeUtility.init();
|
||||
|
||||
@@ -66,7 +66,7 @@ function welcomeMessage() {
|
||||
user: game.user.id,
|
||||
whisper: [game.user.id],
|
||||
content: `<div id="welcome-message-Mournblade"><span class="rdd-roll-part">
|
||||
<strong>Welcome to Mournblade RPG.</strong>
|
||||
<strong>Bienvenue dans les Jeunes Royaumes de Mournblade !</strong>
|
||||
` });
|
||||
}
|
||||
|
||||
@@ -78,9 +78,9 @@ Hooks.once("ready", function () {
|
||||
MournbladeUtility.ready();
|
||||
// User warning
|
||||
if (!game.user.isGM && game.user.character == undefined) {
|
||||
ui.notifications.info("Warning ! No character linked to your user !");
|
||||
ui.notifications.info("Attention ! Aucun personnage n'est relié au joueur !");
|
||||
ChatMessage.create({
|
||||
content: "<b>WARNING</b> The player " + game.user.name + " is not linked to a character !",
|
||||
content: "<b>ATTENTION</b> Le joueur " + game.user.name + " n'est relié à aucun personnage !",
|
||||
user: game.user._id
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,17 +14,22 @@ export class MournbladeRollDialog extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
constructor(actor, rollData, html, options, close = undefined) {
|
||||
let conf = {
|
||||
title: (rollData.mode == "skill") ? "Skill" : "Roll",
|
||||
title: "Test de Capacité",
|
||||
content: html,
|
||||
buttons: {
|
||||
roll: {
|
||||
rolld10: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Roll !",
|
||||
callback: () => { this.roll() }
|
||||
label: "Lancer 1d10",
|
||||
callback: () => { this.roll("1d10") }
|
||||
},
|
||||
rolld20: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d20",
|
||||
callback: () => { this.roll("1d20") }
|
||||
},
|
||||
cancel: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: "Cancel",
|
||||
label: "Annuler",
|
||||
callback: () => { this.close() }
|
||||
} },
|
||||
close: close
|
||||
@@ -32,148 +37,17 @@ export class MournbladeRollDialog extends Dialog {
|
||||
|
||||
super(conf, options);
|
||||
|
||||
this.actor = actor;
|
||||
this.rollData = rollData;
|
||||
this.actor = actor
|
||||
this.rollData = rollData
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
roll () {
|
||||
roll ( dice) {
|
||||
this.rollData.mainDice = dice
|
||||
MournbladeUtility.rollMournblade( this.rollData )
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
manageEffects( effectIdx, toggled) {
|
||||
let effect = this.rollData.effectsList[effectIdx]
|
||||
if (effect) {
|
||||
effect.applied = toggled
|
||||
|
||||
let level, genre, idVal
|
||||
if (effect.type == 'hindrance' ) {
|
||||
level = effect.value
|
||||
genre = 'positive'
|
||||
idVal = "#hindranceDicesLevel"
|
||||
}
|
||||
if (effect.type == 'effect' ) {
|
||||
let effectData = effect.effect
|
||||
level = effectData.data.effectlevel
|
||||
genre = effectData.data.genre
|
||||
effectData.data.isUsed = toggled
|
||||
if (effectData.data.bonusdice) {
|
||||
idVal = "#bonusDicesLevel"
|
||||
}
|
||||
if (effectData.data.reducedicevalue || effectData.data.statdice) {
|
||||
idVal = "#statDicesLevel"
|
||||
}
|
||||
if (effectData.data.otherdice) {
|
||||
idVal = "#otherDicesLevel"
|
||||
}
|
||||
if (effectData.data.hindrance) {
|
||||
idVal = "#hindranceDicesLevel"
|
||||
genre = 'positive' // Dynamic fix
|
||||
}
|
||||
}
|
||||
// Now process the dice level update
|
||||
let newLevel = Number($(idVal).val())
|
||||
console.log("Ongoing", newLevel, toggled, idVal )
|
||||
if (toggled) {
|
||||
if ( genre == 'positive') {
|
||||
newLevel += Number(level)
|
||||
}else {
|
||||
newLevel -= Number(level)
|
||||
}
|
||||
}else {
|
||||
if ( genre == 'positive') {
|
||||
newLevel -= Number(level)
|
||||
}else {
|
||||
newLevel += Number(level)
|
||||
}
|
||||
}
|
||||
newLevel = (newLevel<0) ? 0 : newLevel
|
||||
$(idVal).val(newLevel)
|
||||
}
|
||||
//console.log("Effect", effect, toggled)
|
||||
this.rollData.statDicesLevel = Number($('#statDicesLevel').val())
|
||||
this.rollData.specDicesLevel = Number($('#specDicesLevel').val())
|
||||
this.rollData.bonusDicesLevel = Number($('#bonusDicesLevel').val())
|
||||
this.rollData.hindranceDicesLevel = Number($('#hindranceDicesLevel').val())
|
||||
this.rollData.otherDicesLevel = Number($('#otherDicesLevel').val())
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
manageArmors( armorIdx, toggled) {
|
||||
let armor = this.rollData.armorsList[armorIdx]
|
||||
if (armor) {
|
||||
armor.applied = toggled
|
||||
if (armor.type == 'other' ) {
|
||||
if (toggled) {
|
||||
this.rollData.otherDicesLevel += Number(armor.value)
|
||||
} else {
|
||||
this.rollData.otherDicesLevel -= Number(armor.value)
|
||||
this.rollData.otherDicesLevel = (this.rollData.otherDicesLevel<0) ? 0 : this.rollData.otherDicesLevel
|
||||
}
|
||||
$("#otherDicesLevel").val(this.rollData.otherDicesLevel)
|
||||
}
|
||||
}
|
||||
console.log("Armor", armorIdx, toggled)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
manageWeapons( weaponIdx, toggled) {
|
||||
let weapon = this.rollData.weaponsList[weaponIdx]
|
||||
if (weapon) {
|
||||
if (toggled) {
|
||||
this.rollData.weaponName = weapon.weapon.name
|
||||
} else {
|
||||
this.rollData.weaponName = undefined
|
||||
}
|
||||
weapon.applied = toggled
|
||||
if (weapon.type == 'damage' || weapon.type == 'enhanced' ) {
|
||||
if (toggled) {
|
||||
this.rollData.otherDicesLevel += Number(weapon.value)
|
||||
} else {
|
||||
this.rollData.weaponName = undefined
|
||||
this.rollData.otherDicesLevel -= Number(weapon.value)
|
||||
this.rollData.otherDicesLevel = (this.rollData.otherDicesLevel<0) ? 0 : this.rollData.otherDicesLevel
|
||||
}
|
||||
$("#otherDicesLevel").val(this.rollData.otherDicesLevel)
|
||||
}
|
||||
}
|
||||
console.log("Weapon", weaponIdx, toggled, this.rollData.otherDicesLevel, weapon)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
manageEquip( equipIdx, toggled) {
|
||||
let equip = this.rollData.equipmentsList[equipIdx]
|
||||
if (equip) {
|
||||
equip.applied = toggled
|
||||
let idVal = "#otherDicesLevel" // Default
|
||||
if (equip.equip.data.bonusdice) {
|
||||
idVal = "#bonusDicesLevel"
|
||||
}
|
||||
if (equip.equip.data.statdice) {
|
||||
idVal = "#statDicesLevel"
|
||||
}
|
||||
if (equip.equip.data.otherdice) {
|
||||
idVal = "#otherDicesLevel"
|
||||
}
|
||||
let newLevel = Number($(idVal).val())
|
||||
if (toggled) {
|
||||
newLevel += Number(equip.value)
|
||||
} else {
|
||||
newLevel -= Number(equip.value)
|
||||
}
|
||||
newLevel = (newLevel <0) ? 0 : newLevel
|
||||
$(idVal).val(newLevel)
|
||||
// Then refresh
|
||||
this.rollData.statDicesLevel = Number($('#statDicesLevel').val())
|
||||
this.rollData.specDicesLevel = Number($('#specDicesLevel').val())
|
||||
this.rollData.bonusDicesLevel = Number($('#bonusDicesLevel').val())
|
||||
this.rollData.hindranceDicesLevel = Number($('#hindranceDicesLevel').val())
|
||||
this.rollData.otherDicesLevel = Number($('#otherDicesLevel').val())
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
@@ -183,57 +57,17 @@ export class MournbladeRollDialog extends Dialog {
|
||||
}
|
||||
$(function () { onLoad(); });
|
||||
|
||||
html.find('#specList').change(async (event) => {
|
||||
this.rollData.selectedSpec = event.currentTarget.value
|
||||
let spec = this.rollData.specList.find(item => item._id == this.rollData.selectedSpec)
|
||||
if ( spec) {
|
||||
this.rollData.specDiceLevel = spec.data.level
|
||||
this.rollData.specName = spec.name
|
||||
$('#specDicesLevel').val(this.rollData.specDiceLevel)
|
||||
} else {
|
||||
this.rollData.specName = undefined
|
||||
$('#specDicesLevel').val(0)
|
||||
}
|
||||
const content = await renderTemplate("systems/fvtt-Mournblade-rpg/templates/roll-dialog-generic.html", this.rollData)
|
||||
this.data.content = content
|
||||
this.render(true)
|
||||
});
|
||||
html.find('#statDicesLevel').change((event) => {
|
||||
this.rollData.statDicesLevel = Number(event.currentTarget.value)
|
||||
});
|
||||
html.find('#specDicesLevel').change((event) => {
|
||||
this.rollData.specDicesLevel = Number(event.currentTarget.value)
|
||||
});
|
||||
html.find('#bonusDicesLevel').change((event) => {
|
||||
this.rollData.bonusDicesLevel = Number(event.currentTarget.value)
|
||||
});
|
||||
html.find('#hindranceDicesLevel').change((event) => {
|
||||
this.rollData.hindranceDicesLevel = Number(event.currentTarget.value)
|
||||
});
|
||||
html.find('#otherDicesLevel').change((event) => {
|
||||
this.rollData.otherDicesLevel = Number(event.currentTarget.value)
|
||||
});
|
||||
html.find('.effect-clicked').change((event) => {
|
||||
let toggled = event.currentTarget.checked
|
||||
let effectIdx = $(event.currentTarget).data("effect-idx")
|
||||
this.manageEffects( effectIdx, toggled)
|
||||
});
|
||||
html.find('.armor-clicked').change((event) => {
|
||||
let toggled = event.currentTarget.checked
|
||||
let armorIdx = $(event.currentTarget).data("armor-idx")
|
||||
this.manageArmors( armorIdx, toggled)
|
||||
});
|
||||
html.find('.weapon-clicked').change((event) => {
|
||||
let toggled = event.currentTarget.checked
|
||||
let weaponIdx = $(event.currentTarget).data("weapon-idx")
|
||||
this.manageWeapons( weaponIdx, toggled)
|
||||
});
|
||||
html.find('.equip-clicked').change((event) => {
|
||||
let toggled = event.currentTarget.checked
|
||||
let equipIdx = $(event.currentTarget).data("equip-idx")
|
||||
this.manageEquip( equipIdx, toggled)
|
||||
});
|
||||
|
||||
|
||||
html.find('#modificateur').change(async (event) => {
|
||||
this.rollData.modificateur = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#difficulte').change(async (event) => {
|
||||
this.rollData.difficulte = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#attrKey').change(async (event) => {
|
||||
this.rollData.attrKey = String(event.currentTarget.value)
|
||||
})
|
||||
html.find('#doubleD20').change(async (event) => {
|
||||
this.rollData.doubleD20 = event.currentTarget.checked
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,12 @@ export class MournbladeUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async init() {
|
||||
Hooks.on('renderChatLog', (log, html, data) => MournbladeUtility.chatListeners(html));
|
||||
Hooks.on('renderChatLog', (log, html, data) => MournbladeUtility.chatListeners(html))
|
||||
Hooks.on("getChatLogEntryContext", (html, options) => MournbladeUtility.chatRollMenu(html, options))
|
||||
|
||||
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
||||
MournbladeUtility.pushInitiativeOptions(html, options);
|
||||
});
|
||||
})
|
||||
Hooks.on("dropCanvasData", (canvas, data) => {
|
||||
MournbladeUtility.dropItemOnToken(canvas, data)
|
||||
});
|
||||
@@ -22,26 +24,41 @@ export class MournbladeUtility {
|
||||
|
||||
Handlebars.registerHelper('count', function (list) {
|
||||
return list.length;
|
||||
});
|
||||
})
|
||||
Handlebars.registerHelper('includes', function (array, val) {
|
||||
return array.includes(val);
|
||||
});
|
||||
})
|
||||
Handlebars.registerHelper('upper', function (text) {
|
||||
return text.toUpperCase();
|
||||
});
|
||||
})
|
||||
Handlebars.registerHelper('lower', function (text) {
|
||||
return text.toLowerCase()
|
||||
})
|
||||
Handlebars.registerHelper('upperFirst', function (text) {
|
||||
if (typeof text !== 'string') return text
|
||||
return text.charAt(0).toUpperCase() + text.slice(1)
|
||||
});
|
||||
})
|
||||
Handlebars.registerHelper('notEmpty', function (list) {
|
||||
return list.length > 0;
|
||||
});
|
||||
})
|
||||
Handlebars.registerHelper('mul', function (a, b) {
|
||||
return parseInt(a) * parseInt(b);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getModificateurOptions() {
|
||||
let opt = []
|
||||
for (let i = -15; i <= 15; i++) {
|
||||
opt.push(`<option value="${i}">${i}</option>`)
|
||||
}
|
||||
return opt.concat("\n")
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getAttributs() {
|
||||
return { adr: "Adresse", pui: "Puissance", cla: "Clairvoyance", pre: "Présence", tre: "Trempe"}
|
||||
return { adr: "Adresse", pui: "Puissance", cla: "Clairvoyance", pre: "Présence", tre: "Trempe" }
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static pushInitiativeOptions(html, options) {
|
||||
@@ -86,8 +103,9 @@ export class MournbladeUtility {
|
||||
static async preloadHandlebarsTemplates() {
|
||||
|
||||
const templatePaths = [
|
||||
'systems/fvtt-mournblade/templates/editor-notes-gm.html',
|
||||
'systems/fvtt-mournblade/templates/partial-item-description.html'
|
||||
'systems/fvtt-mournblade/templates/editor-notes-gm.html',
|
||||
'systems/fvtt-mournblade/templates/partial-item-description.html',
|
||||
'systems/fvtt-mournblade/templates/partial-list-niveau.html'
|
||||
]
|
||||
return loadTemplates(templatePaths);
|
||||
}
|
||||
@@ -177,7 +195,7 @@ export class MournbladeUtility {
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static saveRollData(rollData) {
|
||||
game.socket.emit("system.Mournblade-rpg", {
|
||||
game.socket.emit("system.fvtt-mournblade", {
|
||||
name: "msg_update_roll", data: rollData
|
||||
}); // Notify all other clients of the roll
|
||||
this.updateRollData(rollData);
|
||||
@@ -244,15 +262,86 @@ export class MournbladeUtility {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static computeResult(rollData) {
|
||||
if (rollData.mainDice == "1d20") {
|
||||
let diceValue = rollData.roll.terms[0].results[0].result
|
||||
diceValue *= (rollData.doubleD20) ? 2 : 1
|
||||
//console.log("PAIR/IMP", diceValue)
|
||||
if (diceValue % 2 == 1) {
|
||||
//console.log("PAIR/IMP2", diceValue)
|
||||
rollData.finalResult -= rollData.roll.terms[0].results[0].result // Substract value
|
||||
if (diceValue == 1 || diceValue == 11) {
|
||||
rollData.isDramatique = true
|
||||
rollData.isSuccess = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rollData.difficulte > 0 && !rollData.isDramatique) {
|
||||
rollData.isSuccess = (rollData.roll.finalResult >= rollData.difficulte)
|
||||
rollData.isHeroique = ((rollData.roll.finalResult - rollData.difficulte) >= 10)
|
||||
rollData.isDramatique = ((rollData.roll.finalResult - rollData.difficulte) <= -10)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async rollMournblade(rollData) {
|
||||
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-Mournblade-rpg/templates/chat-generic-result.html`, rollData)
|
||||
});
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
if (rollData.attrKey == "tochoose") { // No attr selected, force address
|
||||
rollData.attrKey = "adr"
|
||||
}
|
||||
if ( !rollData.attr) {
|
||||
console.log("ATTR!!!", rollData.attrKey)
|
||||
rollData.actionImg = "systems/fvtt-mournblade/assets/icons/" + actor.data.data.attributs[rollData.attrKey].labelnorm + ".webp"
|
||||
rollData.attr = duplicate(actor.data.data.attributs[rollData.attrKey])
|
||||
}
|
||||
|
||||
rollData.diceFormula = rollData.mainDice
|
||||
if ( rollData.doubleD20) { // Multiply result !
|
||||
rollData.diceFormula += "*2"
|
||||
if (!rollData.isReroll) {
|
||||
actor.changeEclat(-1)
|
||||
}
|
||||
}
|
||||
if (rollData.competence) {
|
||||
let compmod = (rollData.competence.data.niveau == 0) ? -3 : 0
|
||||
rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.data.niveau}+${rollData.modificateur}+${compmod}`
|
||||
} else {
|
||||
rollData.diceFormula += `+${rollData.attr.value}*2+${rollData.modificateur}`
|
||||
}
|
||||
|
||||
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"));
|
||||
rollData.roll = myRoll
|
||||
console.log(">>>> ", myRoll)
|
||||
|
||||
rollData.finalResult = myRoll.total
|
||||
this.computeResult( rollData)
|
||||
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-generic-result.html`, rollData)
|
||||
}, rollData)
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async bonusRollMournblade(rollData) {
|
||||
rollData.bonusFormula = rollData.addedBonus
|
||||
|
||||
let bonusRoll = new Roll(rollData.bonusFormula).roll({async: false})
|
||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||
rollData.bonusRoll = bonusRoll
|
||||
|
||||
rollData.finalResult += rollData.bonusRoll.total
|
||||
|
||||
this.computeResult( rollData)
|
||||
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-generic-result.html`, rollData)
|
||||
}, rollData)
|
||||
|
||||
// And save the roll
|
||||
this.saveRollData(rollData);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -291,7 +380,7 @@ export class MournbladeUtility {
|
||||
} else {
|
||||
item = game.items.get(dataItem.id)
|
||||
}
|
||||
return item;
|
||||
return item
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -312,7 +401,7 @@ export class MournbladeUtility {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static createChatMessage(name, rollMode, chatOptions) {
|
||||
static async createChatMessage(name, rollMode, chatOptions, rollData = undefined) {
|
||||
switch (rollMode) {
|
||||
case "blindroll": // GM only
|
||||
if (!game.user.isGM) {
|
||||
@@ -329,8 +418,10 @@ export class MournbladeUtility {
|
||||
chatOptions.whisper = this.getWhisperRecipients(rollMode, name);
|
||||
break;
|
||||
}
|
||||
chatOptions.alias = chatOptions.alias || name;
|
||||
ChatMessage.create(chatOptions);
|
||||
chatOptions.alias = chatOptions.alias || name
|
||||
let msg = await ChatMessage.create(chatOptions)
|
||||
console.log("=======>", rollData)
|
||||
msg.setFlag("world", "mournblade-roll", rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -338,6 +429,9 @@ export class MournbladeUtility {
|
||||
let rollData = {
|
||||
rollId: randomID(16),
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
modificateursOptions: this.getModificateurOptions(),
|
||||
difficulte: 0,
|
||||
modificateur: 0,
|
||||
}
|
||||
MournbladeUtility.updateWithTarget(rollData)
|
||||
return rollData
|
||||
@@ -358,8 +452,119 @@ export class MournbladeUtility {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static createChatWithRollMode(name, chatOptions) {
|
||||
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions);
|
||||
static createChatWithRollMode(name, chatOptions, rollData = undefined) {
|
||||
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static applyBonneAventureRoll(li, changed, addedBonus) {
|
||||
let msgId = li.data("message-id")
|
||||
let msg = game.messages.get(msgId)
|
||||
if (msg) {
|
||||
let rollData = msg.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
actor.changeBonneAventure( changed )
|
||||
rollData.isReroll = true
|
||||
rollData.textBonus = "Bonus de Points d'Aventure"
|
||||
if (addedBonus == "reroll") {
|
||||
MournbladeUtility.rollMournblade(rollData)
|
||||
} else {
|
||||
rollData.addedBonus = addedBonus
|
||||
MournbladeUtility.bonusRollMournblade(rollData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static applyEclatRoll(li, changed, addedBonus) {
|
||||
let msgId = li.data("message-id")
|
||||
let msg = game.messages.get(msgId)
|
||||
if (msg) {
|
||||
let rollData = msg.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
actor.changeEclat( changed )
|
||||
rollData.isReroll = true
|
||||
rollData.textBonus = "Bonus d'Eclat"
|
||||
rollData.addedBonus = addedBonus
|
||||
MournbladeUtility.bonusRollMournblade(rollData)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static chatRollMenu(html, options) {
|
||||
let canApply = li => canvas.tokens.controlled.length && li.find(".mournblade-roll").length
|
||||
let canApplyBALoyal = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
return ( !rollData.isReroll && actor.getBonneAventure() > 0 && actor.getAlignement() == "loyal")
|
||||
}
|
||||
let canApplyPELoyal = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
return ( !rollData.isReroll && actor.getEclat() > 0 && actor.getAlignement() == "loyal")
|
||||
}
|
||||
let canApplyBAChaotique = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
return ( !rollData.isReroll && actor.getBonneAventure() > 0 && actor.getAlignement() == "chaotique")
|
||||
}
|
||||
let canApplyBAChaotique3 = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
return ( !rollData.isReroll && actor.getBonneAventure() > 2 && actor.getAlignement() == "chaotique")
|
||||
}
|
||||
let canApplyPEChaotique = function (li) {
|
||||
let message = game.messages.get(li.attr("data-message-id"))
|
||||
let rollData = message.getFlag("world", "mournblade-roll")
|
||||
let actor = game.actors.get(rollData.actorId)
|
||||
return ( !rollData.isReroll && actor.getEclat() > 0 && actor.getAlignement() == "chaotique")
|
||||
}
|
||||
|
||||
options.push(
|
||||
{
|
||||
name: "Ajouer +3 (1 point de Bonne Aventure)",
|
||||
icon: "<i class='fas fa-user-plus'></i>",
|
||||
condition: canApply && canApplyBALoyal,
|
||||
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+3")
|
||||
}
|
||||
)
|
||||
options.push(
|
||||
{
|
||||
name: "Ajouer +1d6 (1 point de Bonne Aventure)",
|
||||
icon: "<i class='fas fa-user-plus'></i>",
|
||||
condition: canApply && canApplyBAChaotique,
|
||||
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+1d6")
|
||||
}
|
||||
)
|
||||
options.push(
|
||||
{
|
||||
name: "Relancer le dé (3 points de Bonne Aventure)",
|
||||
icon: "<i class='fas fa-user-plus'></i>",
|
||||
condition: canApply && canApplyBAChaotique3,
|
||||
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -3, "reroll")
|
||||
}
|
||||
)
|
||||
options.push(
|
||||
{
|
||||
name: "Ajouter +10 (1 Point d'Eclat)",
|
||||
icon: "<i class='fas fa-user-plus'></i>",
|
||||
condition: canApply && canApplyPELoyal,
|
||||
callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+10")
|
||||
}
|
||||
)
|
||||
options.push(
|
||||
{
|
||||
name: "Ajouter +1d20(1 Point d'Eclat)",
|
||||
icon: "<i class='fas fa-user-plus'></i>",
|
||||
condition: canApply && canApplyPEChaotique,
|
||||
callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+1d20")
|
||||
}
|
||||
)
|
||||
return options
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
42
packs/armes.db
Normal file
@@ -0,0 +1,42 @@
|
||||
{"name":"Fouet","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d4 + 1","deuxmains":false,"courte":3,"moyenne":0,"longue":0,"tr":0,"rarete":4,"prix":40},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Qb1h25U88mTM4h72"}},"_id":"0swiE8k5zfUIqmXu"}
|
||||
{"name":"Hache des mers","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.mGYFgteaWBDo10Xb"}},"_id":"2BSVJXr0FGZZJ9fh"}
|
||||
{"name":"Fléau d’armes","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D10+1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.PHQabMgfk1GNOjKo"}},"_id":"2qezkR1BdC0DcRIl"}
|
||||
{"name":"Arbalète","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"2d6","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":3,"rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.WYp8ojQN8HYJwUJc"}},"_id":"2zIdrBK88iuMbOF0"}
|
||||
{"name":"Cimeterre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":1,"degats":"1d10","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.RYxEg0gJfAlIZ4mw"}},"_id":"3Iv1oLpZcPEJVaI4"}
|
||||
{"name":"Fronde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D4","deuxmains":false,"courte":10,"moyenne":25,"longue":50,"tr":1,"rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TgVuNnytO9k2K0Xe"}},"_id":"4To8rLxv4efsoZK0"}
|
||||
{"name":"Pierre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D4","deuxmains":false,"courte":3,"moyenne":6,"longue":15,"tr":1,"rarete":0,"prix":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.3YS9IfQddECnoagK"}},"_id":"4yKlK8MeSj5Zk8lM"}
|
||||
{"name":"Grand marteau","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"2D6+2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.vjic4cPkJ0iMCIt5"}},"_id":"6e1JHoD1Jrz020R7"}
|
||||
{"name":"Arc de cavalerie","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d6","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":7,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5EWrgNQjJMx1t2v1"}},"_id":"88UuW1bdpFuCmkqb"}
|
||||
{"name":"Épée de maître","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d8+ 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.kX3MbDFu9uYZVNf2"}},"_id":"9Eo9mRbPPZHN98Cr"}
|
||||
{"name":"Lance ilmioréenne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>La lance ilmioréenne est un solide bâton de combat surmonté d’une pointe sur lequel est fi xé quasi perpendiculairement un fer de hache plat et étroit. Un contrepoids fi xé à l’autre extrémité sert à équilibrer l’arme qui peut être maniée à la fois comme une lance et comme une hache à deux mains, ce qui permet de maintenir ses ennemis à distance ou de leur porter des coups dévastateurs. Ces lances furent inventées à l’époque de la tribu d’Ilm, quand les lances et épées étaient déclarées illégales par les gouverneurs melnibonéens de la région. Certaines écoles militaires ilmioréennes enseignent toujours le Style Imar, qui mêle en une seule et même technique le combat à deux mains à la lance et le combat au bâton.</p>","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":2,"degats":"1d8 + 2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.8ApbiVgkx79OHVp2"}},"_id":"9xPd4ITtyk3nmMoN"}
|
||||
{"name":"Masse lourde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d10 + 1","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":80},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.DPfXgFj3gpjJ3nbR"}},"_id":"CeC5lAKs7NdPF05l"}
|
||||
{"name":"Gourdin","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1D6","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.CBIfq9eRd2RmoI4H"}},"_id":"CqP80SQFQOefpGgd"}
|
||||
{"name":"Rapière","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":3,"bonusmaniementdef":1,"degats":"1d8+ 1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.XIStcClTnmLoSwyR"}},"_id":"CupT9m8L909l4Fo5"}
|
||||
{"name":"Hachette / Hache de lancer","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d4 + 1","deuxmains":false,"courte":5,"moyenne":10,"longue":15,"tr":1,"rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5NHbRanxXA5vUE3B"}},"_id":"DzkeP7jbruqW4nQH"}
|
||||
{"name":"Lance légère","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d8","deuxmains":false,"courte":10,"moyenne":25,"longue":50,"tr":1,"rarete":5,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.LIVeq22E9EanRS9L"}},"_id":"FDeRBkxXwoZIuL9B"}
|
||||
{"name":"Arc de chasse","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 - 1","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TrYZ9BxYukS1mbBX"}},"_id":"Hrm08cpgAMMV6Jpq"}
|
||||
{"name":"Coup de pied / poing / tête","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d4","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.nBPKHsYIM0HgMcBy"}},"_id":"Iw3j4oC6H8HJ9MFQ"}
|
||||
{"name":"Lance lourde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"1d10","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Kcl07bs7TOcne37W"}},"_id":"KY22L6Lx5WxgvyGD"}
|
||||
{"name":"Arc du Désert des Larmes","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Cet arc composite fait de bois, d’andouillers de cerf et/ou d’os est un arc court et très recourbé utilisé par les barbares du Désert des Larmes pour la chasse. On peut également trouver ce type d’arcs à Pikarayd et au Dorel.</p>","typearme":"tir","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 1","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.QmYjdRCAk3MnxKJg"}},"_id":"MDpFpqmXpIX5VV80"}
|
||||
{"name":"Hache de bataille dite lormyrienne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Cette double hache parfaitement équilibrée et proportionnée est l’arme favorite des chevaliers lormyriens. Il s’agit de l’arme idéale pour trancher, découper les lances ennemies et fendre les crânes.</p>","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6 + 2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Lpa6kesbzgKVtogn"}},"_id":"MP49mYF7FVuW9ALB"}
|
||||
{"name":"Couteau / Dague","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contactjet","bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d4","deuxmains":false,"courte":3,"moyenne":6,"longue":15,"tr":1,"rarete":1,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5a9GKIvNgbbXBq3s"}},"_id":"N5BbO2lGwzQnpvH0"}
|
||||
{"name":"Pique filkharienne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Cette longue pique à grande lame de près de trois mètres de long est l’arme de prédilection des piquiers de l’armée de Filkhar. Très effi cace pour lutter contre des cavaliers ou des ennemis en train de charger, elle l’est beaucoup moins en combat rapproché.</p>","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d8 + 2","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dF9LxfA1crZBmT92"}},"_id":"QwrZbFeJUQv2OBqI"}
|
||||
{"name":"Masse légère","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.xrWRNZBrEzkUQzRG"}},"_id":"SzgkzHvzma8NiMd5"}
|
||||
{"name":"Sabre d’abordage","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d8","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.aNUqO9OZT0GBszvv"}},"_id":"U8CoqFhGuT3ZHeq1"}
|
||||
{"name":"Javelot","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"jet","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d6","deuxmains":false,"courte":25,"moyenne":50,"longue":75,"tr":1,"rarete":5,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Zwiz9E3TbeUP8qHH"}},"_id":"aELvOR7A9DIJKgBk"}
|
||||
{"name":"Fourche / Faux de paysan","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1D6","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":1,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.K5Ayim6mPKZoCSCc"}},"_id":"aJBVfqQ3JQNyVL7c"}
|
||||
{"name":"Arme improvisée","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d6","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.E7gcmnNQK2t5OQjv"}},"_id":"c6l49ZmEBjUxfI3W"}
|
||||
{"name":"Arc de guerre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"tir","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d10 + 1","deuxmains":false,"courte":30,"moyenne":50,"longue":100,"tr":1,"rarete":6,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Tq6lUFPTkBN5cBwn"}},"_id":"cKf5z3fajUnxJh0r"}
|
||||
{"name":"Main gauche","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":3,"degats":"1d4 + 1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.BBii0qi1unvSRNO4"}},"_id":"fLHX6ut131CQI630"}
|
||||
{"name":"Marteau de guerre","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":0,"degats":"1d8 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":6,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.6n2uSdYfRAsSqQnA"}},"_id":"freCCeiYGfWmUAQU"}
|
||||
{"name":"Sabre de Pan Tang","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Ce long sabre effi lé sert aux Cavaliers démoniaques de Pan Tang pour couper les têtes depuis le dos de leurs monstrueuses montures reptiliennes à six pattes.</p>","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d10 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.l3ffzso7GyHMKguD"}},"_id":"j5659PJlrHz56V1k"}
|
||||
{"name":"Hallebarde","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":0,"bonusmaniementdef":2,"degats":"2d6","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ZTdyIoMzE9kqm4e6"}},"_id":"lYtm5MwP96numskx"}
|
||||
{"name":"Lance melnibonéenne","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>La lance melnibonéenne, faite pour le combat à cheval ou à dos de dragon, ressemble à une lance ordinaire. Son fer est cependant plus fi n et plus étroit. Avant la chute d’Imrryr, il est quasi impossible de se procurer de telles armes sur les marchés des Jeunes Royaumes. Elles peuvent être maniées à une main comme lors des joutes à cheval ou à deux mains au cœur des mêlées.</p>","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"2d6+ 4","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":10,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.KAl5qXHeYDoYRU6G"}},"_id":"mQGT0vmDjoTZCW5u"}
|
||||
{"name":"Arc en os","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"<p>Arc composite recourbé fait de bois, d’os et d’acier, l’arc en os melnibonéen est une arme extraordinairement puissante entre les mains d’un guerrier melnibonéen ou d’un archer esclave du Glorieux Empire. On peut se le procurer dans les Jeunes Royaumes après la chute d’Imrryr.</p>","typearme":"tir","bonusmaniementoff":3,"bonusmaniementdef":0,"degats":"1d8 + 1","deuxmains":false,"courte":30,"moyenne":60,"longue":125,"tr":2,"rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Dy9dzVhXbNAVm3zn"}},"_id":"nzve5qucVN6FC5wn"}
|
||||
{"name":"Bâton ferré ou lesté","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":2,"degats":"1D8","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":0,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.zoBHSbvJPnjbtPh6"}},"_id":"sHj90bPcMaDlOw51"}
|
||||
{"name":"Épée courte / Glaive","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1D6+1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":4,"prix":40},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Mxv5gMHRvRrsuhPA"}},"_id":"sju2r73hUHyGbHYg"}
|
||||
{"name":"Faucheur","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d4 + 1","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.OlmzE29fh9DFd8TF"}},"_id":"t2uQcWe7kirUOp3D"}
|
||||
{"name":"Fléau lourd","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":1,"bonusmaniementdef":0,"degats":"1d10+ 3","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.vDDw0qqM1Kg7Pu6T"}},"_id":"uatjBTFCE5ZCqhAd"}
|
||||
{"name":"Hache","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"1d6 + 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":2,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.2MwgptY2kE4tgYBe"}},"_id":"v7ymzlEALvsk0poA"}
|
||||
{"name":"Épée large","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":1,"degats":"1d6+ 2","deuxmains":false,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":5,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.iuAizxCvnUxmsjrn"}},"_id":"wWk0Wfer06Ttmouv"}
|
||||
{"name":"Épée longue","type":"arme","img":"systems/fvtt-mournblade/assets/icons/arme.webp","data":{"description":"","typearme":"contact","bonusmaniementoff":2,"bonusmaniementdef":0,"degats":"2d6 + 1","deuxmains":true,"courte":0,"moyenne":0,"longue":0,"tr":0,"rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.yiYtZ0sCUpMihvzz"}},"_id":"wv5EiePmPTpqFutt"}
|
||||
55
packs/equipement.db
Normal file
@@ -0,0 +1,55 @@
|
||||
{"name":"Chapeau fatigué","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.D26fUtZxrzcTR07B"}},"_id":"1cZd2hlTV9tykDED"}
|
||||
{"name":"Bœuf","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.whAhz9pO1NUt8Pjm"}},"_id":"3pvWKiyXhc9mmg70"}
|
||||
{"name":"Manteau","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.FZztAyGbF2cL9wyc"}},"_id":"40P9lOUYI16gEGZS"}
|
||||
{"name":"Poney","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.VKZrNcrCm9Ju7ayv"}},"_id":"7MdI99vLmaytPNKE"}
|
||||
{"name":"Tenue complète d’homme fortuné","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(pantalons de coton, chemise de drap fi n, pourpoint de velours, chapeau, bottes montantes ou chaussures à boucles)</p>","rarete":7,"prix":6},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dw6wLsNmwmEW79ei"}},"_id":"82fzHPjxUkGMCVUX"}
|
||||
{"name":"Laboratoire d’Alchimiste","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Permet de mettre au point les objets les plus complexes (difficulté de 25 et au-delà)</p>","rarete":10,"prix":2000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.eq0FJtwQd2jHbdvv"}},"_id":"8GK1Hn6le3JlsT6T"}
|
||||
{"name":"Vieille carne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Modificateur de Monte -2</p>","rarete":2,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.iikcWs26aEjtXDKo"}},"_id":"8NPElVs0cYrGbmXO"}
|
||||
{"name":"Nuit d’auberge à l’étable","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.uo464pRDCNIPsUvW"}},"_id":"9dEaZklkBs1GgdD7"}
|
||||
{"name":"Coursier","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Modificateur de Monte +2</p>","rarete":7,"prix":120},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.t4PPYVE2B6B9tUy1"}},"_id":"AZDTSEUo52dnf37U"}
|
||||
{"name":"Papier, plume et encre","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":6,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.545S2qajtz6DSzzq"}},"_id":"Bg8jNqGusEdHxV00"}
|
||||
{"name":"Chariot couvert ou bâché","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.GRhCO7lW7NaHThqU"}},"_id":"FlK49ZIVnceUTy1P"}
|
||||
{"name":"Tenue complète bourgeoise","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p> (chausses, chemise, pourpoint, chapeau, bottes)</p>","rarete":6,"prix":30},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.XZSiLPhbhlj1Wil1"}},"_id":"HdlqqXJ393Pf3GxA"}
|
||||
{"name":"Nuit d’auberge dans une chambre particulière","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.xtlOL4VOsTDvyUvR"}},"_id":"LnKDtuhsacvcet7B"}
|
||||
{"name":"Louer une petite maison de ville pour un mois","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Se paie généralement d’avance…</p>","rarete":0,"prix":40},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Tfu7ywqXoXzXgP6H"}},"_id":"NZ28hyteLgOxlXC7"}
|
||||
{"name":"Repas de fête","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.gTCljExvFFpG7K1s"}},"_id":"OyRix5REF10GPbSp"}
|
||||
{"name":"Cheval d’attelage","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":4,"prix":80},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.KDfgGmQ4tUj765MN"}},"_id":"QHPoow1iDYEdExgs"}
|
||||
{"name":"Repas chaud","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ErKXhChAfgugKU1a"}},"_id":"QojR7XS4mGjbMq5w"}
|
||||
{"name":"Charrette","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":70},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.4HRLU67Ipd1PFqUV"}},"_id":"RXMBJNKXfy3S3yck"}
|
||||
{"name":"Onguent de soin","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>10 tours de jeu sont nécessaires pour l’appliquer. Permet de récupérer [[/roll 1D4]] points de Santé après (10 – Trempe) heures</p>","rarete":5,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.RdqMNJzemUcCYO1H"}},"_id":"RyNJqjQvDbMixok0"}
|
||||
{"name":"Barge","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":300},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.l7tiShWweGQ8fzDp"}},"_id":"TyeTRm4FxLeRNDTU"}
|
||||
{"name":"Pommade à frotter pour faire circuler le sang","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Protège des effets du froid (+ 5 aux tests de Trempe)</p>","rarete":4,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.BbzFc96y1QHi0Old"}},"_id":"VPkZxH3bkTR8WqXQ"}
|
||||
{"name":"Cape","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.HZkgEeG4apx4I4Tn"}},"_id":"WL0809BYVR9JxaMM"}
|
||||
{"name":"Poudre blanche","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(à inhaler pour se sentir en forme)</p>\n<p>S’inhale le temps d’une action (à inhaler pour se sentir en forme) simple. Permet de récupérer immédiatement [[/roll 1D4]] cases de Santé (dégâts non létaux). À chaque inhalation, lancez un [[/roll 1d20]]. Sur un 1 ou un 11, celui qui vient de priser la poudre s’eff ondre et reste inconscient durant (10 – Trempe) heures.</p>\n<p> </p>","rarete":7,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.axOu6tHgHC7kYnG3"}},"_id":"WntSrr0j00DLntZV"}
|
||||
{"name":"Lanterne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.OKydo5obAtmOVNup"}},"_id":"Wo0tplt93X9wemlV"}
|
||||
{"name":"Chien dressé","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5jFTzXfwTgkVvjv7"}},"_id":"Wus5fIYO731eLG0i"}
|
||||
{"name":"Pain de route (rations pour une semaine)","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.18Hb7BDncVyHgyeM"}},"_id":"X4nIqFrjWy0hCVbZ"}
|
||||
{"name":"Matériel de survie","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(sac, gourde, couverture, tente)</p>","rarete":2,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.wv6tWbuJjnZ7jiXH"}},"_id":"e8ZbG2WQCzJTRzBK"}
|
||||
{"name":"Herbes à infuser contre les fièvres légères","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.iL0fjlODZ4JnNpwN"}},"_id":"eH4V6AlAZNEuwlrw"}
|
||||
{"name":"Barque à rames, canoë","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":60},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.HKxNf2i5EEu5wAN5"}},"_id":"eXP5rck0IJK4Az8c"}
|
||||
{"name":"Petit atelier et son outillage","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Permet de fabriquer les objets les plus simples (jusqu’à une difficulté de 20)</p>","rarete":8,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TD0bN2tEIG8VqnbD"}},"_id":"fc2fReiW3mV6jekF"}
|
||||
{"name":"Antipoison","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Confère un bonus de + 5 au test de Soins pour arrêter les pertes de points de Santé. Note : tous les poisons n’ont pas d’antipoison connu.</p>","rarete":7,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.7NDLIEeS4WVyXDqo"}},"_id":"fkleifA7qbOzRZCy"}
|
||||
{"name":"Fonderie","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":10,"prix":10000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Y14CMXm2avlCnqPC"}},"_id":"frS3jj7bs0l9zMGi"}
|
||||
{"name":"Roulotte","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":5,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.X5GxbvOMqQ8aHh49"}},"_id":"g5rDtYzyQ4IxUWXu"}
|
||||
{"name":"Forge","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":4,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.cma6u26NRsZL1awt"}},"_id":"gJStREuVAaaBuwXR"}
|
||||
{"name":"Miroir et peigne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.IzlENy0Oxg82cke0"}},"_id":"hRlPFzsoUjbu3Noj"}
|
||||
{"name":"Tenue complète citadine","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(chausses et chemise de coton, chapeau, chaussures)</p>","rarete":3,"prix":7},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.1ldZnq4lDPHOeVba"}},"_id":"hTLeVLn5yUd2etoS"}
|
||||
{"name":"Nuit d’auberge dans la salle commune","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":3},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.D7HcsRBK8uH6NBi4"}},"_id":"hc4w2PBpYLMQKsXS"}
|
||||
{"name":"Matériel de cuisine","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.lJafSILU0LtNMONn"}},"_id":"i8BBr1WjfphuLTLI"}
|
||||
{"name":"Chapeau à la mode","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":6,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.lmlWH96vjfTMN2OO"}},"_id":"kkNZoJdG86Dqci2b"}
|
||||
{"name":"Herbes à mâcher les lendemains de beuverie","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.STMfa8tVupqJPllD"}},"_id":"muCWd5AKL21AbTg8"}
|
||||
{"name":"Tenue complète paysanne","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(chausses et chemise de jute, grand foulard, sandales)</p>","rarete":0,"prix":4},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.4WIrBhrpn4AlSnh3"}},"_id":"nJKLD6BqEHbBHmOY"}
|
||||
{"name":"Selle et fontes","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.J1HAwhIBjgkBZ3FH"}},"_id":"oIZv9KxLVQUOfi5d"}
|
||||
{"name":"Destrier","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":8,"prix":800},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.MF74kXfkiwLOwWNS"}},"_id":"oIob9qCttaQw7Aea"}
|
||||
{"name":"Vêtements rapiécés, nippes","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.rPYf2u8b3qizxxFk"}},"_id":"sLZgByw2rA2PvQms"}
|
||||
{"name":"Petit voilier","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":6,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.tuAI18GrGFkqVHpQ"}},"_id":"tAFXmBLUXcSUKZRL"}
|
||||
{"name":"Matériel hivernal","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(piolets, raquettes, manteau et graisses)</p>","rarete":4,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.LpdplcMj4j7dWnZU"}},"_id":"tRSk0np2smLpdixK"}
|
||||
{"name":"Herbes parfumées contre les mauvaises odeurs","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.y6G9LprDaOAoVn9v"}},"_id":"tXYzLGS6SFolD8k4"}
|
||||
{"name":"Barque de pêcheur avec voile","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":3,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.ZXEq8059S3YlFhN0"}},"_id":"vUFnyal2islmmpZF"}
|
||||
{"name":"Torche","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p> (lot de 3)</p>","rarete":1,"prix":5},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.aVBCMdM69vwfrSMW"}},"_id":"vahvt9QGYjnRlY4p"}
|
||||
{"name":"Verre de vin ou de bière","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":0,"prix":1},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5yA9UC3kExUx6CqN"}},"_id":"vmSrygoMxy6G87EO"}
|
||||
{"name":"Matériel d’escalade","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>(marteau, cordes, pitons)</p>","rarete":3,"prix":8},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TXj9b73MGGI6L9Av"}},"_id":"vtpjGFTYO7fiKXwE"}
|
||||
{"name":"Longue-vue","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":8,"prix":250},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.n1UQvGJ8Zq6dGuEY"}},"_id":"wHU6MvZuBMmN9xfG"}
|
||||
{"name":"Dose de poison violent","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Voir le chapitre « Le Combat et la santé » pour connaître les eff ets des principaux poisons</p>","rarete":6,"prix":3},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.EuGLW5D5SIP58uaa"}},"_id":"wQ8cgwazhlIF6WG7"}
|
||||
{"name":"Louer une grange pour un mois","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"<p>Se paie généralement d’avance...</p>","rarete":0,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.8utWpkdD1FvHSYfv"}},"_id":"xy356PaIZisHJdUR"}
|
||||
{"name":"Grande écharpe","type":"equipement","img":"systems/fvtt-mournblade/assets/icons/equipement.webp","data":{"description":"","rarete":2,"prix":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.j5Hei6F2XN5nrh7t"}},"_id":"y47dBO3Mf5Pn7tOd"}
|
||||
11
packs/protection.db
Normal file
@@ -0,0 +1,11 @@
|
||||
{"name":"Armure de plaques melnibonéenne","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Cette armure ornée et fi nement gravée est ajustée aux mensurations de celui qui la porte. On ne peut en trouver en dehors d’Imrryr avant sa chute. L’armure couvre tout le corps des pieds à la tête. Le casque est toujours surmonté d’une sculpture en forme de dragon ou de serpent de mer. Des motifs complexes et imbriqués recouvrent la surface de tous les éléments de l’armure. Après la chute d’Imrryr, quelques pièces d’armure melnibonéennes apparaissent de temps en temps sur les marchés mais les armures entières restent rarissimes. Si elle a été spécialement conçue pour son porteur, une armure de plaques melnibonéenne n’impose pas de pénalité d’encombrement à ce dernier.</p>","typeprotection":"armure","protection":6,"degats":"","rarete":10,"prix":1000},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.09OukepQ8Oep0642"}},"_id":"FFX0dFDZoVXFzyXk"}
|
||||
{"name":"Armure de plates, harnois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":5,"degats":"","rarete":10,"prix":500},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.7JErvrlTYaFbCvoR"}},"_id":"so7x8hK8qEc5QqnQ"}
|
||||
{"name":"Armure du Désert des Larmes","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Les barbares et les nomades du Désert des Larmes ont créé des armures de bois protégeant l’abdomen, la poitrine et les bras. Ces armures sont faites à partir du bois de l’arbre Fal, originaire de plateaux pluvieux situés au-delà du désert. Les barbares décorent souvent leurs armures de symboles tribaux et en protègent la surface avec de la laque. Conçue en bois, cette armure a la particularité de pouvoir flotter quoiqu’un séjour prolongé dans l’eau risque de la détériorer très rapidement. Elle n’en reste pas moins une protection très recherchée par ceux qui ont à s’aventurer sur les flots.</p>","typeprotection":"armure","protection":2,"degats":"","rarete":8,"prix":200},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.b1JGc5OlrIzlQbTO"}},"_id":"ZzzXZUn5PU1lnP0X"}
|
||||
{"name":"Bouclier d’infanterie","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":2,"degats":"1D6","rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.Xn1tVJgKinG0hc10"}},"_id":"I2X36O7hkpigZmJo"}
|
||||
{"name":"Broigne, cotte de maille","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":3,"degats":"","rarete":7,"prix":150},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.th6blCtgBmsWSYdY"}},"_id":"veoS6Gtzj6Dq087V"}
|
||||
{"name":"Cuir bouilli, cuir clouté","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":2,"degats":"","rarete":5,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.T9RAyLXDPSHlvoDR"}},"_id":"kis2lI7oEtdWzJbQ"}
|
||||
{"name":"Cuirasse, armure de demi-plaques","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":4,"degats":"","rarete":8,"prix":200},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.FvufSkzJOSftZhYt"}},"_id":"2hD1DQVeCIQIXFU7"}
|
||||
{"name":"Écu d’acier","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":3,"degats":"1D8","rarete":9,"prix":100},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.TAA8qb6POO0HyhU5"}},"_id":"zqKOtmrDNrDYBu2z"}
|
||||
{"name":"Pavois","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"<p>Le pavois se plante dans le sol au début du combat et ne peut normalement plus être déplacé jusqu’à son issue.</p>","typeprotection":"armure","protection":3,"degats":"","rarete":7,"prix":50},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.y1kNQJYRCEol83IA"}},"_id":"2uqB1doLYK4S2EN2"}
|
||||
{"name":"Targe","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":1,"degats":"1D4","rarete":4,"prix":20},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.dyTeMFfvg5mAKT2n"}},"_id":"WH1m35jgm7ilTTuG"}
|
||||
{"name":"Tenues rembourrées, cuir souple, fourrures","type":"protection","img":"systems/fvtt-mournblade/assets/icons/protection.webp","data":{"description":"","typeprotection":"armure","protection":1,"degats":"","rarete":2,"prix":10},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"RiMAsQHaUMojde7N":3},"flags":{"core":{"sourceId":"Item.5dV4DORRrNdAd2Z5"}},"_id":"SqyKvR1GJMJvgHCJ"}
|
||||
0
packs/protections.db
Normal file
15
packs/skills.db
Normal file
@@ -0,0 +1,15 @@
|
||||
{"name":"Coercition","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 138\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la capacité de forcer quelqu’un à agir contre son gré, à révéler des secrets ou à obéir aveuglément. Plus cette compétence est élevée, plus le personnage sait se montrer intimidant et jouer sur l’autorité qu’il inspire pour briser la volonté de ses interlocuteurs.</span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"pre","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.TKynUVrQwS2bDMUx"}},"_id":"0LlzDyCurJedqeyG"}
|
||||
{"name":"Soins","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 142\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente le savoir médical pratique, l’habileté à arrêter une hémorragie et la connaissance des remèdes communs. Plus cette compétence est élevée, plus le personnage est apte à diagnostiquer et traiter les blessures, maladies et empoisonnements. Entre les créatures féroces qui infestent les terres sauvages, les maladies étranges et l’austérité de la vie dans certains des Jeunes Royaumes, il va sans dire que cette compé- tence précieuse pour les aventuriers est partout appréciée. Toutefois, les connaissances dans ce domaine sont assez primitives.<br /></span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"cla","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.WQPsPvY4jPBc9Z8A"}},"_id":"7JsIAew6eBKNzgIg"}
|
||||
{"name":"Nage","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 141\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la vitesse (Adresse), mais aussi l’endurance du nageur (Puissance)</span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"pui","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.D9YEUSVKMNKflI2W"}},"_id":"HC53TDbPonxJODLx"}
|
||||
{"name":"Monte","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 139\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente l’aptitude à éduquer, soi- gner, calmer ou maîtriser les bêtes de monte et d’attelage. Elle indique aussi la plus ou moins grande aptitude du cavalier. Plus cette compétence est élevée, plus le personnage est à l’aise à cheval. Enfin, cette compétence sert également dans les cas, peu fréquents, d’interaction avec des créatures ailées. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"cla","attribut2":"tre","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.lnjxMbn6z6dd9flw"}},"_id":"OfF1zThKE48v9luh"}
|
||||
{"name":"Perception","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 141\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente à la fois la conscience de son environnement, la capacité à remarquer les détails incongrus et l’aptitude à lire le langage corporel. Plus cette compétence est élevée, plus les sens du personnage sont affûtés. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"cla","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.9YOOuPyW3FODejth"}},"_id":"PVCmDH5V2HbPwzEr"}
|
||||
{"name":"Discrétion","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 138\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la capacité à ne pas se faire remarquer, qu’il s’agisse de se fondre dans la foule, de se faire passer pour quelqu’un d’autre, de se cacher dans l’ombre ou encore de se déplacer en silence. Plus cette compétence est élevée, plus le personnage est apte à passer inaperçu. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"tre","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.GkZ2UA9TXUw7zpO5"}},"_id":"Pgpk3zkcd429FQBY"}
|
||||
{"name":"Navigation","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 141\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la capacité à diriger un navire et à commander son équipage, mais aussi à garder le cap et à manœuvrer dans le cadre d’une bataille navale. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"cla","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.puj0NKiXVOFnLxbx"}},"_id":"PuTn3oXXU78pdwzq"}
|
||||
{"name":"Armes à distance","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 138\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">Représente l’habileté au lancer ou avec une arme à distance. Plus cette compétence est élevée, plus les tirs du personnage sont précis.<br /></span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.L7dsgeFMi5kZ8R7s"}},"_id":"RmbD9JBQGAAtw693"}
|
||||
{"name":"Savoir","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 141\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">Savoir est une compétence un peu particulière. En effet, comme elle représente la maîtrise d’une connaissance théorique ou d’un savoir-faire donnés, il existe autant de compétences Savoir différentes que de domaines de connaissance. Cela peut aussi bien être un domaine artistique (peinture, sculpture, danse, musique, etc.) qu’une science (logique, astronomie, etc.), un artisanat, une connaissance académique (histoire et mythes, cultes, etc.) ou encore un dialecte. Chacun de ces domaines de connaissance correspond à une unique compétence, notée « Savoir : Domaine de connaissance ».<br />En outre, si la plupart des compétences de savoir sont utilisées avec l’attribut Clairvoyance, d’autres s’emploient avec des attributs différents. D’une manière générale, l’Adresse est utilisée lorsqu’il s’agit d’exécuter une œuvre, de réparer ou fabriquer un objet, ou de construire une invention. Présence est employée dans de rares cas, pour déclamer un poème ou jouer une pièce de théâtre par exemple. Dans les autres cas, c’est la Clairvoyance qui est utilisée </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"cla","attribut3":"pre","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.2yfKdSUpBKsofLBq"}},"_id":"UP53jBXQ6FcEXezE"}
|
||||
{"name":"Survie","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 142\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la capacité à trouver de quoi subsister dans la nature, à établir un campement, à faire du feu avec les moyens du bord, à se repérer. Avec Clairvoyance, cette compétence permet de trouver des baies comestibles, de poser tous les types de pièges, de pister, de trouver le meilleur emplacement pour un campement. Avec Adresse, elle permet de chasser, de pêcher, de faire du feu et de confectionner des pièges. Les prédilections représentent quant à elles les différents milieux ou climats.<br /></span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"cla","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.RsvKX3YzelWCmfeO"}},"_id":"dZcltsDZ9sN5HXdn"}
|
||||
{"name":"Mouvements","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 139\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">indique la capacité du personnage à se déplacer rapidement et longtemps. Cette compétence représente aussi bien la souplesse et la vivacité des gestes que l’endurance physique et la résistance à l’effort. Plus cette compétence est élevée, plus le personnage est en forme et peut courir, grimper ou sauter longtemps et rapidement sans se fatiguer. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"pui","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.oCKVEn9FtDQma5hc"}},"_id":"fXGEKvJZwcizK4Jc"}
|
||||
{"name":"Filouterie","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 139\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">regroupe les activités illégales telles que le vol à la tire ou le cambriolage. Cette compétence représente également la capacité à assommer efficacement un garde ou à détourner l’attention. Plus elle est élevée, plus le personnage est rapide et discret dans ces activités.<br /></span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"adr","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.EQxK7oGydocgndVF"}},"_id":"kC1104OJrxKPg4ae"}
|
||||
{"name":"Persuasion","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 141\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la capacité à gagner un interlocuteur à sa cause, que ce soit par un savant mélange de vérités et de mensonges, par la rhétorique ou encore par la force de son charisme. Plus cette compétence est élevée, plus il est difficile de remettre en cause les paroles du personnage. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"pre","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.5gZBcjmqKGJ0EmTb"}},"_id":"lCg85IeGOT5GACeT"}
|
||||
{"name":"Mêlée","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 139\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la maîtrise martiale et l’habi- leté au combat rapproché, avec ou sans arme. Plus cette compétence est élevée, plus le personnage est à même de passer la garde de ses adversaires en combat au corps à corps. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"pui","attribut2":"none","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.pa6EBQlHPizxvmY1"}},"_id":"rWAWk9HFKiXaHOWf"}
|
||||
{"name":"Commerce","type":"competence","img":"systems/fvtt-mournblade/assets/icons/competence.webp","data":{"description":"<div class=\"page\" title=\"Page 138\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p><span style=\"font-size: 11.000000pt; font-family: 'CentaurMT';\">représente la capacité à discuter les prix, à se procurer un article rare ou illégal, à évaluer la valeur d’un objet, mais aussi à connaître les routes de commerce, les péages, les seigneurs impliqués dans des négoces, des noms de trafiquants ou d’intendants, etc. Plus cette compétence est élevée, plus le personnage est susceptible de faire de bonnes affaires. </span></p>\n</div>\n</div>\n</div>\n</div>","niveau":0,"attribut1":"cla","attribut2":"pre","attribut3":"none","type":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"xLCohqWYqWL3nwTN":3},"flags":{"core":{"sourceId":"Item.NGskFce8PPFAGUyp"}},"_id":"tq6mEgXog7h4VyWk"}
|
||||
0
packs/weapons.db
Normal file
@@ -1,15 +1,23 @@
|
||||
/* ==================== (A) Fonts ==================== */
|
||||
/* ==================== (A) Fonts ==================== */
|
||||
@font-face {
|
||||
font-family: "Charlemagne";
|
||||
src: url('../assets/fonts/CharlemagneStd-Bold.otf') format("otf");
|
||||
}
|
||||
|
||||
:root {
|
||||
/* =================== 1. ACTOR SHEET FONT STYLES =========== */
|
||||
--window-header-font-family: Charlemagne;
|
||||
--window-header-title-font-size: 1.3rem;
|
||||
--window-header-title-font-weight: normal;
|
||||
--window-header-title-color: #f5f5f5;
|
||||
|
||||
--major-button-font-family: Charlemagne;
|
||||
--major-button-font-size: 1.05rem;
|
||||
--major-button-font-weight: normal;
|
||||
--major-button-color: #dadada;
|
||||
|
||||
--tab-header-font-family: Charlemagne;
|
||||
--tab-header-font-size: 1.0rem;
|
||||
--tab-header-font-weight: 700;
|
||||
--tab-header-color: #403f3e;
|
||||
@@ -43,9 +51,11 @@
|
||||
|
||||
/* Fonts */
|
||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
|
||||
font-family: "Charlemagne";
|
||||
font-size: 1.0rem;
|
||||
} /* For title, sidebar character and scene */
|
||||
.sheet nav.sheet-tabs {
|
||||
font-family: "Charlemagne";
|
||||
font-size: 0.8rem;
|
||||
} /* For nav and title */
|
||||
.window-app input, .foundryvtt-vadentis .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
||||
@@ -264,12 +274,16 @@ table {border: 1px solid #7a7971;}
|
||||
padding: 0px;
|
||||
margin: 5px 0;
|
||||
border-bottom: 0;
|
||||
font-weight: bold;
|
||||
font-family: "Charlemagne";
|
||||
}
|
||||
|
||||
.fvtt-mournblade .sheet-header h1.charname input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
font-weight: bold;
|
||||
font-family: "Charlemagne";
|
||||
}
|
||||
|
||||
.fvtt-mournblade .sheet-tabs {
|
||||
@@ -1181,6 +1195,52 @@ ul, li {
|
||||
border: 2px ridge #846109;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
.competence-name {
|
||||
padding-top: 7px;
|
||||
padding-left: 4px;
|
||||
margin-left: 4px;
|
||||
flex-grow: 2;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
.competence-niveau {
|
||||
flex-grow: 1;
|
||||
min-width: 64px;
|
||||
max-width: 64px;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
.button-roll-competence {
|
||||
min-width: 64px;
|
||||
max-width: 64px;
|
||||
background-color: rgba(211, 221, 187, 100);
|
||||
padding-top: 7px;
|
||||
padding-left: 4px;
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
.button-roll-competence-empty {
|
||||
min-width: 64px;
|
||||
max-width: 64px;
|
||||
padding-top: 7px;
|
||||
padding-left: 4px;
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
.item-name-img {
|
||||
flex-grow:1;
|
||||
max-width: 2rem;
|
||||
min-width: 2rem;
|
||||
max-height: 2rem;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
#pause
|
||||
{
|
||||
|
||||
14
system.json
@@ -17,7 +17,7 @@
|
||||
"library": false,
|
||||
"license": "LICENSE.txt",
|
||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-mournblade/raw/branch/main/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-mournblade/archive/fvtt-mournblade-0.0.4.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-mournblade/archive/fvtt-mournblade-0.0.11.zip",
|
||||
"manifestPlusVersion": "1.0.0",
|
||||
"media": [],
|
||||
"minimumCoreVersion": "0.8.0",
|
||||
@@ -36,8 +36,8 @@
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Armes",
|
||||
"name": "weapons",
|
||||
"path": "./packs/weapons.db",
|
||||
"name": "armes",
|
||||
"path": "./packs/armes.db",
|
||||
"system": "fvtt-mournblade",
|
||||
"tags": [
|
||||
"arme"
|
||||
@@ -56,8 +56,8 @@
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Equipement",
|
||||
"name": "equipment",
|
||||
"path": "./packs/equipment.db",
|
||||
"name": "equipement",
|
||||
"path": "./packs/equipement.db",
|
||||
"system": "fvtt-mournblade",
|
||||
"tags": [
|
||||
"equipement"
|
||||
@@ -70,9 +70,9 @@
|
||||
"styles": [
|
||||
"styles/simple.css"
|
||||
],
|
||||
"templateVersion": 3,
|
||||
"templateVersion": 9,
|
||||
"title": "Mournblade",
|
||||
"url": "",
|
||||
"version": "0.0.4",
|
||||
"version": "0.0.11",
|
||||
"background": "./images/ui/mournblade_welcome.webp"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"Actor": {
|
||||
"types": ["character", "npc"],
|
||||
"types": ["personnage", "pnj"],
|
||||
"templates": {
|
||||
"biodata": {
|
||||
"biodata": {
|
||||
@@ -22,26 +22,31 @@
|
||||
"attributs": {
|
||||
"adr":{
|
||||
"label": "Adresse",
|
||||
"labelnorm": "adresse",
|
||||
"abbrev": "adr",
|
||||
"value": 1
|
||||
},
|
||||
"pui":{
|
||||
"label": "Puissance",
|
||||
"labelnorm": "puissance",
|
||||
"abbrev": "pui",
|
||||
"value": 1
|
||||
},
|
||||
"cla":{
|
||||
"label": "Clairvoyance",
|
||||
"labelnorm": "clairvoyance",
|
||||
"abbrev": "cla",
|
||||
"value": 1
|
||||
},
|
||||
"pre":{
|
||||
"label": "Présence",
|
||||
"labelnorm": "presence",
|
||||
"abbrev": "pre",
|
||||
"value": 0
|
||||
},
|
||||
"tre":{
|
||||
"label": "Trempe",
|
||||
"labelnorm": "trempe",
|
||||
"abbrev": "tre",
|
||||
"value": 0
|
||||
}
|
||||
@@ -87,10 +92,10 @@
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"character": {
|
||||
"personnage": {
|
||||
"templates": [ "biodata", "core" ]
|
||||
},
|
||||
"npc": {
|
||||
"pnj": {
|
||||
"templates": [ "npccore" ]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4,23 +4,57 @@
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields">
|
||||
<div class="flexrow">
|
||||
<div>
|
||||
<h1 class="charname margin-right"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="principal">Principal</a>
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="combat">Combat</a>
|
||||
<a class="item" data-tab="traits">Traits/Pactes</a>
|
||||
<a class="item" data-tab="equipement">Equipement</a>
|
||||
<a class="item" data-tab="biodata">Bio&Notes</a>
|
||||
</nav>
|
||||
</div>
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
<div class="flexrow">
|
||||
<span class="flexrow">
|
||||
<h4 class="item-name-label competence-name">{{upperFirst alignement}}</h4>
|
||||
<label class="item-name-label competence-name">Loi</label>
|
||||
<select class="status-small-label color-class-common" type="text" name="data.balance.loi"
|
||||
value="{{data.balance.loi}}" data-dtype="Number">
|
||||
{{#select data.balance.loi}}
|
||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<label class="item-name-label competence-name">Chaos</label>
|
||||
<select class="status-small-label color-class-common" type="text" name="data.balance.chaos"
|
||||
value="{{data.balance.chaos}}" data-dtype="Number">
|
||||
{{#select data.balance.chaos}}
|
||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</span>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<h4 class="item-name-label competence-name">Bonne Aventure</h4>
|
||||
<label class="item-name-label competence-name">Base</label>
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.bonneaventure.base" value="{{data.bonneaventure.base}}" data-dtype="Number" />
|
||||
<label class="item-name-label competence-name">Actuelle</label>
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.bonneaventure.actuelle" value="{{data.bonneaventure.actuelle}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<h4 class="item-name-label competence-name">Eclat</h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.eclat.value" value="{{data.eclat.value}}" data-dtype="Number" />
|
||||
|
||||
<h4 class="item-name-label competence-name">Expérience</h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.experience.value" value="{{data.experience.value}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="principal">Attributs</a>
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="combat">Combat</a>
|
||||
<a class="item" data-tab="traits">Traits/Pactes</a>
|
||||
<a class="item" data-tab="equipement">Equipement</a>
|
||||
<a class="item" data-tab="biodata">Bio&Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
@@ -31,42 +65,21 @@
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.attributs as |attr key|}}
|
||||
<li class="item flexrow " data-item-id="{{equip._id}}">
|
||||
<span class="item-name-label">{{attr.label}}</span>
|
||||
<span class="item-field-label-short">{{attr.value}}</span>
|
||||
{{#each data.attributs as |attr key|}}
|
||||
<li class="item flexrow " data-attr-key="{{key}}">
|
||||
<img class="item-name-img" src="systems/fvtt-mournblade/assets/icons/{{attr.labelnorm}}.webp">
|
||||
<span class="item-name-label competence-name"><a class="roll-attribut">{{attr.label}}</a></span>
|
||||
<select class="status-small-label color-class-common" type="text" name="data.attributs.{{key}}.value"
|
||||
value="{{attr.value}}" data-dtype="Number">
|
||||
{{#select attr.value}}
|
||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-ame color-text-ame">
|
||||
<span class="flexrow">
|
||||
<h4 class="ame-margin title-font">Bonne Aventure</h4>
|
||||
</span>
|
||||
<span class="flexrow">
|
||||
<label>Base</label><label>{{data.bonneaventure.base}}</label>
|
||||
<label>Actuelle</label><label>{{data.bonneaventure.actuelle}}</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-ame color-text-ame">
|
||||
<span class="flexrow">
|
||||
<h4 class="ame-margin title-font">Eclat</h4>
|
||||
</span>
|
||||
<span class="flexrow">
|
||||
<label>Valeur</label><label>{{data.eclat.value}}</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-ame color-text-ame">
|
||||
<span class="flexrow">
|
||||
<h4 class="ame-margin title-font">Expérience</h4>
|
||||
</span>
|
||||
<span class="flexrow">
|
||||
<label>Valeur</label><label>{{data.experience.value}}</label>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -81,17 +94,39 @@
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Equipement</label></h3>
|
||||
<h3><label class="items-title-text">Compétences</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Intensité</label>
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each equipements as |equip key|}}
|
||||
<li class="item flexrow " data-item-id="{{equip._id}}">
|
||||
<img class="item-name-img" src="{{equip.img}}" />
|
||||
<span class="item-name-label">{{equip.name}}</span>
|
||||
<span class="item-field-label-short">{{equip.data.value}}</span>
|
||||
{{#each skills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<img class="item-name-img" src="{{skill.img}}" />
|
||||
<span class="item-name-label competence-name"><a class="roll-competence" data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
<select class="status-small-label color-class-common edit-item-data competence-niveau" type="text" data-item-field="niveau"
|
||||
value="{{skill.data.niveau}}" data-dtype="Number">
|
||||
{{#select skill.data.niveau}}
|
||||
{{> systems/fvtt-mournblade/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
|
||||
{{#if (ne skill.data.attribut1 "none")}}
|
||||
<span class="item-field-label-short button-roll-competence"><a class="roll-competence" data-attr-key="{{skill.data.attribut1}}">{{upper skill.data.attribut1}} : {{skill.data.attribut1total}}</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short button-roll-competence-empty" > </span>
|
||||
{{/if}}
|
||||
{{#if (ne skill.data.attribut2 "none")}}
|
||||
<span class="item-field-label-short button-roll-competence"><a class="roll-competence" data-attr-key="{{skill.data.attribut2}}">{{upper skill.data.attribut2}} : {{skill.data.attribut2total}}</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short button-roll-competence-empty"> </span>
|
||||
{{/if}}
|
||||
{{#if (ne skill.data.attribut3 "none")}}
|
||||
<span class="item-field-label-short button-roll-competence"><a class="roll-competence" data-attr-key="{{skill.data.attribut3}}">{{upper skill.data.attribut3}} : {{skill.data.attribut3total}}</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short button-roll-competence-empty"> </span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
@@ -103,93 +138,6 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Capacités</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Aide</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Ressource</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
<li class="item flexrow " data-item-id="{{capa._id}}">
|
||||
<img class="item-name-img" src="{{capa.img}}" /></a>
|
||||
<span class="item-name-label">{{capa.name}}</span>
|
||||
<span class="item-field-label-short"">{{capa.data.aide}}</span>
|
||||
<span class=" item-field-label-short"">{{capa.data.ressource}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Singularités</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Intensité</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each singularites as |singul key|}}
|
||||
<li class="item flexrow " data-item-id="{{singul._id}}">
|
||||
<img class="item-name-img" src="{{singul.img}}" />
|
||||
<span class="item-name-label">{{singul.name}}</span>
|
||||
<span class="item-field-label-short">{{singul.data.value}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Contacts/Finances</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Intensité</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each contacts as |contact key|}}
|
||||
<li class="item flexrow " data-item-id="{{contact._id}}">
|
||||
<img class="item-name-img" src="{{contact.img}}" />
|
||||
<span class="item-name-label">{{contact.name}}</span>
|
||||
<span class="item-field-label-short">{{contact.data.value}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -199,20 +147,18 @@
|
||||
<div class="grid grid-3col">
|
||||
<div>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Imperium</label>
|
||||
<input type="text" class="" name="data.biodata.imperium" value="{{data.biodata.imperium}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">ADM ID</label>
|
||||
<input type="text" class="" name="data.biodata.admid" value="{{data.biodata.admid}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Age</label>
|
||||
<input type="text" class="" name="data.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille</label>
|
||||
<input type="text" class="" name="data.biodata.size" value="{{data.biodata.size}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Cheveux</label>
|
||||
<input type="text" class="" name="data.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
@@ -226,10 +172,6 @@
|
||||
<label class="generic-label">Sexe</label>
|
||||
<input type="text" class="" name="data.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille</label>
|
||||
<input type="text" class="" name="data.biodata.size" value="{{data.biodata.size}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
@@ -242,76 +184,10 @@
|
||||
<input type="text" class="" name="data.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Cheveux</label>
|
||||
<input type="text" class="" name="data.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
|
||||
</li>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div>
|
||||
<h3>Apparence actuelle : </h3>
|
||||
<div class="form-group small-editor">
|
||||
{{editor content=data.biodata.appactual target="data.biodata.appactual" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Autres identités : </h3>
|
||||
<div class="form-group small-editor">
|
||||
{{editor content=data.biodata.identities target="data.biodata.identities" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div>
|
||||
<h3>Traits particuliers : </h3>
|
||||
<div class="form-group small-editor">
|
||||
{{editor content=data.biodata.traits target="data.biodata.traits" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Souvenirs quantiques : </h3>
|
||||
<div class="form-group small-editor">
|
||||
{{editor content=data.biodata.memories target="data.biodata.memories" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div>
|
||||
<h3>Rebuild : </h3>
|
||||
<div class="form-group small-editor">
|
||||
{{editor content=data.biodata.rebuild target="data.biodata.rebuild" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Relations, contacts et acolytes : </h3>
|
||||
<div class="form-group small-editor">
|
||||
{{editor content=data.biodata.contacts target="data.biodata.contacts" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Qui suis-je : </h3>
|
||||
<div class="form-group editor">
|
||||
{{editor content=data.biodata.whoami target="data.biodata.whoami" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
<hr>
|
||||
<h3>Notes : </h3>
|
||||
<div class="form-group editor">
|
||||
{{editor content=data.biodata.notes target="data.biodata.notes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
<hr>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
@@ -5,50 +5,52 @@
|
||||
<h4 class=chat-actor-name>{{alias}}</h4>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if img}}
|
||||
<div >
|
||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
<hr>
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
{{#if img}}
|
||||
<div>
|
||||
<img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
{{#if power}}
|
||||
<li>Power : {{power.name}}</li>
|
||||
{{/if}}
|
||||
{{#if isDamage}}
|
||||
<li>Weapon Damage Dice : {{weapon.data.damageDice}}</li>
|
||||
{{/if}}
|
||||
{{#if isResistance}}
|
||||
<li>Armor Resistance Dice : {{armor.data.resistanceDice}}</li>
|
||||
{{/if}}
|
||||
{{#if stat}}
|
||||
<li>Statistic : {{stat.label}}</li>
|
||||
{{/if}}
|
||||
{{#if spec}}
|
||||
<li>Specialisation : {{spec.name}}</li>
|
||||
{{/if}}
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
{{#if weaponName}}
|
||||
<li>Weapon : {{weaponName}}</li>
|
||||
{{/if}}
|
||||
<div>
|
||||
<ul>
|
||||
<li class="mournblade-roll">Attribut : {{attr.label}}</li>
|
||||
|
||||
{{#if isResistance}}
|
||||
<li><strong>Defense Result : {{finalScore}}</strong>
|
||||
{{else}}
|
||||
{{#if isDamage}}
|
||||
<li><strong>Damages : {{finalScore}}</strong>
|
||||
{{else}}
|
||||
<li><strong>Final Result : {{finalScore}}</strong>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
{{#if competence}}
|
||||
<li>Compétence : {{competence.name}}</li>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
{{#if bonusRoll}}
|
||||
<li>{{textBonus}} : {{bonusRoll.total}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if weaponName}}
|
||||
<li>Weapon : {{weaponName}}</li>
|
||||
{{/if}}
|
||||
|
||||
<li>Formule : {{diceFormula}}</li>
|
||||
<li>Total : {{finalResult}}</li>
|
||||
|
||||
{{#if difficulte}}
|
||||
{{#if isSuccess}}
|
||||
<li>Succés!!!</li>
|
||||
{{else}}
|
||||
<li>Echec ...</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isHeroique}}
|
||||
<li>Succés Héroïque!!!</li>
|
||||
{{/if}}
|
||||
{{#if isDramatique}}
|
||||
<li>Echec Dramatique!!!</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -12,8 +12,8 @@
|
||||
<div class="flexcol">
|
||||
<span class="flexrow">
|
||||
<label class="generic-label">Niveau : </label>
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.type" value="{{data.type}}"
|
||||
data-dtype="String" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.niveau" value="{{data.niveau}}"
|
||||
data-dtype="Number" />
|
||||
</span>
|
||||
<span class="flexrow">
|
||||
<label class="generic-label">Attribut 1 : </label>
|
||||
|
||||
@@ -26,7 +26,9 @@
|
||||
</span>
|
||||
<span class="flexrow">
|
||||
<label class="generic-label">Sacrifice : </label>
|
||||
<input type="text" class="padd-right status-small-label color-class-common" name="data.sacrifice" value="{{data.sacrifice}}" data-dtype="String" />
|
||||
<div class="small-editor item-text-long-line">
|
||||
{{editor content=data.sacrifice target="data.sacrifice" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</span>
|
||||
|
||||
{{> systems/fvtt-mournblade/templates/partial-item-description.html}}
|
||||
|
||||
11
templates/partial-list-niveau.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<option value="0">0</option>
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5</option>
|
||||
<option value="6">6</option>
|
||||
<option value="7">7</option>
|
||||
<option value="8">8</option>
|
||||
<option value="9">9</option>
|
||||
<option value="10">10</option>
|
||||
@@ -3,86 +3,68 @@
|
||||
{{#if img}}
|
||||
<img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
{{/if}}
|
||||
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1>
|
||||
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1>
|
||||
</header>
|
||||
|
||||
<div class="grid grid-2col">
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label" >Stat Dice : </span>
|
||||
<select class="roll-dialog-label" id="statDicesLevel" type="text" name="statDicesLevel" value="{{statDicesLevel}}" data-dtype="Number"
|
||||
{{#if statKey}}disabled{{/if}}>
|
||||
{{#select statDicesLevel}}
|
||||
{{{optionsDiceList}}}
|
||||
<div class="flexrow">
|
||||
{{#if (eq attrKey "tochoose")}}
|
||||
<span class="roll-dialog-label">Attribut</span>
|
||||
<select class="status-small-label color-class-common" id ="attrKey" type="text" name="attrKey" value="attrKey" data-dtype="string" >
|
||||
{{#select attrKey}}
|
||||
{{#each attributs as |attrLabel attrKey|}}
|
||||
<option value="{{attrKey}}">{{attrLabel}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<span class="small-label"> + {{statMod}}</span>
|
||||
</div>
|
||||
|
||||
{{#if specList}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label" >Spec : </span>
|
||||
<select class="roll-dialog-label" id="specList" type="text" name="selectedSpec" value="{{selectedSpec}}" data-dtype="String">
|
||||
{{#select selectedSpec}}
|
||||
<option value="0">None</option>
|
||||
{{#each specList as |spec idx|}}
|
||||
<option value="{{spec._id}}">{{spec.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<span class="small-label"> </span>
|
||||
</div>
|
||||
</select>
|
||||
{{else}}
|
||||
<span class="roll-dialog-label">{{attr.label}}</span>
|
||||
<span class="small-label">{{attr.value}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label" >Spec Dice : </span>
|
||||
<select class="roll-dialog-label" id="specDicesLevel" type="text" name="specDicesLevel" value="{{specDicesLevel}}" data-dtype="Number"
|
||||
{{#if specList}}disabled{{/if}}>
|
||||
{{#select specDicesLevel}}
|
||||
{{{optionsDiceList}}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<span class="small-label"> </span>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label" >Bonus Dice : </span>
|
||||
<select class="roll-dialog-label" id="bonusDicesLevel" type="text" name="bonusDicesLevel" value="{{bonusDicesLevel}}" data-dtype="Number">
|
||||
{{#select bonusDicesLevel}}
|
||||
{{{optionsDiceList}}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<span class="small-label"> </span>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label" >Hindrance Dice :</span>
|
||||
<select class="roll-dialog-label" id="hindranceDicesLevel" type="text" name="hindranceDicesLevel" value="{{hindranceDicesLevel}}" data-dtype="Number">
|
||||
{{#select hindranceDicesLevel}}
|
||||
{{{optionsDiceList}}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<span class="small-label"> </span>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label" >Other Dice :</span>
|
||||
<select class="roll-dialog-label" id="otherDicesLevel" type="text" name="otherDicesLevel" value="{{otherDicesLevel}}" data-dtype="Number">
|
||||
{{#select otherDicesLevel}}
|
||||
{{{optionsDiceList}}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<span class="small-label"> </span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{> systems/fvtt-pegasus-rpg/templates/partial-roll-select-effects.html}}
|
||||
{{#if competence}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">{{competence.name}}</span>
|
||||
<span class="small-label">{{competence.data.niveau}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Modificateur : </span>
|
||||
<select class="roll-dialog-label" id="modificateur" type="text" name="modificateur" value="{{modificateur}}"
|
||||
data-dtype="Number">
|
||||
{{#select modificateur}}
|
||||
{{{modificateursOptions}}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Difficulté : </span>
|
||||
<select class="roll-dialog-label" id="difficulte" type="text" name="difficulte" value="{{difficulte}}"
|
||||
data-dtype="Number">
|
||||
{{#select difficulte}}
|
||||
<option value="0">Aucune/Inconnue</option>
|
||||
<option value="5">Facile (5)</option>
|
||||
<option value="10">Moyenne (10)</option>
|
||||
<option value="15">Ardue (15)</option>
|
||||
<option value="20">Hasardeuse (20)</option>
|
||||
<option value="25">Insensée (25)</option>
|
||||
<option value="30">Pure Folie (30)</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{#if canEclatDoubleD20}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Doubler le d20 (1 Point d'Eclat)</span>
|
||||
<input class="" id="doubleD20" type="checkbox" name="doubleD20" value="{{doubleD20}}" {{checked doubleD20}}/>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</form>
|
||||