Compare commits
6 Commits
fvtt-ecrym
...
fvtt-ecrym
Author | SHA1 | Date | |
---|---|---|---|
b0834469a1 | |||
166f3367fb | |||
0551d7812f | |||
debd401d58 | |||
02b69c8602 | |||
fedf7e608e |
31
lang/en.json
31
lang/en.json
@ -4,9 +4,11 @@
|
|||||||
"Personnage": "PC"
|
"Personnage": "PC"
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"Trait": "Trait",
|
"trait": "Trait",
|
||||||
"Weapon": "Weapon",
|
"weapon": "Weapon",
|
||||||
"Equipment": "Equipment"
|
"equipment": "Equipment",
|
||||||
|
"maneuver": "Maneuver",
|
||||||
|
"specialization": "Specialization"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ECRY": {
|
"ECRY": {
|
||||||
@ -30,6 +32,18 @@
|
|||||||
"bonusmalustraits": "Traits Bonus/Malus",
|
"bonusmalustraits": "Traits Bonus/Malus",
|
||||||
"spectranscend": "Self-Transcend : "
|
"spectranscend": "Self-Transcend : "
|
||||||
},
|
},
|
||||||
|
"rule": {
|
||||||
|
"cephaly-success-2": "Duration : 1 scene - Impact : Superficial - Bonus : 1 - Elegy : 1",
|
||||||
|
"cephaly-success-4": "Duration : 1 week - Impact : Light - Bonus : 2 - Elegy : 2",
|
||||||
|
"cephaly-success-6": "Duration : 1 month - Impact : Serious - Bonus : 3 - Elegy : 3",
|
||||||
|
"cephaly-success-8": "Duration : 1 year - Impact : Major - Bonus : 4 - Elegy : 4",
|
||||||
|
"cephaly-success-10": "Duration : Permanent - Impact : Dead - Bonus : 5 - Elegy : 5",
|
||||||
|
"cephaly-failure-2": "Duration : 1 scene - Impact : Superficial - Malus : 1",
|
||||||
|
"cephaly-failure-4": "Duration : 1 week - Impact : Light - Malus : 2",
|
||||||
|
"cephaly-failure-6": "Duration : 1 month - Impact : Serious - Malus : 3",
|
||||||
|
"cephaly-failure-8": "Duration : 1 year - Impact : Major - Malus : 4",
|
||||||
|
"cephaly-failure-10": "Duration : Permanent - Impact : Death/Madness - Malus : 5"
|
||||||
|
},
|
||||||
"warn": {
|
"warn": {
|
||||||
"notenoughdice": "Execution and Preservation must have 2 dices allocated"
|
"notenoughdice": "Execution and Preservation must have 2 dices allocated"
|
||||||
},
|
},
|
||||||
@ -45,7 +59,7 @@
|
|||||||
"goldcoin": "Gold coin",
|
"goldcoin": "Gold coin",
|
||||||
"lige": "Lige",
|
"lige": "Lige",
|
||||||
"hurle": "Howl",
|
"hurle": "Howl",
|
||||||
"coin": "Coin",
|
"coin": "Penny",
|
||||||
"notes": "Notes",
|
"notes": "Notes",
|
||||||
"bio": "Bio",
|
"bio": "Bio",
|
||||||
"bionotes": "Bio&Notes",
|
"bionotes": "Bio&Notes",
|
||||||
@ -123,7 +137,14 @@
|
|||||||
"type": "Type",
|
"type": "Type",
|
||||||
"applyimpact": "Apply impact",
|
"applyimpact": "Apply impact",
|
||||||
"applybonus": "Apply bonus",
|
"applybonus": "Apply bonus",
|
||||||
"bonuspool": "Available bonuses"
|
"bonuspool": "Available bonuses",
|
||||||
|
"cephaly": "Cephaly",
|
||||||
|
"elegy": "Elegy",
|
||||||
|
"entelechy": "Entelechy",
|
||||||
|
"mekany": "Mekany",
|
||||||
|
"psyche": "Psyche",
|
||||||
|
"scoria": "Scoria",
|
||||||
|
"cephalydifficulty": "Set Cephaly difficulty"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
30
lang/fr.json
30
lang/fr.json
@ -4,9 +4,11 @@
|
|||||||
"Personnage": "PJ"
|
"Personnage": "PJ"
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"Trait": "Trait",
|
"trait": "Trait",
|
||||||
"Weapon": "Arme",
|
"weapon": "Arme",
|
||||||
"Equipment": "Equipement"
|
"equipment": "Equipement",
|
||||||
|
"maneuver": "Manoeuvre",
|
||||||
|
"specialization": "Spécialisation"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ECRY": {
|
"ECRY": {
|
||||||
@ -30,6 +32,19 @@
|
|||||||
"bonusmalustraits": "Bonus/Malus des Traits",
|
"bonusmalustraits": "Bonus/Malus des Traits",
|
||||||
"spectranscend": "Dépassement de soi : "
|
"spectranscend": "Dépassement de soi : "
|
||||||
},
|
},
|
||||||
|
"rule": {
|
||||||
|
"cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1",
|
||||||
|
"cephaly-success-34": "Durée : 1 semaine - Impact : Léger - Bonus : 2 - Elegie : 2",
|
||||||
|
"cephaly-success-56": "Durée : 1 mois - Impact : Grave - Bonus : 3 - Elegie : 3",
|
||||||
|
"cephaly-success-78": "Durée : 1 année - Impact : Majeur - Bonus : 4 - Elegie : 4",
|
||||||
|
"cephaly-success-910": "Durée : Permanent - Impact : Mort - Bonus : 5 - Elegie : 5",
|
||||||
|
"cephaly-failure-2": "Durée : 1 scène - Impact : Superficiel - Malus : 1 - Symptôme non visible et sans gravité - Altération bégigne difficilement repérable",
|
||||||
|
"cephaly-failure-4": "Durée : 1 semaine - Impact : Léger - Malus : 2 - Symptôme visible non incapacitant - Altération repérable",
|
||||||
|
"cephaly-failure-6": "Durée : 1 mois - Impact : Grave - Malus : 3 - Symptôme incapacitant - Altération repérable et fâcheuse",
|
||||||
|
"cephaly-failure-8": "Durée : 1 année - Impact : Majeur - Malus : 4 - Symptôme très incapacitant - Altération dangereuse",
|
||||||
|
"cephaly-failure-10": "Durée : Permanent - Impact : Mort/Folie - Malus : 5 - Symptôme spectaculaire et repoussant - Altération dangereuse globalement"
|
||||||
|
|
||||||
|
},
|
||||||
"warn": {
|
"warn": {
|
||||||
"notenoughdice": "L'Accomplissement et la Préservation doivent avoir 2 dés chacun"
|
"notenoughdice": "L'Accomplissement et la Préservation doivent avoir 2 dés chacun"
|
||||||
},
|
},
|
||||||
@ -123,7 +138,14 @@
|
|||||||
"type": "Type",
|
"type": "Type",
|
||||||
"applyimpact": "Appliquer l'impact",
|
"applyimpact": "Appliquer l'impact",
|
||||||
"applybonus": "Appliquer le bonus",
|
"applybonus": "Appliquer le bonus",
|
||||||
"bonuspool": "Bonus disponibles"
|
"bonuspool": "Bonus disponibles",
|
||||||
|
"cephaly": "Cephalie",
|
||||||
|
"elegy": "Elégie",
|
||||||
|
"entelechy": "Entéléchie",
|
||||||
|
"mekany": "Mekanë",
|
||||||
|
"psyche": "Psyché",
|
||||||
|
"scoria": "Scorie",
|
||||||
|
"cephalydifficulty": "Difficulté de la Céphalie"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -46,6 +46,8 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
impactsMalus: this.actor.getImpactsMalus(),
|
impactsMalus: this.actor.getImpactsMalus(),
|
||||||
archetype: duplicate(this.actor.getArchetype()),
|
archetype: duplicate(this.actor.getArchetype()),
|
||||||
equipements: this.actor.getEquipments(),
|
equipements: this.actor.getEquipments(),
|
||||||
|
hasCephaly: EcrymeUtility.hasCephaly(),
|
||||||
|
cephalySkills: this.actor.getCephalySkills(),
|
||||||
subActors: duplicate(this.actor.getSubActors()),
|
subActors: duplicate(this.actor.getSubActors()),
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
||||||
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
||||||
@ -121,7 +123,11 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
let categKey = $(event.currentTarget).data("category-key")
|
let categKey = $(event.currentTarget).data("category-key")
|
||||||
let skillKey = $(event.currentTarget).data("skill-key")
|
let skillKey = $(event.currentTarget).data("skill-key")
|
||||||
this.actor.rollSkillConfront(categKey, skillKey)
|
this.actor.rollSkillConfront(categKey, skillKey)
|
||||||
});
|
});
|
||||||
|
html.find('.roll-cephaly').click((event) => {
|
||||||
|
let skillKey = $(event.currentTarget).data("skill-key")
|
||||||
|
this.actor.rollCephalySkillConfront(skillKey)
|
||||||
|
});
|
||||||
html.find('.roll-weapon-confront').click((event) => {
|
html.find('.roll-weapon-confront').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let weaponId = li.data("item-id");
|
let weaponId = li.data("item-id");
|
||||||
|
@ -109,6 +109,11 @@ export class EcrymeActor extends Actor {
|
|||||||
return skills
|
return skills
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
getCephalySkills() {
|
||||||
|
let skills = duplicate(this.system.cephaly.skilllist)
|
||||||
|
return skills
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
getImpacts() {
|
getImpacts() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'impact') || [])
|
let comp = duplicate(this.items.filter(item => item.type == 'impact') || [])
|
||||||
return comp;
|
return comp;
|
||||||
@ -323,7 +328,7 @@ export class EcrymeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCommonRollData() {
|
getCommonRollData() {
|
||||||
this.system.internals.confrontbonus = 5 // TO BE REMOVED!!!!
|
//this.system.internals.confrontbonus = 5 // TO BE REMOVED!!!!
|
||||||
let rollData = EcrymeUtility.getBasicRollData()
|
let rollData = EcrymeUtility.getBasicRollData()
|
||||||
rollData.alias = this.name
|
rollData.alias = this.name
|
||||||
rollData.actorImg = this.img
|
rollData.actorImg = this.img
|
||||||
@ -371,10 +376,30 @@ export class EcrymeActor extends Actor {
|
|||||||
rollData.executionTotal = rollData.skill.value
|
rollData.executionTotal = rollData.skill.value
|
||||||
rollData.preservationTotal = rollData.skill.value
|
rollData.preservationTotal = rollData.skill.value
|
||||||
rollData.applyTranscendence = "execution"
|
rollData.applyTranscendence = "execution"
|
||||||
|
rollData.traitsBonus = duplicate(rollData.traits)
|
||||||
|
rollData.traitsMalus = duplicate(rollData.traits)
|
||||||
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
||||||
confrontStartDialog.render(true)
|
confrontStartDialog.render(true)
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollCephalySkillConfront(skillKey) {
|
||||||
|
let rollData = this.getCommonRollData()
|
||||||
|
rollData.mode = "cephaly"
|
||||||
|
rollData.skill = duplicate(this.system.cephaly.skilllist[skillKey])
|
||||||
|
rollData.img = rollData.skill.img
|
||||||
|
rollData.skill.categKey = "cephaly"
|
||||||
|
rollData.skill.skillKey = skillKey
|
||||||
|
//rollData.impactMalus = this.getImpactMalus(categKey)
|
||||||
|
rollData.title = game.i18n.localize("ECRY.ui.cephaly") + " : " + game.i18n.localize(rollData.skill.name)
|
||||||
|
rollData.executionTotal = rollData.skill.value
|
||||||
|
rollData.preservationTotal = rollData.skill.value
|
||||||
|
rollData.traitsBonus = duplicate(rollData.traits)
|
||||||
|
rollData.traitsMalus = duplicate(rollData.traits)
|
||||||
|
rollData.applyTranscendence = "execution"
|
||||||
|
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
||||||
|
confrontStartDialog.render(true)
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollWeaponConfront(weaponId) {
|
async rollWeaponConfront(weaponId) {
|
||||||
let weapon = this.items.get(weaponId)
|
let weapon = this.items.get(weaponId)
|
||||||
|
@ -4,7 +4,32 @@ import { EcrymeCommands } from "../app/ecryme-commands.js";
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const __maxImpacts = { superficial: 4, light: 3, serious: 2, major: 1 }
|
const __maxImpacts = { superficial: 4, light: 3, serious: 2, major: 1 }
|
||||||
const __nextImpacts = { superficial: "light", light: "serious", serious: "major", major: "major" }
|
const __nextImpacts = { superficial: "light", light: "serious", serious: "major", major: "major" }
|
||||||
const __effect2Impact= [ "none", "superficial", "superficial", "light", "light", "serious", "serious", "major", "major" ]
|
const __effect2Impact = ["none", "superficial", "superficial", "light", "light", "serious", "serious", "major", "major"]
|
||||||
|
const __cephalySuccess = {
|
||||||
|
1: "cephaly-success-2",
|
||||||
|
2: "cephaly-success-2",
|
||||||
|
3: "cephaly-success-4",
|
||||||
|
4: "cephaly-success-4",
|
||||||
|
5: "cephaly-success-6",
|
||||||
|
6: "cephaly-success-6",
|
||||||
|
7: "cephaly-success-8",
|
||||||
|
8: "cephaly-success-8",
|
||||||
|
9: "cephaly-success-9",
|
||||||
|
10: "cephaly-success-10"
|
||||||
|
}
|
||||||
|
const __cephalyFailure = {
|
||||||
|
1: "cephaly-failure-2",
|
||||||
|
2: "cephaly-failure-2",
|
||||||
|
3: "cephaly-failure-4",
|
||||||
|
4: "cephaly-failure-4",
|
||||||
|
5: "cephaly-failure-6",
|
||||||
|
6: "cephaly-failure-6",
|
||||||
|
7: "cephaly-failure-8",
|
||||||
|
8: "cephaly-failure-8",
|
||||||
|
9: "cephaly-failure-9",
|
||||||
|
10: "cephaly-failure-10"
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class EcrymeUtility {
|
export class EcrymeUtility {
|
||||||
|
|
||||||
@ -56,6 +81,9 @@ export class EcrymeUtility {
|
|||||||
accum += block.fn(i);
|
accum += block.fn(i);
|
||||||
return accum;
|
return accum;
|
||||||
})
|
})
|
||||||
|
Handlebars.registerHelper('isGM', function () {
|
||||||
|
return game.user.isGM
|
||||||
|
})
|
||||||
|
|
||||||
game.settings.register("fvtt-ecryme", "ecryme-game-level", {
|
game.settings.register("fvtt-ecryme", "ecryme-game-level", {
|
||||||
name: game.i18n.localize("ECRY.settings.gamelevel"),
|
name: game.i18n.localize("ECRY.settings.gamelevel"),
|
||||||
@ -76,6 +104,12 @@ export class EcrymeUtility {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------- */
|
||||||
|
static hasCephaly() {
|
||||||
|
let level = game.settings.get("fvtt-ecryme", "ecryme-game-level")
|
||||||
|
return level != "level_e"
|
||||||
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static buildSkillConfig() {
|
static buildSkillConfig() {
|
||||||
game.system.ecryme.config.skills = {}
|
game.system.ecryme.config.skills = {}
|
||||||
@ -135,10 +169,10 @@ export class EcrymeUtility {
|
|||||||
// Compute margin
|
// Compute margin
|
||||||
confront.marginExecution = this.confrontData1.executionTotal - this.confrontData2.preservationTotal
|
confront.marginExecution = this.confrontData1.executionTotal - this.confrontData2.preservationTotal
|
||||||
confront.marginPreservation = this.confrontData1.preservationTotal - this.confrontData2.executionTotal
|
confront.marginPreservation = this.confrontData1.preservationTotal - this.confrontData2.executionTotal
|
||||||
console.log(confront.marginExecution, confront.marginPreservation)
|
console.log(confront.marginExecution, confront.marginPreservation)
|
||||||
// Filter margin
|
// Filter margin
|
||||||
let maxMargin // Dummy max
|
let maxMargin // Dummy max
|
||||||
if ( confront.marginExecution > 0) { // Successful hit
|
if (confront.marginExecution > 0) { // Successful hit
|
||||||
// Limit with skill+spec
|
// Limit with skill+spec
|
||||||
maxMargin = confront.rollData1.skill.value + ((confront.rollData1.spec) ? 2 : 0)
|
maxMargin = confront.rollData1.skill.value + ((confront.rollData1.spec) ? 2 : 0)
|
||||||
confront.marginExecution = Math.min(confront.marginExecution, maxMargin)
|
confront.marginExecution = Math.min(confront.marginExecution, maxMargin)
|
||||||
@ -147,7 +181,7 @@ export class EcrymeUtility {
|
|||||||
confront.marginExecution = -Math.min(Math.abs(confront.marginExecution), maxMargin)
|
confront.marginExecution = -Math.min(Math.abs(confront.marginExecution), maxMargin)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( confront.marginPreservation > 0) { // Successful defense
|
if (confront.marginPreservation > 0) { // Successful defense
|
||||||
// Limit with skill+spec
|
// Limit with skill+spec
|
||||||
maxMargin = confront.rollData1.skill.value + ((confront.rollData1.spec) ? 2 : 0)
|
maxMargin = confront.rollData1.skill.value + ((confront.rollData1.spec) ? 2 : 0)
|
||||||
confront.marginPreservation = Math.min(confront.marginPreservation, maxMargin)
|
confront.marginPreservation = Math.min(confront.marginPreservation, maxMargin)
|
||||||
@ -161,8 +195,8 @@ export class EcrymeUtility {
|
|||||||
if (confront.rollData1.weapon && confront.marginExecution > 0) {
|
if (confront.rollData1.weapon && confront.marginExecution > 0) {
|
||||||
confront.effectExecution += confront.rollData1.weapon.system.effect
|
confront.effectExecution += confront.rollData1.weapon.system.effect
|
||||||
confront.impactExecution = this.getImpactFromEffect(confront.effectExecution)
|
confront.impactExecution = this.getImpactFromEffect(confront.effectExecution)
|
||||||
}
|
}
|
||||||
if ( confront.marginExecution < 0) {
|
if (confront.marginExecution < 0) {
|
||||||
confront.bonus2 = -confront.marginExecution
|
confront.bonus2 = -confront.marginExecution
|
||||||
}
|
}
|
||||||
confront.effectPreservation = confront.marginPreservation
|
confront.effectPreservation = confront.marginPreservation
|
||||||
@ -170,7 +204,7 @@ export class EcrymeUtility {
|
|||||||
confront.effectPreservation = - (Math.abs(confront.marginPreservation) + confront.rollData2.weapon.system.effect)
|
confront.effectPreservation = - (Math.abs(confront.marginPreservation) + confront.rollData2.weapon.system.effect)
|
||||||
confront.impactPreservation = this.getImpactFromEffect(Math.abs(confront.effectPreservation))
|
confront.impactPreservation = this.getImpactFromEffect(Math.abs(confront.effectPreservation))
|
||||||
}
|
}
|
||||||
if ( confront.marginPreservation > 0) {
|
if (confront.marginPreservation > 0) {
|
||||||
confront.bonus1 = -confront.marginPreservation
|
confront.bonus1 = -confront.marginPreservation
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,6 +216,27 @@ export class EcrymeUtility {
|
|||||||
|
|
||||||
this.lastConfront = confront
|
this.lastConfront = confront
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static async manageCephalyDifficulty(rollData, difficulty) {
|
||||||
|
rollData.difficulty = Number(difficulty)
|
||||||
|
if (rollData.executionTotal > difficulty) {
|
||||||
|
rollData.marginExecution = rollData.executionTotal - difficulty
|
||||||
|
rollData.cephalySuccess = "ECRY.rule." + __cephalySuccess[(rollData.marginExecution > 10) ? 10 : rollData.marginExecution]
|
||||||
|
} else {
|
||||||
|
rollData.marginExecution = -1
|
||||||
|
}
|
||||||
|
if (rollData.preservationTotal < difficulty) {
|
||||||
|
rollData.marginPreservation = difficulty - rollData.preservationTotal
|
||||||
|
rollData.cephalyFailure = "ECRY.rule." + __cephalyFailure[(rollData.marginPreservation > 10) ? 10 : rollData.marginPreservation]
|
||||||
|
} else {
|
||||||
|
rollData.marginPreservation = -1
|
||||||
|
}
|
||||||
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
|
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-cephaly-result.hbs`, rollData)
|
||||||
|
})
|
||||||
|
msg.setFlag("world", "ecryme-rolldata", rollData)
|
||||||
|
console.log("Cephaly result", rollData)
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static manageConfrontation(rollData) {
|
static manageConfrontation(rollData) {
|
||||||
@ -237,21 +292,24 @@ export class EcrymeUtility {
|
|||||||
let rollData = message.getFlag("world", "ecryme-rolldata")
|
let rollData = message.getFlag("world", "ecryme-rolldata")
|
||||||
EcrymeUtility.manageConfrontation(rollData)
|
EcrymeUtility.manageConfrontation(rollData)
|
||||||
})
|
})
|
||||||
|
html.on("click", '.button-apply-cephaly-difficulty', event => {
|
||||||
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
|
let message = game.messages.get(messageId)
|
||||||
|
let rollData = message.getFlag("world", "ecryme-rolldata")
|
||||||
|
let difficulty = $("#" + rollData.rollId + "-cephaly-difficulty").val()
|
||||||
|
EcrymeUtility.manageCephalyDifficulty(rollData, difficulty)
|
||||||
|
})
|
||||||
html.on("click", '.button-apply-impact', event => {
|
html.on("click", '.button-apply-impact', event => {
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
||||||
actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1)
|
actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1)
|
||||||
})
|
})
|
||||||
html.on("click", '.button-apply-bonus', event => {
|
html.on("click", '.button-apply-bonus', event => {
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
||||||
actor.modifyConfrontBonus( $(event.currentTarget).data("bonus") )
|
actor.modifyConfrontBonus($(event.currentTarget).data("bonus"))
|
||||||
})
|
|
||||||
html.on("click", '.draw-tarot-card', event => {
|
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
|
||||||
this.drawDeckCard(messageId)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,25 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
msg.setFlag("world", "ecryme-rolldata", this.rollData)
|
msg.setFlag("world", "ecryme-rolldata", this.rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async refreshDice() {
|
||||||
|
this.rollData.filter = "execution"
|
||||||
|
let content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs", this.rollData )
|
||||||
|
content += await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs", this.rollData )
|
||||||
|
$("#confront-execution").html(content)
|
||||||
|
|
||||||
|
this.rollData.filter = "preservation"
|
||||||
|
content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs", this.rollData )
|
||||||
|
content += await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs", this.rollData )
|
||||||
|
$("#confront-preservation").html(content)
|
||||||
|
|
||||||
|
this.rollData.filter = "mainpool"
|
||||||
|
content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs", this.rollData )
|
||||||
|
$("#confront-dice-pool").html(content)
|
||||||
|
content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs", this.rollData )
|
||||||
|
$("#confront-bonus-pool").html(content)
|
||||||
|
|
||||||
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async refreshDialog() {
|
async refreshDialog() {
|
||||||
const content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs", this.rollData)
|
const content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs", this.rollData)
|
||||||
@ -69,7 +88,7 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
super._onDragStart(event)
|
super._onDragStart(event)
|
||||||
let dragType = $(event.srcElement).data("drag-type")
|
let dragType = $(event.srcElement).data("drag-type")
|
||||||
let diceData = {}
|
let diceData = {}
|
||||||
console.log("DRAGTYPE", dragType)
|
//console.log("DRAGTYPE", dragType)
|
||||||
if (dragType == "dice") {
|
if (dragType == "dice") {
|
||||||
diceData = {
|
diceData = {
|
||||||
dragType: "dice",
|
dragType: "dice",
|
||||||
@ -157,43 +176,45 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
rollData.preservationTotal = rollData.confrontBonus.filter(d => d.location == "preservation").reduce((previous, current) => {
|
rollData.preservationTotal = rollData.confrontBonus.filter(d => d.location == "preservation").reduce((previous, current) => {
|
||||||
return previous + 1
|
return previous + 1
|
||||||
}, rollData.preservationTotal)
|
}, rollData.preservationTotal)
|
||||||
|
|
||||||
this.processTranscendence()
|
this.processTranscendence()
|
||||||
|
|
||||||
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
|
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
|
||||||
rollData.spec = duplicate(actor.getSpecialization(rollData.selectedSpecs[0]))
|
rollData.spec = duplicate(actor.getSpecialization(rollData.selectedSpecs[0]))
|
||||||
this.rollData.executionTotal += "+2"
|
rollData.specApplied = true
|
||||||
this.rollData.preservationTotal += "+2"
|
rollData.executionTotal += 2
|
||||||
|
rollData.preservationTotal += 2
|
||||||
|
}
|
||||||
|
if ( rollData.specApplied && rollData.selectedSpecs.length == 0) {
|
||||||
|
rollData.spec = undefined
|
||||||
|
rollData.specApplied = false
|
||||||
}
|
}
|
||||||
rollData.bonusMalusTraits = 0
|
rollData.bonusMalusTraits = 0
|
||||||
for (let t of rollData.traits) {
|
for (let t of rollData.traitsBonus) {
|
||||||
t.isBonus = false
|
t.activated = false
|
||||||
t.isMalus = false
|
|
||||||
}
|
}
|
||||||
if (rollData.traitsBonus && rollData.traitsBonus.length > 0) {
|
for (let t of rollData.traitsMalus) {
|
||||||
rollData.traitsBonusList = []
|
t.activated = false
|
||||||
for (let id of rollData.traitsBonus) {
|
}
|
||||||
let trait = rollData.traits.find(t => t._id == id)
|
if (rollData.traitsBonusSelected && rollData.traitsBonusSelected.length > 0) {
|
||||||
trait.isBonus = true
|
for (let id of rollData.traitsBonusSelected) {
|
||||||
rollData.traitsBonusList.push(trait)
|
let trait = rollData.traitsBonus.find(t => t._id == id)
|
||||||
|
trait.activated = true
|
||||||
rollData.bonusMalusTraits += trait.system.level
|
rollData.bonusMalusTraits += trait.system.level
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rollData.traitsMalus && rollData.traitsMalus.length > 0) {
|
if (rollData.traitsMalusSelected && rollData.traitsMalusSelected.length > 0) {
|
||||||
rollData.traitsMalusList = []
|
for (let id of rollData.traitsMalusSelected) {
|
||||||
for (let id of rollData.traitsMalus) {
|
let trait = rollData.traitsMalus.find(t => t._id == id)
|
||||||
let trait = rollData.traits.find(t => t._id == id)
|
trait.activated = true
|
||||||
trait.isMalus = true
|
|
||||||
rollData.traitsMalusList.push(trait)
|
|
||||||
rollData.bonusMalusTraits -= trait.system.level
|
rollData.bonusMalusTraits -= trait.system.level
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rollData.executionTotal += rollData.bonusMalusTraits
|
|
||||||
rollData.executionTotal += rollData.bonusMalusPerso
|
|
||||||
|
|
||||||
rollData.preservationTotal += rollData.bonusMalusTraits
|
rollData.executionTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso
|
||||||
rollData.preservationTotal += rollData.bonusMalusPerso
|
rollData.preservationTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso
|
||||||
|
|
||||||
this.refreshDialog().catch("Error on refresh confrontation dialog")
|
this.refreshDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -209,11 +230,11 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
this.computeTotals()
|
this.computeTotals()
|
||||||
})
|
})
|
||||||
html.find('#roll-trait-bonus').change((event) => {
|
html.find('#roll-trait-bonus').change((event) => {
|
||||||
this.rollData.traitsBonus = $('#roll-trait-bonus').val()
|
this.rollData.traitsBonusSelected = $('#roll-trait-bonus').val()
|
||||||
this.computeTotals()
|
this.computeTotals()
|
||||||
})
|
})
|
||||||
html.find('#roll-trait-malus').change((event) => {
|
html.find('#roll-trait-malus').change((event) => {
|
||||||
this.rollData.traitsMalus = $('#roll-trait-malus').val()
|
this.rollData.traitsMalusSelected = $('#roll-trait-malus').val()
|
||||||
this.computeTotals()
|
this.computeTotals()
|
||||||
})
|
})
|
||||||
html.find('#roll-select-transcendence').change((event) => {
|
html.find('#roll-select-transcendence').change((event) => {
|
||||||
|
@ -31,8 +31,7 @@
|
|||||||
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/raw/branch/master/system.json",
|
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/raw/branch/master/system.json",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "10",
|
"minimum": "10",
|
||||||
"verified": "11",
|
"verified": "11"
|
||||||
"maximum": "11"
|
|
||||||
},
|
},
|
||||||
"id": "fvtt-ecryme",
|
"id": "fvtt-ecryme",
|
||||||
"primaryTokenAttribute": "secondary.health",
|
"primaryTokenAttribute": "secondary.health",
|
||||||
@ -43,7 +42,7 @@
|
|||||||
],
|
],
|
||||||
"title": "Ecryme, le Jeu de Rôles",
|
"title": "Ecryme, le Jeu de Rôles",
|
||||||
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme",
|
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme",
|
||||||
"version": "11.0.4",
|
"version": "11.0.8",
|
||||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.4.zip",
|
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.8.zip",
|
||||||
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
|
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
|
||||||
}
|
}
|
@ -191,7 +191,7 @@
|
|||||||
"annency",
|
"annency",
|
||||||
"boheme",
|
"boheme",
|
||||||
"contact",
|
"contact",
|
||||||
"confrontation"
|
"maneuver"
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
"common": {
|
"common": {
|
||||||
@ -203,6 +203,11 @@
|
|||||||
"costunit": ""
|
"costunit": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"maneuver": {
|
||||||
|
"templates": [
|
||||||
|
"common"
|
||||||
|
]
|
||||||
|
},
|
||||||
"confrontation": {
|
"confrontation": {
|
||||||
"templates": [
|
"templates": [
|
||||||
"common"
|
"common"
|
||||||
|
@ -51,6 +51,9 @@
|
|||||||
<a class="item" data-tab="competences">{{localize "ECRY.ui.skills"}}</a>
|
<a class="item" data-tab="competences">{{localize "ECRY.ui.skills"}}</a>
|
||||||
<a class="item" data-tab="traits">{{localize "ECRY.ui.traits"}}</a>
|
<a class="item" data-tab="traits">{{localize "ECRY.ui.traits"}}</a>
|
||||||
<a class="item" data-tab="combat">{{localize "ECRY.ui.healthcombat"}}</a>
|
<a class="item" data-tab="combat">{{localize "ECRY.ui.healthcombat"}}</a>
|
||||||
|
{{#if hasCephaly}}
|
||||||
|
<a class="item" data-tab="cephaly">{{localize "ECRY.ui.cephaly"}}</a>
|
||||||
|
{{/if}}
|
||||||
<a class="item" data-tab="equipements">{{localize "ECRY.ui.equipment"}}</a>
|
<a class="item" data-tab="equipements">{{localize "ECRY.ui.equipment"}}</a>
|
||||||
<a class="item" data-tab="biodata">{{localize "ECRY.ui.bionotes"}}</a>
|
<a class="item" data-tab="biodata">{{localize "ECRY.ui.bionotes"}}</a>
|
||||||
</nav>
|
</nav>
|
||||||
@ -119,6 +122,34 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if hasCephaly}}
|
||||||
|
{{!-- Cephaly Tab --}}
|
||||||
|
<div class="tab cephaly" data-group="primary" data-tab="cephaly">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<ul class="stat-list alternate-list item-list">
|
||||||
|
{{#each cephalySkills as |skill skillkey|}}
|
||||||
|
<li class="item flexrow list-item">
|
||||||
|
<span class="item-name-label-long">
|
||||||
|
<a class="roll-cephaly" data-category-key="cephaly" data-skill-key="{{skillkey}}">
|
||||||
|
<i class="fa-solid fa-dice-d6"></i>
|
||||||
|
{{localize skill.name}}
|
||||||
|
</a></span>
|
||||||
|
<select class="item-field-label-short" type="text"
|
||||||
|
name="system.cephaly.skilllist.{{skillkey}}.value" value="{{skill.value}}"
|
||||||
|
data-dtype="Number">
|
||||||
|
{{#select skill.value}}
|
||||||
|
{{#each @root.config.skillLevel as |level key| }}
|
||||||
|
<option value="{{level}}">{{level}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<div class="tab traits" data-group="primary" data-tab="traits">
|
<div class="tab traits" data-group="primary" data-tab="traits">
|
||||||
|
|
||||||
|
30
templates/chat/chat-cephaly-result.hbs
Normal file
30
templates/chat/chat-cephaly-result.hbs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<div class="chat-message-header">
|
||||||
|
{{#if actorImg}}
|
||||||
|
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
||||||
|
{{/if}}
|
||||||
|
<h4 class="chat-actor-name">{{alias}}</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
{{#if img}}
|
||||||
|
<div>
|
||||||
|
<img class="chat-icon" src="{{img}}" alt="{{alias}}" />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<ul>
|
||||||
|
<li>{{localize "ECRY.ui.cephaly"}} : {{localize skill.name}}</li>
|
||||||
|
{{#if (gt marginExecution 0)}}
|
||||||
|
<li>{{localize "ECRY.ui.execution"}} {{executionTotal}} vs {{difficulty}} : {{marginExecution}}</li>
|
||||||
|
<li>{{localize cephalySuccess}}</li>
|
||||||
|
{{/if}}
|
||||||
|
{{#if (gt marginPreservation 0)}}
|
||||||
|
<li>{{localize "ECRY.ui.preservation"}} {{preservationTotal}} vs {{difficulty}} : {{marginPreservation}}</li>
|
||||||
|
<li>{{localize cephalyFailure}}</li>
|
||||||
|
{{/if}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
@ -15,13 +15,47 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
|
{{#if (eq mode "cephaly")}}
|
||||||
|
<li>{{localize "ECRY.ui.cephaly"}} : {{localize skill.name}} </li>
|
||||||
|
{{else}}
|
||||||
<li>Confrontation : {{alias}} </li>
|
<li>Confrontation : {{alias}} </li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<li>{{localize skill.name}}: {{skill.value}} </li>
|
<li>{{localize skill.name}}: {{skill.value}} </li>
|
||||||
{{#if spec}}
|
{{#if spec}}
|
||||||
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+2) </li>
|
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+2) </li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
{{#each traitsBonus as |trait idx|}}
|
||||||
|
{{#if trait.activated}}
|
||||||
|
<li>{{localize "ECRY.chat.traitbonus"}}: {{trait.name}} ({{trait.system.level}}) </li>
|
||||||
|
{{/if}}
|
||||||
|
{{/each}}
|
||||||
|
{{#each traitsMalus as |trait idx|}}
|
||||||
|
{{#if trait.activated}}
|
||||||
|
<li>{{localize "ECRY.chat.traitmalus"}}: {{trait.name}} ({{trait.system.level}}) </li>
|
||||||
|
{{/if}}
|
||||||
|
{{/each}}
|
||||||
|
{{#if bonusMalusTraits}}
|
||||||
|
<li>{{localize "ECRY.chat.bonusmalustraits"}}: {{bonusMalusTraits}} </li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
<button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button>
|
{{#if (isGM)}}
|
||||||
|
{{#if (eq mode "cephaly")}}
|
||||||
|
<div>
|
||||||
|
<span>{{localize "ECRY.chat.difficulty"}}</span>
|
||||||
|
<select id="{{rollId}}-cephaly-difficulty" name="cephaly-difficulty">
|
||||||
|
{{#for 1 20 1}}
|
||||||
|
<option value="{{this}}">{{this}}</option>
|
||||||
|
{{/for}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<button class="button-apply-cephaly-difficulty">{{localize "ECRY.ui.cephalydifficulty"}}</button>
|
||||||
|
{{else}}
|
||||||
|
<button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
@ -11,10 +11,9 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3>{{localize "ECRY.ui.execution"}} : <span id="execution-total">{{executionTotal}}</span> </h3>
|
<h3>{{localize "ECRY.ui.execution"}} : <span id="execution-total">{{executionTotal}}</span> </h3>
|
||||||
<div id="confront-execution" class="flexrow confront-area confront-execution-area">
|
<div id="confront-execution" class="flexrow confront-area confront-execution-area">
|
||||||
{{> systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs filter="execution"}}
|
{{> systems/fvtt-ecryme/templates/dialogs/partial-confront-dice-area.hbs filter="execution"}}
|
||||||
<br>
|
|
||||||
{{> systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs filter="execution"}}
|
{{> systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs filter="execution"}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -73,20 +72,22 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if skill.spec}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
|
||||||
<select class="" id="roll-specialization" data-type="String" multiple>
|
<select class="" id="roll-specialization" data-type="String" multiple>
|
||||||
{{#each skill.spec as |spec idx|}}
|
{{#each skill.spec as |spec idx|}}
|
||||||
<option value="{{spec.id}}">{{spec.name}}</option>
|
<option value="{{spec.id}}" {{#if (eq spec.name @root.spec.name)}}selected{{/if}}>{{spec.name}}</option>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.traitbonus"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.traitbonus"}} : </span>
|
||||||
<select class="" id="roll-trait-bonus" data-type="String" multiple>
|
<select class="" id="roll-trait-bonus" data-type="String" multiple>
|
||||||
{{#each traits as | trait idx|}}
|
{{#each traitsBonus as |trait idx|}}
|
||||||
<option value="{{trait._id}}" {{#if trait.isBonus}}selected{{/if}}>{{trait.name}} ({{trait.system.level}})</option>
|
<option value="{{trait._id}}" {{#if trait.activated}}selected{{/if}}>{{trait.name}} ({{trait.system.level}})</option>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -94,13 +95,12 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.traitmalus"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.traitmalus"}} : </span>
|
||||||
<select class="" id="roll-trait-malus" data-type="String" multiple>
|
<select class="" id="roll-trait-malus" data-type="String" multiple>
|
||||||
{{#each traits as | trait idx|}}
|
{{#each traitsMalus as |trait idx|}}
|
||||||
<option value="{{trait._id}}" {{#if trait.isMalus}}selected{{/if}}">{{trait.name}} ({{trait.system.level}})</option>
|
<option value="{{trait._id}}" {{#if trait.activated}}selected{{/if}}>{{trait.name}} ({{trait.system.level}})</option>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Bonus/Malus : </span>
|
<span class="roll-dialog-label">Bonus/Malus : </span>
|
||||||
<select id="bonusMalusPerso" name="bonusMalusPerso">
|
<select id="bonusMalusPerso" name="bonusMalusPerso">
|
||||||
|
25
templates/items/item-equipment-sheet.hbs
Normal file
25
templates/items/item-equipment-sheet.hbs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
<header class="sheet-header">
|
||||||
|
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||||
|
<div class="header-fields">
|
||||||
|
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{> systems/fvtt-ecryme/templates/items/partial-item-nav.hbs}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
|
||||||
|
{{> systems/fvtt-ecryme/templates/items/partial-item-description.hbs}}
|
||||||
|
|
||||||
|
<div class="tab details" data-group="primary" data-tab="details">
|
||||||
|
|
||||||
|
{{> systems/fvtt-ecryme/templates/items/partial-item-equipment.hbs}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</form>
|
@ -7,7 +7,7 @@
|
|||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-field-label-long">{{localize "ECRY.ui.cost"}}</label>
|
<label class="item-field-label-long">{{localize "ECRY.ui.cost"}}</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.cost" value="{{system.cost}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.cost" value="{{system.cost}}" data-dtype="Number" />
|
||||||
<select class="item-field-label-medium" type="text" name="system.costunit" value="{{system.costunit}}" data-dtype="Number">
|
<select class="item-field-label-medium" type="text" name="system.costunit" value="{{system.costunit}}" data-dtype="String">
|
||||||
{{#select system.costunit}}
|
{{#select system.costunit}}
|
||||||
{{#each config.costUnits as |unit key| }}
|
{{#each config.costUnits as |unit key| }}
|
||||||
<option value="{{key}}">{{localize unit.name}}</option>
|
<option value="{{key}}">{{localize unit.name}}</option>
|
||||||
|
Reference in New Issue
Block a user