Compare commits

..

13 Commits

Author SHA1 Message Date
36c9945886 Update 2023-03-09 17:35:09 +01:00
bfad3d1e5f Update 2023-03-09 13:53:19 +01:00
7827e07e1c Minot fixes 2023-03-04 17:34:18 +01:00
3a8ad674bd Add new items 2023-02-27 22:04:03 +01:00
c8f7c7c1e5 Money 2023-02-21 17:53:00 +01:00
d922d77736 Minor changes 2023-02-20 18:38:00 +01:00
7137de0983 Minor changes 2023-02-20 10:16:17 +01:00
46b129cf81 Various fixes 2023-02-18 23:19:10 +01:00
fc9a878f3a Enhance sheets 2023-02-14 15:45:59 +01:00
db8cf30e06 Enhance translation keys 2023-02-14 13:46:59 +01:00
8524653c6b Update description data 2023-02-11 09:01:00 +01:00
b962f9ed41 Update description data 2023-02-10 20:31:18 +01:00
87bb1b6e93 Update powers 2023-02-08 21:19:53 +01:00
50 changed files with 3832 additions and 2497 deletions

View File

@@ -1,4 +1,28 @@
{
"ACTOR": {
"TypeCharacter": "Character",
"TypeNpc": "NPC",
"TypeMonster": "Monster"
},
"ITEM": {
"TypeWeapon": "Weapon",
"TypeEquipment": "Equipment",
"TypeRace": "Race",
"TypeArmor": "Armor",
"TypeShield": "Shield",
"TypeSkill": "Skill",
"TypePower": "Power",
"TypeLanguage": "Language",
"TypeCondition": "Condition",
"TypeClass": "Class",
"TypeMoney": "Money",
"TypePotion": "Potion",
"TypePoison": "Poison",
"TypeTrap": "Trap",
"TypeClassitem": "Class item",
"TypeCompetency": "Competency"
},
"WH.conf.short": "Short",
"WH.conf.long": "Long",
"WH.conf.twohanded": "Two-Handed",
@@ -11,6 +35,7 @@
"WH.conf.mediumshield": "Medium",
"WH.conf.towershield": "Tower",
"WH.conf.polearm": "Polearm",
"WH.conf.special": "Special",
"WH.conf.head": "Head",
"WH.conf.cloak": "Cloak",
@@ -29,6 +54,12 @@
"WH.conf.beltpouch2": "Beltpouch 2",
"WH.conf.beltpouch3": "Beltpouch 3",
"WH.conf.unknown": "Unknown",
"WH.conf.yes": "Yes",
"WH.conf.no": "No",
"WH.conf.notapplicable": "Not applicable",
"WH.conf.undefined": "Not applicable",
"WH.ui.level": "Level",
"WH.ui.notes": "Notes",
@@ -43,6 +74,9 @@
"WH.ui.Strength": "Strength",
"WH.ui.Instinct": "Instinct",
"WH.ui.Dexterity": "Dexterity",
"WH.ui.savestr": "Str Save",
"WH.ui.savedex": "Dex Save",
"WH.ui.savemin": "Mind Save",
"WH.ui.Mind": "Mind",
"WH.ui.Type": "Type",
"WH.ui.HitPoints": "Hit Points",
@@ -75,6 +109,7 @@
"WH.ui.classSkills": "Class Skills",
"WH.ui.skills": "Skills based on level",
"WH.ui.isclassskill": "Class skill ?",
"WH.ui.israceskill": "Race skill ?",
"WH.ui.unlimited": "Unlimited use ?",
"WH.ui.currentuse": "Current use",
"WH.ui.maxuse": "Max use",
@@ -84,7 +119,90 @@
"WH.ui.conditions": "Conditions",
"WH.ui.effect": "Effect",
"WH.ui.main": "Main",
"WH.ui.combat": "Combat",
"WH.ui.skillstab": "Skills&Effects",
"WH.ui.powers": "Powers",
"WH.ui.equipment": "Equipment",
"WH.ui.biography": "Biography",
"WH.ui.race": "Race",
"WH.ui.class": "Class",
"WH.ui.religion": "Religion",
"WH.ui.origin": "Origin",
"WH.ui.age": "Age",
"WH.ui.height": "Height",
"WH.ui.eyes": "Eyes",
"WH.ui.hair": "Hair",
"WH.ui.preferredhand": "Preferred Hand",
"WH.ui.size": "Size",
"WH.ui.gender": "Gender",
"WH.ui.background": "Background",
"WH.ui.type": "Type",
"WH.ui.description": "Description",
"WH.ui.rawroll": "Raw Roll Formula (ex: 1d20+@statistics.str.value)",
"WH.ui.rawdamage": "Raw Damage Formula (ex: 1d6+(@statistics.str.value/2))",
"WH.ui.damage": "Damage",
"WH.ui.2hdamage": "2 Hands Damage",
"WH.ui.slotlocation": "Slot location",
"WH.ui.quantity": "Quantity",
"WH.ui.cost": "Cost",
"WH.ui.details": "Details",
"WH.ui.magicschool": "Magic School",
"WH.ui.providedslot": "Provided slot",
"WH.ui.skilllevelacquired": "Acquired at level",
"WH.ui.totalmoney": "Total money owned",
"WH.ui.preparetime": "Time to prepare",
"WH.ui.durationrounds": "Duration in rounds",
"WH.ui.application": "Application",
"WH.ui.savesdc": "Saves DC",
"WH.ui.savetype": "Save type",
"WH.ui.Touch": "Touch",
"WH.ui.Ingestion": "Ingestion",
"WH.ui.Weapon": "Weapon",
"WH.ui.halfdamage": "Half-damage",
"WH.ui.ignore": "Ignore effect",
"WH.ui.dcfind": "DC to find",
"WH.ui.dcdisable": "DC to disable",
"WH.ui.throwtohit": "Throw to hit",
"WH.ui.mandatoryfor": "Mandatory for",
"WH.ui.generic": "Generic",
"WH.ui.bless": "Bless",
"WH.ui.spell": "Spell",
"WH.ui.poison": "Poison",
"WH.ui.disease": "Disease",
"WH.ui.curse": "Curse",
"WH.ui.permanent": "Permanent",
"WH.ui.temporary": "Temporary",
"WH.ui.begin": "Begin",
"WH.ui.specialduration": "Special duration",
"WH.ui.infinite": "Infinite",
"WH.uiwithineor": "Within end of round",
"WH.ui.beginr": "Beginning of round",
"WH.ui.nextr": "Next round",
"WH.ui.nextcombat": "Next combat",
"WH.ui.untilendcombat": "Until end of combat",
"WH.ui.beginturn": "Beginning of turn",
"WH.ui.endturn": "End of turn",
"WH.ui.durationvalue": "Duration value",
"WH.ui.durationunit": "Duration unit",
"WH.ui.dcsave": "DC save",
"WH.ui.incubationtime": "Incubation time",
"WH.ui.diseaseduration": "Disease duration",
"WH.ui.ignoreeffect": "Ignore effect",
"WH.ui.raceSkills": "Race skills",
"WH.ui.identified": "Identified",
"WH.chat.save": "Save"
"WH.chat.save": "Save",
"WH.chat.mweaponmalus": "Multiple weapons malus ",
"WH.chat.diceresult": "Dice result",
"WH.chat.result": "Result",
"WH.chat.parysuccess": "Parry success !",
"WH.chat.paryfailed": "Parry failed !",
"WH.chat.rollformula": "Roll Formula",
"WH.chat.useshield":"Use shield ?",
"WH.chat.power": "Power",
"WH.chat.powerlevel": "Power Level",
"WH.notif.skillmaxuse": "Maximum skill usage reach - Use is not allowed",
"WH.notif.toomanyuses": "Maximum use reach - Roll is not allowed"
}

127
lang/it.json Normal file
View File

@@ -0,0 +1,127 @@
{
"WH.conf.short": "Corte",
"WH.conf.long": "Lunghe",
"WH.conf.twohanded": "A Due mani",
"WH.conf.shooting": "Da tiro",
"WH.conf.throwing": "Da lancio",
"WH.conf.lightarmor" : "Leggera",
"WH.conf.mediumarmor": "Media",
"WH.conf.heavyarmor": "Pesante",
"WH.conf.lightshield": "Leggero",
"WH.conf.mediumshield": "Medio",
"WH.conf.towershield": "Torre",
"WH.conf.polearm": "Armi in asta",
"WH.conf.special": "Speciali",
"WH.conf.head": "Testa",
"WH.conf.cloak": "Mantello",
"WH.conf.weapon1": "Mano primaria",
"WH.conf.weapon2": "Mano secondaria",
"WH.conf.gloves": "Guanti",
"WH.conf.dress": "Abito",
"WH.conf.boots": "Stivali",
"WH.conf.ring": "Anelli",
"WH.conf.belt": "Cintura",
"WH.conf.quiver": "Faretra",
"WH.conf.armor": "Armatura",
"WH.conf.shield": "Scudo",
"WH.conf.backpack": "Zaino",
"WH.conf.beltpouch1": "Borsa da cintura 1",
"WH.conf.beltpouch2": "Borsa da cintura 2",
"WH.conf.beltpouch3": "Borsa da cintura 3",
"WH.ui.level": "Livello",
"WH.ui.notes": "Note",
"WH.ui.hpprog": "Progressione PF",
"WH.ui.lan": "Lingue",
"WH.ui.attrbonus": "Attributi",
"WH.ui.weapons": "Armi",
"WH.ui.armors": "Armature",
"WH.ui.shields": "Scudi",
"WH.ui.weapon": "Arma",
"WH.ui.Strength": "Fisico",
"WH.ui.Instinct": "Istinto",
"WH.ui.Dexterity": "Istinto",
"WH.ui.Mind": "Mente",
"WH.ui.Type": "Tipo",
"WH.ui.HitPoints": "Punti ferita",
"WH.ui.Defence": "Difesa",
"WH.ui.Throw2HitM": "TxC (corpo a corpo)",
"WH.ui.Throw2HitR": "TxC (distanza)",
"WH.ui.Mana": "Mana",
"WH.ui.Initiative": "Iniziativa",
"WH.ui.Movement": "Movimento (Terra)",
"WH.ui.MovementSwim": "Movimento (Nuoto)",
"WH.ui.MovementFly": "Movimento (Volare)",
"WH.ui.power": "Potere",
"WH.ui.Qty": "Quantitá",
"WH.ui.maxslots": "Max slots",
"WH.ui.slotsused": "Slots usati",
"WH.ui.Damage": "Danni",
"WH.ui.parrybonus": "Bonus a parata",
"WH.ui.damagereduction": "Riduzione danno",
"WH.ui.save": "Salva",
"WH.ui.XP": "PE",
"WH.ui.xphp": "Progressione PF",
"WH.ui.Knowledge": "Conoscenze",
"WH.ui.malusmultiweapon": "Malus nell uso di due armi",
"WH.ui.drbonus": "Bonus RD",
"WH.ui.parrybonustotal": "Bonus Parata totale",
"WH.ui.drbonustotal": "Bonus RD totale",
"WH.ui.counterspell": "Contropotere",
"WH.ui.createitem": "Bonus ai tiri percentuali",
"WH.ui.classSkills": "Abilitá di classe",
"WH.ui.skills": "Abilitá Aggiuntiva",
"WH.ui.isclassskill": "Abilitá di classe?",
"WH.ui.unlimited": "Usi illimitati?",
"WH.ui.currentuse": "Numero di usi",
"WH.ui.maxuse": "Usi Massimi",
"WH.ui.languages": "Lingue",
"WH.ui.languagesbonus": "Bonus a linguaggi conosciuti (men/2)",
"WH.ui.competency": "Competenze",
"WH.ui.conditions": "Condizione",
"WH.ui.effect": "Effetto",
"WH.ui.main": "Principale",
"WH.ui.combat": "Combattimento",
"WH.ui.skillstab": "Abilitá ed effetti",
"WH.ui.powers": "Poteri",
"WH.ui.equipment": "Equipaggiamento",
"WH.ui.biography": "Biografia",
"WH.ui.race": "Razza",
"WH.ui.class": "Classe",
"WH.ui.religion": "Religione",
"WH.ui.origin": "Origine",
"WH.ui.age": "Etá",
"WH.ui.height": "Altezza",
"WH.ui.eyes": "Occhi",
"WH.ui.hair": "Capelli",
"WH.ui.preferredhand": "Mano preferita",
"WH.ui.size": "Taglia",
"WH.ui.gender": "Sesso",
"WH.ui.background": "Storia",
"WH.ui.type": "Tipo",
"WH.ui.description": "Descrizione",
"WH.ui.rawroll": "Formula TXC (ex: 1d20+@statistics.str.value)",
"WH.ui.rawdamage": "Formula Danni (ex: 1d6+(@statistics.str.value/2))",
"WH.ui.damage": "Danno",
"WH.ui.2hdamage": "Danno a 2 mani",
"WH.ui.slotlocation": "Slot",
"WH.ui.quantity": "Quantitá",
"WH.ui.cost": "Costo",
"WH.ui.details": "Dettagli",
"WH.chat.save": "Tiro salvezza",
"WH.chat.mweaponmalus": "Malus nell uso di due armi",
"WH.chat.diceresult": "Risultato del dado",
"WH.chat.result": "Risultato",
"WH.chat.parysuccess": "Hai parato con successo",
"WH.chat.paryfailed": "Hai fallito azione di parata",
"WH.chat.rollformula": "Formula per il tiro di dado",
"WH.chat.useshield":"Usa lo scudo?",
"WH.chat.power": "Potere",
"WH.chat.powerlevel": "Livello di potere"
}

View File

@@ -42,21 +42,24 @@ export class WarheroActorSheet extends ActorSheet {
cssClass: this.isEditable ? "editable" : "locked",
system: objectData,
limited: this.object.limited,
compentencyItems:this.actor.getCompetencyItems( ),
skills: this.actor.getNormalSkills( ),
raceSkills: this.actor.getRaceSkills( ),
classSkills: this.actor.getClassSkills( ),
languages: this.actor.getLanguages( ),
weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
conditions: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getConditions()) ),
armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
powers: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getPowers())),
powers: this.actor.sortPowers(),
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
slotEquipments: this.actor.buildEquipmentsSlot(),
subActors: duplicate(this.actor.getSubActors()),
competency: this.actor.getCompetency(),
race: duplicate(race),
class: duplicate(this.actor.getClass()),
moneys: duplicate(this.actor.getMoneys()),
classes: duplicate(this.actor.getClasses()),
totalMoney: this.actor.computeTotalMoney(),
//moneys: duplicate(this.actor.getMoneys()),
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
notes: await TextEditor.enrichHTML(this.object.system.biodata.notes, {async: true}),
options: this.options,
@@ -64,6 +67,9 @@ export class WarheroActorSheet extends ActorSheet {
editScore: this.options.editScore,
isGM: game.user.isGM
}
// Dynamic patch
formData.system.secondary.counterspell.hasmax = false
// Race mngt
if ( race && race.name) {
formData.hpprogression = game.system.warhero.config.progressionList[race.system.hpprogresion]
}
@@ -99,7 +105,8 @@ export class WarheroActorSheet extends ActorSheet {
})
html.find('.item-add').click(ev => {
let dataType = $(ev.currentTarget).data("type")
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
let slotKey = $(ev.currentTarget).data("slot")
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType, system: { slotlocation: slotKey} }], { renderSheet: true })
})
html.find('.equip-activate').click(ev => {
@@ -133,6 +140,15 @@ export class WarheroActorSheet extends ActorSheet {
const li = $(event.currentTarget).parents(".item");
this.actor.incDecQuantity( li.data("item-id"), +1 );
} );
html.find('.skill-use-minus').click(event => {
const li = $(event.currentTarget).parents(".item");
this.actor.incDecSkillUse( li.data("item-id"), -1 );
} );
html.find('.skill-use-plus').click(event => {
const li = $(event.currentTarget).parents(".item");
this.actor.incDecSkillUse( li.data("item-id"), +1 );
} );
html.find('.ammo-minus').click(event => {
const li = $(event.currentTarget).parents(".item")
@@ -168,7 +184,11 @@ export class WarheroActorSheet extends ActorSheet {
const weaponId = li.data("item-id")
this.actor.rollDamage(weaponId)
});
html.find('.roll-damage-2hands').click((event) => {
const li = $(event.currentTarget).parents(".item")
const weaponId = li.data("item-id")
this.actor.rollDamage(weaponId, true)
});
html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore;
this.render(true);

View File

@@ -133,6 +133,19 @@ export class WarheroActor extends Actor {
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
sortPowers() {
let schools = {}
for (let power of this.items) {
if (power.type == "power") {
power = duplicate(power)
let school = schools[power.system.magicschool] || []
school.push(power)
WarheroUtility.sortArrayObjectsByNameAndLevel(school)
schools[power.system.magicschool] = school
}
}
return schools
}
/* -------------------------------------------- */
getShields() {
let comp = duplicate(this.items.filter(item => item.type == 'shield') || []);
@@ -149,6 +162,11 @@ export class WarheroActor extends Actor {
let classWH = this.items.filter(item => item.type == 'class')
return classWH[0] ?? [];
}
getClasses() {
let comp = duplicate(this.items.filter(item => item.type == "class") || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
/* -------------------------------------------- */
checkAndPrepareEquipment(item) {
}
@@ -161,16 +179,28 @@ export class WarheroActor extends Actor {
return listItem
}
/* -------------------------------------------- */
computeTotalMoney() {
let nbMoney = 0
this.items.forEach(it => {if (it.type == 'money') { nbMoney += it.system.quantity} } )
return nbMoney
}
/* -------------------------------------------- */
buildEquipmentsSlot() {
let containers = {}
for (let slotName in game.system.warhero.config.slotNames) {
let slotDef = game.system.warhero.config.slotNames[slotName]
containers[slotName] = duplicate(slotDef)
containers[slotName].content = this.items.filter(it => (it.type == 'weapon' || it.type == 'armor' || it.type == 'shield'||it.type == 'equipment')
containers[slotName].content = this.items.filter(it => (it.type == 'money' || it.type == 'weapon' || it.type == 'armor' || it.type == 'shield' || it.type == 'equipment')
&& it.system.slotlocation == slotName)
let slotUsed = 0
for (let item of containers[slotName].content) {
slotUsed += item.system.slotused * ((item.system.quantity) ? item.system.quantity : 1)
let q = (item.system.quantity) ? item.system.quantity : 1
containers[slotName].nbslots += (item.system.providedslot?? 0) * q
if ( item.type == "money") {
slotUsed += Math.ceil(item.system.quantity / 1000)
} else {
slotUsed += item.system.slotused * q
}
}
slotUsed = Math.ceil(slotUsed)
containers[slotName].slotUsed = slotUsed
@@ -186,12 +216,16 @@ export class WarheroActor extends Actor {
/* -------------------------------------------- */
prepareWeapon(weapon) {
let formula = weapon.system.damage
if (weapon.system.weapontype == "long") {
if (weapon.system.weapontype == "long" || weapon.system.weapontype == "short") {
formula += "+" + this.system.statistics.str.value
}
if (weapon.system.weapontype == "twohanded") {
formula += "+" + Math.floor(this.system.statistics.str.value * 1.5)
}
if (weapon.system.weapontype == "polearm") {
formula += "+" + Math.floor(this.system.statistics.str.value * 1)
weapon.damageFormula2Hands = weapon.system.damage2hands + "+" + Math.floor(this.system.statistics.str.value * 1.5)
}
weapon.damageFormula = formula
}
/* -------------------------------------------- */
@@ -225,7 +259,12 @@ export class WarheroActor extends Actor {
}
/* -------------------------------------------- */
getNormalSkills() {
let comp = this.items.filter(it => it.type == "skill" && !it.system.classskill)
let comp = this.items.filter(it => it.type == "skill" && !it.system.classskill && !it.system.raceskill)
WarheroUtility.sortArrayObjectsByName(comp)
return comp
}
getRaceSkills() {
let comp = this.items.filter(it => it.type == "skill" && it.system.raceskill)
WarheroUtility.sortArrayObjectsByName(comp)
return comp
}
@@ -283,7 +322,10 @@ export class WarheroActor extends Actor {
/* ------------------------------------------- */
getEquipments() {
return this.items.filter(item => item.type == 'shield' || item.type == 'armor' || item.type == "weapon" || item.type == "equipment");
return this.items.filter(item => item.type == 'shield' || item.type == 'armor' || item.type == "weapon" || item.type == "equipment" || item.type == "potion" || item.type == "poison"|| item.type == "trap" || item.type == "classitem");
}
getCompetencyItems() {
return duplicate(this.items.filter(item => item.type == "competency") || [])
}
/* ------------------------------------------- */
getEquipmentsOnly() {
@@ -373,10 +415,11 @@ export class WarheroActor extends Actor {
return Number(dmgRoll.total)
}
/* -------------------------------------------- */
updateCompetency(competency, obj) {
updateCompetency(competency, obj, labelTab) {
for (let key in obj) {
if (obj[key]) {
competency[key] = true
//console.log("Parsing", key) //game.system.warhero.config.weaponTypes[key].label)
competency[key] = { enabled: true, label: labelTab[key].label }
}
}
}
@@ -384,13 +427,15 @@ export class WarheroActor extends Actor {
let myRace = this.getRace()
let myClass = this.getClass()
let competency = { weapons: {}, armors: {}, shields: {} }
if ( myRace.system && myClass.system) {
this.updateCompetency(competency.weapons, myRace.system.weapons)
this.updateCompetency(competency.armors, myRace.system.armors)
this.updateCompetency(competency.shields, myRace.system.shields)
this.updateCompetency(competency.weapons, myClass.system.weapons)
this.updateCompetency(competency.armors, myClass.system.armors)
this.updateCompetency(competency.shields, myClass.system.shields)
if (myRace.system) {
this.updateCompetency(competency.weapons, myRace.system.weapons, game.system.warhero.config.weaponTypes)
this.updateCompetency(competency.armors, myRace.system.armors, game.system.warhero.config.armorTypes)
this.updateCompetency(competency.shields, myRace.system.shields, game.system.warhero.config.shieldTypes)
}
if (myClass.system) {
this.updateCompetency(competency.weapons, myClass.system.weapons, game.system.warhero.config.weaponTypes)
this.updateCompetency(competency.armors, myClass.system.armors, game.system.warhero.config.armorTypes)
this.updateCompetency(competency.shields, myClass.system.shields, game.system.warhero.config.shieldTypes)
}
return competency
}
@@ -439,12 +484,10 @@ export class WarheroActor extends Actor {
}
}
/* -------------------------------------------- */
getInitiativeScore(combatId, combatantId) {
if (this.type == 'character') {
this.rollMR(true, combatId, combatantId)
}
console.log("Init required !!!!")
return -1;
async getInitiativeScore(combatId, combatantId) {
let roll = new Roll("1d20+"+this.system.attributes.ini.value).roll({async: false})
await WarheroUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"))
return roll.total
}
/* -------------------------------------------- */
@@ -525,7 +568,19 @@ export class WarheroActor extends Actor {
}
}
}
/* -------------------------------------------- */
async incDecSkillUse(skillId, value) {
let skill = this.items.get(skillId)
if (skill) {
let newUse = skill.system.currentuse + value
if (newUse > skill.system.maxuse) {
ui.notifications.warn(game.i18n.localize("WH.notif.skillmaxuse"))
return
}
newUse = Math.max(newUse, 0)
this.updateEmbeddedDocuments('Item', [{ _id: skill.id, 'system.currentuse': newUse }])
}
}
/* -------------------------------------------- */
async incDecQuantity(objetId, incDec = 0) {
let objetQ = this.items.get(objetId)
@@ -603,14 +658,24 @@ export class WarheroActor extends Actor {
this.system.secondary.nblanguage.value = Math.floor(this.system.statistics.min.value / 2)
}
/* -------------------------------------------- */
spentMana( mana) {
if ( Number(mana) > this.system.attributes.mana.value) {
spentMana(spentValue) {
let mana = duplicate(this.system.attributes.mana)
if (Number(spentValue) > mana.value) {
ui.notifications.warn("Not enough Mana points !")
return false
}
this.update({'system.attributes.mana.value': this.system.attributes.mana.value-mana})
mana.value -= Number(spentValue)
this.update({ 'system.attributes.mana': mana })
return true
}
/* -------------------------------------------- */
incrementUse(rollData) {
let stat = duplicate(this.system[rollData.mode][rollData.statKey])
stat.nbuse++
this.update( { [`system.${rollData.mode}.${rollData.statKey}`]: stat })
}
/* -------------------------------------------- */
getCommonRollData() {
let rollData = WarheroUtility.getBasicRollData()
@@ -628,7 +693,16 @@ export class WarheroActor extends Actor {
let stat = duplicate(this.system[rollType][rollKey])
let rollData = this.getCommonRollData()
rollData.mode = rollType
rollData.statKey = rollKey
rollData.stat = stat
if (stat && stat.stat)
{
rollData.statBonus = duplicate(this.system.statistics[stat.stat])
}
if ( stat.hasuse && stat.nbuse >= stat.maxuse) {
ui.notifications.warn(game.i18n.localize("WH.notif.toomanyuses"))
return
}
if (rollKey == "parrybonustotal") {
WarheroUtility.rollParry(rollData)
return
@@ -656,7 +730,7 @@ export class WarheroActor extends Actor {
} else {
rollData.stat = duplicate(this.system.attributes.txcm)
}
rollData.usemWeaponMalus =
rollData.usemWeaponMalus = false
rollData.mWeaponMalus = this.system.secondary.malusmultiweapon.value
rollData.weapon = weapon
rollData.img = weapon.img
@@ -664,7 +738,7 @@ export class WarheroActor extends Actor {
}
}
/* -------------------------------------------- */
rollDamage(weaponId) {
rollDamage(weaponId, is2hands = false) {
let weapon = this.items.get(weaponId)
if (weapon) {
weapon = duplicate(weapon)
@@ -672,6 +746,7 @@ export class WarheroActor extends Actor {
let rollData = this.getCommonRollData()
rollData.mode = "damage"
rollData.weapon = weapon
rollData.is2hands = is2hands
rollData.img = weapon.img
this.startRoll(rollData)
}
@@ -684,7 +759,7 @@ export class WarheroActor extends Actor {
let rollData = this.getCommonRollData()
rollData.mode = "power"
rollData.power = power
rollData.powerLevel = power.system.level
rollData.powerLevel = Number(power.system.level)
rollData.img = power.img
rollData.hasBM = false
this.startRoll(rollData)

View File

@@ -9,7 +9,7 @@ export class WarheroCombat extends Combat {
for (let cId = 0; cId < ids.length; cId++) {
const c = this.combatants.get(ids[cId]);
let id = c._id || c.id;
let initBonus = c.actor ? c.actor.getInitiativeScore( this.id, id ) : -1;
let initBonus = c.actor ? await c.actor.getInitiativeScore( this.id, id ) : -1;
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initBonus } ]);
}

View File

@@ -7,6 +7,7 @@ export const WARHERO_CONFIG = {
polearm: {damage: "1d6", label: "WH.conf.polearm"},
shooting: {damage: "2d6", label: "WH.conf.shooting"},
throwing: {damage: "1d8", label: "WH.conf.throwing"},
special: {damage: "1d6", label: "WH.conf.special"},
},
armorTypes : {
@@ -44,6 +45,49 @@ export const WARHERO_CONFIG = {
"high": "High (+6HP/Lvl)",
"medium": "Medium (+4HP/Lvl)",
"low": "Low (+2 HP/Lvl)"
},
poisonApplication: {
touch: "WH.ui.Touch",
ingestion: "WH.ui.Ingestion",
weapon: "WH.ui.Weapon"
},
saveType: {
halfdmg: "WH.ui.halfdamage",
ignore: "WH.ui.ignoreeffect"
},
conditionType : {
generic: "WH.ui.generic",
bless: "WH.ui.bless",
spell: "WH.ui.spell",
disease: "WH.ui.disease",
poison: "WH.ui.poison",
curse: "WH.u,i.curse"
},
conditionDuration: {
permanent: "WH.ui.permanent",
temporary: "WH.ui.temporary"
},
conditionSpecialDuration : {
infinite: "WH.ui.infinite",
withineor: "WH.uiwithineor",
beginr: "WH.ui.beginr",
nextr: "WH.ui.nextr",
nextcombat: "WH.ui.nextcombat",
untilendcombat: "WH.ui.untilendcombat",
beginturn: "WH.ui.beginturn",
endturn: "WH.ui.endturn"
},
identifiedState: {
unknown: "WH.conf.unknown",
yes:"WH.conf.yes",
no:"WH.conf.no",
notapplicable:"WH.conf.notapplicable"
}
}

View File

@@ -69,12 +69,6 @@ export class WarheroItemSheet extends ItemSheet {
owner: this.document.isOwner,
isGM: game.user.isGM
}
if ( this.object.type == "power") {
formData.level1 = await TextEditor.enrichHTML(this.object.system.level1, {async: true})
formData.level2 = await TextEditor.enrichHTML(this.object.system.level2, {async: true})
formData.level3 = await TextEditor.enrichHTML(this.object.system.level3, {async: true})
formData.level4 = await TextEditor.enrichHTML(this.object.system.level4, {async: true})
}
this.options.editable = !(this.object.origin == "embeddedItem");
console.log("ITEM DATA", formData, this);
return formData;
@@ -130,11 +124,6 @@ export class WarheroItemSheet extends ItemSheet {
const item = this.object.options.actor.getOwnedItem(li.data("item-id"));
item.sheet.render(true);
});
html.find('.delete-spec').click(ev => {
this.object.update({ "data.specialisation": [{ name: 'None' }] });
});
html.find('.delete-subitem').click(ev => {
this.deleteSubitem(ev);
});
@@ -145,15 +134,6 @@ export class WarheroItemSheet extends ItemSheet {
let itemId = li.data("item-id");
let itemType = li.data("item-type");
});
html.find('.view-subitem').click(ev => {
this.viewSubitem(ev);
});
html.find('.view-spec').click(ev => {
this.manageSpec();
});
}

View File

@@ -11,6 +11,7 @@ export const defaultItemImg = {
money: "systems/fvtt-warhero/images/icons/two-coins.svg",
power: "systems/fvtt-warhero/images/icons/magia.webp",
condition: "systems/fvtt-warhero/images/icons/stordenti.webp",
language: "systems/fvtt-warhero/images/icons/linguaggi.webp"
}
/**

View File

@@ -12,6 +12,7 @@ import { WarheroActor } from "./warhero-actor.js";
import { WarheroItemSheet } from "./warhero-item-sheet.js";
import { WarheroActorSheet } from "./warhero-actor-sheet.js";
import { WarheroNPCSheet } from "./warhero-npc-sheet.js";
import { WarheroMonsterSheet } from "./warhero-monster-sheet.js";
import { WarheroUtility } from "./warhero-utility.js";
import { WarheroCombat } from "./warhero-combat.js";
import { WarheroItem } from "./warhero-item.js";
@@ -55,30 +56,20 @@ Hooks.once("init", async function () {
CONFIG.Combat.documentClass = WarheroCombat
CONFIG.Actor.documentClass = WarheroActor
CONFIG.Item.documentClass = WarheroItem
//CONFIG.Token.objectClass = WarheroToken
/* -------------------------------------------- */
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-crucible", WarheroActorSheet, { types: ["character"], makeDefault: true });
Actors.registerSheet("fvtt-crucible", WarheroNPCSheet, { types: ["npc"], makeDefault: false });
Actors.registerSheet("fvtt-warhero", WarheroActorSheet, { types: ["character"], makeDefault: true });
Actors.registerSheet("fvtt-warhero", WarheroNPCSheet, { types: ["npc"], makeDefault: false });
Actors.registerSheet("fvtt-warhero", WarheroMonsterSheet, { types: ["monster"], makeDefault: false });
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-crucible", WarheroItemSheet, { makeDefault: true });
Items.registerSheet("fvtt-warhero", WarheroItemSheet, { makeDefault: true });
WarheroUtility.init()
});
/* -------------------------------------------- */
function welcomeMessage() {
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: `<div id="welcome-message-crucible"><span class="rdd-roll-part">
<strong>Welcome to the Warhero RPG.</strong>
` });
}
/* -------------------------------------------- */
/* Foundry VTT Initialization */
/* -------------------------------------------- */
@@ -87,29 +78,15 @@ Hooks.once("ready", function () {
// User warning
if (!game.user.isGM && game.user.character == undefined) {
ui.notifications.info("Warning ! No character linked to your user !");
/*ChatMessage.create({
content: "<b>WARNING</b> The player " + game.user.name + " is not linked to a character !",
user: game.user._id
});*/
}
// CSS patch for v9
if (game.version) {
let sidebar = document.getElementById("sidebar");
sidebar.style.width = "min-content";
}
welcomeMessage();
WarheroUtility.ready()
WarheroCommands.init()
WarheroHotbar.initDropbar()
})
/* -------------------------------------------- */
/* Foundry VTT Initialization */
/* -------------------------------------------- */
Hooks.on("chatMessage", (html, content, msg) => {
/*Hooks.on("chatMessage", (html, content, msg) => {
if (content[0] == '/') {
let regExp = /(\S+)/g;
let commands = content.match(regExp);
@@ -118,5 +95,5 @@ Hooks.on("chatMessage", (html, content, msg) => {
}
}
return true;
});
});*/

View File

@@ -0,0 +1,27 @@
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
import { WarheroActorSheet } from "./warhero-actor-sheet.js";
import { WarheroUtility } from "./warhero-utility.js";
/* -------------------------------------------- */
export class WarheroMonsterSheet extends WarheroActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["warhero-rpg", "sheet", "actor"],
template: "systems/fvtt-warhero/templates/npc-sheet.html",
width: 640,
height: 720,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: true
});
}
}

View File

@@ -2,18 +2,18 @@
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
import { WarheroActorSheet } from "./warhero-actor-sheet.js";
import { WarheroUtility } from "./warhero-utility.js";
/* -------------------------------------------- */
export class WarheroNPCSheet extends ActorSheet {
export class WarheroNPCSheet extends WarheroActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["warhero-rpg", "sheet", "actor"],
template: "systems/fvtt-warhero/templates/npc-sheet.html",
template: "systems/fvtt-warhero/templates/monster-sheet.html",
width: 640,
height: 720,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
@@ -22,188 +22,4 @@ export class WarheroNPCSheet extends ActorSheet {
});
}
/* -------------------------------------------- */
async getData() {
const objectData = this.object.system
let actorData = duplicate(objectData)
let formData = {
title: this.title,
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,
limited: this.object.limited,
skills: this.actor.getSkills( ),
weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())),
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ),
equippedArmor: this.actor.getEquippedArmor(),
equippedShield: this.actor.getEquippedShield(),
feats: duplicate(this.actor.getFeats()),
subActors: duplicate(this.actor.getSubActors()),
race: duplicate(this.actor.getRace()),
moneys: duplicate(this.actor.getMoneys()),
encCapacity: this.actor.getEncumbranceCapacity(),
saveRolls: this.actor.getSaveRoll(),
conditions: this.actor.getConditions(),
containersTree: this.actor.containersTree,
encCurrent: this.actor.encCurrent,
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
isGM: game.user.isGM
}
this.formData = formData;
console.log("PC : ", formData, this.object);
return formData;
}
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
html.bind("keydown", function(e) { // Ignore Enter in actores sheet
if (e.keyCode === 13) return false;
});
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
const item = this.actor.items.get( itemId );
item.sheet.render(true);
});
// Delete Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item")
WarheroUtility.confirmDelete(this, li)
})
html.find('.item-add').click(ev => {
let dataType = $(ev.currentTarget).data("type")
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
})
html.find('.equip-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
this.actor.equipActivate( itemId)
});
html.find('.equip-deactivate').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
this.actor.equipDeactivate( itemId)
});
html.find('.subactor-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let actorId = li.data("actor-id");
let actor = game.actors.get( actorId );
actor.sheet.render(true);
});
html.find('.subactor-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let actorId = li.data("actor-id");
this.actor.delSubActor(actorId);
});
html.find('.quantity-minus').click(event => {
const li = $(event.currentTarget).parents(".item");
this.actor.incDecQuantity( li.data("item-id"), -1 );
} );
html.find('.quantity-plus').click(event => {
const li = $(event.currentTarget).parents(".item");
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('.ammo-plus').click(event => {
const li = $(event.currentTarget).parents(".item")
this.actor.incDecAmmo( li.data("item-id"), +1 )
} );
html.find('.roll-ability').click((event) => {
const abilityKey = $(event.currentTarget).data("ability-key");
this.actor.rollAbility(abilityKey);
});
html.find('.roll-skill').click((event) => {
const li = $(event.currentTarget).parents(".item")
const skillId = li.data("item-id")
this.actor.rollSkill(skillId)
});
html.find('.roll-weapon').click((event) => {
const li = $(event.currentTarget).parents(".item");
const skillId = li.data("item-id")
this.actor.rollWeapon(skillId)
});
html.find('.roll-armor-die').click((event) => {
this.actor.rollArmorDie()
});
html.find('.roll-shield-die').click((event) => {
this.actor.rollShieldDie()
});
html.find('.roll-target-die').click((event) => {
this.actor.rollDefenseRanged()
});
html.find('.roll-save').click((event) => {
const saveKey = $(event.currentTarget).data("save-key")
this.actor.rollSave(saveKey)
});
html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore;
this.render(true);
});
html.find('.item-link a').click((event) => {
const itemId = $(event.currentTarget).data("item-id");
const item = this.actor.getOwnedItem(itemId);
item.sheet.render(true);
});
html.find('.item-equip').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.equipItem( li.data("item-id") );
this.render(true);
});
html.find('.update-field').change(ev => {
const fieldName = $(ev.currentTarget).data("field-name");
let value = Number(ev.currentTarget.value);
this.actor.update( { [`${fieldName}`]: value } );
});
}
/* -------------------------------------------- */
/** @override */
setPosition(options = {}) {
const position = super.setPosition(options);
const sheetBody = this.element.find(".sheet-body");
const bodyHeight = position.height - 192;
sheetBody.css("height", bodyHeight);
return position;
}
/* -------------------------------------------- */
/** @override */
_updateObject(event, formData) {
// Update the Actor
return this.object.update(formData);
}
}

View File

@@ -20,6 +20,15 @@ export class WarheroUtility {
WarheroCommands.init();
Handlebars.registerHelper('concat', function () {
var outStr = '';
for (var arg in arguments) {
if (typeof arguments[arg] != 'object') {
outStr += arguments[arg];
}
}
return outStr;
});
Handlebars.registerHelper('count', function (list) {
return list.length;
})
@@ -216,10 +225,8 @@ export class WarheroUtility {
const templatePaths = [
'systems/fvtt-warhero/templates/editor-notes-gm.html',
'systems/fvtt-warhero/templates/partial-roll-select.html',
'systems/fvtt-warhero/templates/partial-actor-stat-block.html',
'systems/fvtt-warhero/templates/partial-actor-status.html',
'systems/fvtt-warhero/templates/partial-options-abilities.html',
'systems/fvtt-warhero/templates/partial-item-nav.html',
'systems/fvtt-warhero/templates/partial-item-description.html',
'systems/fvtt-warhero/templates/partial-item-common-equipment.html',
@@ -545,7 +552,7 @@ export class WarheroUtility {
let actor = game.actors.get(rollData.actorId)
if (rollData.mode == "power") {
let manaCost = Array.from(rollData.powerLevel)[0]
let manaCost = rollData.powerLevel
if (actor.spentMana(manaCost)) {
let powerKey = "level" + rollData.powerLevel
rollData.powerText = rollData.power.system[powerKey]
@@ -557,7 +564,13 @@ export class WarheroUtility {
return
}
if (rollData.mode == "damage") {
let myRoll = new Roll(rollData.weapon.damageFormula + "+" + rollData.bonusMalus).roll({ async: false })
let formula
if (rollData.weapon.system.weapontype == "special") {
formula = rollData.weapon.system.damageformula
} else {
formula = (rollData.is2hands) ? rollData.weapon.damageFormula2Hands : rollData.weapon.damageFormula
}
let myRoll = new Roll(formula + "+" + rollData.bonusMalus, actor.system).roll({ async: false })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = myRoll
rollData.diceFormula = myRoll.formula
@@ -570,11 +583,19 @@ export class WarheroUtility {
return
}
let diceFormula
if (rollData.weapon && rollData.weapon.system.weapontype == "special") {
diceFormula = rollData.weapon.system.rollformula
} else {
// ability/save/size => 0
let diceFormula = "1d20"
diceFormula = "1d20"
if (rollData.stat) {
diceFormula += "+" + rollData.stat.value
}
if (rollData.statBonus) {
diceFormula += "+" + rollData.statBonus.value
}
}
if (rollData.usemWeaponMalus) {
diceFormula += "+" + rollData.mWeaponMalus
}
@@ -584,7 +605,7 @@ export class WarheroUtility {
console.log("Roll formula", diceFormula)
let myRoll = rollData.roll
if (!myRoll) { // New rolls only of no rerolls
myRoll = new Roll(diceFormula).roll({ async: false })
myRoll = new Roll(diceFormula, actor.system).roll({ async: false })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
}
rollData.roll = myRoll
@@ -597,6 +618,10 @@ export class WarheroUtility {
rollData.isCriticalFailure = true
}
if ( rollData.stat.hasuse ) {
actor.incrementUse(rollData)
}
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
})
@@ -619,7 +644,19 @@ export class WarheroUtility {
return 0;
})
}
static sortArrayObjectsByNameAndLevel(myArray) {
myArray.sort((a, b) => {
let fa = a.system.level + a.name.toLowerCase();
let fb = b.system.level + b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
})
}
/* -------------------------------------------- */
static getUsers(filter) {
return game.users.filter(filter).map(user => user.id);

View File

@@ -10,7 +10,7 @@
--major-button-font-weight: normal;
--major-button-color: #dadada;
--tab-header-font-size: 1.0rem;
--tab-header-font-size: 1rem;
--tab-header-font-weight: 700;
--tab-header-color: #403f3e;
--tab-header-color-active: #4a0404;
@@ -41,12 +41,14 @@
letter-spacing: 1px;
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
}
/* Fonts */
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
font-size: 1.0rem;
.sheet header.sheet-header h1 input,
.window-app .window-header,
#actors .directory-list,
#navigation #scene-list .scene.nav-item {
font-size: 1rem;
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
} /* For title, sidebar character and scene */
@@ -55,7 +57,16 @@
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
} /* For nav and title */
.window-app input, .fvtt-warhero .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
.window-app input,
.fvtt-warhero .item-form,
.sheet header.sheet-header .flex-group-center.flex-compteurs,
.sheet header.sheet-header .flex-group-center.flex-fatigue,
select,
button,
.item-checkbox,
#sidebar,
#players,
#navigation #nav-toggle {
font-size: 0.8rem;
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
@@ -67,7 +78,9 @@
.dialog .window-content {
color: #ccdbe6;
}
.dialog-content, .dialog-buttons, .form-fields {
.dialog-content,
.dialog-buttons,
.form-fields {
color: #ccdbe6;
}
.window-app.sheet .window-content {
@@ -79,7 +92,9 @@
font-weight: bold;
}
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover {
.tabs .item.active,
.blessures-list li ul li:first-child:hover,
a:hover {
text-shadow: 1px 0px 0px #ff6600;
}
select {
@@ -91,7 +106,8 @@
color: rgba(66, 66, 64, 0.95);
}
.rollable:hover, .rollable:focus {
.rollable:hover,
.rollable:focus {
color: #000;
text-shadow: 0 0 10px red;
cursor: pointer;
@@ -102,9 +118,12 @@
select:disabled {
color: #1c2058;
}
table {border: 1px solid #7a7971;}
table {
border: 1px solid #7a7971;
}
.grid, .grid-2col {
.grid,
.grid-2col {
display: grid;
grid-column: span 2 / span 2;
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -344,8 +363,8 @@
.fvtt-warhero .tabs {
height: 40px;
border-top: 1px solid #AAA;
border-bottom: 1px solid #AAA;
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
color: #000000;
}
@@ -374,7 +393,7 @@
height: 30px;
line-height: 24px;
padding: 1px 0;
border-bottom: 1px solid #BBB;
border-bottom: 1px solid #bbb;
}
.fvtt-warhero .items-list .item .item-image {
@@ -399,16 +418,19 @@
text-align: right;
}
/* ======================================== */
/* Sheet */
.window-app.sheet .window-content .sheet-header {
background: url("../images/ui/pc_sheet_bg.webp")
background: url('../images/ui/pc_sheet_bg.webp');
}
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
/*color: rgba(168, 139, 139, 0.5);*/
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
.window-app.sheet .window-content .sheet-header input[type='text'],
.window-app.sheet .window-content .sheet-header input[type='number'],
.window-app.sheet .window-content .sheet-header input[type='password'],
.window-app.sheet .window-content .sheet-header input[type='date'],
.window-app.sheet .window-content .sheet-header input[type='time'] {
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
border: 1 none;
@@ -416,7 +438,11 @@
margin-left: 2px;
}
.window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] {
.window-app.sheet .window-content .sheet-body input[type='text'],
.window-app.sheet .window-content .sheet-body input[type='number'],
.window-app.sheet .window-content .sheet-body input[type='password'],
.window-app.sheet .window-content .sheet-body input[type='date'],
.window-app.sheet .window-content .sheet-body input[type='time'] {
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
border: 1 none;
@@ -424,7 +450,8 @@
margin-left: 2px;
}
.window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select {
.window-app.sheet .window-content .sheet-body select,
.window-app.sheet .window-content .sheet-header select {
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
border: 1 none;
@@ -432,16 +459,19 @@
margin-left: 2px;
}
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
.window-app .window-content,
.window-app.sheet .window-content .sheet-body {
font-size: 0.8rem;
background: url("../images/ui/pc_sheet_bg.webp") repeat left top;
background: url('../images/ui/pc_sheet_bg.webp') repeat left top;
color: rgba(228, 240, 240, 0.75);
background: rgba(66, 66, 64, 0.95);
}
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
section.sheet-body{padding: 0.25rem 0.5rem;}
section.sheet-body {
padding: 0.25rem 0.5rem;
}
.sheet header.sheet-header .profile-img {
object-fit: cover;
@@ -451,7 +481,7 @@
}
.sheet nav.sheet-tabs {
font-size: 0.70rem;
font-size: 0.7rem;
font-weight: bold;
height: 3rem;
flex: 0 0 3rem;
@@ -474,7 +504,7 @@
}
nav.sheet-tabs .item:after {
content: "";
content: '';
position: absolute;
top: 0;
right: 0;
@@ -488,13 +518,17 @@
}
section.sheet-body:after {
content: "";
content: '';
display: block;
clear: both;
}
.sheet header.sheet-header .flex-compteurs {text-align: right;}
.sheet header.sheet-header .resource-content {width: 2rem;}
.sheet header.sheet-header .flex-compteurs {
text-align: right;
}
.sheet header.sheet-header .resource-content {
width: 2rem;
}
.select-diff {
display: inline-block;
@@ -509,7 +543,8 @@
padding: 0.25rem;
}
.window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp {
.window-app.sheet .window-content .carac-value,
.window-app.sheet .window-content .competence-xp {
margin: 0.05rem;
flex-basis: 3rem;
text-align: center;
@@ -520,20 +555,25 @@
/* ======================================== */
h1, h2, h3, h4 {
h1,
h2,
h3,
h4 {
font-weight: bold;
}
ul, ol {
ul,
ol {
margin: 0;
padding: 0;
}
ul, li {
ul,
li {
list-style-type: none;
}
.sheet li {
margin: 0.010rem;
margin: 0.01rem;
padding: 0.25rem;
}
.header-fields li {
@@ -545,7 +585,7 @@
background: rgba(100, 100, 50, 0.25);
}
.alterne-list > .list-item:nth-child(even) {
background: rgba(80, 60, 0, 0.10);
background: rgba(80, 60, 0, 0.1);
}
.alterne-list > .list-item:nth-child(odd) {
background: rgb(160, 130, 100, 0.05);
@@ -822,7 +862,6 @@
text-align: center;
}
.flex-actions-bar {
flex-grow: 2;
}
@@ -837,12 +876,32 @@
/* background: rgb(105,85,65) url("../images/ui/texture_feuille_perso_onglets.webp") no-repeat right bottom;*/
#sidebar.collapsed {
height: 470px !important;
#sidebar-tabs > .collapsed,
#chat-controls .chat-control-icon {
color: rgba(220, 220, 220, 0.75);
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
}
#sidebar-tabs > .collapsed, #chat-controls .chat-control-icon {
color: rgba(220,220,220,0.75);
#sidebar-tabs {
flex: 0 0 28px;
box-sizing: border-box;
margin: 0 0 3px;
border-bottom: 1px solid rgba(0,0,0,0);
box-shadow: inset 0 0 2rem rgba(0,0,0,0.5);
}
#sidebar-tabs > .item.active {
border: 1px solid rgba(114,98,72,1);
background: rgba(30, 25, 20, 0.75);
box-shadow: 0 0 6px inset rgba(114,98,72,1);
}
#sidebar #sidebar-tabs i{
width: 23px;
height: 23px;
/*display: inline-block;*/
background-position:center;
background-size:cover;
text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
}
@@ -856,6 +915,7 @@
background: rgba(0, 0, 0, 0.05);
cursor: pointer;
}
.chat-message-header {
background: rgba(220, 220, 210, 0.5);
font-size: 1.1rem;
@@ -866,9 +926,11 @@
align-items: center;
}
.chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to {
.chat-message .message-header .flavor-text,
.chat-message .message-header .whisper-to {
font-size: 0.9rem;
}
.chat-actor-name {
padding: 4px;
}
@@ -890,8 +952,8 @@
}
.padding-dice {
padding-top: .2rem;
padding-bottom: .2rem;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
}
.dice-image {
@@ -916,8 +978,8 @@
font-size: 15px;
padding: 10px;
padding-bottom: 20px;
padding-top: .2rem;
padding-bottom: .2rem;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
}
.div-river-full {
@@ -987,26 +1049,11 @@
box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5);
}
#sidebar-tabs > .item.active {
border: 1px solid rgba(114,98,72,1);
background: rgba(30, 25, 20, 0.75);
box-shadow: 0 0 6px inset rgba(114,98,72,1);
}
#sidebar #sidebar-tabs i{
width: 25px;
height: 25px;
display: inline-block;
background-position:center;
background-size:cover;
text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
}
/*--------------------------------------------------------------------------*/
/* Control, Tool, hotbar & navigation */
#controls .scene-control, #controls .control-tool {
#controls .scene-control,
#controls .control-tool {
box-shadow: 0 0 3px #000;
margin: 0 0 8px;
border-radius: 0;
@@ -1017,7 +1064,10 @@
border-image-outset: 0px;
}
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover {
#controls .scene-control.active,
#controls .control-tool.active,
#controls .scene-control:hover,
#controls .control-tool:hover {
background: rgba(72, 46, 28, 1);
background-origin: padding-box;
border-image: url(img/ui/footer-button.png) 10 repeat;
@@ -1063,7 +1113,8 @@
border-image-outset: 0px;
}
#navigation #scene-list .scene.view, #navigation #scene-list .scene.context {
#navigation #scene-list .scene.view,
#navigation #scene-list .scene.context {
background: rgba(72, 46, 28, 1);
background-origin: padding-box;
border-image: url(img/ui/footer-button.png) 10 repeat;
@@ -1257,13 +1308,11 @@
}
/*************************************************************/
#pause
{
#pause {
font-size: 2rem;
}
#pause > h3
{
color: #CCC
#pause > h3 {
color: #ccc;
}
/* =================== 1. ACTOR SHEET FONT STYLES =========== */ /*
@@ -1370,7 +1419,8 @@
max-height: 42px;
min-height: 36px;
}
.item-ability-roll select, .item-ability-roll input {
.item-ability-roll select,
.item-ability-roll input {
margin-top: 4px;
margin-right: 2px;
}
@@ -1442,11 +1492,22 @@
max-width: 22rem;
min-width: 22rem;
}
.item-name-label-long3 {
flex-grow: 2;
max-width: 32rem;
min-width: 32rem;
}
.item-name-label-level2 {
flex-grow: 2;
max-width: 9rem;
min-width: 9rem;
}
.item-field-label-2rem {
flex-grow: 1;
margin-top: 4px;
max-width: 1.2rem;
min-width: 1.2rem;
}
.item-field-label-short {
flex-grow: 1;
margin-top: 4px;
@@ -1474,8 +1535,8 @@
.item-field-label-vlong2 {
flex-grow: 1;
margin-top: 4px;
max-width: 22rem;
min-width: 22rem;
max-width: 24rem;
min-width: 24rem;
}
.item-control-end {
align-self: flex-end;
@@ -1501,3 +1562,13 @@
.crit-failure {
color: darkred;
}
.directory .directory-header .header-search input {
color: rgba(52, 52, 52, 0.95);
}
a.content-link, a.inline-roll {
color: #222;
}
.journal-page-header,
.journal-page-content {
color: #222;
}

View File

@@ -18,6 +18,12 @@
"name": "English",
"path": "lang/en.json",
"flags": {}
},
{
"lang": "it",
"name": "English",
"path": "lang/it.json",
"flags": {}
}
],
"license": "LICENSE.txt",
@@ -95,13 +101,13 @@
"flags": {}
}
],
"primaryTokenAttribute": "secondary.hp",
"secondaryTokenAttribute": "secondary.effort",
"primaryTokenAttribute": "attributes.hp",
"secondaryTokenAttribute": "attributes.mana",
"socket": true,
"styles": [
"styles/simple.css"
],
"version": "10.0.20",
"version": "10.0.38",
"compatibility": {
"minimum": "10",
"verified": "10",
@@ -109,7 +115,7 @@
},
"title": "Warhero RPG",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-warhero/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.20.zip",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.38.zip",
"url": "https://www.uberwald.me/gitea/public/fvtt-warhero",
"background": "images/ui/warhero_welcome_page.webp",
"id": "fvtt-warhero"

View File

@@ -1,12 +1,16 @@
{
"Actor": {
"types": ["character", "npc"],
"types": [
"character",
"npc",
"monster"
],
"templates": {
"biodata": {
"biodata": {
"class": "",
"age": 0,
"size": 0,
"size": 3,
"weight": "",
"height": "",
"hair": "",
@@ -107,6 +111,7 @@
"label": "WH.ui.Initiative",
"abbrev": "ini",
"style": "edit",
"roll": true,
"max": 1,
"value": 1
},
@@ -176,11 +181,16 @@
},
"counterspell": {
"label": "WH.ui.counterspell",
"stat": "min",
"abbrev": "counterspell",
"style": "edit",
"hasmax": true,
"hasmax": false,
"roll": true,
"max": 1,
"value": 0
"value": 0,
"hasuse": true,
"nbuse": 0,
"maxuse": 0
},
"createitem": {
"label": "WH.ui.createitem",
@@ -203,14 +213,43 @@
}
},
"character": {
"templates": [ "biodata", "core" ]
"templates": [
"biodata",
"core"
]
},
"npc": {
"templates": [ "biodata", "core" ]
"templates": [
"biodata",
"core"
]
},
"monster": {
"templates": [
"biodata",
"core"
]
}
},
"Item": {
"types": [ "equipment", "race", "weapon", "armor", "shield", "skill", "power", "language", "condition", "class"],
"types": [
"equipment",
"race",
"weapon",
"armor",
"shield",
"skill",
"power",
"language",
"condition",
"class",
"money",
"potion",
"poison",
"trap",
"classitem",
"competency"
],
"templates": {
"commonclassrace": {
"weapons": {
@@ -233,12 +272,79 @@
}
}
},
"competency": {
"description": ""
},
"potion": {
"cost": 0,
"quantity": 1,
"slotused": 1,
"slotlocation": "backpack",
"isidentified": "unknown",
"alchemycost": "",
"preparetime": "",
"durationround": 0,
"description": ""
},
"poison": {
"cost": 0,
"quantity": 1,
"slotused": 1,
"slotlocation": "backpack",
"isidentified": "unknown",
"application": "",
"preparecost": "",
"preparetime": "",
"damageroll": "",
"durationround": 0,
"savesdc": 0,
"savetype": "",
"description": ""
},
"trap": {
"cost": 0,
"quantity": 1,
"slotused": 1,
"slotlocation": "backpack",
"isidentified": "unknown",
"dcfind": 0,
"dcdisable": 0,
"throwtohit": 0,
"damageroll": "",
"description": ""
},
"classitem": {
"cost": 0,
"quantity": 1,
"slotused": 1,
"slotlocation": "backpack",
"isidentified": "unknown",
"class": "",
"mandatoryfor": "",
"description": ""
},
"money": {
"quantity": 0,
"slotlocation": "backpack",
"description": ""
},
"condition": {
"conditiontype": "",
"duration": "",
"begin": "",
"specialduration": "",
"durationvalue": 0,
"durationunit": "",
"shortdescription": "",
"dcsave": 0,
"incubationtime": "",
"diseaseduration": "",
"description": ""
},
"class": {
"templates": ["commonclassrace"],
"templates": [
"commonclassrace"
],
"description": ""
},
"race": {
@@ -248,15 +354,19 @@
"attributebonus1": "",
"attributebonus4": "",
"attributebonus8": "",
"templates": ["commonclassrace"]
"templates": [
"commonclassrace"
]
},
"language": {
"shortdescription": "",
"description": ""
},
"skill": {
"raceskill": false,
"classskill": false,
"unlimited": false,
"acquiredatlevel": 0,
"currentuse": 0,
"maxuse": 0,
"description": ""
@@ -264,11 +374,15 @@
"weapon": {
"weapontype": "short",
"damage": "1d6",
"damage2hands": "1d6",
"rollformula": "",
"damageformula": "",
"cost": 0,
"equipped": false,
"quantity": 1,
"slotused": 1,
"slotlocation": "weapon1",
"isidentified": "unknown",
"description": ""
},
"armor": {
@@ -279,6 +393,7 @@
"quantity": 1,
"slotused": 1,
"slotlocation": "armor",
"isidentified": "unknown",
"description": ""
},
"shield": {
@@ -289,6 +404,7 @@
"quantity": 1,
"slotused": 1,
"slotlocation": "shield",
"isidentified": "unknown",
"description": ""
},
"equipment": {
@@ -298,6 +414,8 @@
"equipped": false,
"slotused": 1,
"slotlocation": "backpack",
"providedslot": 0,
"isidentified": "unknown",
"description": ""
},
"power": {

View File

@@ -20,23 +20,25 @@
<div class="ability-item">
<ul>
<li class="item flexrow list-item " data-item-id="{{race._id}}">
<label class="item-field-label-medium">Race</label>
<label class="item-field-label-medium">{{localize "WH.ui.race"}}</label>
<a class="item-edit"><img class="sheet-competence-img" src="{{race.img}}"></a>
<input type="text" class="item-field-label-medium" disabled value="{{race.name}}" data-dtype="String" />
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{#each classes as |class idx|}}
<li class="item flexrow list-item" data-item-id="{{class._id}}">
<label class="item-field-label-medium">Class</label>
<label class="item-field-label-medium">{{localize "WH.ui.class"}}</label>
<a class="item-edit"><img class="sheet-competence-img" src="{{class.img}}"></a>
<input type="text" class="item-field-label-medium" disabled value="{{class.name}}" data-dtype="String" />
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
<li class="item flexrow list-item" >
<label class="item-field-label-medium">Religion</label>
<label class="item-field-label-medium">{{localize "WH.ui.religion"}}</label>
<input type="text" class="item-field-label-medium" name="system.biodata.religion" value="{{system.biodata.religion}}" data-dtype="String" />
</li>
</ul>
@@ -64,18 +66,18 @@
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="main">Main</a>
<a class="item" data-tab="combat">Combat</a>
<a class="item" data-tab="skill">Skills&Effects</a>
<a class="item" data-tab="power">Powers</a>
<a class="item" data-tab="equipment">Equipment</a>
<a class="item" data-tab="biodata">Biography</a>
<a class="item" data-tab="main">{{localize "WH.ui.main"}}</a>
<a class="item" data-tab="combat">{{localize "WH.ui.combat"}}</a>
<a class="item" data-tab="skill">{{localize "WH.ui.skillstab"}}</a>
<a class="item" data-tab="power">{{localize "WH.ui.powers"}}</a>
<a class="item" data-tab="equipment">{{localize "WH.ui.equipment"}}</a>
<a class="item" data-tab="biodata">{{localize "WH.ui.biography"}}</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Skills Tab --}}
{{!-- Main Tab --}}
<div class="tab main" data-group="primary" data-tab="main">
<div class="flexrow">
@@ -96,27 +98,41 @@
<h3><label class="items-title-text">{{localize "WH.ui.competency"}}</label></h3>
</span>
</li>
{{#each competency.weapons as |flag key|}}
{{#if flag}}
{{#each competency.weapons as |cdata key|}}
{{#if cdata}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.weapons"}} {{key}}</span>
<span class="item-name-label-long">{{localize "WH.ui.weapons"}} {{localize cdata.label}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.shields as |flag key|}}
{{#if flag}}
{{#each competency.shields as |cdata key|}}
{{#if cdata}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.shields"}} {{key}}</span>
<span class="item-name-label-long">{{localize "WH.ui.shields"}} {{localize cdata.label}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.armors as |flag key|}}
{{#if flag}}
{{#each competency.armors as |cdata key|}}
{{#if cdata}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.armors"}} {{key}}</span>
<span class="item-name-label-long">{{localize "WH.ui.armors"}} {{localize cdata.label}}</span>
</li>
{{/if}}
{{/each}}
{{#each compentencyItems as |comp key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{comp._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{comp.img}}" /></a>
<span class="item-name-label-long">{{comp.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
@@ -176,7 +192,7 @@
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">Weapons</label></h3>
<h3><label class="items-title-text">{{localize "WH.ui.weapons"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
@@ -191,9 +207,17 @@
src="{{weapon.img}}" /></a>
<span class="item-name-label-long"><a class="roll-weapon"><i class="fa-solid fa-dice-d20"></i>{{weapon.name}}</a></span>
<span class="item-field-label-medium">{{weapon.system.weapontype}}</span>
<span class="item-field-label-medium">{{localize (concat "WH.conf." weapon.system.weapontype)}}</span>
{{#if (eq system.weapontype "special")}}
<span class="item-field-label-medium"><a class="roll-damage"><i class="fa-solid fa-dice-d20"></i>{{weapon.system.damageformula}}</a></span>
{{else}}
<span class="item-field-label-medium"><a class="roll-damage"><i class="fa-solid fa-dice-d20"></i>{{weapon.damageFormula}}</a></span>
{{/if}}
{{#if (eq system.weapontype "polearm")}}
<span class="item-field-label-medium"><a class="roll-damage-2hands"><i class="fa-solid fa-dice-d20"></i>{{weapon.damageFormula2Hands}}</a></span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
@@ -208,7 +232,7 @@
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">Shields</label></h3>
<h3><label class="items-title-text">{{localize "WH.ui.shields"}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
@@ -240,7 +264,7 @@
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">Armors</label></h3>
<h3><label class="items-title-text">{{localize "WH.ui.armors"}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
@@ -275,6 +299,44 @@
<div class="tab skill" data-group="primary" data-tab="skill">
<div class="flexcol">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.raceSkills"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.currentuse"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxuse"}}</label>
</span>
</li>
{{#each raceSkills as |skill key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{skill.img}}" /></a>
<span class="item-name-label-long">{{skill.name}}</a></span>
{{#if skill.system.unlimited}}
<span class="item-field-label-medium">N/A</span>
<span class="item-field-label-medium">N/A</span>
{{else}}
<span class="item-field-label-medium">{{skill.system.currentuse}}
(<a class="skill-use-minus plus-minus-button">&nbsp;-</a>/<a class="skill-use-plus plus-minus-button">+</a>)
</span>
<span class="item-field-label-medium">{{skill.system.maxuse}}</span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
@@ -298,7 +360,9 @@
<span class="item-field-label-medium">N/A</span>
<span class="item-field-label-medium">N/A</span>
{{else}}
<span class="item-field-label-medium">{{skill.system.currentuse}}</span>
<span class="item-field-label-medium">{{skill.system.currentuse}}
(<a class="skill-use-minus plus-minus-button">&nbsp;-</a>/<a class="skill-use-plus plus-minus-button">+</a>)
</span>
<span class="item-field-label-medium">{{skill.system.maxuse}}</span>
{{/if}}
@@ -384,20 +448,24 @@
<div class="flexcol">
{{#each powers as |school schoolKey|}}
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Powers</label></h3>
<h3><label class="items-title-text">{{schoolKey}}</label></h3>
</span>
</li>
{{#each powers as |power key|}}
{{#each school as |power key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{power._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{power.img}}" /></a>
<span class="item-name-label">
<span class="item-name-label-long3">
<a class="power-roll"><i class="fa-solid fa-dice-d20"></i>{{power.name}}</a>
</span>
<span class="item-name-label-medium">
<a class="power-roll">{{power.system.level}}</a>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
@@ -406,6 +474,7 @@
{{/each}}
</ul>
{{/each}}
</div>
</div>
@@ -413,6 +482,10 @@
{{!-- Equipement Tab --}}
<div class="tab equipment" data-group="primary" data-tab="equipment">
<div class="flexrow">
<label class="">{{localize "WH.ui.totalmoney"}} : {{totalMoney}}</label>
</div>
{{#each slotEquipments as |slot slotKey|}}
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg {{#if (gt slot.slotUsed slot.nbslots)}}items-title-bg-red{{/if}}">
@@ -433,7 +506,7 @@
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="{{itemtype}}" title="Create Item"><i class="fas fa-plus"></i></a>
<a class="item-control item-add" data-type="{{itemtype}}" data-slot="{{slotKey}}" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each slot.content as |item itemKey|}}
@@ -452,6 +525,10 @@
</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize (concat "WH.conf." item.system.isidentified)}}</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
@@ -472,29 +549,21 @@
<div>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="generic-label">Origin</label>
<input type="text" class="" name="system.biodata.origin" value="{{data.biodata.origin}}"
<label class="generic-label">{{localize "WH.ui.origin"}}</label>
<input type="text" class="" name="system.biodata.origin" value="{{system.biodata.origin}}"
data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Age</label>
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
<label class="generic-label">{{localize "WH.ui.age"}}</label>
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Height</label>
<input type="text" class="" name="system.biodata.height" value="{{data.biodata.height}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Eyes</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Hair</label>
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
<label class="generic-label">{{localize "WH.ui.height"}}</label>
<input type="text" class="" name="system.biodata.height" value="{{system.biodata.height}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Preferred Hand</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
<label class="generic-label">{{localize "WH.ui.preferredhand"}}</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{system.biodata.preferredhand}}"
data-dtype="String" />
</li>
</ul>
@@ -502,9 +571,9 @@
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Size</label>
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
{{#select data.biodata.size}}
<label class="generic-label">{{localize "WH.ui.size"}}</label>
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{system.biodata.size}}" data-dtype="Number">
{{#select system.biodata.size}}
<option value="1">Tiny</option>
<option value="2">Small</option>
<option value="3">Medium</option>
@@ -515,8 +584,16 @@
</select>
</li>
<li class="flexrow item">
<label class="generic-label">Sex</label>
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
<label class="generic-label">{{localize "WH.ui.gender"}}</label>
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.eyes"}}</label>
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.hair"}}</label>
<input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}" data-dtype="String" />
</li>
</ul>
</div>
@@ -524,13 +601,13 @@
<hr>
<h3>Background : </h3>
<h3>{{localize "WH.ui.background"}} : </h3>
<div class="form-group editor">
{{editor description target="system.biodata.description" button=true owner=owner
editable=editable}}
</div>
<hr>
<h3>Notes : </h3>
<h3>{{localize "WH.ui.notes"}} : </h3>
<div class="form-group editor">
{{editor notes target="system.biodata.notes" button=true owner=owner editable=editable}}
</div>

View File

@@ -1,75 +0,0 @@
<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="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
<ul>
<li><strong>Fight result !</strong></li>
{{#if successDetails.fumbleDetails}}
<li>Fumble ! : {{successDetails.fumbleDetails.data.text}} </li>
{{/if}}
{{#if armorResult}}
<li>Armor initial result : {{armorResult.rawArmor}}</li>
{{#each armorResult.messages as |message idx|}}
<li>{{message}}</li>
{{/each}}
{{/if}}
{{#if successDetails.hack_vs_shields}}
<li>Hack weapon : check shield !</li>
{{/if}}
{{#if successDetails.entangle}}
<li>Entangle weapon : attacker can entangle !</li>
{{/if}}
{{#if successDetails.knockback}}
<li>Knockback weapon : check knockback !</li>
{{/if}}
{{#if successDetails.hack_armors}}
<li>Hack weapon : check armor damage !</li>
{{/if}}
{{#if successDetails.penetrating_impale}}
<li>Penetrating weapon : apply the Impale condition !</li>
{{/if}}
{{#if (or successDetails.critical_1 successDetails.critical_2)}}
<li>Critical {{#if successDetails.critical_1}} 1 {{else}} 2 {{/if}} : {{successDetails.criticalText}} </li>
{{/if}}
{{#if successDetails.attackerHPLossValue}}
<li>Attacker has lost HP : {{successDetails.attackerHPLossValue}} HP </li>
{{/if}}
{{#if successDetails.defenderHPLossValue}}
<li>Defender has lost HP : {{successDetails.defenderHPLossValue}} HP </li>
{{/if}}
<li>Success details : {{successDetails.result}} </li>
<li><strong>Final successes</strong> {{sumSuccess}} </li>
<!-- <button class="chat-card-button reroll-level-remaining" data-roll-id="{{rollId}}">Reroll</button> -->
</ul>
</div>
</div>

View File

@@ -31,18 +31,18 @@
{{/if}}
{{#if usemWeaponMalus}}
<li>Multiple weapons malus : {{mWeaponMalus}}</li>
<li>{{localize "WH.chat.mweaponmalus"}}: {{mWeaponMalus}}</li>
{{/if}}
{{#if diceFormula}}
<li>Formula : {{diceFormula}}</li>
{{#if isCriticalSuccess}}
<li><span class="crit-success">Dice result : {{diceResult}}</span></li>
<li><span class="crit-success">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
{{#if isCriticalFailure}}
<li><span class="crit-failure">Dice result : {{diceResult}}</span></li>
<li><span class="crit-failure">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
<li>Dice result : <span>{{diceResult}}</span></li>
<li>{{localize "WH.chat.diceresult"}} : <span>{{diceResult}}</span></li>
{{/if}}
{{/if}}
{{/if}}
@@ -53,7 +53,7 @@
<li>{{localize "WH.ui.level"}} : {{power.system.level}}</li>
<li>{{{powerText}}}</li>
{{else}}
<li><strong>Result : {{roll.total}} </strong></li>
<li><strong>{{localize "WH.chat.result"}} : {{roll.total}} </strong></li>
{{/if}}
</ul>

View File

@@ -1,11 +0,0 @@
<div class="chat-message-header">
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
<h4 class=chat-actor-name>{{defenderName}}</h4>
</div>
<hr>
<div >
{{defenderName}} wins the opposition against {{attackerName}} !
</div>
</div>

View File

@@ -20,19 +20,19 @@
<li>Formula : {{diceFormula}}</li>
{{#if isCriticalSuccess}}
<li><span class="crit-success">Dice result : {{diceResult}}</span></li>
<li><span class="crit-success">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
{{#if isCriticalFailure}}
<li><span class="crit-failure">Dice result : {{diceResult}}</span></li>
<li><span class="crit-failure">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
<li>Dice result : <span>{{diceResult}}</span></li>
<li>{{localize "WH.chat.diceresult"}} : <span>{{diceResult}}</span></li>
{{/if}}
{{/if}}
{{#if isSuccess}}
<li><strong>Parry success ! </strong></li>
<li><strong>{{localize "WH.chat.parysuccess"}} </strong></li>
{{else}}
<li><strong>Parry failed ! </strong></li>
<li><strong>{{localize "WH.chat.paryfailed"}} </strong></li>
{{/if}}
</ul>
</div>

View File

@@ -1,46 +0,0 @@
<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="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
{{#if isRangedAttack}}
<div>{{defender.name}} is under Ranged attack. He must roll a Target Roll to defend himself.</div>
{{else}}
<div>{{defender.name}} is under Melee attack. He must roll a Defense Roll to defend himself.</div>
{{/if}}
<ul>
{{#if isRangedAttack}}
<li>
<button class="chat-card-button roll-defense-ranged" data-roll-id="{{@root.rollId}}">Roll Target !</button>
</li>
{{else}}
<li>
{{#each defenderWeapons as |weapon idx|}}
<button class="chat-card-button roll-defense-melee" data-defense-weapon-id="{{weapon._id}}"
data-roll-id="{{@root.rollId}}">{{weapon.name}}</button>
{{/each}}
</li>
{{/if}}
</ul>
<!-- <button class="chat-card-button reroll-level-remaining" data-roll-id="{{rollId}}">Reroll</button> -->
</ul>
</div>
</div>

View File

@@ -18,7 +18,7 @@
<div class="tab" data-group="primary">
<ul>
<li class="flexrow"><label class="item-field-label-medium ">Type</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.type"}}</label>
<select class="item-field-label-medium" type="text" name="system.armortype" value="{{system.armortype}}" data-dtype="String">
{{#select system.armortype}}
{{#each config.armorTypes as |type key|}}
@@ -28,7 +28,7 @@
</select>
</li>
<li class="flexrow"><label class="item-field-label-medium ">Damage reduction</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.damagereduction"}}</label>
<input type="text" class="item-field-label-medium " name="system.damagereduction" value="{{system.damagereduction}}" data-dtype="Number"/>
</li>

View File

@@ -12,8 +12,8 @@
<div class="tab details" data-group="primary" data-tab="description">
<label class="generic-label">Description</label>
<div class="medium-editor item-text-long-line">
<label class="generic-label">{{localize "WH.ui.description"}}</label>
<div class="editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
@@ -22,7 +22,7 @@
<ul>
{{#each system.weapons as |weaponflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{localize (concat "WH.conf." key)}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.weapons.{{key}}" {{checked weaponflag}}/>
@@ -30,7 +30,7 @@
{{/each}}
{{#each system.armors as |armorflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{localize (concat "WH.conf." key "armor")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.armors.{{key}}" {{checked armorflag}}/>
@@ -38,7 +38,7 @@
{{/each}}
{{#each system.shields as |shieldflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{localize (concat "WH.conf." key "shield")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.shields.{{key}}" {{checked shieldflag}}/>

View File

@@ -0,0 +1,32 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.class"}}</label>
<input type="text" class="item-field-label-medium " name="system.class" value="{{system.class}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.mandatoryfor"}}</label>
<input type="text" class="item-field-label-long2 " name="system.mandatoryfor" value="{{system.mandatoryfor}}" data-dtype="String"/>
</li>
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}
</ul>
</div>
</section>
</form>

View File

@@ -0,0 +1,24 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
</ul>
</div>
</section>
</form>

View File

@@ -16,6 +16,63 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.conditiontype"}}</label>
<select class="item-field-label-medium " type="text" name="system.conditiontype" value="{{system.conditiontype}}" data-dtype="String">
{{#select system.conditiontype}}
{{#each config.conditionType as |type key|}}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.duration"}}</label>
<select class="item-field-label-medium " type="text" name="system.duration" value="{{system.duration}}" data-dtype="String">
{{#select system.duration}}
{{#each config.conditionDuration as |type key|}}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.begin"}}</label>
<input type="text" class="item-field-label-long" name="system.begin" value="{{system.begin}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.specialduration"}}</label>
<select class="item-field-label-medium " type="text" name="system.specialduration" value="{{system.specialduration}}" data-dtype="String">
{{#select system.specialduration}}
{{#each config.conditionSpecialDuration as |type key|}}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.durationvalue"}}</label>
<input type="text" class="item-field-label-short" name="system.durationvalue" value="{{system.durationvalue}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.durationunit"}}</label>
<input type="text" class="item-field-label-long" name="system.durationunit" value="{{system.durationunit}}" data-dtype="String"/>
</li>
{{#if (eq conditiontype "disease")}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.dcsave"}}</label>
<input type="text" class="item-field-label-short" name="system.dcsave" value="{{system.dcsave}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.incubationtime"}}</label>
<input type="text" class="item-field-label-long" name="system.incubationtime" value="{{system.incubationtime}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.diseaseduration"}}</label>
<input type="text" class="item-field-label-long" name="system.diseaseduration" value="{{system.diseaseduration}}" data-dtype="String"/>
</li>
{{/if}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.effect"}}</label>
<input type="text" class="item-field-label-long" name="system.shortdescription" value="{{system.shortdescription}}" data-dtype="String"/>
</li>

View File

@@ -16,6 +16,10 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.providedslot"}}</label>
<input type="text" class="item-field-label-medium " name="system.providedslot" value="{{system.providedslot}}" data-dtype="Number"/>
</li>
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}
</ul>

View File

@@ -0,0 +1,24 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
</ul>
</div>
</section>
</form>

View File

@@ -0,0 +1,37 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.quantity"}}</label>
<input type="text" class="item-field-label-long" name="system.quantity" value="{{system.quantity}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.slotlocation"}}</label>
<select class="item-field-label-long " type="text" name="system.slotlocation" value="{{system.slotlocation}}" data-dtype="String">
{{#select system.slotlocation}}
{{#each config.slotNames as |type key|}}
<option value="{{key}}">{{localize type.label}}</option>
{{/each}}
{{/select}}
</select>
</li>
</ul>
</div>
</section>
</form>

View File

@@ -0,0 +1,64 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.application"}}</label>
<select class="item-field-label-medium " type="text" name="system.application" value="{{system.application}}" data-dtype="String">
{{#select system.application}}
{{#each config.poisonApplication as |type key|}}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.cost"}}</label>
<input type="text" class="item-field-label-medium " name="system.preparecost" value="{{system.preparecost}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.preparetime"}}</label>
<input type="text" class="item-field-label-medium " name="system.preparetime" value="{{system.preparetime}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.damage"}}</label>
<input type="text" class="item-field-label-medium " name="system.damageroll" value="{{system.damageroll}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.durationrounds"}}</label>
<input type="text" class="item-field-label-short " name="system.durationround" value="{{system.durationround}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.savesdc"}}</label>
<input type="text" class="item-field-label-short " name="system.savesdc" value="{{system.savesdc}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.savetype"}}</label>
<select class="item-field-label-long " type="text" name="system.savetype" value="{{system.savetype}}" data-dtype="String">
{{#select system.savetype}}
{{#each config.saveType as |type key|}}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select>
</li>
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}
</ul>
</div>
</section>
</form>

View File

@@ -0,0 +1,36 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.cost"}}</label>
<input type="text" class="item-field-label-medium " name="system.alchemycost" value="{{system.alchemycost}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.preparetime"}}</label>
<input type="text" class="item-field-label-medium " name="system.preparetime" value="{{system.preparetime}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.durationrounds"}}</label>
<input type="text" class="item-field-label-medium " name="system.durationround" value="{{system.durationround}}" data-dtype="Number"/>
</li>
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}
</ul>
</div>
</section>
</form>

View File

@@ -13,7 +13,7 @@
<div class="tab details" data-group="primary" data-tab="description">
<label class="generic-label">Description</label>
<div class="medium-editor item-text-long-line">
<div class="editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
@@ -64,7 +64,7 @@
</li>
{{#each system.weapons as |weaponflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{localize (concat "WH.conf." key)}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.weapons.{{key}}" {{checked weaponflag}}/>
@@ -72,7 +72,7 @@
{{/each}}
{{#each system.armors as |armorflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{localize (concat "WH.conf." key "armor")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.armors.{{key}}" {{checked armorflag}}/>
@@ -80,7 +80,7 @@
{{/each}}
{{#each system.shields as |shieldflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{localize (concat "WH.conf." key "shield")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.shields.{{key}}" {{checked shieldflag}}/>

View File

@@ -18,7 +18,7 @@
<div class="tab" data-group="primary">
<ul>
<li class="flexrow"><label class="item-field-label-medium ">Shield type</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.type"}}</label>
<select class="item-field-label-long " type="text" name="system.shieldtype" value="{{system.shieldtype}}" data-dtype="String">
{{#select system.shieldtype}}
{{#each config.armorTypes as |type key|}}
@@ -28,7 +28,7 @@
</select>
</li>
<li class="flexrow"><label class="item-field-label-medium ">Parry Bonus</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.parrybonus"}}</label>
<input type="text" class="item-field-label-medium " name="system.parrybonus" value="{{system.parrybonus}}" data-dtype="Number"/>
</li>

View File

@@ -15,6 +15,10 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.israceskill"}}</label>
<input type="checkbox" name="system.raceskill" {{checked system.raceskill}}/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.isclassskill"}}</label>
<input type="checkbox" name="system.classskill" {{checked system.classskill}}/>
</li>
@@ -23,6 +27,10 @@
<input type="checkbox" name="system.unlimited" {{checked system.unlimited}}/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.skilllevelacquired"}}</label>
<input type="text" class="item-field-label-medium " name="system.acquiredatlevel" value="{{system.acquiredatlevel}}" data-dtype="Number"/>
</li>
{{#if system.unlimited}}
{{else}}

View File

@@ -1,49 +0,0 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="generic-label">Lore</label>
<select class="competence-base flexrow" type="text" name="system.lore" value="{{data.lore}}" data-dtype="String">
{{#select data.lore}}
<option value="earth">Earth</option>
<option value="air">Air</option>
<option value="fire">Fire</option>
<option value="water">Water</option>
<option value="shadow">Shadow</option>
{{/select}}
</select>
</li>
<li class="flexrow"><label class="generic-label">Circle</label>
<select class="competence-base flexrow" type="text" name="system.circle" value="{{data.circle}}" data-dtype="Number">
{{#select data.circle}}
<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>
{{/select}}
</select>
</li>
<li class="flexrow"><label class="generic-label">Range</label>
<input type="text" class="" name="system.range" value="{{data.range}}" data-dtype="String"/>
</li>
</ul>
</div>
</section>
</form>

View File

@@ -0,0 +1,40 @@
<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-warhero/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.dcfind"}}</label>
<input type="text" class="item-field-label-short " name="system.dcfind" value="{{system.dcfind}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.dcdisable"}}</label>
<input type="text" class="item-field-label-short " name="system.dcdisable" value="{{system.dcdisable}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.throwtohit"}}</label>
<input type="text" class="item-field-label-medium " name="system.throwtohit" value="{{system.throwtohit}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.damage"}}</label>
<input type="text" class="item-field-label-medium " name="system.damageroll" value="{{system.damageroll}}" data-dtype="String"/>
</li>
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}
</ul>
</div>
</section>
</form>

View File

@@ -18,7 +18,7 @@
<div class="tab" data-group="primary">
<ul>
<li class="flexrow"><label class="item-field-label-medium ">Type</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.type"}}</label>
<select class="item-field-label-medium " type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String">
{{#select system.weapontype}}
{{#each config.weaponTypes as |type key|}}
@@ -28,10 +28,24 @@
</select>
</li>
<li class="flexrow"><label class="item-field-label-medium ">Damage</label>
{{#if (eq system.weapontype "special")}}
<li class="flexrow"><label class="item-field-label-vlong2 ">{{localize "WH.ui.rawroll"}}</label>
<input type="text" class="item-field-label-long " name="system.rollformula" value="{{system.rollformula}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-vlong2 ">{{localize "WH.ui.rawdamage"}}</label>
<input type="text" class="item-field-label-long " name="system.damageformula" value="{{system.damageformula}}" data-dtype="String"/>
</li>
{{else}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.damage"}}</label>
<input type="text" class="item-field-label-medium " name="system.damage" value="{{system.damage}}" data-dtype="String"/>
</li>
{{/if}}
{{#if (eq system.weapontype "polearm")}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.2hdamage"}}</label>
<input type="text" class="item-field-label-medium " name="system.damage2hands" value="{{system.damage2hands}}" data-dtype="String"/>
</li>
{{/if}}
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}

View File

@@ -0,0 +1,555 @@
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="header-fields">
<h1 class="charname margin-right"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
<div class="flexrow">
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
<div class="flexcol">
<div class="flexrow">
<div class="ability-item">
<ul>
{{#each system.statistics as |stat key|}}
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=stat key=key path="statistics" fieldClass="item-field-label-medium"}}
{{/each}}
</ul>
</div>
<div class="ability-item">
<ul>
<li class="item flexrow list-item " data-item-id="{{race._id}}">
<label class="item-field-label-medium">Race</label>
<a class="item-edit"><img class="sheet-competence-img" src="{{race.img}}"></a>
<input type="text" class="item-field-label-medium" disabled value="{{race.name}}" data-dtype="String" />
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
<li class="item flexrow list-item" data-item-id="{{class._id}}">
<label class="item-field-label-medium">Class</label>
<a class="item-edit"><img class="sheet-competence-img" src="{{class.img}}"></a>
<input type="text" class="item-field-label-medium" disabled value="{{class.name}}" data-dtype="String" />
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
<li class="item flexrow list-item" >
<label class="item-field-label-medium">Religion</label>
<input type="text" class="item-field-label-medium" name="system.biodata.religion" value="{{system.biodata.religion}}" data-dtype="String" />
</li>
</ul>
</div>
</div>
<div class="flexrow">
{{#each system.attributes as |attr key|}}
{{#if attr.isheader}}
<div class="flexrow">
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-medium"}}
</div>
{{/if}}
{{/each}}
</ul>
</div>
</div>
</div>
</div>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="main">{{localize "WH.ui.main"}}</a>
<a class="item" data-tab="combat">{{localize "WH.ui.combat"}}</a>
<a class="item" data-tab="skill">{{localize "WH.ui.skillstab"}}</a>
<a class="item" data-tab="power">{{localize "WH.ui.powers"}}</a>
<a class="item" data-tab="equipment">{{localize "WH.ui.equipment"}}</a>
<a class="item" data-tab="biodata">{{localize "WH.ui.biography"}}</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Skills Tab --}}
<div class="tab main" data-group="primary" data-tab="main">
<div class="flexrow">
<div class="ability-item">
<ul>
{{#each system.attributes as |attr key|}}
{{#if (not attr.isheader)}}
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-vlong"}}
{{/if}}
{{/each}}
</ul>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.competency"}}</label></h3>
</span>
</li>
{{#each competency.weapons as |flag key|}}
{{#if flag}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.weapons"}} {{key}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.shields as |flag key|}}
{{#if flag}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.shields"}} {{key}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.armors as |flag key|}}
{{#if flag}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.armors"}} {{key}}</span>
</li>
{{/if}}
{{/each}}
</ul>
</div>
</div>
<div class="ability-item">
<ul>
<li class="item flexrow list-item item-stat-roll" data-attr-key="{{key}}">
<span class="item-field-label-vlong" name="{{key}}">
<h4 class="item-field-label-vlong">
{{localize "WH.ui.xphp"}}
</h4>
</span>
<span class="item-field-label-long" >{{hpprogression}}</span>
</li>
{{#each system.secondary as |second key|}}
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=second key=key path="secondary" fieldClass="item-field-label-vlong"}}
{{/each}}
</ul>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.languages"}}</label></h3>
</span>
</li>
{{#each languages as |language key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{language.img}}" /></a>
<span class="item-name-label-long">{{language.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
</div>
</div>
{{!-- Combat Tab --}}
<div class="tab combat" data-group="primary" data-tab="combat">
<div class="flexcol">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.weapons"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Damage"}}</label>
</span>
</li>
{{#each weapons as |weapon key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{weapon._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{weapon.img}}" /></a>
<span class="item-name-label-long"><a class="roll-weapon"><i class="fa-solid fa-dice-d20"></i>{{weapon.name}}</a></span>
<span class="item-field-label-medium">{{weapon.system.weapontype}}</span>
{{#if (eq system.weapontype "special")}}
<span class="item-field-label-medium"><a class="roll-damage"><i class="fa-solid fa-dice-d20"></i>{{weapon.system.damageformula}}</a></span>
{{else}}
<span class="item-field-label-medium"><a class="roll-damage"><i class="fa-solid fa-dice-d20"></i>{{weapon.damageFormula}}</a></span>
{{/if}}
{{#if (eq system.weapontype "polearm")}}
<span class="item-field-label-medium"><a class="roll-damage-2hands"><i class="fa-solid fa-dice-d20"></i>{{weapon.damageFormula2Hands}}</a></span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.shields"}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.parrybonus"}}</label>
</span>
</li>
{{#each shields as |shield key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{shield._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{shield.img}}" /></a>
<span class="item-name-label-long">{{shield.name}}</span>
<span class="item-field-label-short">{{shield.system.shieldtype}}</span>
<span class="item-field-label-medium">{{shield.system.parrybonus}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.armors"}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.damagereduction"}}</label>
</span>
</li>
{{#each armors as |armor key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{armor._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{armor.img}}" /></a>
<span class="item-name-label-long">{{armor.name}}</span>
<span class="item-field-label-short">{{armor.system.armortype}}</span>
<span class="item-field-label-medium">{{armor.system.damagereduction}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
</div>
{{!-- Skills Tab --}}
<div class="tab skill" data-group="primary" data-tab="skill">
<div class="flexcol">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.classSkills"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.currentuse"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxuse"}}</label>
</span>
</li>
{{#each classSkills as |skill key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{skill.img}}" /></a>
<span class="item-name-label-long">{{skill.name}}</a></span>
{{#if skill.system.unlimited}}
<span class="item-field-label-medium">N/A</span>
<span class="item-field-label-medium">N/A</span>
{{else}}
<span class="item-field-label-medium">{{skill.system.currentuse}}</span>
<span class="item-field-label-medium">{{skill.system.maxuse}}</span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.skills"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.currentuse"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxuse"}}</label>
</span>
</li>
{{#each skills as |skill key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{skill.img}}" /></a>
<span class="item-name-label-long">{{skill.name}}</span>
{{#if skill.system.unlimited}}
<span class="item-field-label-medium">N/A</span>
<span class="item-field-label-medium">N/A</span>
{{else}}
<span class="item-field-label-medium">{{skill.system.currentuse}}</span>
<span class="item-field-label-medium">{{skill.system.maxuse}}</span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.conditions"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.effect"}}</label>
</span>
</li>
{{#each conditions as |cond key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{cond._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{cond.img}}" /></a>
<span class="item-name-label-long">{{cond.name}}</span>
<span class="item-field-label-medium">{{cond.system.shortdescription}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
</div>
{{!-- Powers Tab --}}
<div class="tab power" data-group="primary" data-tab="power">
<div class="flexcol">
{{#each powers as |school schoolKey|}}
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">{{schoolKey}}</label></h3>
</span>
</li>
{{#each school as |power key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{power._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{power.img}}" /></a>
<span class="item-name-label">
<a class="power-roll"><i class="fa-solid fa-dice-d20"></i>{{power.name}}</a>
</span>
<span class="item-name-label">
<a class="power-roll">{{power.system.level}}</a>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{/each}}
</div>
</div>
{{!-- Equipement Tab --}}
<div class="tab equipment" data-group="primary" data-tab="equipment">
{{#each slotEquipments as |slot slotKey|}}
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg {{#if (gt slot.slotUsed slot.nbslots)}}items-title-bg-red{{/if}}">
<span class="item-name-label-header">
<h3><label class="items-title-text">{{localize slot.label}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-long">
<label class="short-label">{{localize "WH.ui.Qty"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxslots"}}: {{slot.nbslots}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.slotsused"}}: {{slot.slotUsed}}</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="{{itemtype}}" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each slot.content as |item itemKey|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{item._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{item.img}}" /></a>
<span class="item-name-label">{{item.name}}</span>
<span class="item-field-label-medium">
<label class="short-label">{{upperFirst item.type}}</label>
</span>
<span class="item-field-label-long"><label>
{{item.system.quantity}}
(<a class="quantity-minus plus-minus-button"> -</a>/<a class="quantity-plus plus-minus-button">+</a>)
</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{/each}}
<hr>
</div>
{{!-- Biography Tab --}}
<div class="tab biodata" data-group="primary" data-tab="biodata">
<div class="grid grid-2col">
<div>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.origin"}}</label>
<input type="text" class="" name="system.biodata.origin" value="{{data.biodata.origin}}"
data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.age"}}</label>
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.height"}}</label>
<input type="text" class="" name="system.biodata.height" value="{{data.biodata.height}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.preferredhand"}}</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
data-dtype="String" />
</li>
</ul>
</div>
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.size"}}</label>
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
{{#select data.biodata.size}}
<option value="1">Tiny</option>
<option value="2">Small</option>
<option value="3">Medium</option>
<option value="4">Large</option>
<option value="5">Huge</option>
<option value="6">Gargantuan</option>
{{/select}}
</select>
</li>
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.gender"}}</label>
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.eyes"}}</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.hair"}}</label>
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
</li>
</ul>
</div>
</div>
<hr>
<h3>{{localize "WH.ui.background"}} : </h3>
<div class="form-group editor">
{{editor description target="system.biodata.description" button=true owner=owner
editable=editable}}
</div>
<hr>
<h3>{{localize "WH.ui.notes"}} : </h3>
<div class="form-group editor">
{{editor notes target="system.biodata.notes" button=true owner=owner editable=editable}}
</div>
<hr>
</article>
</div>
</section>
</form>

View File

@@ -11,172 +11,147 @@
<div class="flexrow">
<div class="ability-item">
<ul>
{{#each data.abilities as |ability key|}}
{{#if (eq ability.col 1)}}
{{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}}
{{/if}}
{{#each system.statistics as |stat key|}}
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=stat key=key path="statistics" fieldClass="item-field-label-medium"}}
{{/each}}
</ul>
<li class="item flexrow list-item" data-attr-key="class">
<span class="ability-label " name="class">
<h4 class="ability-text-white ability-margin">Class</h4>
</span>
<select class="competence-base flexrow" type="text" name="system.biodata.class" value="{{data.biodata.class}}" data-dtype="String">
{{#select data.biodata.class}}
<option value="none">None</option>
<option value="chaplain">Chaplain</option>
<option value="magus">Magus</option>
<option value="martial">Martial</option>
<option value="skalawag">Skalawag</option>
<option value="warden">Warden</option>
{{/select}}
</select>
</li>
</div>
<div class="ability-item">
<ul>
{{#each data.abilities as |ability key|}}
{{#if (eq ability.col 2)}}
{{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}}
<li class="item flexrow list-item " data-item-id="{{race._id}}">
<label class="item-field-label-medium">Race</label>
<a class="item-edit"><img class="sheet-competence-img" src="{{race.img}}"></a>
<input type="text" class="item-field-label-medium" disabled value="{{race.name}}" data-dtype="String" />
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
<li class="item flexrow list-item" data-item-id="{{class._id}}">
<label class="item-field-label-medium">Class</label>
<a class="item-edit"><img class="sheet-competence-img" src="{{class.img}}"></a>
<input type="text" class="item-field-label-medium" disabled value="{{class.name}}" data-dtype="String" />
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
<li class="item flexrow list-item" >
<label class="item-field-label-medium">Religion</label>
<input type="text" class="item-field-label-medium" name="system.biodata.religion" value="{{system.biodata.religion}}" data-dtype="String" />
</li>
</ul>
</div>
</div>
<div class="flexrow">
{{#each system.attributes as |attr key|}}
{{#if attr.isheader}}
<div class="flexrow">
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-medium"}}
</div>
{{/if}}
{{/each}}
{{#if equippedArmor}}
<li class="item flexrow list-item" data-attr-key="class">
<img class="sheet-competence-img" src="{{equippedArmor.img}}" />
<span class="ability-label " name="class">
<h4 class="ability-text-white ability-margin"><a class="roll-armor-die ability-margin">{{equippedArmor.name}}</a></h4>
</span>
</li>
{{/if}}
{{#if equippedShield}}
<li class="item flexrow list-item" data-attr-key="class">
<img class="sheet-competence-img" src="{{equippedShield.img}}" />
<span class="ability-label " name="equippedShield">
<h4 class="ability-text-white ability-margin"><a class="roll-shield-die ability-margin">{{equippedShield.name}}</a></h4>
</span>
</li>
{{/if}}
<li class="item flexrow list-item" data-attr-key="class">
<img class="sheet-competence-img" src="systems/fvtt-crucible-rpg/images/icons/feats/Marksman (Ballistic).webp" />
<span class="ability-label " name="rollTarget">
<h4 class="ability-text-white ability-margin"><a class="roll-target-die ability-margin">Target Roll</a></h4>
</span>
</li>
</ul>
</div>
<div class="ability-item status-block">
{{> systems/fvtt-crucible-rpg/templates/partial-actor-status.html}}
</div>
</div>
</div>
</div>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="details">Details</a>
<a class="item" data-tab="biodata">Biography</a>
<a class="item" data-tab="main">{{localize "WH.ui.main"}}</a>
<a class="item" data-tab="combat">{{localize "WH.ui.combat"}}</a>
<a class="item" data-tab="skill">{{localize "WH.ui.skillstab"}}</a>
<a class="item" data-tab="power">{{localize "WH.ui.powers"}}</a>
<a class="item" data-tab="equipment">{{localize "WH.ui.equipment"}}</a>
<a class="item" data-tab="biodata">{{localize "WH.ui.biography"}}</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Skills Tab --}}
<div class="tab skills" data-group="primary" data-tab="details">
<div class="tab main" data-group="primary" data-tab="main">
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Skills</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Ability</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Dice</label>
</span>
<span class="item-field-label-long">
<label class="short-label">Background</label>
</span>
</li>
{{#each skills as |skill key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{skill.img}}" /></a>
<span class="item-name-label"><a class="roll-skill">{{skill.name}}</a></span>
<span class="item-field-label-short">{{upper skill.system.ability}}</span>
<span class="item-field-label-short">{{skill.system.skilldice}}</span>
<span class="item-field-label-long">&nbsp;-&nbsp;</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
<div class="flexrow">
<div class="ability-item">
<ul>
{{#each system.attributes as |attr key|}}
{{#if (not attr.isheader)}}
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-vlong"}}
{{/if}}
{{/each}}
</ul>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">Combat</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Ability</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Range</label>
<h3><label class="items-title-text">{{localize "WH.ui.competency"}}</label></h3>
</span>
</li>
{{#each equippedWeapons as |weapon key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{weapon._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{weapon.img}}" /></a>
<span class="item-name-label-long"><a class ="roll-weapon">{{weapon.name}}</a></span>
<span class="item-field-label-short">{{weapon.system.ability}}</span>
<span class="item-field-label-medium">{{perk.system.range}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{#each competency.weapons as |flag key|}}
{{#if flag}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.weapons"}} {{key}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.shields as |flag key|}}
{{#if flag}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.shields"}} {{key}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.armors as |flag key|}}
{{#if flag}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.armors"}} {{key}}</span>
</li>
{{/if}}
{{/each}}
</ul>
</div>
</div>
<div class="ability-item">
<ul>
<li class="item flexrow list-item item-stat-roll" data-attr-key="{{key}}">
<span class="item-field-label-vlong" name="{{key}}">
<h4 class="item-field-label-vlong">
{{localize "WH.ui.xphp"}}
</h4>
</span>
<span class="item-field-label-long" >{{hpprogression}}</span>
</li>
{{#each system.secondary as |second key|}}
{{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=second key=key path="secondary" fieldClass="item-field-label-vlong"}}
{{/each}}
</ul>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">Monster Powers</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">Feature Die?</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">SL?</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">SL</label>
<h3><label class="items-title-text">{{localize "WH.ui.languages"}}</label></h3>
</span>
</li>
{{#each feats as |feat key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{feat._id}}">
{{#each languages as |language key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{feat.img}}" /></a>
<span class="item-name-label-long">{{feat.name}}</span>
<span class="item-field-label-medium">{{upperFirst feat.system.isfeatdie}}</span>
<span class="item-field-label-medium">{{upperFirst feat.system.issl}}</span>
<span class="item-field-label-medium">{{feat.system.sl}}</span>
src="{{language.img}}" /></a>
<span class="item-name-label-long">{{language.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
@@ -185,150 +160,322 @@
</li>
{{/each}}
</ul>
</div>
</div>
</div>
</div>
{{!-- Combat Tab --}}
<div class="tab combat" data-group="primary" data-tab="combat">
<div class="flexcol">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">Conditions</label></h3>
<h3><label class="items-title-text">{{localize "WH.ui.weapons"}}</label></h3>
</span>
</li>
{{#each conditions as |condition key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{condition._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{condition.img}}" /></a>
<span class="item-name-label-long">{{condition.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Weapons</label></h3>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Attack</label>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Damage"}}</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Damage</label>
</span>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="weapon" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each weapons as |weapon key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{weapon._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{weapon.img}}" /></a>
<span class="item-name-label">{{weapon.name}}</span>
<span class="item-field-label-short"><label>{{upper weapon.system.ability}}</label></span>
<span class="item-field-label-short"><label>{{upper weapon.system.damage}}</label></span>
<span class="item-name-label-long"><a class="roll-weapon"><i class="fa-solid fa-dice-d20"></i>{{weapon.name}}</a></span>
<span class="item-field-label-medium">{{weapon.system.weapontype}}</span>
{{#if (eq system.weapontype "special")}}
<span class="item-field-label-medium"><a class="roll-damage"><i class="fa-solid fa-dice-d20"></i>{{weapon.system.damageformula}}</a></span>
{{else}}
<span class="item-field-label-medium"><a class="roll-damage"><i class="fa-solid fa-dice-d20"></i>{{weapon.damageFormula}}</a></span>
{{/if}}
{{#if (eq system.weapontype "polearm")}}
<span class="item-field-label-medium"><a class="roll-damage-2hands"><i class="fa-solid fa-dice-d20"></i>{{weapon.damageFormula2Hands}}</a></span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-equip" title="Worn">{{#if weapon.system.equipped}}<i
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<ul class="item-list alternate-list">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Armors</label></h3>
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.shields"}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Type</label>
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Absorption</label>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.parrybonus"}}</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="armor" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each armors as |armor key|}}
<li class="item list-item flexrow list-item-shadow" data-item-id="{{armor._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{armor.img}}" /></a>
<span class="item-name-label">{{armor.name}}</span>
<span class="item-field-label-short">{{upper armor.system.armortype}}</span>
<span class="item-field-label-short">{{armor.system.absorprionroll}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-equip" title="Worn">{{#if armor.system.equipped}}<i
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Shields</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Dice</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="shield" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each shields as |shield key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{shield._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{shield.img}}" /></a>
<span class="item-name-label">{{shield.name}}</span>
<span class="item-field-label-short">{{shield.system.levelDice}}</span>
<span class="item-name-label-long">{{shield.name}}</span>
<span class="item-field-label-short">{{shield.system.shieldtype}}</span>
<span class="item-field-label-medium">{{shield.system.parrybonus}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-equip" title="Worn">{{#if shield.system.equipped}}<i
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<ul class="item-list alternate-list">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.armors"}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.damagereduction"}}</label>
</span>
</li>
{{#each armors as |armor key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{armor._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{armor.img}}" /></a>
<span class="item-name-label-long">{{armor.name}}</span>
<span class="item-field-label-short">{{armor.system.armortype}}</span>
<span class="item-field-label-medium">{{armor.system.damagereduction}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
</div>
{{!-- Skills Tab --}}
<div class="tab skill" data-group="primary" data-tab="skill">
<div class="flexcol">
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.classSkills"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.currentuse"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxuse"}}</label>
</span>
</li>
{{#each classSkills as |skill key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{skill.img}}" /></a>
<span class="item-name-label-long">{{skill.name}}</a></span>
{{#if skill.system.unlimited}}
<span class="item-field-label-medium">N/A</span>
<span class="item-field-label-medium">N/A</span>
{{else}}
<span class="item-field-label-medium">{{skill.system.currentuse}}</span>
<span class="item-field-label-medium">{{skill.system.maxuse}}</span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.skills"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.currentuse"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxuse"}}</label>
</span>
</li>
{{#each skills as |skill key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{skill.img}}" /></a>
<span class="item-name-label-long">{{skill.name}}</span>
{{#if skill.system.unlimited}}
<span class="item-field-label-medium">N/A</span>
<span class="item-field-label-medium">N/A</span>
{{else}}
<span class="item-field-label-medium">{{skill.system.currentuse}}</span>
<span class="item-field-label-medium">{{skill.system.maxuse}}</span>
{{/if}}
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">{{localize "WH.ui.conditions"}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.effect"}}</label>
</span>
</li>
{{#each conditions as |cond key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{cond._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{cond.img}}" /></a>
<span class="item-name-label-long">{{cond.name}}</span>
<span class="item-field-label-medium">{{cond.system.shortdescription}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
</div>
</div>
{{!-- Powers Tab --}}
<div class="tab power" data-group="primary" data-tab="power">
<div class="flexcol">
{{#each powers as |school schoolKey|}}
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Equipment</label></h3>
<h3><label class="items-title-text">{{schoolKey}}</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Quantity</label>
</li>
{{#each school as |power key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{power._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{power.img}}" /></a>
<span class="item-name-label">
<a class="power-roll"><i class="fa-solid fa-dice-d20"></i>{{power.name}}</a>
</span>
<span class="item-name-label">
<a class="power-roll">{{power.system.level}}</a>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="equipment" title="Create Item"><i class="fas fa-plus"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{/each}}
</div>
</div>
</li>
{{#each containersTree as |equip key|}}
{{> systems/fvtt-crucible-rpg/templates/partial-actor-equipment.html equip=equip level=1}}
<ul class="item-list list-item-shadow2 list-item-margin1">
{{#each equip.data.contents as |subgear key|}}
{{> systems/fvtt-crucible-rpg/templates/partial-actor-equipment.html equip=subgear level=2}}
{{/each}}
</ul>
{{/each}}
</ul>
{{!-- Equipement Tab --}}
<div class="tab equipment" data-group="primary" data-tab="equipment">
{{#each slotEquipments as |slot slotKey|}}
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg {{#if (gt slot.slotUsed slot.nbslots)}}items-title-bg-red{{/if}}">
<span class="item-name-label-header">
<h3><label class="items-title-text">{{localize slot.label}}</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.Type"}}</label>
</span>
<span class="item-field-label-long">
<label class="short-label">{{localize "WH.ui.Qty"}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.maxslots"}}: {{slot.nbslots}}</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">{{localize "WH.ui.slotsused"}}: {{slot.slotUsed}}</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="{{itemtype}}" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each slot.content as |item itemKey|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{item._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{item.img}}" /></a>
<span class="item-name-label">{{item.name}}</span>
<span class="item-field-label-medium">
<label class="short-label">{{upperFirst item.type}}</label>
</span>
<span class="item-field-label-long"><label>
{{item.system.quantity}}
(<a class="quantity-minus plus-minus-button"> -</a>/<a class="quantity-plus plus-minus-button">+</a>)
</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{/each}}
<hr>
</div>
@@ -338,32 +485,29 @@
<div>
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="generic-label">Origin</label>
<label class="generic-label">{{localize "WH.ui.origin"}}</label>
<input type="text" class="" name="system.biodata.origin" value="{{data.biodata.origin}}"
data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Age</label>
<label class="generic-label">{{localize "WH.ui.age"}}</label>
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Height</label>
<label class="generic-label">{{localize "WH.ui.height"}}</label>
<input type="text" class="" name="system.biodata.height" value="{{data.biodata.height}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Eyes</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Hair</label>
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.preferredhand"}}</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
data-dtype="String" />
</li>
</ul>
</div>
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Size</label>
<label class="generic-label">{{localize "WH.ui.size"}}</label>
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
{{#select data.biodata.size}}
<option value="1">Tiny</option>
@@ -376,18 +520,16 @@
</select>
</li>
<li class="flexrow item">
<label class="generic-label">Sex</label>
<label class="generic-label">{{localize "WH.ui.gender"}}</label>
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Preferred Hand</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
data-dtype="String" />
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.eyes"}}</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
</li>
<li class="flexrow item" data-item-id="{{race._id}}">
<label class="generic-label">Race</label>
<a class="item-edit"><img class="stat-icon" src="{{race.img}}"></a>
<input type="text" class="" name="system.biodata.racename" value="{{data.biodata.racename}}" data-dtype="String" />
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.hair"}}</label>
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
</li>
</ul>
</div>
@@ -395,15 +537,15 @@
<hr>
<h3>Background : </h3>
<h3>{{localize "WH.ui.background"}} : </h3>
<div class="form-group editor">
{{editor data.biodata.description target="system.biodata.description" button=true owner=owner
{{editor description target="system.biodata.description" button=true owner=owner
editable=editable}}
</div>
<hr>
<h3>Notes : </h3>
<h3>{{localize "WH.ui.notes"}} : </h3>
<div class="form-group editor">
{{editor data.biodata.notes target="system.biodata.notes" button=true owner=owner editable=editable}}
{{editor notes target="system.biodata.notes" button=true owner=owner editable=editable}}
</div>
<hr>
</article>

View File

@@ -31,14 +31,20 @@
{{#if hasmax}}
<input type="text" class="item-field-label-short " name="system.{{path}}.{{key}}.max" value="{{stat.max}}" data-dtype="Number"/>
{{/if}}
{{#if hasuse}}
<input type="text" class="item-field-label-short " name="system.{{path}}.{{key}}.nbuse" value="{{stat.nbuse}}" data-dtype="Number"/>
<label class="item-field-label-2rem">&nbsp;/&nbsp;</label>
<input type="text" class="item-field-label-short " name="system.{{path}}.{{key}}.maxuse" value="{{stat.maxuse}}" data-dtype="Number"/>
{{/if}}
{{/if}}
{{#if hassave}}
<span class="item-field-label-short" name="{{key}}">
<h4 class="item-field-label-short">
<span class="item-field-label-medium" name="{{key}}">
<h4 class="item-field-label-medium">
<i class="fa-solid fa-dice-d20"></i>
<a class="roll-save stat-margin" data-type="{{path}}" data-key="{{key}}">
{{localize "WH.ui.save"}}
{{localize (concat "WH.ui.save" key)}}
</a>
</h4>
</span>

View File

@@ -1,7 +1,7 @@
<li class="flexrow"><label class="item-field-label-medium ">Slots used</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.slotsused"}}</label>
<input type="text" class="item-field-label-medium " name="system.slotused" value="{{system.slotused}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-medium ">Slot location</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.slotlocation"}}</label>
<select class="item-field-label-long " type="text" name="system.slotlocation" value="{{system.slotlocation}}" data-dtype="String">
{{#select system.slotlocation}}
{{#each config.slotNames as |type key|}}
@@ -10,9 +10,20 @@
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-medium ">Quantity</label>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.identified"}}</label>
<select class="item-field-label-long " type="text" name="system.isidentified" value="{{system.isidentified}}" data-dtype="String">
{{#select system.isidentified}}
{{#each config.identifiedState as |type key|}}
<option value="{{key}}">{{localize type}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.quantity"}}</label>
<input type="text" class="item-field-label-medium " name="system.quantity" value="{{system.quantity}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-medium">Cost</label>
<li class="flexrow"><label class="item-field-label-medium">{{localize "WH.ui.cost"}}</label>
<input type="text" class="item-field-label-medium " name="system.cost" value="{{system.cost}}" data-dtype="Number"/>
</li>

View File

@@ -1,7 +1,7 @@
<div class="tab description" data-group="primary" data-tab="description">
<div>
<label class="generic-label">Description</label>
<div class="medium-editor item-text-long-line">
<label class="generic-label">{{localize "WH.ui.description"}}</label>
<div class="editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>

View File

@@ -1,5 +1,5 @@
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="description">Description</a>
<a class="item" data-tab="details">Details</a>
<a class="item" data-tab="description">{{localize "WH.ui.description"}}</a>
<a class="item" data-tab="details">{{localize "WH.ui.details"}}</a>
</nav>

View File

@@ -1,7 +0,0 @@
<option value="agi">Agility</option>
<option value="str">Strength</option>
<option value="dex">Dexterity</option>
<option value="con">Constitution</option>
<option value="int">Intelligence</option>
<option value="wit">Wits</option>
<option value="cha">Charisma</option>

View File

@@ -1,13 +0,0 @@
<option value="camping">Camping & Survival</option>
<option value="communication">Communication & Information</option>
<option value="equestrian">Equestrian</option>
<option value="spy">Law/Security/Spy/Thief</option>
<option value="medical">Medical</option>
<option value="tools">Tools</option>
<option value="weaponaccess">Weapons accessories</option>
<option value="wizard">Wizards materials</option>
<option value="mount">Mounts</option>
<option value="vehicle">Vehicles</option>
<option value="clothing">Clothing</option>
<option value="ammo">Ammo</option>
<option value="misc">Misc</option>

View File

@@ -1,14 +0,0 @@
{{#if notapplicable}}
<option value="notapplicable">Not applicable</option>
{{/if}}
<option value="0">0</option>
<option value="1">d4</option>
<option value="2">d6</option>
<option value="3">d8</option>
<option value="4">d10</option>
<option value="5">d12</option>
<option value="6">d12 d4</option>
<option value="7">d12 d6</option>
<option value="8">d12 d8</option>
<option value="9">d12 d10</option>
<option value="10">d12 d12</option>

View File

@@ -1,15 +0,0 @@
{{#if notapplicable}}
<option value="notapplicable">Not applicable</option>
{{/if}}
<option value="touch">Self Only</option>
<option value="touchself">Touch/Self</option>
<option value="tz">Threat Zone</option>
<option value="close">Close</option>
<option value="medium">Medium</option>
<option value="long">Long</option>
<option value="extreme">Extreme</option>
<option value="sight">Line of Sight</option>
<option value="tz_close">TZ/Close</option>
<option value="close_medium">Close/Medium</option>
<option value="medium_long">Medium/Long</option>
<option value="long_extreme">Long/Extreme</option>

View File

@@ -1,4 +0,0 @@
<ul>
</ul>

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

@@ -10,20 +10,41 @@
{{#if weapon}}
<div class="flexrow">
<span class="roll-dialog-long">Weapon : </span>
<span class="item-field-label-medium">{{weapon.name}}</span>
{{#if (eq mode "damage")}}
<div class="flexrow">
<span class="roll-dialog-long">Damage : </span>
<span class="item-field-label-medium">{{weapon.damageFormula}}</span>
<span class="item-field-label-vlong">{{localize "WH.ui.weapon"}} : </span>
<span class="item-field-label-vlong">{{weapon.name}}</span>
</div>
{{#if (eq mode "damage")}}
{{#if (eq weapon.system.weapontype "special")}}
<div class="flexrow">
<span class="item-field-label-vlong">{{localize "WH.ui.damage"}} : </span>
<span class="item-field-label-vlong">{{weapon.system.damageformula}}</span>
</div>
{{else}}
<div class="flexrow">
<span class="item-field-label-vlong">{{localize "WH.ui.damage"}} : </span>
{{#if is2hands}}
<span class="item-field-label-vlong">{{weapon.damageFormula2Hands}}</span>
{{else}}
<span class="item-field-label-vlong">{{weapon.damageFormula}}</span>
{{/if}}
</div>
{{/if}}
{{else}}
{{#if (eq weapon.system.weapontype "special")}}
<div class="flexrow">
<span class="item-field-label-vlong">{{localize "WH.chat.rollformula"}} : </span>
<span class="item-field-label-vlong">{{weapon.system.rollformula}}</span>
</div>
{{/if}}
{{/if}}
{{/if}}
{{#if stat}}
<div class="flexrow">
<span class="roll-dialog-long">{{localize stat.label}}</span>
<span class="item-field-label-vlong">{{localize stat.label}}</span>
{{#if (eq mode "save")}}
<span class="item-field-label-medium">{{stat.save}}</span>
{{else}}
@@ -33,7 +54,7 @@
{{#if stat.istxc}}
<div class="flexrow">
<span class="roll-dialog-long">Multiple weapons malus ({{mWeaponMalus}})? </span>
<span class="item-field-label-vlong">{{localize "WH.chat.mweaponmalus"}} ({{mWeaponMalus}})? </span>
<span class="item-field-label-medium"><input type="checkbox" id="usemWeaponMalus" name="usemWeaponMalus" {{checked usemWeaponMalus}}/></span>
{{/if}}
</div>
@@ -41,31 +62,31 @@
{{#if shield}}
<div class="flexrow">
<span class="roll-dialog-long">Use shield ? : </span>
<span class="item-field-label-vlong">{{localize "WH.chat.useshield"}} : </span>
<span class="roll-dialog-label">
<input type="checkbox" id="useshield" name="useshield" {{checked useshield}}/>
</span>
</div>
<div class="flexrow">
<span class="roll-dialog-long">{{shield.name}} : </span>
<span class="roll-dialog-label">{{shield.data.shielddie}}</span>
<span class="item-field-label-vlong">{{shield.name}} : </span>
<span class="item-field-label-medium">{{shield.data.shielddie}}</span>
</div>
{{/if}}
{{#if power}}
<div class="flexrow">
<span class="item-field-label-long">Power : </span>
<span class="item-field-label-vlong">{{localize "WH.chat.power"}} : </span>
<span class="item-field-label-medium">{{power.name}}</span>
</div>
<div class="flexrow">
<span class="item-field-label-long">Power Level : </span>
<span class="item-field-label-vlong">{{localize "WH.chat.powerlevel"}} : </span>
<span class="item-field-label-medium">{{power.system.level}}</span>
</div>
{{/if}}
{{#if hasBM}}
<div class="flexrow">
<span class="roll-dialog-long">Bonus/Malus : </span>
<span class="item-field-label-vlong">Bonus/Malus : </span>
<select class="item-field-label-medium" type="text" id="bonusMalus" value="{{bonusMalus}}">
{{#select bonusMalus}}
<option value="-6">-6</option>