First v10 release

This commit is contained in:
sladecraven 2022-10-19 17:30:47 +02:00
parent 46d666b779
commit 66e83ec8f0
25 changed files with 419 additions and 552 deletions

View File

@ -15,8 +15,8 @@ export class Imperium5ActorSheet extends ActorSheet {
return mergeObject(super.defaultOptions, {
classes: ["fvtt-imperium5", "sheet", "actor"],
template: "systems/fvtt-imperium5/templates/actor-sheet.html",
width: 800,
height: 720,
width: 720,
height: 760,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "combat" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: true
@ -25,19 +25,17 @@ export class Imperium5ActorSheet extends ActorSheet {
/* -------------------------------------------- */
async getData() {
const objectData = Imperium5Utility.data(this.object);
let actorData = duplicate(Imperium5Utility.templateData(this.object));
let actorData = duplicate(this.object.system)
let formData = {
title: this.title,
id: objectData.id,
type: objectData.type,
img: objectData.img,
name: objectData.name,
id: this.actor.id,
type: this.actor.type,
img: this.actor.img,
name: this.actor.name,
editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked",
data: actorData,
system: actorData,
archetype: this.actor.getArchetype(),
specialites: this.actor.getSpecialites(),
familiarites: this.actor.getFamiliarites(),
@ -75,7 +73,7 @@ export class Imperium5ActorSheet extends ActorSheet {
/* -------------------------------------------- */
async rollIDR( itemId, diceValue) {
let item = this.actor.data.items.get( itemId) ?? {name: "Unknown"}
let item = this.actor.items.get( itemId) ?? {name: "Unknown"}
let myRoll = new Roll(diceValue+"x").roll({ async: false })
await Imperium5Utility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
let chatData = {
@ -112,17 +110,6 @@ export class Imperium5ActorSheet extends ActorSheet {
Imperium5Utility.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 => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
@ -134,37 +121,6 @@ export class Imperium5ActorSheet extends ActorSheet {
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('.power-dmg-roll').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
this.actor.powerDmgRoll( itemId )
})
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");
@ -187,80 +143,16 @@ export class Imperium5ActorSheet extends ActorSheet {
this.actor.incDecQuantity( li.data("item-id"), +1 );
} );
html.find('.ammo-minus').click(event => {
const li = $(event.currentTarget).parents(".item")
this.actor.incDecAmmo( li.data("item-id"), -1 );
html.find('.roll-ame').click((event) => {
const ameKey = $(event.currentTarget).data("ame-key")
this.actor.rollAme(ameKey)
});
html.find('.ammo-plus').click(event => {
const li = $(event.currentTarget).parents(".item")
this.actor.incDecAmmo( li.data("item-id"), +1 )
} );
html.find('.momentum-minus').click(event => {
this.actor.modifyMomentum( -1 )
} )
html.find('.momentum-plus').click(event => {
this.actor.modifyMomentum( 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-idr').click((event) => {
const diceValue = $(event.currentTarget).data("dice-value")
const li = $(event.currentTarget).parents(".item")
this.rollIDR( li.data("item-id"), diceValue)
})
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");
this.actor.rollWeapon(weaponId);
});
html.find('.armor-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const armorId = li.data("item-id");
this.actor.rollArmor(armorId);
});
html.find('.weapon-damage-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
@ -268,12 +160,6 @@ export class Imperium5ActorSheet 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);
@ -288,29 +174,11 @@ export class Imperium5ActorSheet extends ActorSheet {
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);
});
}
@ -325,7 +193,7 @@ export class Imperium5ActorSheet extends ActorSheet {
}
/* -------------------------------------------- */
async _onDropItem(event, dragData) {
async _onDropItemUNUSED(event, dragData) {
console.log(">>>>>> DROPPED!!!!")
let item = await Imperium5Utility.searchItem( dragData)
if (item == undefined) {

View File

@ -28,7 +28,7 @@ export class Imperium5Actor extends Actor {
return super.create(data, options);
}
// If the created actor has items (only applicable to duplicated actors) bypass the new actor creation logic
if (data.items) {
if (items) {
let actor = super.create(data, options);
return actor;
}
@ -53,7 +53,7 @@ export class Imperium5Actor extends Actor {
prepareDerivedData() {
if (this.type == 'character') {
//this.data.data.encCapacity = this.getEncumbranceCapacity()
//this.system.encCapacity = this.getEncumbranceCapacity()
//this.buildContainerTree()
}
console.log("Acteur : ", this)
@ -68,49 +68,61 @@ export class Imperium5Actor extends Actor {
/* -------------------------------------------- */
getArchetype() {
let item = duplicate( this.data.items.find( it => it.type == "archetype") || [])
let item = duplicate( this.items.find( it => it.type == "archetype") || [])
return item
}
getSpecialites() {
let item = duplicate(this.data.items.filter( it => it.type == "specialite") || [] )
let item = duplicate(this.items.filter( it => it.type == "specialite") || [] )
return item
}
getFamiliarites() {
let item = duplicate(this.data.items.filter( it => it.type == "familiarite") || [] )
let item = duplicate(this.items.filter( it => it.type == "familiarite") || [] )
return item
}
getNatureProfonde() {
let item = duplicate( this.data.items.find( it => it.type == "nature") || [])
let item = duplicate( this.items.find( it => it.type == "nature") || [])
return item
}
getTraits() {
let item = duplicate(this.data.items.filter( it => it.type == "trait") || [] )
let item = duplicate(this.items.filter( it => it.type == "trait") || [] )
return item
}
getSymbioses() {
let item = duplicate(this.data.items.filter( it => it.type == "symbiose") || [] )
let item = duplicate(this.items.filter( it => it.type == "symbiose") || [] )
return item
}
getEquipements() {
let item = duplicate(this.data.items.filter( it => it.type == "equipement") || [] )
let item = duplicate(this.items.filter( it => it.type == "equipement") || [] )
return item
}
getCapacites() {
let item = duplicate(this.data.items.filter( it => it.type == "capacite") || [] )
let item = duplicate(this.items.filter( it => it.type == "capacite") || [] )
return item
}
getUnusedCapacites(){
let item = this.items.filter( it => it.type == "capacite") || []
return item
}
getSingularites(){
let item = duplicate(this.data.items.filter( it => it.type == "singularite") || [] )
let item = duplicate(this.items.filter( it => it.type == "singularite") || [] )
return item
}
getContacts(){
let item = duplicate(this.data.items.filter( it => it.type == "contact") || [] )
let item = duplicate(this.items.filter( it => it.type == "contact") || [] )
return item
}
/* -------------------------------------------- */
incDecKarma( value ) {
let karma = duplicate(this.system.karma)
karma.value += value
karma.value = Math.max(karma.value, 0)
this.update( { 'system.karma': karma})
}
/* -------------------------------------------- */
getItemById(id) {
let item = this.data.items.find(item => item.id == id)
let item = this.items.find(item => item.id == id)
if (item) {
item = duplicate(item)
}
@ -135,7 +147,7 @@ export class Imperium5Actor extends Actor {
}
/* -------------------------------------------- */
getEffectByLabel(label) {
return this.getActiveEffects().find(it => it.data.label == label);
return this.getActiveEffects().find(it => it.label == label);
}
/* -------------------------------------------- */
getEffectById(id) {
@ -154,21 +166,21 @@ export class Imperium5Actor extends Actor {
/* -------------------------------------------- */
getSubActors() {
let subActors = [];
for (let id of this.data.data.subactors) {
for (let id of this.system.subactors) {
subActors.push(duplicate(game.actors.get(id)))
}
return subActors;
}
/* -------------------------------------------- */
async addSubActor(subActorId) {
let subActors = duplicate(this.data.data.subactors);
let subActors = duplicate(this.system.subactors);
subActors.push(subActorId);
await this.update({ 'data.subactors': subActors });
}
/* -------------------------------------------- */
async delSubActor(subActorId) {
let newArray = [];
for (let id of this.data.data.subactors) {
for (let id of this.system.subactors) {
if (id != subActorId) {
newArray.push(id);
}
@ -176,25 +188,16 @@ export class Imperium5Actor extends Actor {
await this.update({ 'data.subactors': newArray });
}
/* -------------------------------------------- */
syncRoll(rollData) {
let linkedRollId = Imperium5Utility.getDefenseState(this.id);
if (linkedRollId) {
rollData.linkedRollId = linkedRollId;
}
this.lastRollId = rollData.rollId;
Imperium5Utility.saveRollData(rollData);
}
/* -------------------------------------------- */
async deleteAllItemsByType(itemType) {
let items = this.data.items.filter(item => item.type == itemType);
let items = this.items.filter(item => item.type == itemType);
await this.deleteEmbeddedDocuments('Item', items);
}
/* -------------------------------------------- */
async addItemWithoutDuplicate(newItem) {
let item = this.data.items.find(item => item.type == newItem.type && item.name.toLowerCase() == newItem.name.toLowerCase())
let item = this.items.find(item => item.type == newItem.type && item.name.toLowerCase() == newItem.name.toLowerCase())
if (!item) {
await this.createEmbeddedDocuments('Item', [newItem]);
}
@ -202,9 +205,9 @@ export class Imperium5Actor extends Actor {
/* -------------------------------------------- */
async incDecQuantity(objetId, incDec = 0) {
let objetQ = this.data.items.get(objetId)
let objetQ = this.items.get(objetId)
if (objetQ) {
let newQ = objetQ.data.data.quantity + incDec
let newQ = objetQ.system.quantity + incDec
if (newQ >= 0) {
const updated = await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'data.quantity': newQ }]) // pdates one EmbeddedEntity
}
@ -217,34 +220,43 @@ export class Imperium5Actor extends Actor {
/* -------------------------------------------- */
addEffects(rollData) {
let effects = this.data.items.filter(item => item.type == 'effect')
let effects = this.items.filter(item => item.type == 'effect')
for (let effect of effects) {
effect = duplicate(effect)
if (!effect.data.hindrance
&& (effect.data.stataffected != "notapplicable" || effect.data.specaffected.length > 0)
&& effect.data.stataffected != "special") {
if (effect.data.effectstatlevel) {
effect.data.effectlevel = this.data.data.statistics[effect.data.effectstat].value
if (!effect.system.hindrance
&& (effect.system.stataffected != "notapplicable" || effect.system.specaffected.length > 0)
&& effect.system.stataffected != "special") {
if (effect.system.effectstatlevel) {
effect.system.effectlevel = this.system.statistics[effect.system.effectstat].value
}
rollData.effectsList.push({ label: effect.name, type: "effect", applied: false, effect: effect, value: effect.data.effectlevel })
rollData.effectsList.push({ label: effect.name, type: "effect", applied: false, effect: effect, value: effect.system.effectlevel })
}
}
}
/* -------------------------------------------- */
getCommonRollData(statKey = undefined, useShield = false) {
rollAme( ameKey) {
let rollData = this.getCommonRollData()
rollData.ame = duplicate(this.system.ames[ameKey])
rollData.ameMalus = this.system.amestype[rollData.ame.type].malus
this.startRoll(rollData)
}
/* -------------------------------------------- */
getCommonRollData() {
let rollData = Imperium5Utility.getBasicRollData()
rollData.alias = this.name
rollData.actorImg = this.img
rollData.actorId = this.id
rollData.img = this.img
rollData.capacites = this.getUnusedCapacites()
rollData.karma = this.system.karma.value
return rollData
}
/* -------------------------------------------- */
async startRoll(rollData) {
this.syncRoll(rollData)
let rollDialog = await Imperium5RollDialog.create(this, rollData)
console.log(rollDialog)
rollDialog.render(true)

View File

@ -50,25 +50,24 @@ export class Imperium5ItemSheet extends ItemSheet {
/* -------------------------------------------- */
async getData() {
const objectData = Imperium5Utility.data(this.object);
const objectData = duplicate(this.object.system)
let itemData = foundry.utils.deepClone(Imperium5Utility.templateData(this.object));
let formData = {
title: this.title,
id: this.id,
type: objectData.type,
img: objectData.img,
name: objectData.name,
type: this.object.type,
img: this.object.img,
name: this.object.name,
editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked",
data: itemData,
system: objectData,
limited: this.object.limited,
options: this.options,
owner: this.document.isOwner,
isGM: game.user.isGM
}
this.options.editable = !(this.object.data.origin == "embeddedItem");
this.options.editable = !(this.object.system.origin == "embeddedItem");
console.log("ITEM DATA", formData, this);
return formData;
}
@ -87,7 +86,7 @@ export class Imperium5ItemSheet extends ItemSheet {
/* -------------------------------------------- */
postItem() {
let chatData = duplicate( Imperium5Utility.data(this.item) )
let chatData = duplicate( this.item.system)
if (this.actor) {
chatData.actor = { id: this.actor.id }
}
@ -112,7 +111,7 @@ export class Imperium5ItemSheet extends ItemSheet {
async viewSubitem(ev) {
let field = $(ev.currentTarget).data('type');
let idx = Number($(ev.currentTarget).data('index'));
let itemData = this.object.data.data[field][idx];
let itemData = this.object.system[field][idx];
if (itemData.name != 'None') {
let spec = await Item.create(itemData, { temporary: true });
spec.data.origin = "embeddedItem";
@ -124,8 +123,8 @@ export class Imperium5ItemSheet extends ItemSheet {
async deleteSubitem(ev) {
let field = $(ev.currentTarget).data('type');
let idx = Number($(ev.currentTarget).data('index'));
let oldArray = this.object.data.data[field];
let itemData = this.object.data.data[field][idx];
let oldArray = this.object.system[field];
let itemData = this.object.system[field][idx];
if (itemData.name != 'None') {
let newArray = [];
for (var i = 0; i < oldArray.length; i++) {
@ -139,7 +138,7 @@ export class Imperium5ItemSheet extends ItemSheet {
/* -------------------------------------------- */
async manageSpec() {
let itemData = this.object.data.data.specialisation[0];
let itemData = this.object.system.specialisation[0];
if (itemData.name != 'None') {
let spec = await Item.create(itemData, { temporary: true });
spec.data.origin = "embeddedItem";

View File

@ -5,7 +5,7 @@ export class Imperium5RollDialog extends Dialog {
/* -------------------------------------------- */
static async create(actor, rollData ) {
let options = { classes: ["Imperium5Dialog"], width: 620, height: 380, 'z-index': 99999 }
let options = { classes: ["Imperium5Dialog"], width: 320, height: 380, 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-imperium5/templates/roll-dialog-generic.html', rollData)
return new Imperium5RollDialog(actor, rollData, html, options )
@ -41,6 +41,11 @@ export class Imperium5RollDialog extends Dialog {
Imperium5Utility.rollImperium5( this.rollData )
}
/* -------------------------------------------- */
updatePCPool() {
let value = Imperium5Utility.computeDiceReserve(this.rollData)
$('#ame-total').html(value )
}
/* -------------------------------------------- */
activateListeners(html) {
@ -48,7 +53,29 @@ export class Imperium5RollDialog extends Dialog {
var dialog = this
function onLoad() {
dialog.updatePCPool()
}
$(function () { onLoad(); })
html.find('#select-realite-dice').change(async (event) => {
this.rollData.realiteDice = Number(event.currentTarget.value)
})
html.find('#select-capacite').change(async (event) => {
this.rollData.usedCapacite = String(event.currentTarget.value)
this.updatePCPool()
})
html.find('#select-use-archetype').change(async (event) => {
this.rollData.useArchetype = event.currentTarget.checked
this.updatePCPool()
})
html.find('#select-use-aide').change(async (event) => {
this.rollData.useAide = event.currentTarget.checked
this.updatePCPool()
})
html.find('#select-use-karma').change(async (event) => {
this.rollData.useKarma = event.currentTarget.checked
this.updatePCPool()
})
}
}

View File

@ -113,7 +113,7 @@ export class Imperium5Utility {
effectName = effectName.toLowerCase()
let effect = game.items.contents.find(item => item.type == 'effect' && item.name.toLowerCase() == effectName)
if (!effect) {
let effects = await this.loadCompendium('fvtt-pegasus.effect', item => item.name.toLowerCase() == effectName)
let effects = await this.loadCompendium('fvtt-imperium5.effect', item => item.name.toLowerCase() == effectName)
let objs = effects.map(i => i.toObject())
effect = objs[0]
} else {
@ -153,19 +153,6 @@ export class Imperium5Utility {
return undefined;
}
/* -------------------------------------------- */
static templateData(it) {
return Imperium5Utility.data(it)?.data ?? {}
}
/* -------------------------------------------- */
static data(it) {
if (it instanceof Actor || it instanceof Item || it instanceof Combatant) {
return it.data;
}
return it;
}
/* -------------------------------------------- */
static createDirectOptionList(min, max) {
let options = {};
@ -204,7 +191,7 @@ export class Imperium5Utility {
}
/* -------------------------------------------- */
static saveRollData(rollData) {
game.socket.emit("system.pegasus-rpg", {
game.socket.emit("system.fvtt-imperium5", {
name: "msg_update_roll", data: rollData
}); // Notify all other clients of the roll
this.updateRollData(rollData);
@ -281,76 +268,56 @@ export class Imperium5Utility {
}
}
/* -------------------------------------------- */
static computeDiceReserve(rollData) {
let capaDice = 0
if (rollData.usedCapacite != "none") {
let capa = rollData.capacites.find(c => c._id == rollData.usedCapacite)
capaDice = capa.system.aide
}
let val = rollData.ame.value + capaDice + ((rollData.useKarma) ? 1 : 0) + ((rollData.useArchetype) ? 1 : 0) + ((rollData.useAide) ? 1 : 0) + rollData.ameMalus
return Math.max(val, 0)
}
/* -------------------------------------------- */
static async rollImperium5(rollData) {
let dicePool = [{ name: "stat", level: 0, statmod: 0 }, { name: "spec", level: 0 }, { name: "bonus", level: 0 }, { name: "hindrance", level: 0 }, { name: "other", level: 0 }];
if (rollData.stat) {
dicePool[0].level += Number(rollData.stat.value);
dicePool[0].statmod = Number(rollData.stat.mod);
// Karma management
let actor = game.actors.get(rollData.actorId)
rollData.nbKarma = 0
if ( rollData.useKarma ) {
actor.incDecKarma(-1)
rollData.nbKarma++
}
if (rollData.statDicesLevel) {
dicePool[0].level = rollData.statDicesLevel;
}
if (rollData.selectedSpec && rollData.selectedSpec != "0") {
rollData.spec = rollData.specList.find(item => item._id == rollData.selectedSpec);
rollData.spec.data.dice = Imperium5Utility.getDiceFromLevel(rollData.spec.data.level);
}
if (rollData.spec) {
dicePool[1].level += Number(rollData.spec.data.level);
}
if (rollData.specDicesLevel) {
dicePool[1].level = rollData.specDicesLevel;
}
if (rollData.bonusDicesLevel) {
dicePool[2].level += Number(rollData.bonusDicesLevel);
}
if (rollData.hindranceDicesLevel) {
dicePool[3].level += Number(rollData.hindranceDicesLevel);
}
if (rollData.otherDicesLevel) {
dicePool[4].level += Number(rollData.otherDicesLevel);
if ( rollData.usedCapacite != "none" ) {
actor.incDecKarma(-1)
rollData.nbKarma++
}
let diceFormulaTab = [];
for (let diceGroup of dicePool) {
diceFormulaTab.push(this.getFoundryDiceFromLevel(diceGroup.level))
}
let diceFormula = '{' + diceFormulaTab.join(', ') + '}kh';
let nbAmeDice = this.computeDiceReserve( rollData )
let diceFormula = `${nbAmeDice}d8[green] + 1d8[blue] + ${rollData.realiteDice}d8[red]`
let humanFormula = `${nbAmeDice}d8, 1d8, ${rollData.realiteDice}d8`
// Performs roll
let myRoll = rollData.roll;
let myRoll = rollData.roll
if (!myRoll) { // New rolls only of no rerolls
myRoll = new Roll(diceFormula).roll({ async: false });
console.log("ROLL : ", diceFormula)
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"));
myRoll = new Roll(diceFormula).roll({ async: false })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = myRoll
rollData.diceFormula = diceFormula
rollData.humanFormula = humanFormula
}
// Final score and keep data
rollData.finalScore = myRoll.total + dicePool[0].statmod;
// Calcul réussites
rollData.successPC = myRoll.terms[0].results.filter(res => res.result <= 2).length
rollData.successGM = myRoll.terms[4].results.filter(res => res.result <= 2).length
rollData.bonPresage = myRoll.terms[2].results[0].result == 1
rollData.mauvaisPresage = myRoll.terms[2].results[0].result == 8
rollData.nbUnitesNarration = Math.max( rollData.successPC-1, 0)
if (rollData.damages) {
let dmgFormula = this.getFoundryDiceFromLevel(rollData.damages.value)
let dmgRoll = new Roll(dmgFormula).roll({ async: false });
await this.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode"));
rollData.dmgResult = dmgRoll.total;
}
this.createChatWithRollMode(rollData.alias, {
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
});
// Init stuf
if (rollData.isInit) {
let combat = game.combats.get(rollData.combatId)
combat.updateEmbeddedDocuments("Combatant", [{ _id: rollData.combatantId, initiative: rollData.finalScore }]);
}
//this.removeUsedPerkEffects( rollData) // Unused for now
// And save the roll
this.saveRollData(rollData);
})
msg.setFlag("world", "rolldata", rollData)
}
/* ------------------------- ------------------- */
@ -387,7 +354,6 @@ export class Imperium5Utility {
static async rerollDice(actorId, diceIndex = -1) {
let actor = game.actors.get(actorId)
let rollData = actor.getRollData()
}
/* -------------------------------------------- */
@ -466,7 +432,7 @@ export class Imperium5Utility {
break;
}
chatOptions.alias = chatOptions.alias || name;
ChatMessage.create(chatOptions);
return ChatMessage.create(chatOptions)
}
/* -------------------------------------------- */
@ -474,11 +440,12 @@ export class Imperium5Utility {
let rollData = {
rollId: randomID(16),
rollMode: game.settings.get("core", "rollMode"),
effectsList: [],
armorsList: [],
weaponsList: [],
equipmentsList: [],
optionsDiceList: Imperium5Utility.getOptionsDiceList()
realiteDice: 0,
ameMalus: 0,
useArchetype: false,
useAide: false,
useKarma: false,
usedCapacite: "none"
}
Imperium5Utility.updateWithTarget(rollData)
return rollData
@ -490,17 +457,17 @@ export class Imperium5Utility {
let target = Imperium5Utility.getTarget()
if (target) {
let defenderActor = game.actors.get(target.data.actorId)
objectDefender = Imperium5Utility.data(defenderActor)
objectDefender = defenderActor
objectDefender = mergeObject(objectDefender, target.data.actorData)
rollData.defender = objectDefender
rollData.attackerId = this.id
rollData.defenderId = objectDefender._id
rollData.defenderId = objectDefender.id
}
}
/* -------------------------------------------- */
static createChatWithRollMode(name, chatOptions) {
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions)
return this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions)
}
/* -------------------------------------------- */

19
packs/archetypes.db Normal file
View File

@ -0,0 +1,19 @@
{"name":"Ingénieure quantique et sémanticien","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276540,"modifiedTime":1666193276540,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"0Oak4qh3fiLrCrwD"}
{"name":"Opératif silencieux","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276543,"modifiedTime":1666193276543,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"1oSj3vK73OU8wTnQ"}
{"name":"Agent enquêteur","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276536,"modifiedTime":1666193276536,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"3mUQOeBUVoMEB0ee"}
{"name":"Contrôleur des particules","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276537,"modifiedTime":1666193276537,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Aztmj5GvRUUkmY56"}
{"name":"Opérative Imperial","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276543,"modifiedTime":1666193276543,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"FhQOM3HWjpENBNmk"}
{"name":"Analyste des données","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276536,"modifiedTime":1666193276536,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"GLwBaFKGLqFJerwx"}
{"name":"Contrôleur des particules","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276537,"modifiedTime":1666193276537,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"LxFyaIgnYYLgaYcI"}
{"name":"Rogue Executeur","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276543,"modifiedTime":1666193276543,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"P4ZwT4Ot1johxPK2"}
{"name":"Surréaliste spectral","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276544,"modifiedTime":1666193276544,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"P5KHqaMiMCizHKCg"}
{"name":"Artiste d'épée","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276537,"modifiedTime":1666193276537,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"RsiGq4PEAHxndv8H"}
{"name":"Expert nano-drone","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276538,"modifiedTime":1666193276538,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"UAXwr0BrgA8UbStV"}
{"name":"Enfant de Noble","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{"core":{"sheetClass":"fvtt-imperium5.Imperium5ItemSheet"}},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276538,"modifiedTime":1666193276538,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"amcEoKkqQu2puymX"}
{"name":"Investisseur quantique","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276540,"modifiedTime":1666193276540,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"dMBTtnFj4lVveU8j"}
{"name":"Soldat impérial","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276544,"modifiedTime":1666193276544,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"eZDL7H32oYUEYtcu"}
{"name":"Nano-biotechnicien","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276542,"modifiedTime":1666193276542,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"iD4ppu8zk8fMYZmE"}
{"name":"Espion mercenaire","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276538,"modifiedTime":1666193276538,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"lDFJKInNO4ZZFA4P"}
{"name":"Science analyste","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276543,"modifiedTime":1666193276543,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"mfP3M7DNmMAHDxuQ"}
{"name":"Free Rogue","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":"<p>Kalista</p>"},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276539,"modifiedTime":1666193276539,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"ouGaGEbJmqyuWBDe"}
{"name":"Façonneur dAutomate","type":"archetype","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193276539,"modifiedTime":1666193276539,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"sCCuhfYOeqI5d1ia"}

1
packs/equipement.db Normal file
View File

@ -0,0 +1 @@
{"name":"Dual pistolet à impulsion","type":"equipement","img":"icons/anvil.png","effects":[],"flags":{},"system":{"value":5,"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193282180,"modifiedTime":1666193282180,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"C18Bktvyz9nJKzqc"}

16
packs/familiarites.db Normal file
View File

@ -0,0 +1,16 @@
{"name":"Arme à distance","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287739,"modifiedTime":1666193287739,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"1VYn7tDKHYZmLjeO"}
{"name":"Physionomiste","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287742,"modifiedTime":1666193287742,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"3tA6xtqjheEwRHyi"}
{"name":"Finance","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287741,"modifiedTime":1666193287741,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"7AyfgIUdDrXSpPx6"}
{"name":"Dissimulation","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287741,"modifiedTime":1666193287741,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"AYFvW7RkbeYulLU5"}
{"name":"Art - Musique","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287740,"modifiedTime":1666193287740,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"EAfvfbDFbumjEada"}
{"name":"Arme à distance","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287740,"modifiedTime":1666193287740,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"HjidIc0JW69czwTW"}
{"name":"Art - Calligraphie","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287740,"modifiedTime":1666193287740,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"PLp4gbfVNOJQAqMJ"}
{"name":"Marchander","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287742,"modifiedTime":1666193287742,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Y0rePVyTqeqXz3Qj"}
{"name":"Arme légère","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287740,"modifiedTime":1666193287740,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"YFZPlw2wJnITeBL6"}
{"name":"Modification implants nano-tech","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287742,"modifiedTime":1666193287742,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"iPblGaQLmujwHhFQ"}
{"name":"Langage du milieu","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287742,"modifiedTime":1666193287742,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"lJ7sOjtzg8Dzhn9M"}
{"name":"Finance","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287741,"modifiedTime":1666193287741,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"nPg9T51M44jXOIcl"}
{"name":"Impressionner","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287742,"modifiedTime":1666193287742,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"nx4UtPuG061gkS7T"}
{"name":"Baratineur / Arnaqueur","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287741,"modifiedTime":1666193287741,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"oYVLwMaCySRaBSiM"}
{"name":"Evaluation de la situation","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287741,"modifiedTime":1666193287741,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"viW9qXE57HcVWIb2"}
{"name":"Art - Cuisine","type":"familiarite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193287740,"modifiedTime":1666193287740,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"zo5lpd5a4o2KEHet"}

39
packs/specialites.db Normal file
View File

@ -0,0 +1,39 @@
{"name":"Documents secrets","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295153,"modifiedTime":1666193295153,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"0WHHicC1UJlzqp1P"}
{"name":"Évaluation et tromper","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295155,"modifiedTime":1666193295155,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"0zR22u30iaMbDomZ"}
{"name":"Bidouille techno","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295150,"modifiedTime":1666193295150,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"2korkxxDmUVzor7s"}
{"name":"Analyse Flux et données de l'Onde","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295149,"modifiedTime":1666193295149,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"666g20CuvWEMmvJo"}
{"name":"Tir armes légères","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295159,"modifiedTime":1666193295159,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"68hXMWOT6V3nMscZ"}
{"name":"Histoire et savoir","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295156,"modifiedTime":1666193295156,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Bo4qFGhxhmoIgboE"}
{"name":"Langages du milieu","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295157,"modifiedTime":1666193295157,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"CB6FZnPNFf1M7tvQ"}
{"name":"Beau parleur et flagorneur","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295150,"modifiedTime":1666193295150,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"FcM0Kdzm4pO7ULkU"}
{"name":"Analyse multi-linguistique","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295149,"modifiedTime":1666193295149,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Fk1DvRwtx7bRBhxw"}
{"name":"Tir instinctif","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295160,"modifiedTime":1666193295160,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Gy7b7vEFR3MiDVVS"}
{"name":"Combat rapproché","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295151,"modifiedTime":1666193295151,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"HfVcNbCPuC4tslXE"}
{"name":"Discrétion & infiltration","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295153,"modifiedTime":1666193295153,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"IaINf1mKDDdcoMcL"}
{"name":"Danse des milles lames","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295152,"modifiedTime":1666193295152,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"IhfUQZkcfMPZrNT3"}
{"name":"Expertise armes civiles et militaires","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295156,"modifiedTime":1666193295156,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Kcyvb2JJsLWqyTrq"}
{"name":"Évaluation de la situation","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","system":{"description":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666160832797,"modifiedTime":1666193295155,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"MA6nc1EAX0STqhKB"}
{"name":"Manipulation mentale","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295158,"modifiedTime":1666193295158,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"MTkxEm4z3cQHWcIy"}
{"name":"Association et changement des propriétés de la matière","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295150,"modifiedTime":1666193295150,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"McDqrXJpNb40zadC"}
{"name":"Domaine artisitique Onde et Réel","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295154,"modifiedTime":1666193295154,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"RuHFfwRFayxxgjIw"}
{"name":"Tactique et démolition","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295159,"modifiedTime":1666193295159,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"UeOVRDQM8TjXYVZR"}
{"name":"Création dAutomates","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295152,"modifiedTime":1666193295152,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"UsgIx1qxPU9Z9FjI"}
{"name":"Connaissances des structures Nanotech","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295151,"modifiedTime":1666193295151,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"XEzTH7qDNQTpXRyl"}
{"name":"Intervention : gestion dassauts et prise d'otage","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295157,"modifiedTime":1666193295157,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"XPXYyJAJt89LZnhJ"}
{"name":"Maîtrise de la tromperie et de l'imaginaire","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295157,"modifiedTime":1666193295157,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"Y9GGuC5esavlyNTJ"}
{"name":"Analyse des flux quantiques","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295149,"modifiedTime":1666193295149,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"YfRZlPmW16eS3Ror"}
{"name":"L'art du savoir vivre et de la courtoisie","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295157,"modifiedTime":1666193295157,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"bSZQ0D6QW0dm4NEm"}
{"name":"Tir armes lourdes","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295160,"modifiedTime":1666193295160,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"c91xFSTPVH0I6FJj"}
{"name":"Flingue d'intervention","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295156,"modifiedTime":1666193295156,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"dlDHEVfJdLtoOY5F"}
{"name":"Droit et savoir des Imperiums","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295154,"modifiedTime":1666193295154,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"gXum74AjlUsV05nr"}
{"name":"Effraction système","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295154,"modifiedTime":1666193295154,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"gdmwi6DFIIZjNkpp"}
{"name":"Modélisation de nanobot","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295158,"modifiedTime":1666193295158,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"h13ZdjX4uBqxOB05"}
{"name":"Etiquette et Epée","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295155,"modifiedTime":1666193295155,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"m94xvrEszs168CsB"}
{"name":"Connaissance des ondes et des particules","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295151,"modifiedTime":1666193295151,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"m9FjeKiKPM5oHdMj"}
{"name":"Enquêtes, investigations et procédures","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295154,"modifiedTime":1666193295154,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"nGwBXHG88EE1b9Wm"}
{"name":"Pistolet d'intervention","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295159,"modifiedTime":1666193295159,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"nzT1cZTeEeagMvoM"}
{"name":"Modification implants Nano-Tech","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295158,"modifiedTime":1666193295158,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"pbc7jqk36XhgECrL"}
{"name":"Finesse et manipulation dAutomate","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295156,"modifiedTime":1666193295156,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"rwecxvCF8YoCjK3J"}
{"name":"Combat distance","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295150,"modifiedTime":1666193295150,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"uezgUNVHUAaQF65I"}
{"name":"Connaître le corps humain/inhumain","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","system":{"description":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666160808668,"modifiedTime":1666193295152,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"ustM6OY1UnKtlaA6"}
{"name":"Connaissances des structures Nano-Tech","type":"specialite","img":"systems/fvtt-imperium5/images/icons/archetype_transparent.webp","effects":[],"flags":{},"system":{"description":""},"_stats":{"systemId":"fvtt-imperium5","systemVersion":"10.0.1","coreVersion":"10.288","createdTime":1666193295151,"modifiedTime":1666193295151,"lastModifiedBy":"84nhNtzVlnRIbbDR"},"folder":null,"sort":0,"ownership":{"default":0,"84nhNtzVlnRIbbDR":3},"_id":"vHqy70xBITGVvC1V"}

View File

@ -644,6 +644,7 @@ ul, li {
.roll-dialog-label {
margin: 4px 0;
min-width: 96px;
font-weight: bold;
}
.short-label {
flex-grow: 1;

View File

@ -1,28 +1,63 @@
{
"author": "Uberwald",
"id": "fvtt-imperium5",
"title": "Imperium5 RPG",
"authors": [ {"name":"Uberwald"} ],
"version": "10.0.2",
"compatibleCoreVersion": "9",
"compatibility": {
"minimum": "10",
"verified": "10",
"maximum": "10"
},
"description": "Imperium 5 RPG system for FoundryVTT",
"download": "https://www.uberwald.me/data/files/fvtt-imperium5/fvtt-imperium5.zip",
"esmodules": [
"modules/imperium5-main.js"
],
"gridDistance": 5,
"gridUnits": "m",
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en.json"
}
],
"library": false,
"license": "LICENSE.txt",
"manifest": "https://www.uberwald.me/data/files/fvtt-imperium5/system.json",
"manifestPlusVersion": "1.0.0",
"media": [],
"minimumCoreVersion": "0.8.0",
"name": "fvtt-imperium5",
"packs": [
{
"type": "Item",
"label": "Archétypes",
"name": "archetypes",
"path": "packs/archetypes.db",
"system": "fvtt-imperium5",
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Familiarités",
"name": "familiarites",
"path": "packs/familiarites.db",
"system": "fvtt-imperium5",
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Spécialités",
"name": "specialites",
"path": "packs/specialites.db",
"system": "fvtt-imperium5",
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Equipement",
"name": "equipement",
"path": "packs/equipement.db",
"system": "fvtt-imperium5",
"private": false,
"flags": {}
}
],
"primaryTokenAttribute": "secondary.health",
"secondaryTokenAttribute": "secondary.delirium",
@ -31,8 +66,8 @@
"styles/simple.css"
],
"templateVersion": 47,
"title": "Imperium5 RPG",
"url": "https://www.uberwald.me/data/files/fvtt-imperium5",
"version": "0.0.7",
"background" : "./images/ui/imperium5_welcome_page.webp"
"background" : "./images/ui/imperium5_welcome_page.webp",
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5",
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/releases/tag/fvtt-imperium5-v10.0.2.zip"
}

View File

@ -172,7 +172,7 @@
"description": ""
},
"capacite": {
"type": "",
"capatype": "",
"aide": 0,
"ressource": 0,
"description": ""

View File

@ -2,26 +2,32 @@
<h4 class="ame-margin ame-subtitle">{{typedata.label}}</h4>
<div class="item-filler">&nbsp;</div>
<span class="ame-checkbox-label">-1<input class="ame-checkbox" type="checkbox" data-ame-key="{{typeame}}"></span>
<span class="ame-checkbox-label">-2<input class="ame-checkbox" type="checkbox" data-ame-key="{{typeame}}"></span>
<span class="ame-checkbox-label">-3<input class="ame-checkbox" type="checkbox" data-ame-key="{{typeame}}"></span>
<select class="input-numeric-short padd-right status-small-label color-class-common" type="text" name="system.amestype.{{typeame}}.malus" value="{{typedata.malus}}" data-dtype="Number">
{{#select typedata.malus}}
<option value="0">0</option>
<option value="-1">-1</option>
<option value="-2">-2</option>
<option value="-3">-3</option>
{{/select}}
</select>
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common cohesion-input"
name="data.amestype.{{typeame}}.cohesion" value="{{typedata.cohesion}}" data-dtype="Number" {{#unless
name="system.amestype.{{typeame}}.cohesion" value="{{typedata.cohesion}}" data-dtype="Number" {{#unless
@root.editScore}}disabled{{/unless}} /> /
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common cohesion-input"
name="data.amestype.{{typeame}}.cohesionmax" value="{{typedata.cohesionmax}}" data-dtype="Number" {{#unless
name="system.amestype.{{typeame}}.cohesionmax" value="{{typedata.cohesionmax}}" data-dtype="Number" {{#unless
@root.editScore}}disabled{{/unless}}>
</span>
<ul class="ame-margin">
{{#each data.ames as |ame key|}}
{{#each system.ames as |ame key|}}
{{#if (eq ame.type ../typeame)}}
<li class="ame-padding item stat flexrow item-ame-roll" data-attr-key="{{key}}">
<li class="ame-padding item stat flexrow item-ame-roll" data-ame-key="{{key}}">
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
name="data.ames.{{key}}.value" value="{{ame.value}}" data-dtype="Number" {{#unless
name="system.ames.{{key}}.value" value="{{ame.value}}" data-dtype="Number" {{#unless
@root.editScore}}disabled{{/unless}} />
<span class="ame-label ame-margin" name="{{key}}">
<a class="roll-ame" data-stat-key="{{key}}">{{ame.label}}</a>
<a class="roll-ame" data-ame-key="{{key}}">{{ame.label}}</a>
</span>
</li>
{{/if}}

View File

@ -1,14 +1,14 @@
{{#each data.paradigmes as |para key|}}
{{#each system.paradigmes as |para key|}}
<li class="item stat flexrow" data-attr-key="{{key}}">
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
name="data.paradigmes.{{key}}.value" value="{{para.value}}" data-dtype="Number" {{#unless
name="system.paradigmes.{{key}}.value" value="{{para.value}}" data-dtype="Number" {{#unless
@root.editScore}}disabled{{/unless}} />
<span class="stat-label stat-margin" name="{{key}}">
{{#if para.editable}}
<h4 class="ame-margin">
<input type="text" class="color-class-common" name="data.paradigmes.{{key}}.label" value="{{para.label}}"
<input type="text" class="color-class-common" name="system.paradigmes.{{key}}.label" value="{{para.label}}"
data-dtype="String" {{#unless @root.editScore}}disabled{{/unless}} />
</h4>
{{else}}

View File

@ -24,6 +24,26 @@
{{!-- Combat Tab --}}
<div class="tab principal" data-group="primary" data-tab="principal">
<div>
<div class="sheet-box color-bg-ame color-text-ame">
<div class=flexrow>
<h4 class="ame-margin title-font">KARMA</h4>
<span class="item-name-label flexrow">Karma
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
name="system.karma.value" value="{{system.karma.value}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />
</span>
<span class="item-name-label flexrow">Source
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
name="system.karma.source" value="{{system.karma.source}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />
</span>
<span class="item-name-label flexrow">XP
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
name="system.karma.xp" value="{{system.karma.xp}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />
</span>
</div>
</div>
</div>
<div class="flexrow">
<div class="flexrow">
@ -32,11 +52,11 @@
<img class="ame-icon" src="systems/fvtt-imperium5/images/icons/ame_transparent.webp">
<h4 class="ame-margin title-font">AMES</h4>
</span>
{{>systems/fvtt-imperium5/templates/actor-partial-ames.html typeame="physique" typedata=data.amestype.physique}}
{{>systems/fvtt-imperium5/templates/actor-partial-ames.html typeame="physique" typedata=system.amestype.physique}}
{{>systems/fvtt-imperium5/templates/actor-partial-ames.html typeame="social" typedata=data.amestype.social}}
{{>systems/fvtt-imperium5/templates/actor-partial-ames.html typeame="social" typedata=system.amestype.social}}
{{>systems/fvtt-imperium5/templates/actor-partial-ames.html typeame="mental" typedata=data.amestype.mental}}
{{>systems/fvtt-imperium5/templates/actor-partial-ames.html typeame="mental" typedata=system.amestype.mental}}
</div>
</div>
@ -180,7 +200,7 @@
<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>
<span class="item-field-label-short">{{equip.system.value}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
@ -209,8 +229,8 @@
<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>
<span class="item-field-label-short"">{{capa.system.aide}}</span>
<span class=" item-field-label-short"">{{capa.system.ressource}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
@ -240,7 +260,7 @@
<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>
<span class="item-field-label-short">{{singul.system.value}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
@ -266,7 +286,7 @@
<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>
<span class="item-field-label-short">{{contact.system.value}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
@ -290,17 +310,17 @@
<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}}"
<input type="text" class="" name="system.biodata.imperium" value="{{system.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}}"
<input type="text" class="" name="system.biodata.admid" value="{{system.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" />
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}" data-dtype="String" />
</li>
</ul>
</div>
@ -308,32 +328,32 @@
<ul>
<li class="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="data.biodata.weight" value="{{data.biodata.weight}}"
<input type="text" class="" name="system.biodata.weight" value="{{system.biodata.weight}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Sexe</label>
<input type="text" class="" name="data.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.sex" value="{{system.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" />
<input type="text" class="" name="system.biodata.size" value="{{system.biodata.size}}" data-dtype="String" />
</li>
</ul>
</div>
<div>
<li class="item flexrow">
<label class="generic-label">Yeux</label>
<input type="text" class="" name="data.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Main préférée</label>
<input type="text" class="" name="data.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
<input type="text" class="" name="system.biodata.preferredhand" value="{{system.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" />
<input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}" data-dtype="String" />
</li>
</div>
</div>
@ -342,14 +362,14 @@
<div>
<h3>Apparence actuelle : </h3>
<div class="form-group small-editor">
{{editor content=data.biodata.appactual target="data.biodata.appactual" button=true owner=owner
{{editor system.biodata.appactual target="system.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
{{editor system.biodata.identities target="system.biodata.identities" button=true owner=owner
editable=editable}}
</div>
</div>
@ -359,14 +379,14 @@
<div>
<h3>Traits particuliers : </h3>
<div class="form-group small-editor">
{{editor content=data.biodata.traits target="data.biodata.traits" button=true owner=owner
{{editor system.biodata.traits target="system.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
{{editor system.biodata.memories target="system.biodata.memories" button=true owner=owner
editable=editable}}
</div>
</div>
@ -376,14 +396,14 @@
<div>
<h3>Rebuild : </h3>
<div class="form-group small-editor">
{{editor content=data.biodata.rebuild target="data.biodata.rebuild" button=true owner=owner
{{editor system.biodata.rebuild target="system.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
{{editor system.biodata.contacts target="system.biodata.contacts" button=true owner=owner
editable=editable}}
</div>
</div>
@ -391,13 +411,13 @@
<h3>Qui suis-je : </h3>
<div class="form-group editor">
{{editor content=data.biodata.whoami target="data.biodata.whoami" button=true owner=owner
{{editor system.biodata.whoami target="system.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}}
{{editor system.biodata.notes target="system.biodata.notes" button=true owner=owner editable=editable}}
</div>
<hr>
</article>

View File

@ -7,45 +7,24 @@
<hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
<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>
<li>Réserve : {{humanFormula}}</li>
<li>Succés : {{successPC}}</li>
<li>Succés de Réalité : {{successGM}}</li>
<li>Unités de narration : {{nbUnitesNarration}}</li>
{{#if nbKarma}}
<li>Points de Karma utilisés : {{nbKarma}}</li>
{{/if}}
{{#if weaponName}}
<li>Weapon : {{weaponName}}</li>
{{/if}}
{{#if isResistance}}
<li><strong>Defense Result : {{finalScore}}</strong>
{{else}}
{{#if isDamage}}
<li><strong>Damages : {{finalScore}}</strong>
{{else}}
<li><strong>Final Result : {{finalScore}}</strong>
{{#if bonPresage}}
<li>Bon Présage !</li>
{{/if}}
{{#if mauvaisPresage}}
<li>Mauvais Présage !</li>
{{/if}}
</ul>

View File

@ -1,6 +1,6 @@
{{#if data.isGM}}
<h3>GM Notes : </h3>
<div class="form-group editor">
{{editor content=data.gmnotes target="data.gmnotes" button=true owner=owner editable=editable}}
{{editor system.gmnotes target="system.gmnotes" button=true owner=owner editable=editable}}
</div>
{{/if}}

View File

@ -9,34 +9,36 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
<h3>{{upperFirst type}}</h3>
<div class="flexcol">
{{#if (exists data.type)}}
{{#if (exists system.capatype)}}
<span>
<label class="generic-label">Type : </label>
<input type="text" class="padd-right status-small-label color-class-common" name="data.type" value="{{data.type}}"
<label class="generic-label">Type de capacité : </label>
<input type="text" class="padd-right status-small-label color-class-common" name="system.capatype" value="{{system.capatype}}"
data-dtype="String" />
</span>
{{/if}}
{{#if (exists data.value)}}
{{#if (exists system.value)}}
<span>
<label class="generic-label">Valeur : </label>
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="data.value" value="{{data.value}}"
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="system.value" value="{{system.value}}"
data-dtype="Number" />
</span>
{{/if}}
{{#if (exists data.aide)}}
{{#if (exists system.aide)}}
<span class="generic-label">
<label>Aide : </label>
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="data.aide" value="{{data.aide}}"
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="system.aide" value="{{system.aide}}"
data-dtype="Number" />
</span>
{{/if}}
{{#if (exists data.ressource)}}
{{#if (exists system.ressource)}}
<span class="generic-label">
<label>Resource : </label>
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="data.ressource" value="{{data.ressource}}"
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="system.ressource" value="{{system.ressource}}"
data-dtype="Number" />
</span>
{{/if}}

View File

@ -7,7 +7,7 @@
{{/if}}
<span class="item-field-label-long"><label>
{{equip.data.quantity}}
{{equip.system.quantity}}
(<a class="quantity-minus plus-minus-button"> -</a>/<a class="quantity-plus plus-minus-button">+</a>)
</label>
</span>

View File

@ -1,16 +0,0 @@
<li class="item flexrow list-item color-class-{{lower stat.abbrev}} item-stat-roll" data-attr-key="{{key}}">
<span class="stat-icon">
<img class="stat-icon" src="systems/fvtt-pegasus-rpg/images/icons/{{stat.abbrev}}.webp">
</span>
<span class="stat-label stat-margin" name="{{key}}">
<h4 class="stat-text-white stat-margin"><a class="roll-stat stat-margin" data-stat-key="{{key}}">{{stat.abbrev}}</a></h4>
</span>
<select class="status-small-label color-class-common" type="text" name="data.statistics.{{key}}.value" value="{{stat.value}}"
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select stat.value}}
{{{@root.optionsDiceList}}}
{{/select}}
</select>
<input type="text" class="input-numeric-short padd-right status-small-label color-class-common" name="data.statistics.{{key}}.mod" value="{{stat.mod}}"
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />
</li>

View File

@ -1,70 +0,0 @@
<ul class="status-block">
<li class="item flexrow">
<span class="stat-label status-small-label status-col-name"><label class="status-small-label"><strong>Status</strong></label></span>
<span class="status-header-label status-small-label no-grow"><label class="status-small-label">Cur</label></span>
<span class="status-header-label status-small-label no-grow"><label class="status-small-label">Mod</label></span>
<span class="status-header-label status-small-label no-grow"><label class="status-small-label">Max</label></span>
</li>
{{#each data.secondary as |stat2 key|}}
<li class="item flexrow " data-attr-key="{{key}}">
<span class="stat-label flexrow status-col-name" name="{{key}}">
<label class="status-small-label"><strong>{{stat2.label}}</strong><br>
{{#if (eq key "health")}}
(KOV -{{stat2.max}})
{{/if}}
{{#if (eq key "delirium")}}
(MV -{{stat2.max}})
{{/if}}
</label>
</span>
<input type="text" class="padd-right status-small-label no-grow" name="data.secondary.{{key}}.value" value="{{stat2.value}}" data-dtype="Number"/>
<input type="text" class="padd-right status-small-label no-grow" name="data.secondary.{{key}}.bonus" value="{{stat2.bonus}}" data-dtype="Number"/>
<input type="text" class="padd-right status-small-label no-grow" name="data.secondary.{{key}}.max" value="{{stat2.max}}" data-dtype="Number"/>
</li>
{{/each}}
<li class="item flexrow " data-key="nrg">
<span class="stat-label flexrow status-col-name" name="nrg">
<label class="status-small-label"><strong>{{data.nrg.label}}</strong></label>
</span>
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.value" value="{{data.nrg.value}}" data-dtype="Number"/>
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.mod" value="{{data.nrg.mod}}" data-dtype="Number"/>
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.max" value="{{data.nrg.max}}" data-dtype="Number"/>
<span class="small-label status-small-label"> /{{data.nrg.absolutemax}}</span>
</li>
<li class="item flexrow " data-key="nrg">
<span class="stat-label flexrow status-col-name" name="activated-nrg">
<label class="status-small-label"><strong>Activated NRG</strong><br>
</span>
<span class="stat-label flexrow status-col-name" name="activated-nrg">
<input type="text" class="padd-right status-small-label no-grow" name="data.nrg.activated" value="{{data.nrg.activated}}" data-dtype="Number"/>
</span>
<!--<span class="stat-label flexrow status-col-name" name="momentum">
<label class="status-small-label flexrow"><strong>
<a class="stat-icon lock-unlock-sheet">{{#if editScore}}Lock{{else}}Unlock{{/if}}</a>
</strong></label>-->
</span>
</li>
<li class="item flexrow " data-key="momentum">
<span class="stat-label flexrow status-col-name" name="momentum">
<label class="status-small-label"><strong>Momentum</strong></label>
</span>
<input type="text" class="padd-right status-small-label no-grow" name="data.momentum.value" value="{{data.momentum.value}}" data-dtype="Number"/>
<input type="text" class="padd-right status-small-label no-grow" name="data.momentum.max" value="{{data.momentum.max}}" data-dtype="Number"/>
<span>
<a class="momentum-plus plus-minus-button">+</a>
<a class="momentum-minus plus-minus-button">-</a>
</span>
</li>
<!--<li class="item flexrow list-item" data-key="lock-unlock">
<span class="stat-label flexrow status-col-name" name="momentum">
<a class="stat-icon lock-unlock-sheet"><img class="small-button-container"
src="systems/fvtt-pegasus-rpg/images/icons/{{#if editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
></a>
</span>-->
</li>
</ul>
<!-- <span class="small-label padd-right packed-left">Act</span>
<input type="text" class="padd-right" name="data.nrg.activated" value="{{data.nrg.activated}}" data-dtype="Number"/>
-->

View File

@ -1,16 +0,0 @@
<li class="flexrow"><label class="generic-label">Effects</label>
</li>
<li>
<ul class="ul-level1">
<li class="flexrow"><div class="drop-equipment-effect"><label>Drop Effects here !</label></div>
</li>
{{#each data.effects as |effect idx|}}
<li class="flexrow">
<label name="data.effects[{{idx}}].name"><a class="view-subitem" data-type="effects" data-index="{{idx}}">{{effect.name}}</a></label>
<div class="item-controls padd-left">
<a class="item-control delete-subitem padd-left" data-type="effects" data-index="{{idx}}" title="Delete Effect"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</li>

View File

@ -2,5 +2,5 @@
<label class="generic-label">Description</label>
</span>
<div class="medium-editor item-text-long-line">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
{{editor system.description target="system.description" button=true owner=owner editable=editable}}
</div>

View File

@ -4,5 +4,5 @@
<img class="chat-img" src="{{img}}" title="{{name}}" />
{{/if}}
<h4><b>Description : </b></h4>
<p class="card-content">{{{data.description}}}</p>
<p class="card-content">{{{system.description}}}</p>
</div>

View File

@ -6,82 +6,60 @@
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1>
</header>
<div class="grid grid-2col">
<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}}}
{{/select}}
</select>
<span class="small-label">&nbsp;+&nbsp;{{statMod}}</span>
<span class="roll-dialog-label">Ame : {{ame.label}} ({{ame.value}})</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>
<span class="roll-dialog-label">Malus : {{ameMalus}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Utiliser l'Archetype ? : </span>
<input class="ame-checkbox" id="select-use-archetype" type="checkbox" {{checked useArchetype}}>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Aide d'un autre personnage ? : </span>
<input class="ame-checkbox" id="select-use-aide" type="checkbox" {{checked useAide}}>
</div>
{{#if karma}}
<div class="flexrow">
<span class="roll-dialog-label">Utiliser une capacité : </span>
<select class="roll-dialog-label" id="select-capacite" type="text" name="usedCapacite" value="{{usedCapacite}}"
data-dtype="Number">
{{#select usedCapacite}}
<option value="none">Aucune</option>
{{#each capacites as |capa key|}}
<option value="{{capa._id}}">{{capa.name}} ({{capa.system.aide}})</option>
{{/each}}
{{/select}}
</select>
<span class="small-label">&nbsp;</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Utiliser 1 Point de Karma ? : </span>
<input class="ame-checkbox" id="select-use-karma" type="checkbox" {{checked useKarma}}>
</div>
{{/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">&nbsp;</span>
<span class="roll-dialog-label">Total : <span id="ame-total">{{ame.value}}</span>d8</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}}}
<span class="roll-dialog-label">Dés de Réalité : </span>
<select class="roll-dialog-label" id="select-realite-dice" type="text" name="realiteDice" value="{{realiteDice}}"
data-dtype="Number">
{{#select realiteDice}}
<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>
{{/select}}
</select>
<span class="small-label">&nbsp;</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">&nbsp;</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">&nbsp;</span>
</div>
</div>
<div>
{{> systems/fvtt-pegasus-rpg/templates/partial-roll-select-effects.html}}
</div>
</div>