Compare commits

...

40 Commits

Author SHA1 Message Date
c0b67a86dd Sync templates 2023-03-31 09:53:01 +02:00
ae18d23630 Sync templates 2023-03-31 09:52:44 +02:00
80ec2e4e66 Fix translation 2023-03-30 18:04:03 +02:00
b5a7e79b17 Fix translation 2023-03-30 16:26:15 +02:00
538addd2c7 Fix size 2023-03-30 08:42:54 +02:00
9d8bd75348 Fix size 2023-03-30 07:48:12 +02:00
c97a39fe47 Update release 2023-03-28 09:20:20 +02:00
0be7e8a3b5 Update release 2023-03-28 08:14:14 +02:00
a032f177fa Update release 2023-03-28 08:12:57 +02:00
4f2cef924b Removbe packs 2023-03-27 19:09:40 +02:00
6148f73888 ALl items list 2023-03-26 08:57:44 +02:00
2e4b018834 New combat features 2023-03-24 13:40:20 +01:00
fb3d0dfd7f New combat features 2023-03-24 13:29:53 +01:00
e573f5b382 New combat features 2023-03-24 13:29:19 +01:00
ed494e69b9 Fix DR/Parry bonuses 2023-03-22 13:38:49 +01:00
2813e5a694 some re-org 2023-03-20 21:01:00 +01:00
09974cd323 Fix inventory 2023-03-19 23:13:46 +01:00
6b8710b94c Fix inventory 2023-03-19 23:13:24 +01:00
6b7d943649 New slots 2023-03-10 18:32:42 +01:00
c2a7fbb4b5 New slots 2023-03-10 18:32:13 +01:00
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
d7dc6fbb42 Update powers 2023-02-08 19:38:09 +01:00
cae8cd5ae8 Lates fixes 2023-02-07 15:18:00 +01:00
7d8791f675 Various fixes and enhancents 2023-02-06 07:37:39 +01:00
bc7910a50d Actor sheet 2023-01-29 18:32:30 +01:00
f5e03886d5 Actor sheet 2023-01-29 16:56:09 +01:00
0a0f87663d Many fixes 2023-01-21 17:56:44 +01:00
9a2dc3be6f Many fixes 2023-01-21 17:56:14 +01:00
69 changed files with 7037 additions and 3751 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.history/

View File

@ -1,2 +1,4 @@
# fvtt-pegasus-rpg
# fvtt-warhero

View File

@ -1,4 +1,29 @@
{
"ACTOR": {
"TypeCharacter": "Character",
"TypeNpc": "NPC",
"TypeMonster": "Monster",
"TypeParty": "Party"
},
"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",
@ -10,6 +35,8 @@
"WH.conf.lightshield": "Light",
"WH.conf.mediumshield": "Medium",
"WH.conf.towershield": "Tower",
"WH.conf.polearm": "Polearm",
"WH.conf.special": "Special",
"WH.conf.head": "Head",
"WH.conf.cloak": "Cloak",
@ -27,7 +54,185 @@
"WH.conf.beltpouch1": "Beltpouch 1",
"WH.conf.beltpouch2": "Beltpouch 2",
"WH.conf.beltpouch3": "Beltpouch 3",
"WH.conf.scrollcase": "Scroll case",
"WH.conf.wandcase": "Wand case",
"WH.conf.potioncase": "Potion case",
"WH.conf.bagholding": "Bag of holding",
"WH.conf.quiverholding": "Quiver of holding",
"WH.conf.backpackholding": "Backpack of holding",
"WH.conf.smallchest": "Small chest",
"WH.conf.mediumchest": "Medium chest",
"WH.conf.largechest": "Large chest",
"WH.conf.hugechest": "Huge chest",
"WH.conf.partystorage": "Party chest/storage",
"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"
"WH.ui.notes": "Notes",
"WH.ui.hpprog": "HP Progression",
"WH.ui.lan": "Languages",
"WH.ui.attrbonus": "Attribute",
"WH.ui.weapons": "Weapons",
"WH.ui.armors": "Armors",
"WH.ui.shields": "Shields",
"WH.ui.weapon": "Weapon",
"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",
"WH.ui.Defence": "Defence",
"WH.ui.Throw2HitM": "Throw to Hit (Melee)",
"WH.ui.Throw2HitR": "Throw to Hit (Ranged)",
"WH.ui.Mana": "Mana",
"WH.ui.Initiative": "Initiative",
"WH.ui.Movement": "Movement (Earth)",
"WH.ui.MovementSwim": "Movement (Swim)",
"WH.ui.MovementFly": "Movement (Fly)",
"WH.ui.power": "Power",
"WH.ui.Qty": "Qty",
"WH.ui.maxslots": "Max slots",
"WH.ui.slotsused": "Slots used",
"WH.ui.Damage": "Damage",
"WH.ui.parrybonus": "Parry bonus",
"WH.ui.damagereduction": "Damage reduction",
"WH.ui.save": "Save",
"WH.ui.XP": "XP",
"WH.ui.xphp": "HP Progression",
"WH.ui.Knowledge": "Knowledge",
"WH.ui.malusmultiweapon": "Mult. Weapons malus",
"WH.ui.drbonus": "DR bonus",
"WH.ui.parrybonustotal": "Parry bonus total",
"WH.ui.drbonustotal": "DR bonus total",
"WH.ui.counterspell": "Counter spell",
"WH.ui.createitem": "Bonus to percentage throws",
"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",
"WH.ui.languages": "Languagess",
"WH.ui.languagesbonus": "Bonus Languages (mind/2)",
"WH.ui.competency": "Competency",
"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.ui.isclasssecondary": "Secondary class ?",
"WH.ui.secondaryclass": "Super warhero",
"WH.ui.meleedamagebonus": "Melee damage bonus",
"WH.ui.rangeddamagebonus": "Ranged damage bonus",
"WH.ui.notapplicable": "Not applicable",
"WH.ui.chargedaily": "Daily",
"WH.ui.chargelimited": "Limited",
"WH.ui.magiccharge": "Magic charges",
"WH.ui.chargevalue": "Charge value",
"WH.ui.allitems": "All items",
"WH.ui.small": "Small",
"WH.ui.medium": "Medium",
"WH.ui.large": "Large",
"WH.ui.conditiontype": "Condition type",
"WH.ui.duration": "Duration",
"WH.ui.bodyslots": "Body",
"WH.ui.containerslot": "Containers",
"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"
}

236
lang/it.json Normal file
View File

@ -0,0 +1,236 @@
{
"ACTOR": {
"TypeCharacter": "PG",
"TypeNpc": "PNG",
"TypeMonster": "Mostro",
"TypeParty": "Gruppo"
},
"ITEM": {
"TypeWeapon": "Arma",
"TypeEquipment": "Equipaggiamento",
"TypeRace": "Razza",
"TypeArmor": "Armatura",
"TypeShield": "Scudo",
"TypeSkill": "Abilità",
"TypePower": "Potere",
"TypeLanguage": "Lingua",
"TypeCondition": "Status",
"TypeClass": "Classe",
"TypeMoney": "Mo",
"TypePotion": "Pozione",
"TypePoison": "Veleno",
"TypeTrap": "Trappola",
"TypeClassitem": "Classe",
"TypeCompetency": "Competenza"
},
"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": "In asta",
"WH.conf.special": "Speciale",
"WH.conf.head": "Testa",
"WH.conf.cloak": "Mantello",
"WH.conf.weapon1": "Arma 1",
"WH.conf.weapon2": "Arma 2",
"WH.conf.gloves": "Guanti",
"WH.conf.dress": "Vestito",
"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.conf.scrollcase": "Contenitore per mappe o pergamene",
"WH.conf.wandcase": "Porta bacchette",
"WH.conf.potioncase": "Porta pozioni",
"WH.conf.bagholding": "Borsa conservante",
"WH.conf.quiverholding": "Faretra conservante",
"WH.conf.backpackholding": "Zaino conservante",
"WH.conf.smallchest": "Scrigno piccolo",
"WH.conf.mediumchest": "Scrigno medio",
"WH.conf.largechest": "Scrigno grande",
"WH.conf.hugechest": "Scrigno enorme",
"WH.conf.partystorage": "Scrigno di gruppo",
"WH.conf.unknown": "Non sai se è magico",
"WH.conf.yes": "Identificato",
"WH.conf.no": "Non identificato",
"WH.conf.notapplicable": "Non applicabile",
"WH.conf.undefined": "Not applicable",
"WH.ui.level": "Livello",
"WH.ui.notes": "Note",
"WH.ui.hpprog": "Progressione PF",
"WH.ui.lan": "Lingue",
"WH.ui.attrbonus": "Attributo",
"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.savestr": "Ts Fisico",
"WH.ui.savedex": "Ts Istinto",
"WH.ui.savemin": "Ts Mente",
"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.israceskill": "Abilità di razza?",
"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": "Fede",
"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": "Genere",
"WH.ui.background": "Storia",
"WH.ui.type": "Tipo",
"WH.ui.description": "Descrizione",
"WH.ui.rawroll": "Formula del dado (es: 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": "Posizione dello slot",
"WH.ui.quantity": "Quantità",
"WH.ui.cost": "Costo",
"WH.ui.details": "Dettagli",
"WH.ui.magicschool": "Scuola di magia",
"WH.ui.providedslot": "Slot forniti",
"WH.ui.skilllevelacquired": "Acquisito a livello",
"WH.ui.totalmoney": "Total monete guadagnate",
"WH.ui.preparetime": "Tempo di preparazione",
"WH.ui.durationrounds": "Durata (in round)",
"WH.ui.application": "Tipo di applicazione",
"WH.ui.savesdc": "CD TS",
"WH.ui.savetype": "Tipo del tiro salvezza",
"WH.ui.Touch": "Tocco",
"WH.ui.Ingestion": "Ingestione",
"WH.ui.Weapon": "Arma",
"WH.ui.halfdamage": "Dimezza",
"WH.ui.ignore": "Nega",
"WH.ui.dcfind": "CD per trovare",
"WH.ui.dcdisable": "CD per disattivare ",
"WH.ui.throwtohit": "Tiro per colpire",
"WH.ui.mandatoryfor": "Obbligatorio per",
"WH.ui.generic": "Generico",
"WH.ui.bless": "Benedizione",
"WH.ui.spell": "Incantesimo (Potere)",
"WH.ui.poison": "Veleno",
"WH.ui.disease": "Malattia",
"WH.ui.curse": "Maledizione",
"WH.ui.permanent": "Permanente",
"WH.ui.temporary": "Temporanea",
"WH.ui.begin": "Inizio",
"WH.ui.specialduration": "Durata speciale",
"WH.ui.infinite": "Infinita",
"WH.uiwithineor": "Entro la fine del round",
"WH.ui.beginr": "All' inizio del prossimo round",
"WH.ui.nextr": "Prossimo round",
"WH.ui.nextcombat": "Al prossimo combattimento",
"WH.ui.untilendcombat": "Fino alla fine del combattimento",
"WH.ui.beginturn": "Inizio del turno",
"WH.ui.endturn": "Fine del turno",
"WH.ui.durationvalue": "Durata",
"WH.ui.durationunit": "Durata (unità di misura)",
"WH.ui.dcsave": "CD",
"WH.ui.incubationtime": "Tempo di incubazione",
"WH.ui.diseaseduration": "Durata malattia",
"WH.ui.ignoreeffect": "Ignora effetto",
"WH.ui.raceSkills": "Abilità di razza",
"WH.ui.identified": "Identificato",
"WH.ui.isclasssecondary": "Classe secondaria?",
"WH.ui.secondaryclass": "Super warhero",
"WH.ui.meleedamagebonus": "Bonus ai danni in corpo a corpo",
"WH.ui.rangeddamagebonus": "Bonus ai danni a distanza",
"WH.ui.notapplicable": "Non applicabile",
"WH.ui.chargedaily": "Al giorno",
"WH.ui.chargelimited": "Limitate",
"WH.ui.magiccharge": "Cariche magiche",
"WH.ui.chargevalue": "Valore delle cariche",
"WH.ui.allitems": "Tutti gli oggetti",
"WH.ui.small": "Piccola",
"WH.ui.medium": "Media",
"WH.ui.large": "Grande",
"WH.ui.bodyslots": "Corpo",
"WH.ui.containerslot": "Contenitori",
"WH.chat.save": "Salva",
"WH.chat.mweaponmalus": "Malus attacchi con più armi",
"WH.chat.diceresult": "Risultato del dado",
"WH.chat.result": "Risultato",
"WH.chat.parysuccess": "Parato con successo !",
"WH.chat.paryfailed": "Parata fallita !",
"WH.chat.rollformula": "Formula del dado",
"WH.chat.useshield":"Usare scudo?",
"WH.chat.power": "Potere",
"WH.chat.powerlevel": "Livello di potere",
"WH.notif.skillmaxuse": "Usi massimi raggiunti",
"WH.notif.toomanyuses": "Usi massimi raggiunti"
}

1282
modules/import-global.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -10,11 +10,11 @@ export class WarheroActorSheet extends ActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["fvtt-warhero", "sheet", "actor"],
template: "systems/fvtt-warhero/templates/actor-sheet.html",
width: 960,
width: 720,
height: 720,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
@ -24,8 +24,13 @@ export class WarheroActorSheet extends ActorSheet {
/* -------------------------------------------- */
async getData() {
const objectData = this.object.system
let actorData = duplicate(objectData)
this.actor.setLevel()
this.actor.computeDRTotal()
this.actor.computeParryBonusTotal()
this.actor.computeBonusLanguages()
const objectData = duplicate(this.object.system)
let race = this.actor.getRace()
let formData = {
title: this.title,
@ -35,32 +40,50 @@ export class WarheroActorSheet extends ActorSheet {
name: this.actor.name,
editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked",
data: actorData,
system: objectData,
limited: this.object.limited,
skills: this.actor.getSkills( ),
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())),
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(),
equippedWeapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getEquippedWeapons())),
equippedArmors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getEquippedArmors())),
equippedShields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getEquippedShields())),
powers: this.actor.sortPowers(),
allItems: this.actor.getAllItems(),
subActors: duplicate(this.actor.getSubActors()),
race: duplicate(this.actor.getRace()),
moneys: duplicate(this.actor.getMoneys()),
encCapacity: this.actor.getEncumbranceCapacity(),
competency: this.actor.getCompetency(),
race: duplicate(race),
mainClass: this.actor.getMainClass(),
secondaryClass: this.actor.getSecondaryClass(),
totalMoney: this.actor.computeTotalMoney(),
equipments: duplicate(this.actor.getEquipmentsOnly()),
//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}),
containersTree: this.actor.containersTree,
encCurrent: this.actor.encCurrent,
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
isGM: game.user.isGM
}
if (this.actor.type == "party") {
formData.partySlots = this.actor.buildPartySlots()
} else {
formData.equipmentContainers = this.actor.buildEquipmentsSlot()
formData.bodyContainers = this.actor.buildBodySlot()
}
this.formData = formData;
// Dynamic patch
formData.system.secondary.counterspell.hasmax = false
// Race mngt
if ( race && race.name) {
formData.hpprogression = game.system.warhero.config.progressionList[race.system.hpprogresion]
}
this.formData = formData
console.log("PC : ", formData, this.object);
return formData;
}
@ -92,7 +115,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 => {
@ -126,6 +150,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")
@ -136,37 +169,36 @@ export class WarheroActorSheet extends ActorSheet {
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-this').click((event) => {
const rollType = $(event.currentTarget).data("type")
const statKey = $(event.currentTarget).data("key")
this.actor.rollFromType(rollType, statKey)
});
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)
const rollType = $(event.currentTarget).data("type")
const statKey = $(event.currentTarget).data("key")
this.actor.rollSaveFromType(rollType, statKey)
});
html.find('.roll-weapon').click((event) => {
const li = $(event.currentTarget).parents(".item")
const weaponId = li.data("item-id")
this.actor.rollWeapon(weaponId)
});
html.find('.power-roll').click((event) => {
const li = $(event.currentTarget).parents(".item")
const powerId = li.data("item-id")
this.actor.rollPower(powerId)
});
html.find('.roll-damage').click((event) => {
const li = $(event.currentTarget).parents(".item")
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

@ -64,25 +64,6 @@ export class WarheroActor extends Actor {
/* -------------------------------------------- */
computeHitPoints() {
if (this.type == "character") {
let hp = duplicate(this.system.secondary.hp)
let max = (this.system.abilities.str.value + this.system.abilities.con.value) * 6
if (max != hp.max || hp.value > max) {
hp.max = max
hp.value = max // Init case
this.update({ 'system.secondary.hp': hp })
}
}
}
/* -------------------------------------------- */
computeEffortPoints() {
if (this.type == "character") {
let effort = duplicate(this.system.secondary.effort)
let max = (this.system.abilities.con.value + this.system.abilities.int.value) * 6
if (max != effort.max || effort.value > max) {
effort.max = max
effort.value = max // Init case
this.update({ 'system.secondary.effort': effort })
}
}
}
@ -90,10 +71,7 @@ export class WarheroActor extends Actor {
prepareDerivedData() {
if (this.type == 'character' || game.user.isGM) {
this.system.encCapacity = this.getEncumbranceCapacity()
this.buildContainerTree()
this.computeHitPoints()
this.computeEffortPoints()
}
super.prepareDerivedData();
@ -145,37 +123,70 @@ export class WarheroActor extends Actor {
return comp;
}
/* -------------------------------------------- */
getEquippedArmors() {
let comp = duplicate(this.items.filter(item => item.type == 'armor' && item.system.slotlocation == 'armor') || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
getArmors() {
let comp = duplicate(this.items.filter(item => item.type == 'armor') || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
getEquippedArmor() {
let comp = this.items.find(item => item.type == 'armor' && item.system.equipped)
if (comp) {
return duplicate(comp)
getPowers() {
let comp = duplicate(this.items.filter(item => item.type == 'power') || []);
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 undefined
return schools
}
getAllItems() {
let comp = duplicate(this.items || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
/* -------------------------------------------- */
getEquippedShields() {
let comp = duplicate(this.items.filter(item => item.type == 'shield' && item.system.slotlocation == "shield") || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
getShields() {
let comp = duplicate(this.items.filter(item => item.type == 'shield') || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
getEquippedShield() {
let comp = this.items.find(item => item.type == 'shield' && item.system.equipped)
if (comp) {
return duplicate(comp)
}
return undefined
}
/* -------------------------------------------- */
getRace() {
let race = this.items.filter(item => item.type == 'race')
return race[0] ?? [];
}
/* -------------------------------------------- */
getMainClass() {
let classWH = this.items.find(item => item.type == 'class' && !item.system.issecondary)
return classWH
}
getSecondaryClass() {
let classWH = this.items.find(item => item.type == 'class' && item.system.issecondary)
return classWH
}
getClasses() {
let comp = duplicate(this.items.filter(item => item.type == "class") || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
/* -------------------------------------------- */
checkAndPrepareEquipment(item) {
}
@ -186,7 +197,88 @@ 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
}
/* -------------------------------------------- */
buildPartySlots() {
let containers = {}
for (let slotName in game.system.warhero.config.partySlotNames) {
let slotDef = game.system.warhero.config.partySlotNames[slotName]
containers[slotName] = duplicate(slotDef)
containers[slotName].content = this.items.filter(it => (it.type == 'money' || it.type == 'weapon' || it.type == 'armor' || it.type == 'shield' || it.type == 'equipment') )
let slotUsed = 0
for (let item of containers[slotName].content) {
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
}
return containers
}
/* -------------------------------------------- */
buildBodySlot() {
let containers = {}
for (let slotName in game.system.warhero.config.slotNames) {
let slotDef = game.system.warhero.config.slotNames[slotName]
if (!slotDef.container) {
containers[slotName] = duplicate(slotDef)
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) {
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
}
}
return containers
}
/* -------------------------------------------- */
buildEquipmentsSlot() {
let containers = {}
for (let slotName in game.system.warhero.config.slotNames) {
let slotDef = game.system.warhero.config.slotNames[slotName]
if (slotDef.container) {
containers[slotName] = duplicate(slotDef)
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) {
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
}
}
return containers
}
/* -------------------------------------------- */
getConditions() {
let comp = duplicate(this.items.filter(item => item.type == 'condition') || []);
@ -194,8 +286,48 @@ export class WarheroActor extends Actor {
return comp;
}
/* -------------------------------------------- */
prepareWeapon(weapon) {
let formula = weapon.system.damage
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)
}
if (weapon.system.weapontype == "throwing" || weapon.system.weapontype == "shooting") {
formula += "+"+this.system.secondary.rangeddamagebonus.value
} else if ( weapon.system.weapontype != "special" ) {
formula += "+"+this.system.secondary.meleedamagebonus.value
if (weapon.damageFormula2Hands) {
weapon.damageFormula2Hands += "+"+this.system.secondary.meleedamagebonus.value
}
}
weapon.damageFormula = formula
}
/* -------------------------------------------- */
getEquippedWeapons() {
let comp = duplicate(this.items.filter(item => item.type == 'weapon' && (item.system.slotlocation == "weapon1" || item.system.slotlocation == "weapon2") ) || []);
for (let weapon of comp) {
this.prepareWeapon(weapon)
}
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
getWeapons() {
let comp = duplicate(this.items.filter(item => item.type == 'weapon') || []);
for (let weapon of comp) {
this.prepareWeapon(weapon)
}
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
/* -------------------------------------------- */
getConditions() {
let comp = duplicate(this.items.filter(item => item.type == 'condition') || []);
WarheroUtility.sortArrayObjectsByName(comp)
return comp;
}
@ -207,13 +339,30 @@ export class WarheroActor extends Actor {
}
return item;
}
/* -------------------------------------------- */
getLanguages() {
let comp = this.items.filter(it => it.type == "language")
WarheroUtility.sortArrayObjectsByName(comp)
return comp
}
/* -------------------------------------------- */
getNormalSkills() {
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
}
getClassSkills() {
let comp = this.items.filter(it => it.type == "skill" && it.system.classskill)
WarheroUtility.sortArrayObjectsByName(comp)
return comp
}
getSkills() {
let comp = duplicate(this.items.filter(item => item.type == 'skill') || [])
for (let skill of comp) {
WarheroUtility.updateSkill(skill)
}
WarheroUtility.sortArrayObjectsByName(comp)
return comp
}
@ -261,7 +410,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() {
@ -343,13 +495,44 @@ export class WarheroActor extends Actor {
/* -------------------------------------------- */
async incDecHP(formula) {
let dmgRoll = new Roll(formula+"[warhero-orange]").roll({ async: false })
let dmgRoll = new Roll(formula + "[warhero-orange]").roll({ async: false })
await WarheroUtility.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode"))
let hp = duplicate(this.system.secondary.hp)
hp.value = Number(hp.value) + Number(dmgRoll.total)
this.update({ 'system.secondary.hp': hp })
return Number(dmgRoll.total)
}
/* -------------------------------------------- */
updateCompetency(competency, obj, labelTab) {
for (let key in obj) {
if (obj[key]) {
//console.log("Parsing", key) //game.system.warhero.config.weaponTypes[key].label)
competency[key] = { enabled: true, label: labelTab[key].label }
}
}
}
getCompetency() {
let myRace = this.getRace()
let myClass1 = this.getMainClass()
let myClass2 = this.getSecondaryClass()
let competency = { weapons: {}, armors: {}, 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 (myClass1 && myClass1.system) {
this.updateCompetency(competency.weapons, myClass1.system.weapons, game.system.warhero.config.weaponTypes)
this.updateCompetency(competency.armors, myClass1.system.armors, game.system.warhero.config.armorTypes)
this.updateCompetency(competency.shields, myClass1.system.shields, game.system.warhero.config.shieldTypes)
}
if (myClass2 && myClass2.system) {
this.updateCompetency(competency.weapons, myClass2.system.weapons, game.system.warhero.config.weaponTypes)
this.updateCompetency(competency.armors, myClass2.system.armors, game.system.warhero.config.armorTypes)
this.updateCompetency(competency.shields, myClass2.system.shields, game.system.warhero.config.shieldTypes)
}
return competency
}
/* -------------------------------------------- */
getAbility(abilKey) {
@ -395,12 +578,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
}
/* -------------------------------------------- */
@ -481,7 +662,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)
@ -531,99 +724,91 @@ export class WarheroActor extends Actor {
isAttackerAdvantage() {
return this.items.find(cond => cond.type == "condition" && cond.system.targetadvantage)
}
/* -------------------------------------------- */
setLevel() {
let xp = this.system.secondary.xp.value
this.system.secondary.xp.level = 1 + Math.floor(xp / 10)
}
/* -------------------------------------------- */
computeDRTotal() {
let armors = this.items.filter(it => it.type == "armor" && it.system.slotlocation == 'armor')
let dr = 0
for (let armor of armors) {
dr += armor.system.damagereduction
}
this.system.secondary.drbonustotal.value = this.system.secondary.drbonus.value + dr
}
/* -------------------------------------------- */
computeParryBonusTotal() {
let shields = this.items.filter(it => it.type == "shield" && it.system.slotlocation == 'shield')
let parry = 0
for (let shield of shields) {
parry += shield.system.parrybonus
}
this.system.secondary.parrybonustotal.value = this.system.secondary.parrybonus.value + parry
}
/* -------------------------------------------- */
computeBonusLanguages() {
this.system.secondary.nblanguage.value = Math.floor(this.system.statistics.min.value / 2)
}
/* -------------------------------------------- */
spentMana(spentValue) {
let mana = duplicate(this.system.attributes.mana)
if (Number(spentValue) > mana.value) {
ui.notifications.warn("Not enough Mana points !")
return false
}
mana.value -= Number(spentValue)
this.update({ 'system.attributes.mana': mana })
return true
}
/* -------------------------------------------- */
getCommonRollData(abilityKey = undefined) {
let noAction = this.isNoAction()
if (noAction) {
ui.notifications.warn("You can't do any actions du to the condition : " + noAction.name)
return
}
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()
rollData.alias = this.name
rollData.actorImg = this.img
rollData.actorId = this.id
rollData.img = this.img
rollData.featsDie = this.getFeatsWithDie()
rollData.featsSL = this.getFeatsWithSL()
rollData.armors = this.getArmors()
rollData.conditions = this.getConditions()
rollData.featDieName = "none"
rollData.featSLName = "none"
rollData.rollAdvantage = "none"
rollData.advantage = "none"
rollData.disadvantage = "none"
rollData.forceAdvantage = this.isForcedAdvantage()
rollData.forceDisadvantage = this.isForcedDisadvantage()
rollData.forceRollAdvantage = this.isForcedRollAdvantage()
rollData.forceRollDisadvantage = this.isForcedRollDisadvantage()
rollData.noAdvantage = this.isNoAdvantage()
if (rollData.defenderTokenId) {
let defenderToken = game.canvas.tokens.get(rollData.defenderTokenId)
let defender = defenderToken.actor
// Distance management
let token = this.token
if (!token) {
let tokens = this.getActiveTokens()
token = tokens[0]
}
if (token) {
const ray = new Ray(token.object?.center || token.center, defenderToken.center)
rollData.tokensDistance = canvas.grid.measureDistances([{ ray }], { gridSpaces: false })[0] / canvas.grid.grid.options.dimensions.distance
} else {
ui.notifications.info("No token connected to this actor, unable to compute distance.")
return
}
if (defender) {
rollData.forceAdvantage = defender.isAttackerAdvantage()
rollData.advantageFromTarget = true
}
}
if (abilityKey) {
rollData.ability = this.getAbility(abilityKey)
rollData.selectedKill = undefined
}
console.log("ROLLDATA", rollData)
return rollData
}
/* -------------------------------------------- */
rollAbility(abilityKey) {
let rollData = this.getCommonRollData(abilityKey)
rollData.mode = "ability"
if (rollData.target) {
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
rollFromType(rollType, rollKey) {
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
}
WarheroUtility.rollWarhero(rollData)
}
/* -------------------------------------------- */
rollSkill(skillId) {
let skill = this.items.get(skillId)
if (skill) {
if (skill.system.islore && skill.system.level == 0) {
ui.notifications.warn("You can't use Lore Skills with a SL of 0.")
return
}
skill = duplicate(skill)
WarheroUtility.updateSkill(skill)
let abilityKey = skill.system.ability
let rollData = this.getCommonRollData(abilityKey)
rollData.mode = "skill"
rollData.skill = skill
rollData.img = skill.img
if (rollData.target) {
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
return
}
this.startRoll(rollData)
if (rollKey == "parrybonustotal") {
WarheroUtility.rollParry(rollData)
return
}
this.startRoll(rollData)
}
/* -------------------------------------------- */
rollSaveFromType(rollType, rollKey) {
let stat = duplicate(this.system[rollType][rollKey])
let rollData = this.getCommonRollData()
rollData.mode = "save"
rollData.stat = stat
this.startRoll(rollData)
}
/* -------------------------------------------- */
@ -631,173 +816,49 @@ export class WarheroActor extends Actor {
let weapon = this.items.get(weaponId)
if (weapon) {
weapon = duplicate(weapon)
let skill = this.items.find(item => item.name.toLowerCase() == weapon.system.skill.toLowerCase())
if (skill) {
skill = duplicate(skill)
WarheroUtility.updateSkill(skill)
let abilityKey = skill.system.ability
let rollData = this.getCommonRollData(abilityKey)
rollData.mode = "weapon"
rollData.skill = skill
rollData.weapon = weapon
rollData.img = weapon.img
if (!rollData.forceDisadvantage) { // This is an attack, check if disadvantaged
rollData.forceDisadvantage = this.isAttackDisadvantage()
}
/*if (rollData.weapon.system.isranged && rollData.tokensDistance > WarheroUtility.getWeaponMaxRange(rollData.weapon) ) {
ui.notifications.warn(`Your target is out of range of your weapon (max: ${WarheroUtility.getWeaponMaxRange(rollData.weapon)} - current : ${rollData.tokensDistance})` )
return
}*/
this.startRoll(rollData)
let rollData = this.getCommonRollData()
rollData.mode = "weapon"
if (weapon.system.weapontype === "shooting" || weapon.system.weapontype === "throwing") {
rollData.stat = duplicate(this.system.attributes.txcr)
} else {
ui.notifications.warn("Unable to find the relevant skill for weapon " + weapon.name)
rollData.stat = duplicate(this.system.attributes.txcm)
}
rollData.usemWeaponMalus = false
rollData.mWeaponMalus = this.system.secondary.malusmultiweapon.value
rollData.weapon = weapon
rollData.img = weapon.img
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
rollDefenseMelee(attackRollData) {
let weapon = this.items.get(attackRollData.defenseWeaponId)
rollDamage(weaponId, is2hands = false) {
let weapon = this.items.get(weaponId)
if (weapon) {
weapon = duplicate(weapon)
let skill = this.items.find(item => item.name.toLowerCase() == weapon.system.skill.toLowerCase())
if (skill) {
skill = duplicate(skill)
WarheroUtility.updateSkill(skill)
let abilityKey = skill.system.ability
let rollData = this.getCommonRollData(abilityKey)
rollData.defenderTokenId = undefined // Cleanup
rollData.mode = "weapondefense"
rollData.shield = this.getEquippedShield()
rollData.attackRollData = duplicate(attackRollData)
rollData.skill = skill
rollData.weapon = weapon
rollData.img = weapon.img
if (!rollData.forceDisadvantage) { // This is an attack, check if disadvantaged
rollData.forceDisadvantage = this.isDefenseDisadvantage()
}
this.startRoll(rollData)
} else {
ui.notifications.warn("Unable to find the relevant skill for weapon " + weapon.name)
}
} else {
ui.notifications.warn("Weapon not found ! ")
}
}
/* -------------------------------------------- */
rollDefenseRanged(attackRollData) {
let rollData = this.getCommonRollData()
rollData.defenderTokenId = undefined // Cleanup
rollData.mode = "rangeddefense"
if ( attackRollData) {
rollData.attackRollData = duplicate(attackRollData)
rollData.effectiveRange = WarheroUtility.getWeaponRange(attackRollData.weapon)
rollData.tokensDistance = attackRollData.tokensDistance // QoL copy
}
rollData.sizeDice = WarheroUtility.getSizeDice(this.system.biodata.size)
rollData.distanceBonusDice = 0 //Math.max(0, Math.floor((rollData.tokensDistance - rollData.effectiveRange) + 0.5))
rollData.hasCover = "none"
rollData.situational = "none"
rollData.useshield = false
rollData.shield = this.getEquippedShield()
this.startRoll(rollData)
}
/* -------------------------------------------- */
rollShieldDie() {
let shield = this.getEquippedShield()
if (shield) {
shield = duplicate(shield)
this.prepareWeapon(weapon)
let rollData = this.getCommonRollData()
rollData.mode = "shield"
rollData.shield = shield
rollData.useshield = true
rollData.img = shield.img
rollData.mode = "damage"
rollData.weapon = weapon
rollData.is2hands = is2hands
rollData.img = weapon.img
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
rollPower(powerId) {
let power = this.items.get(powerId)
if (power) {
power = duplicate(power)
let rollData = this.getCommonRollData()
rollData.mode = "power"
rollData.power = power
rollData.powerLevel = Number(power.system.level)
rollData.img = power.img
rollData.hasBM = false
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
async rollArmorDie(rollData = undefined) {
let armor = this.getEquippedArmor()
if (armor) {
armor = duplicate(armor)
let reduce = 0
let multiply = 1
let disadvantage = false
let advantage = false
let messages = ["Armor applied"]
if (rollData) {
if (WarheroUtility.isArmorLight(armor) && WarheroUtility.isWeaponPenetrating(rollData.attackRollData.weapon)) {
return { armorIgnored: true, nbSuccess: 0, messages: ["Armor ignored : Penetrating weapons ignore Light Armors."] }
}
if (WarheroUtility.isWeaponPenetrating(rollData.attackRollData.weapon)) {
messages.push("Armor reduced by 1 (Penetrating weapon)")
reduce = 1
}
if (WarheroUtility.isWeaponLight(rollData.attackRollData.weapon)) {
messages.push("Armor with advantage (Light weapon)")
advantage = true
}
if (WarheroUtility.isWeaponHeavy(rollData.attackRollData.weapon)) {
messages.push("Armor with disadvantage (Heavy weapon)")
disadvantage = true
}
if (WarheroUtility.isWeaponHack(rollData.attackRollData.weapon)) {
messages.push("Armor reduced by 1 (Hack weapon)")
reduce = 1
}
if (WarheroUtility.isWeaponUndamaging(rollData.attackRollData.weapon)) {
messages.push("Armor multiplied by 2 (Undamaging weapon)")
multiply = 2
}
}
let diceColor = armor.system.absorprionroll
let armorResult = await WarheroUtility.getRollTableFromDiceColor(diceColor, false)
console.log("Armor log", armorResult)
let armorValue = Math.max(0, (Number(armorResult.text) + reduce) * multiply)
if (advantage || disadvantage) {
let armorResult2 = await WarheroUtility.getRollTableFromDiceColor(diceColor, false)
let armorValue2 = Math.max(0, (Number(armorResult2.text) + reduce) * multiply)
if (advantage) {
armorValue = (armorValue2 > armorValue) ? armorValue2 : armorValue
messages.push(`Armor advantage - Roll 1 = ${armorValue} - Roll 2 = ${armorValue2}`)
}
if (disadvantage) {
armorValue = (armorValue2 < armorValue) ? armorValue2 : armorValue
messages.push(`Armor disadvantage - Roll 1 = ${armorValue} - Roll 2 = ${armorValue2}`)
}
}
armorResult.armorValue = armorValue
if (!rollData) {
ChatMessage.create({ content: "Armor result : " + armorValue })
}
messages.push("Armor result : " + armorValue)
return { armorIgnored: false, nbSuccess: armorValue, rawArmor: armorResult.text, messages: messages }
}
return { armorIgnored: true, nbSuccess: 0, messages: ["No armor equipped."] }
}
/* -------------------------------------------- */
rollSave(saveKey) {
let saves = this.getSaveRoll()
let save = saves[saveKey]
if (save) {
save = duplicate(save)
let rollData = this.getCommonRollData()
rollData.mode = "save"
rollData.save = save
if (rollData.target) {
ui.notifications.warn("You are targetting a token with a save roll - Not authorized.")
return
}
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
async startRoll(rollData) {
this.syncRoll(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

@ -4,8 +4,10 @@ export const WARHERO_CONFIG = {
short: {damage: "1d6", label: "WH.conf.short"},
long: {damage: "1d8", label: "WH.conf.long"},
twohanded: {damage: "3d6", label: "WH.conf.twohanded"},
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 : {
@ -19,24 +21,91 @@ export const WARHERO_CONFIG = {
medium: {parry: "3", label: "WH.conf.mediumshield"},
tower: {parry: "5", label: "WH.conf.towershield"},
},
partySlotNames : {
storage: {nbslots: 2000, itemtype:"equipment", label: "WH.conf.partystorage"}
},
slotNames : {
head: {nbslots: 1, label: "WH.conf.head"},
cloak: {nbslots: 1, label: "WH.conf.cloak"},
weapon1: {nbslots: 1, label: "WH.conf.weapon1"},
weapon2: {nbslots: 1, label: "WH.conf.weapon2"},
gloves: {nbslots: 1, label: "WH.conf.gloves"},
ring: {nbslots: 10, label: "WH.conf.ring"},
dress: {nbslots: 1, label: "WH.conf.dress"},
boots: {nbslots: 1, label: "WH.conf.boots"},
belt: {nbslots: 6, label: "WH.conf.belt"},
quiver: {nbslots: 20, label: "WH.conf.quiver"},
armor: {nbslots: 1, label: "WH.conf.armor"},
shield: {nbslots: 1, label: "WH.conf.shield"},
backpack: {nbslots: 12, label: "WH.conf.backpack"},
beltpouch1: {nbslots: 4, label: "WH.conf.beltpouch1"},
beltpouch2: {nbslots: 4, label: "WH.conf.beltpouch2"},
beltpouch3: {nbslots: 4, label: "WH.conf.beltpouch3"},
head: {nbslots: 1, itemtype:"armor", label: "WH.conf.head"},
cloak: {nbslots: 1, itemtype:"equipment", label: "WH.conf.cloak"},
weapon1: {nbslots: 1, itemtype:"weapon", label: "WH.conf.weapon1"},
weapon2: {nbslots: 1, itemtype:"weapon", label: "WH.conf.weapon2"},
gloves: {nbslots: 1, itemtype:"equipment",label: "WH.conf.gloves"},
ring: {nbslots: 10, itemtype:"equipment",label: "WH.conf.ring"},
dress: {nbslots: 1, itemtype:"equipment",label: "WH.conf.dress"},
boots: {nbslots: 1, itemtype:"equipment",label: "WH.conf.boots"},
armor: {nbslots: 1, itemtype:"armor",label: "WH.conf.armor"},
shield: {nbslots: 1, itemtype:"shield",label: "WH.conf.shield"},
belt: {nbslots: 6, itemtype:"equipment", container: true, available: true, parent: undefined, label: "WH.conf.belt"},
quiver: {nbslots: 20, itemtype:"equipment",container: true, available: true, parent: undefined, label: "WH.conf.quiver"},
backpack: {nbslots: 12, itemtype:"equipment",container: true, available: true, parent: undefined, label: "WH.conf.backpack"},
beltpouch1: {nbslots: 4, itemtype:"equipment",container: true, available: true, parent: undefined, label: "WH.conf.beltpouch1"},
beltpouch2: {nbslots: 4, itemtype:"equipment", container: true, available: true, parent: undefined, label: "WH.conf.beltpouch2"},
beltpouch3: {nbslots: 4, itemtype:"equipment", container: true, available: true, parent: undefined, label: "WH.conf.beltpouch3"},
scrollcase: {nbslots: 17, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.scrollcase"},
wandcase: {nbslots: 10, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.wandcase"},
potioncase: {nbslots: 8, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.potioncase"},
bagholding: {nbslots: 30, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.bagholding"},
quiverholding: {nbslots: 9999, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.quiverholding"},
backpackholding: {nbslots: 90, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.backpackholding"},
smallchest: {nbslots: 6, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.smallchest"},
mediumchest: {nbslots: 12, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.mediumchest"},
largechest: {nbslots: 24, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.largechest"},
hugechest: {nbslots: 24, itemtype:"equipment", container: true, available: false, parent: undefined, label: "WH.conf.hugechest"},
},
progressionList: {
"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"
},
magicCharge: {
notapplicable: "WH.ui.notapplicable",
chargedaily: "WH.ui.chargedaily",
chargelimited: "WH.ui.chargelimited",
},
identifiedState: {
unknown: "WH.conf.unknown",
yes:"WH.conf.yes",
no:"WH.conf.no",
notapplicable:"WH.conf.notapplicable"
}
}

View File

@ -49,9 +49,6 @@ export class WarheroItemSheet extends ItemSheet {
/* -------------------------------------------- */
async getData() {
if ( this.object.type == "skill") {
WarheroUtility.updateSkill(this.object)
}
let objectData = duplicate(this.object.system)
let itemData = objectData
@ -66,12 +63,12 @@ export class WarheroItemSheet extends ItemSheet {
config: game.system.warhero.config,
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
system: itemData,
statistics: duplicate(game.system.template.Actor.templates.core.statistics),
limited: this.object.limited,
options: this.options,
owner: this.document.isOwner,
isGM: game.user.isGM
}
this.options.editable = !(this.object.origin == "embeddedItem");
console.log("ITEM DATA", formData, this);
return formData;
@ -127,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);
});
@ -142,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

@ -11,7 +11,9 @@
import { WarheroActor } from "./warhero-actor.js";
import { WarheroItemSheet } from "./warhero-item-sheet.js";
import { WarheroActorSheet } from "./warhero-actor-sheet.js";
import { WarheroPartySheet } from "./warhero-party-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 +57,21 @@ 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 });
Actors.registerSheet("fvtt-warhero", WarheroPartySheet, { types: ["party"], 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 +80,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 +97,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

@ -0,0 +1,57 @@
/**
* 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 WarheroPartySheet extends WarheroActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["warhero-rpg", "sheet", "actor"],
template: "systems/fvtt-warhero/templates/party-sheet.html",
width: 640,
height: 720,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: true
});
}
/* -------------------------------------------- */
async getData() {
const objectData = duplicate(this.object.system)
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",
system: objectData,
limited: this.object.limited,
totalMoney: this.actor.computeTotalMoney(),
equipments: duplicate(this.actor.getEquipmentsOnly()),
//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,
owner: this.document.isOwner,
editScore: this.options.editScore,
isGM: game.user.isGM
}
formData.partySlots = this.actor.buildPartySlots()
this.formData = formData
console.log("PARTY : ", formData, this.object);
return formData;
}
}

View File

@ -5,7 +5,7 @@ export class WarheroRollDialog extends Dialog {
/* -------------------------------------------- */
static async create(actor, rollData) {
let options = { classes: ["WarheroDialog"], width: 540, height: 340, 'z-index': 99999 };
let options = { classes: ["WarheroDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
let html = await renderTemplate('systems/fvtt-warhero/templates/roll-dialog-generic.html', rollData);
return new WarheroRollDialog(actor, rollData, html, options);
@ -58,27 +58,16 @@ export class WarheroRollDialog extends Dialog {
}
$(function () { onLoad(); });
html.find('#advantage').change((event) => {
this.rollData.advantage = event.currentTarget.value
html.find('#powerLevel').change((event) => {
this.rollData.powerLevel = event.currentTarget.value
})
html.find('#disadvantage').change((event) => {
this.rollData.disadvantage = event.currentTarget.value
html.find('#bonusMalus').change((event) => {
this.rollData.bonusMalus = Number(event.currentTarget.value)
})
html.find('#rollAdvantage').change((event) => {
this.rollData.rollAdvantage = event.currentTarget.value
})
html.find('#useshield').change((event) => {
this.rollData.useshield = event.currentTarget.checked
})
html.find('#hasCover').change((event) => {
this.rollData.hasCover = event.currentTarget.value
})
html.find('#situational').change((event) => {
this.rollData.situational = event.currentTarget.value
})
html.find('#distanceBonusDice').change((event) => {
this.rollData.distanceBonusDice = Number(event.currentTarget.value)
html.find('#usemWeaponMalus').change((event) => {
this.rollData.usemWeaponMalus = event.currentTarget.checked
})
}
}

View File

@ -19,7 +19,16 @@ export class WarheroUtility {
this.defenderStore = {}
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;
})
@ -66,7 +75,7 @@ export class WarheroUtility {
console.log("Element Found !!!!")
}) */
}
/*-------------------------------------------- */
static upperFirst(text) {
if (typeof text !== 'string') return text
@ -208,23 +217,6 @@ export class WarheroUtility {
html.on("click", '.view-item-from-chat', event => {
game.system.crucible.creator.openItemView(event)
})
html.on("click", '.roll-defense-melee', event => {
let rollId = $(event.currentTarget).data("roll-id")
let rollData = WarheroUtility.getRollData(rollId)
rollData.defenseWeaponId = $(event.currentTarget).data("defense-weapon-id")
let actor = game.canvas.tokens.get(rollData.defenderTokenId).actor
if (actor && (game.user.isGM || actor.isOwner)) {
actor.rollDefenseMelee(rollData)
}
})
html.on("click", '.roll-defense-ranged', event => {
let rollId = $(event.currentTarget).data("roll-id")
let rollData = WarheroUtility.getRollData(rollId)
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
if (defender && (game.user.isGM || defender.isOwner)) {
defender.rollDefenseRanged(rollData)
}
})
}
@ -233,14 +225,13 @@ 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-ability-block.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',
'systems/fvtt-warhero/templates/partial-actor-equipment.html',
'systems/fvtt-warhero/templates/partial-container.html',
]
return loadTemplates(templatePaths);
}
@ -319,11 +310,6 @@ export class WarheroUtility {
this.updateRollData(rollData)
}
/* -------------------------------------------- */
static getRollData(id) {
return this.rollDataStore[id]
}
/* -------------------------------------------- */
static async displayDefenseMessage(rollData) {
if (rollData.mode == "weapon" && rollData.defenderTokenId) {
@ -517,10 +503,6 @@ export class WarheroUtility {
}
}
/* -------------------------------------------- */
static updateSkill(skill) {
}
/* -------------------------------------------- */
static getDiceFromCover(cover) {
if (cover == "cover50") return 1
@ -534,177 +516,119 @@ export class WarheroUtility {
if (cover == "engaged") return 1
return 0
}
/* -------------------------------------------- */
static async rollParry(rollData) {
let actor = game.actors.get(rollData.actorId)
// ability/save/size => 0
let diceFormula = "1d12+" + rollData.stat.value
let myRoll = rollData.roll
if (!myRoll) { // New rolls only of no rerolls
myRoll = new Roll(diceFormula).roll({ async: false })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
}
rollData.roll = myRoll
rollData.diceFormula = diceFormula
rollData.diceResult = myRoll.terms[0].results[0].result
rollData.isSuccess = false
if (myRoll.total >= 12 || rollData.diceResult == 12) {
rollData.isSuccess = true
if (rollData.diceResult == 12) {
rollData.isCriticalSuccess = true
}
}
if (rollData.diceResult == 1) {
rollData.isSuccess = false
rollData.isCriticalFailure = true
}
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-parry-result.html`, rollData)
})
msg.setFlag("world", "rolldata", rollData)
console.log("Rolldata result", rollData)
}
/* -------------------------------------------- */
static async rollWarhero(rollData) {
let actor = game.actors.get(rollData.actorId)
// ability/save/size => 0
if (rollData.mode == "power") {
let manaCost = rollData.powerLevel
if (actor.spentMana(manaCost)) {
let powerKey = "level" + rollData.powerLevel
rollData.powerText = rollData.power.system[powerKey]
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
})
msg.setFlag("world", "rolldata", rollData)
}
return
}
if (rollData.mode == "damage") {
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
rollData.diceResult = myRoll.terms[0].results[0].result
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
})
msg.setFlag("world", "rolldata", rollData)
return
}
let diceFormula
let startFormula = "0d6cs>=5[blue]"
if (rollData.ability) {
startFormula = String(rollData.ability.value) + "d6cs>=5[blue]"
}
if (rollData.save) {
startFormula = String(rollData.save.value) + "d6cs>=5[blue]"
}
if (rollData.sizeDice) {
let nb = rollData.sizeDice.nb + rollData.distanceBonusDice + this.getDiceFromCover(rollData.hasCover) + this.getDiceFromSituational(rollData.situational)
startFormula = String(nb) + String(rollData.sizeDice.dice) + "cs>=5[blue]"
}
diceFormula = startFormula
// skill => 2
// feat => 4
// bonus => 6
if (rollData.skill) {
let level = rollData.skill.system.level
if (rollData.skill.system.issl2) {
rollData.hasSLBonus = true
level += 2
if (level > 7) { level = 7 }
}
rollData.skill.system.skilldice = __skillLevel2Dice[level]
diceFormula += "+" + String(rollData.skill.system.skilldice) + "cs>=5[black]"
if (rollData.skill.system.skilltype == "complex" && rollData.skill.system.level == 0) {
rollData.complexSkillDisadvantage = true
rollData.rollAdvantage = "roll-disadvantage"
}
if (rollData.skill.system.isfeatdie) {
rollData.hasFeatDie = true
diceFormula += "+ 1d10cs>=5[warhero-purple]"
} else {
diceFormula += `+ 0d10cs>=5[warhero-purple]`
}
if (rollData.skill.system.bonusdice != "none") {
rollData.hasBonusDice = rollData.skill.system.bonusdice
diceFormula += `+ ${rollData.hasBonusDice}cs>=5[black]`
} else {
diceFormula += `+ 0d6cs>=5[black]`
}
if (rollData.weapon && rollData.weapon.system.weapontype == "special") {
diceFormula = rollData.weapon.system.rollformula
} else {
diceFormula += `+ 0d8cs=>5 + 0d10cs>=5 + 0d6cs>=5`
}
// advantage => 8
let advFormula = "+ 0d8cs>=5"
if (rollData.advantage == "advantage1" || rollData.forceAdvantage) {
advFormula = "+ 1d8cs>=5[warhero-darkgreen]"
}
if (rollData.advantage == "advantage2") {
advFormula = "+ 2d8cs>=5[warhero-darkgreen]"
}
diceFormula += advFormula
// disadvantage => 10
let disFormula = "- 0d8cs>=5"
if (rollData.disadvantage == "disadvantage1" || rollData.forceDisadvantage) {
disFormula = "- 1d8cs>=5[red]"
}
if (rollData.disadvantage == "disadvantage2") {
disFormula = "- 2d8cs>=5[red]"
}
diceFormula += disFormula
// armor => 12
let skillArmorPenalty = 0
for (let armor of rollData.armors) {
if (armor.system.equipped) {
skillArmorPenalty += armor.system.skillpenalty
// ability/save/size => 0
diceFormula = "1d20"
if (rollData.stat) {
diceFormula += "+" + rollData.stat.value
}
if (rollData.statBonus) {
diceFormula += "+" + rollData.statBonus.value
}
}
if (rollData.skill && rollData.skill.system.armorpenalty && skillArmorPenalty > 0) {
rollData.skillArmorPenalty = skillArmorPenalty
diceFormula += `- ${skillArmorPenalty}d8cs>=5`
} else {
diceFormula += `- 0d8cs>=5`
}
// shield => 14
if (rollData.useshield && rollData.shield) {
diceFormula += "+ 1" + String(rollData.shield.system.shielddie) + "cs>=5[yellow]"
} else {
diceFormula += " + 0d6cs>=5"
if (rollData.usemWeaponMalus) {
diceFormula += "+" + rollData.mWeaponMalus
}
diceFormula += "+" + rollData.bonusMalus
// Performs roll
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.rollOrder = 0
rollData.roll = myRoll
rollData.nbSuccess = myRoll.total
if (rollData.rollAdvantage == "none" && rollData.forceRollAdvantage) {
rollData.rollAdvantage = "roll-advantage"
rollData.diceFormula = diceFormula
rollData.diceResult = myRoll.terms[0].results[0].result
if (rollData.diceResult == 20) {
rollData.isCriticalSuccess = true
}
if (rollData.rollAdvantage == "none" && rollData.forceRollDisadvantage) {
rollData.rollAdvantage = "roll-disadvantage"
}
if (rollData.rollAdvantage != "none") {
rollData.rollOrder = 1
rollData.rollType = (rollData.rollAdvantage == "roll-advantage") ? "Advantage" : "Disadvantage"
this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
})
rollData.rollOrder = 2
let myRoll2 = new Roll(diceFormula).roll({ async: false })
await this.showDiceSoNice(myRoll2, game.settings.get("core", "rollMode"))
rollData.roll = myRoll2 // Tmp switch to display the proper results
rollData.nbSuccess = myRoll2.total
this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
})
rollData.roll = myRoll // Revert the tmp switch
rollData.nbSuccess = myRoll.total
if (rollData.rollAdvantage == "roll-advantage") {
if (myRoll2.total > rollData.nbSuccess) {
hasChanged = true
rollData.roll = myRoll2
rollData.nbSuccess = myRoll2.total
}
} else {
if (myRoll2.total < rollData.nbSuccess) {
rollData.roll = myRoll2
rollData.nbSuccess = myRoll2.total
}
}
rollData.rollOrder = 3
}
rollData.nbSuccess = Math.max(0, rollData.nbSuccess)
rollData.isFirstRollAdvantage = false
// Manage exp
if (rollData.skill && rollData.skill.system.level > 0) {
let nbSkillSuccess = rollData.roll.terms[2].total
if (nbSkillSuccess == 0 || nbSkillSuccess == rollData.skill.system.level) {
actor.incrementSkillExp(rollData.skill.id, 1)
}
if (rollData.diceResult == 1) {
rollData.isCriticalFailure = true
}
this.saveRollData(rollData)
actor.lastRoll = rollData
if ( rollData.stat.hasuse ) {
actor.incrementUse(rollData)
}
this.createChatWithRollMode(rollData.alias, {
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
})
msg.setFlag("world", "rolldata", rollData)
console.log("Rolldata result", rollData)
// Message response
this.displayDefenseMessage(rollData)
// Manage defense result
this.processAttackDefense(rollData)
}
/* -------------------------------------------- */
@ -721,7 +645,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);
@ -798,7 +734,7 @@ export class WarheroUtility {
break;
}
chatOptions.alias = chatOptions.alias || name;
ChatMessage.create(chatOptions);
return ChatMessage.create(chatOptions);
}
/* -------------------------------------------- */
@ -806,7 +742,10 @@ export class WarheroUtility {
let rollData = {
rollId: randomID(16),
rollMode: game.settings.get("core", "rollMode"),
advantage: "none"
advantage: "none",
bonusMalus: 0,
powerLevel: "1",
hasBM: true
}
WarheroUtility.updateWithTarget(rollData)
return rollData
@ -821,8 +760,8 @@ export class WarheroUtility {
}
/* -------------------------------------------- */
static createChatWithRollMode(name, chatOptions) {
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions)
static async createChatWithRollMode(name, chatOptions) {
return this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions)
}
/* -------------------------------------------- */

1
packs/ammunitions.db Normal file
View File

@ -0,0 +1 @@
{"name":"Arrow","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":2,"quantity":20,"equipped":false,"slotused":1,"slotlocation":"quiver","description":"<p>Arrow for &nbsp;@UUID[Compendium.world.weapons.kkn0H33tCD3594Mx]{Bow} and @UUID[Compendium.world.weapons.koM5TEFPzTlZeuMn]{CrossBow}. The arrows must be contained into a @UUID[Compendium.world.equipments.Fm01Gl7EuqGU9qdr]{Quiver} (or @UUID[Compendium.world.equipments.EuP7AVIoBRWk1wsX]{Quiver of holding}). Each 20 arrows they need one more quiver.</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.g1U48kW3Uf3LkaeG"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285482221,"modifiedTime":1674288079539,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"f7QTqfFzyTWLFOrY"}

3
packs/armors.db Normal file
View File

@ -0,0 +1,3 @@
{"name":"Scale mail","type":"armor","img":"systems/fvtt-warhero/images/icons/difesa.webp","system":{"armortype":"medium","equipped":false,"damagereduction":4,"cost":140,"slotused":1,"slotlocation":"armor","description":"<p>A medium armor. DR:4 (when weared)</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.lQRGneHKxSt3Z1Aw"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285629119,"modifiedTime":1674287831040,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"QQHtpszvyRmTRvTU"}
{"name":"Plate","type":"armor","img":"systems/fvtt-warhero/images/icons/difesa.webp","system":{"armortype":"heavy","equipped":false,"damagereduction":6,"cost":680,"slotused":1,"slotlocation":"armor","description":"<p>An heavy armor. DR:6 (when weared)</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.lQRGneHKxSt3Z1Aw"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285629119,"modifiedTime":1674287827036,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"VwbtIBqYmLMGJn2e"}
{"name":"Leather","type":"armor","img":"systems/fvtt-warhero/images/icons/difesa.webp","system":{"armortype":"light","equipped":false,"damagereduction":2,"cost":20,"slotused":1,"slotlocation":"armor","description":"<p>A simple armor. DR:2 (when weared)</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.lQRGneHKxSt3Z1Aw"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285629119,"modifiedTime":1674287829053,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"cJnFNx1MpfolTK6j"}

1
packs/classes.db Normal file
View File

@ -0,0 +1 @@
{"name":"Warrior","type":"class","img":"systems/fvtt-warhero/images/icons/classe.webp","system":{"weapons":{"short":false,"long":false,"twohanded":false,"shotgun":false,"throwing":false},"armors":{"light":false,"medium":false,"heavy":false},"shields":{"light":false,"medium":false,"tower":false},"description":""},"effects":[],"flags":{"core":{"sourceId":"Item.jRwz7D2iRTEMOjTL"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674286439186,"modifiedTime":1674287319937,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"FM6VG563q7C5Gdls"}

8
packs/equipments.db Normal file
View File

@ -0,0 +1,8 @@
{"name":"Quiver of holding","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":8000,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"quiver","description":"<p>Container.</p>\n<p>Slot provided: infinite (only for @UUID[Item.g1U48kW3Uf3LkaeG]{Arrow})</p>\n<p>Slot occupied: 1 in Quiver slot</p>\n<p>A quiver</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.X627atoHcwnZPFh4"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287883396,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"EuP7AVIoBRWk1wsX"}
{"name":"Quiver","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":1,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"quiver","description":"<p>Container.</p>\n<p>Slot provided: 20 (only for @UUID[Item.g1U48kW3Uf3LkaeG]{Arrow})</p>\n<p>Slot occupied: 1 in Quiver slot</p>\n<p>A quiver</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.b10F87vD8eX74mE4"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287881900,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"Fm01Gl7EuqGU9qdr"}
{"name":"Belt Pouch","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":1,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"belt","description":"<p>Container.</p>\n<p>Slot provided: 4</p>\n<p>Slot occupied: 1 in @UUID[Item.yEsS9y283ll5dPFG]{Belt}</p>\n<p>A belt pouch. It contains 4 slot of low volume items</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.PxrsMWHj2gaWErfb"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287880700,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"MUMZLLi6wmhBOy3l"}
{"name":"Backpack","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":2,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"backpack","description":"<p>Container.</p>\n<p>Slot provided: 12</p>\n<p>Slot occupied: 1 in Backpack slot</p>\n<p>A standard backpack</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.uCaGC3EGQ85BVg2n"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287875283,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"QfnlXUDkxDWqBnb9"}
{"name":"Backpack of holding","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":48000,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"backpack","description":"<p>Container.</p>\n<p>Slot provided: 90</p>\n<p>Slot occupied: 1 in Backpack slot</p>\n<p>A backpack that can contains 90 items</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.FmiX5vOeuYxlLKXK"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287876806,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"gU2Dg6Yo5K5XnWmB"}
{"name":"Gold","type":"money","img":"systems/fvtt-warhero/images/icons/two-coins.svg","system":{"value":1,"quantity":500,"description":"<p>A pile of coins. Max 1000 coins in each pile. Each 1000 gold you need to occupy 1 slot in a @UUID[Item.PxrsMWHj2gaWErfb]{Belt Pouch}</p>\n<p>Each PC starts with 500 gold</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.hbBYKnGLzFIn7KZn"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284013488,"modifiedTime":1674287873177,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"j6fZ2Ru5Np4g0MFp"}
{"name":"Belt","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":1,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"belt","description":"<p>Container.</p>\n<p>Slot provided:6 in belt slot</p>\n<p>A belt</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.yEsS9y283ll5dPFG"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287879339,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"v44gVEKEYLfYoR9i"}
{"name":"Bag of Holding","type":"equipment","img":"systems/fvtt-warhero/images/icons/swap-bag.svg","system":{"equiptype":"","cost":1,"quantity":1,"equipped":false,"slotused":1,"slotlocation":"belt","description":"<p>Container.</p>\n<p>Slot provided: 30&nbsp;</p>\n<p>Slot occupied: 1 in Backpack slot or in belt slot</p>\n<p>A bag of holding</p>"},"effects":[],"flags":{"core":{"sourceId":"Item.Uzy0T6ZnCzEsyGop"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674284215303,"modifiedTime":1674287878052,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"vCREWenSFdmcWEGd"}

158
packs/powers.db Normal file
View File

@ -0,0 +1,158 @@
{"name":"Parlare linguaggi","type":"power","system":{"level":3,"magicschool":"Linguaggi","description":"il bersaglio può parlare una qualsiasi lingua per 5 minuti."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904923,"modifiedTime":1675877939482,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"08BXcOaoGE192zNB","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Muro di fuoco","type":"power","system":{"level":4,"magicschool":"Elementale - Fuoco","description":"si crea un muro di fuoco alto fino a 9 metri e lungo fino a 9 metri, chiunque stia adiacente al muro subisce 1d6 danni da fuoco, chi ci passa attraverso subisce 15d6 danni da fuco CD 18 ist per dimezzare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904839,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"0fuQ1vuv4uUfReik","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Solo difesa","type":"power","system":{"level":4,"magicschool":"Protezione","description":"l'incantesimo da la possibilità di usare l'azione di parata fino a due volte per turno, tirando due volte i dadi e prendendo il risultato migliore, fino alla fine dello scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904960,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"0hqW3CDSxT0sb2jc","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Lentezza","type":"power","system":{"level":2,"magicschool":"Tempo","description":"il bersaglio può effettuare una terza mossa nel proprio turno fino alla fine dello scontro, e rimuove eventuali incantesimi di lentezza sul bersaglio"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904973,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"0s6X0VfFHJgKeYBs","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cono di freddo","type":"power","system":{"level":2,"magicschool":"Elementale - Acqua","description":"tutti i bersagli di fronte all'incantatore entro 6 metri subiscono 5d6 danni da freddo. CD 14 , IST, dimezzare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904824,"modifiedTime":1675877939470,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"1HjRX5S3R2TuqnIN","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Teletrasporto","type":"power","system":{"level":3,"magicschool":"Viaggio","description":"permette all'incantatore di andare in un qualsiasi posto di sua conoscenza. l'incantesimo costa un punto mana in più per ogni personaggio che si desidera portare con se. se un personaggio non vuol essere trasportato, CD 12, IST, negare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904988,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"1UrtrLZ51eLjsEIx","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Contropotere caotico","type":"power","system":{"level":4,"magicschool":"Indole - Caos","description":"Puoi usare questo potere come se fosse un contropotere e non spendere ulteriore mana, in qualsiasi momento anche nel round dell'avversario. Ottieni bonus pari a +4 al tiro di contropotere, se il contropotere ha successo puoi immediatamente usare un potere scelto in maniera casuale di livello III o inferiore"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904897,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"1ZCVzbwTVtuxwVxC","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Volare","type":"power","system":{"level":2,"magicschool":"Viaggio","description":"permette al bersaglio di volare per un ora alla normale velocità di movimento."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904987,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"1on8iKAjWzcbJkBd","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Comprensione dei linguaggi","type":"power","system":{"level":2,"magicschool":"Linguaggi","description":"il bersaglio capisce qualsiasi lingua per 1 ora."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904922,"modifiedTime":1675877939482,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"1x6LaCg71VjIcaHg","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Mani brucianti","type":"power","system":{"level":2,"magicschool":"Elementale - Fuoco","description":"tutti i bersagli difronte all'incantatore entro 6 metri subiscono 5d6 danni da fuoco. CD 14, IST, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904836,"modifiedTime":1675877939472,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"1ychDvTMJrneQrl0","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Dardo incantato","type":"power","system":{"level":1,"magicschool":"Forza","description":"il bersaglio subisce 2d4+4 danni."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904858,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"2hAooR3fELiaIv9N","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Gabbia di terra","type":"power","system":{"level":4,"magicschool":"Elementale - Terra","description":"il bersaglio subisce 6d6 danni da acido e deve superare un tiro su ist CD 20 o rimanere paralizzato per 2 round."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904844,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"2t6zBr9FOTemb7ef","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cura di massa","type":"power","system":{"level":4,"magicschool":"Guarigione","description":"l'incantatore e tutti gli alleati entro 9 metri vengono curati di 4d10 + 10"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904871,"modifiedTime":1675877939477,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"2xzmVKeu7aXWCTRD","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Sofferenza","type":"power","system":{"level":3,"magicschool":"Indole - Male","description":"infligge 12d6 danni a una creatura buona. CD 16, MEN, dimezzare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904916,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"2zZ7J0Rjbak48Ljr","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Di fronte al male","type":"power","system":{"level":2,"magicschool":"Indole - Male","description":"fino alla fine dello scontro un bersaglio di allineamento malvagio che subisce un colpo infligge lo status di affaticato all'avversario che lo ha colpito avversario che lo ha colpito CD 16 su FIS per negare, se il bersaglio è già affaticato diventa esausto, se un bersaglio diventa esausto il potere termina"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904914,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"3l8fdh3vXRvjoJr7","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Segno esplosivo","type":"power","system":{"level":3,"magicschool":"Rune","description":"una volta lanciato questo incantesimo, si crea un disegno nel punto scelto. chiunque tocchi il segno, subisce 4d8 danni magici.e' possibile tracciarlo già in contatto con un personaggio, che subisce i danni immediatamente."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904969,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"3mDBK9zIf9R4PbLo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Identificare","type":"power","system":{"level":3,"magicschool":"Conoscenze","description":"lanciando questo incantesimo su un oggetto se ne capisce il funzionamento e le proprietà magiche ad esso associate."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904810,"modifiedTime":1675877939467,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"4YCGLK5hBA1dymta","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Ristabilire equilibrio","type":"power","system":{"level":4,"magicschool":"Indole - Equilibrio","description":"Selezioni due bersagli e i punti vita attuali e i punti mana attuali diventano uguali alla loro rispettiva somma diviso due per entrambi i bersagli, CD 18 IST negare entrambi i bersagli possono tentare il tiro, il potere fallisce se anche solo uno dei bersagli ci riesce"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904904,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"4uxhEUuNFuDjlnr6","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca zombi","type":"power","system":{"level":2,"magicschool":"Evocazione - Non Morte","description":"schianto 1d6 o danni dell'arma, fis 4, ist 0, men 0."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904849,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"5C07VRo8z41Kh70Y","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resurrezione veloce","type":"power","system":{"level":3,"magicschool":"Negromanzia","description":"il bersaglio torna in vita ma perde permanentemente 1 punto di fis. i pf e pm sono al massimo. non è possibile resuscitare un personaggio con 1 punto fis o meno. e' possibile riportare in vita solo persone morte nella stessa giornata del lancio dell'incantesimo."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904940,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"6Z73jbvTwFqsiKOw","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Individuazione dell'allineamento","type":"power","system":{"level":1,"magicschool":"Divinazione","description":"l'incantatore conosce l'allineamento del bersaglio."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904819,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"6olhY5wohzlkW96u","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Scrutare","type":"power","system":{"level":2,"magicschool":"Divinazione","description":"l'incantatore può vedere e sentire tutto quello che si trova entro 10 metri da lui anche dietro a pareti solide per la durata di 1 minuto."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904819,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"6vZEQ1wjQsmCXMtR","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Risucchia vita","type":"power","system":{"level":1,"magicschool":"Negromanzia","description":"il bersaglio subisce 2d4 danni e l'incantatore si cura di altrettanti danni."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904938,"modifiedTime":1675877939484,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"7b6lal71wDDJAEd0","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resistenza al gelo","type":"power","system":{"level":4,"magicschool":"Elementale - Acqua","description":"il bersaglio riduce per il prossimo scontro tutti i danni subiti di tipo gelo di 20"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904826,"modifiedTime":1675877939470,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"7n6sxQKYPaM7pkh4","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Sonno","type":"power","system":{"level":1,"magicschool":"Ammaliamento","description":"la creatura si addormenta e non si sveglia finché non riceve un danno normale o stordente o trascorrono otto ore. CD 13, FIS, negare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904793,"modifiedTime":1675877939466,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"9KljFSjM3pWaoI73","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Visione futura","type":"power","system":{"level":4,"magicschool":"Visione","description":"usare questo incantesimo produce gli stessi effetti dell'abilità visione dell'oracolo"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904995,"modifiedTime":1675877939490,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"9StvYUTQ7V0YhtOf","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Precognizione","type":"power","system":{"level":4,"magicschool":"Divinazione","description":"l'incantatore e gli alleati entro 9 metri ottengono un bonus di +10 all'iniziativa e un +1 a dif per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904822,"modifiedTime":1675877939470,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"9UH6CVtklssk2AVo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Legge suprema","type":"power","system":{"level":4,"magicschool":"Indole - Legge","description":"Fino alla fine dello scontro un bersaglio di allineamento legale che subisce un colpo può decidere di disarmare il proprio avversario che lo ha colpito CD 16 su FIS per negare oppure di farlo sdraiare per terra CD 16 su MEN per negare oppure di infliggergli 5d6 danni CD 16 su IST per negare, dopo di che questo effetto rimane attivo altri 3 round prima di terminare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904910,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"AM3ATrHNkOsc9dXk","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Marchio del mago","type":"power","system":{"level":4,"magicschool":"Rune","description":"puoi incidere su te stesso o su un alleato una runa contenente un qualsiasi altro incantesimo di 3 livello o inferiore che conosci, il bersaglio può usare quell'incantesimo entro la fine della giornata"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904971,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"APjlRqats9YPRcli","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Confusione","type":"power","system":{"level":4,"magicschool":"Ammaliamento","description":"il bersaglio ha il 50% di possibilità di eseguire il suo turno, per la durata di 10 turni, CD 18 men per negare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904805,"modifiedTime":1675877939466,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Bo6yukhbjHibVLOR","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Patto","type":"power","system":{"level":3,"magicschool":"Costrizione","description":"Devi scegliere se negare le mosse di potere o quelle di attacco, il bersaglio non sarà in grado di usare tale mossa scelta per i prossimi 1d4 Round, CD 16 MEN Nega"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904815,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"BzDXrpTEM55aFIqg","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Raggio rovente","type":"power","system":{"level":1,"magicschool":"Elementale - Fuoco","description":"l'incantatore deve effettuare un tiro per colpire a distanza entro 20 metri per infliggere 4d4 danni da fuoco al bersaglio."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904835,"modifiedTime":1675877939472,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"CLp5TRPccBPANHUe","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Telepatia","type":"power","system":{"level":4,"magicschool":"Divinazione","description":"è possibile stabilire la connessione mentale con un tuo alleato per l'intera giornata e riuscire a comunicare con lui telepaticamente indipendentemente a dove vi trovate, per ogni punto mana aggiuntivo spesa si può comunicare fra più persone"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904821,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"CQ8MWucM1IWeDNQq","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca mummia","type":"power","system":{"level":4,"magicschool":"Evocazione - Non Morte","description":"2x schianto 5d6 fis 7 ist 4 men 2, percezione cieca, aura 2d6"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904851,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"CjIg6780ZHG14ffq","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Mappa del tesoro","type":"power","system":{"level":4,"magicschool":"Illusione","description":"questo incantesimo si deve lanciare su una pergamena e bagnare tale pergamena con una goccia di sangue di un bersaglio , l'incantesimo disegnerà una mappa con indicato gli averi del proprietario del sangue usato"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904887,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"CkDS9usOUkTMPGo7","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Risucchio","type":"power","system":{"level":1,"magicschool":"Morte","description":"l'incantatore deve effettuare un tiro per colpire a distanza entro 20 metri e se ha successo , il bersaglio perde 1 punto di fis, fino ad un minimo di 1, per 24 ore."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904932,"modifiedTime":1675877939483,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"CpkqRsUQEjUBAgms","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Maglio oscuro","type":"power","system":{"level":1,"magicschool":"Oscurità","description":"con un tiro per colpire a distanza vengono inflitti 5d4+5 danni."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904944,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"DH9Fxd3yM8mEpOBi","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Castigo","type":"power","system":{"level":3,"magicschool":"Indole - Bene","description":"infligge 12d6 danni a una creatura malvagia. CD 16, MEN, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904891,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"DNkcEyBQYp78RUeK","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Segno negatorio","type":"power","system":{"level":1,"magicschool":"Rune","description":"permette di celare il proprio allineamento negando anche eventuali incantesimi che lo rivelino, per la durata dell'intera giornata."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904967,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"DsPn3lqhpGAU77kL","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Sfocatura","type":"power","system":{"level":3,"magicschool":"Illusione","description":"il bersaglio ottiene una probabilità del 50% di essere mancato, per tutto il combattimento."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904884,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"EG2xA3TWqTHG8e28","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Viticci","type":"power","system":{"level":1,"magicschool":"Vegetale","description":"il bersaglio rimane bloccato sul posto per 3 round ma può comunque attaccare. CD 14, IST, negare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904981,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ENRZyKNPGk9KfCzq","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Punire il caos","type":"power","system":{"level":1,"magicschool":"Indole - Legge","description":"Se il bersaglio è di allineamento caotico subisce 4d6 danni CD 14, MEN, dimezzare. Altrimenti il bersaglio riduce i danni subiti da creature caotiche di 5 punti per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904906,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"FAUFfMhdebRdKBnR","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Punire il male","type":"power","system":{"level":1,"magicschool":"Indole - Bene","description":"Se il bersaglio è di allineamento malvagio subisce 4d6 danni CD 14, MEN, dimezzare. Altrimenti il bersaglio riduce i danni subiti da creature malvagie di 5 punti per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904888,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"FD2jB2MQjwqX26F4","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Raggio di gelo","type":"power","system":{"level":1,"magicschool":"Elementale - Acqua","description":"l'incantatore deve effettuare un tiro per colpire a distanza entro 20 metri per infliggere 4d4 danni da freddo al bersaglio."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904823,"modifiedTime":1675877939470,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Faq8SbGNkVrQ5pvp","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Alterazione","type":"power","system":{"level":1,"magicschool":"Trasmutazione","description":"può cambiare la razza di un personaggio in una, sempre umanoide. questo non ne modifica le statistiche, per 1 ora."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904976,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"FkJ49VbCvSL2ca6c","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Individuazione del magico","type":"power","system":{"level":1,"magicschool":"Conoscenze","description":"l'incantatore riesce a percepire in quell'istante se vi è intorno a lui nel raggio di 10 metri presenza di aure magiche. Capisce se vi sono effetti di incantesimi attivi o oggetti con proprietà magiche"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904807,"modifiedTime":1675877939467,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"FxvVobEr8NoXAW1R","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Messaggio","type":"power","system":{"level":4,"magicschool":"Tempo","description":"e' possibile mandare una lettera magica a un qualsiasi alleato che si conosce il quale può rispondere a sua volta, indipendentemente da dove si trovi"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904975,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"G1D0R27jxq7qkZ69","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Scudo magico","type":"power","system":{"level":1,"magicschool":"Protezione","description":"il bersaglio ottiene un bonus di 2 punti a difesa per il prossimo scontro."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904952,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"GEUOxFWgjZ72MadL","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Colosso","type":"power","system":{"level":4,"magicschool":"Trasmutazione","description":"Il bersaglio per i successivi 5 round perde tutte le abilità di classe, guadagna la competenza nelle armi a due mani, il suo punteggio di FIS diventa 20 e IST 10, il suo valore di difesa diventa 8, indipendentemente dall'istinto, CD 18 FIS per negare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904979,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"GHfTTQwR6rtkRcJO","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Incatenare l' anima","type":"power","system":{"level":4,"magicschool":"Negromanzia","description":"impedisce qualsiasi incantesimo di negromanzia o guarigione su un bersaglio morto"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904943,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"GtDC6tnsJwJ8ddL1","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Potere caotico","type":"power","system":{"level":2,"magicschool":"Indole - Caos","description":"Il bersaglio di allineamento caotico, può lanciare immediatamente un suo potere di livello III scelto in maniera casuale"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904896,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"GuFclf6ZPIaESPS0","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Obbligo di parola","type":"power","system":{"level":4,"magicschool":"Linguaggi","description":"il bersaglio perde tutti i linguaggi tranne il comune e acquista il comune se non lo aveva per un ora, CD 18 men per negare, per i successivi 5 turni il bersaglio non è in grado di lanciare incantesimi con componenti verbali"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904924,"modifiedTime":1675877939482,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"HC832SufJP78O0kC","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Esplosione solare","type":"power","system":{"level":4,"magicschool":"Luce","description":"tutte le creature in unarea di raggio 6 metri subiscono 6d6 danni, poi CD 18, IST o rimanere accecato per 3 round."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904929,"modifiedTime":1675877939483,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"HU6CGjn215elzxZy","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Punire il bene","type":"power","system":{"level":1,"magicschool":"Indole - Male","description":"Se il bersaglio è di allineamento buono subisce 4d6 danni CD 14, MEN, dimezzare. Altrimenti il bersaglio riduce i danni subiti da creature buone di 5 punti per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904913,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"I0s3vfXtaej6XOsT","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Fulmine","type":"power","system":{"level":2,"magicschool":"Elementale - Aria","description":"tutti i bersagli difronte all'incantatore entro 6 metri subiscono 5d6 danni da scossa. CD 14, IST, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904830,"modifiedTime":1675877939471,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"InXfXuABQDHb5zV5","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resistenza al fuoco","type":"power","system":{"level":4,"magicschool":"Elementale - Fuoco","description":"il bersaglio riduce per il prossimo scontro tutti i danni subiti di tipo fuoco di 20"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904838,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"IwckOzpQuieWvcOn","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Spostamento planare","type":"power","system":{"level":4,"magicschool":"Viaggio","description":"ti permette di andare assieme ai tuoi alleati in un punto casuale di un piano del quale possiedi un pezzo di ferro lavorato"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904989,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"JdEYwDx8fzvPchwS","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resistenza all' energia","type":"power","system":{"level":4,"magicschool":"Protezione","description":"al momento del lancio di questo incantesimo si deve scegliere fuoco,gelo,acido o scossa e si può ridurre i danni di quel tipo di elemento di 10 ad ogni colpo subito per la prossima ora"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904958,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"K9klyiLkV95kwTIe","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cambio esito","type":"power","system":{"level":1,"magicschool":"Fato","description":"Per il prossimo scontro puoi scegliere di ritirare una volta un qualsiasi dado, si prende il secondo risultato anche se peggiore"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904852,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"KAtzfJafxDsLk9BL","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca dinosauro","type":"power","system":{"level":4,"magicschool":"Evocazione - Animale","description":"2x ariglio 2d6,codata 1d8, morso 1d10, fis 7 ist 4 men 2"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904847,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"KBxBDMo05wN3L649","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Ingrandire/Ridurre","type":"power","system":{"level":2,"magicschool":"Trasmutazione","description":"può aumentare la taglia del bersaglio alleato fornendogli cosi un bonus di 4 punti ai danni ed una penalità di 2 a difesa o diminuire la taglia fornendogli una penalità di 4 ai danni ed un bonus di 2 alla difesa, per la durata di 1 ora."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904977,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Kba4gKFruhTWdP5U","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Richiamo","type":"power","system":{"level":1,"magicschool":"Costrizione","description":"puoi selezionare un oggetto incustodito o un alleato, fino a fine giornata quando vuoi se il bersaglio è entro 20 metri puoi spostarlo magicamente e farlo apparire adiacente a colui che ha usato questo potere, non è possibile avere più di 3 richiami attivi contemporaneamente"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904813,"modifiedTime":1675877939468,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"KhIIZD2xav1wVqem","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Dito di morte","type":"power","system":{"level":3,"magicschool":"Morte","description":"il bersaglio subisce 100 danni, CD 14 FIS per negare questo effetto e subire 3d6 danni"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904935,"modifiedTime":1675877939484,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"KqvWjxWIifyTKNJy","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Folata di vento","type":"power","system":{"level":4,"magicschool":"Elementale - Aria","description":"i bersagli di fronte all'incantatore subiscono 15d6 danni da scossa, CD 18 IST per dimezzare, e devono riuscire in un tiro salvezza su fis CD 16 o far cadere tutto ciò che impugnano per terra"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904834,"modifiedTime":1675877939472,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"L42LjIoOFanFf2gZ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Bersaglio","type":"power","system":{"level":4,"magicschool":"Costrizione","description":"Devi selezionare un alleato consenziente e un bersaglio. Il bersaglio scelto potrà effettuare mosse ostili solo su l'alleato scelto fino alla fine dello scontro o fino a quando i Punti ferita dell'alleato scendono a zero. Il Bersaglio può tentare un TS su MEN CD 18 per Negare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904816,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Ls96wsHFWG8F7Emb","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Modificare memoria","type":"power","system":{"level":4,"magicschool":"Ammaliamento","description":"chi usa questo incantesimo può vedere un ricordo di massimo 5 minuti e decidere di cancellare o modificare quel ricordo a piacimento dal bersaglio, CD 18 MEN per negare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904806,"modifiedTime":1675877939467,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"MJQ0ZobtTdCjduDn","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Velocità","type":"power","system":{"level":3,"magicschool":"Tempo","description":"il bersaglio può effettuare una terza mossa nel proprio turno fino alla fine dello scontro, e rimuove eventuali incantesimi di lentezza sul bersaglio"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904974,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"O1yGotIS8YidAFh1","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Luce magica","type":"power","system":{"level":1,"magicschool":"Luce","description":"crea luce intorno al bersaglio per 1 ora."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904926,"modifiedTime":1675877939483,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"O6FhPQp1rV8YaJQA","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Mezzanotte polare","type":"power","system":{"level":4,"magicschool":"Oscurità","description":"funziona come l'incantesimo di secondo livello della sfera di oscurità, oscurità magica, con la differenza che chi si trova all'interno dell'area all'inizio di ogni suo turno subisce 6d6 danni magici, CD 16 fis per dimezzare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904950,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"PzM7UtU8u6h39z5O","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Precisione","type":"power","system":{"level":1,"magicschool":"Guerra","description":"il bersaglio ottiene un bonus di 3 punti al tiro per colpire nel combattimento fino all afine dello scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904872,"modifiedTime":1675877939477,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"QGh1VtNFgRRKVvNK","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Pelle di pietra","type":"power","system":{"level":3,"magicschool":"Protezione","description":"il personaggio ottiene 40 punti ferita extra che permangono fin quando non subisce un numero di danni sufficiente a riportarlo ai suoi punti ferita originali o meno. fino ad allora non può ricevere incantesimi che restituiscano pf."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904956,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"QiWw4fEN7atSXqat","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Fiotto acido","type":"power","system":{"level":1,"magicschool":"Elementale - Terra","description":"l'incantatore deve effettuare un tiro per colpire a distanza entro 20 metri per infliggere 4d4 danni da acido al bersaglio."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904840,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"RNz7yZA5Hb3avPEC","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca lupo","type":"power","system":{"level":2,"magicschool":"Evocazione - Animale","description":"morso 2d4, artiglio 1d6, fis 3 ist 4 men 0."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904845,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"SmGpYUgJY9PEIWhf","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Terremoto","type":"power","system":{"level":3,"magicschool":"Vegetale","description":"tutti i bersagli di fronte all'incantatore entro 12 metri subiscono 5d8 danni e cadono a terra. CD 18, IST, evitare di cadere per terra."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904983,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Sz183GOBEDrQcGd1","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Punire l'equilibrio","type":"power","system":{"level":1,"magicschool":"Indole - Equilibrio","description":"Se il bersaglio è di allineamento neutrale subisce 4d6 danni CD 14, MEN, dimezzare. Altrimenti il bersaglio riduce i danni subiti da creature neutrali di 5 punti per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904900,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"T0eZtZLUZm9K2BzP","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resurrezione","type":"power","system":{"level":3,"magicschool":"Guarigione","description":"riporta in vita un cadavere di un alleato conosciuto in vita. questa operazione non può essere fatta durante un combattimento. il personaggio torna in vita con i pm che aveva alla morte e 10 pf, il costo di mana dell'incantesimo aumenta di 1 per ogni giorno trascorso dalla morte del bersaglio. Il bersaglio ha un malus di -2 in tutte le statistiche, non rimovibili , fino al giorno successivo"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904867,"modifiedTime":1675877939477,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Tnbo5qZBLCiZAli4","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Stretta del fato","type":"power","system":{"level":3,"magicschool":"Fato","description":"Per il prossimo scontro puoi aggiungere o togliere 2d4 alla CD di un potere a tua scelta che viene lanciato, prima di sapere lesito del tiro salvezza, dopo di che quest'effetto termina"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904854,"modifiedTime":1675877939475,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Tq39Gu1z4E3YMllS","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Passo del fato","type":"power","system":{"level":4,"magicschool":"Fato","description":"Per il prossimo scontro puoi fino a un massimo di 3 volte in qualsiasi momento invertire la posizione di due alleati presenti al momento del lancio di questo potere, come meglio preferisci"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904857,"modifiedTime":1675877939475,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"UidgozfLZsoPIBoK","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Fine dei giochi","type":"power","system":{"level":4,"magicschool":"Indole - Male","description":"il bersaglio deve effettuare un tiro su sfidare la morte, come se i suoi punti ferita fossero a 0, in caso di fallimento muore."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904917,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"V8KL2tzLEd12xRP8","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Trasformazione","type":"power","system":{"level":3,"magicschool":"Trasmutazione","description":"chi usa l'incantesimo si trasforma in un guerriero e può usare qualsiasi arma o scudo per lo scontro, ma perde la capacita di lanciare incantesimi. guadagna un bonus di 4 punti a fis. può interrompere questo effetto quando vuole, l'effetto termina automaticamente dopo che sia trascorso 1 ora dal lancio dell'incantesimo."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904978,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Wiw3J9c1AGCZGbno","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Muro illusorio","type":"power","system":{"level":4,"magicschool":"Illusione","description":"si crea un muro illusorio dal quale non è possibile vedere o sentire niente, ma si può attraversare a piacimento, non svanisce alla fine del giorno"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904886,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"XO7MkRoN270zyu7q","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Armatura magica","type":"power","system":{"level":2,"magicschool":"Forza","description":"il bersaglio guadagna un bonus di 4 punti a difesa per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904859,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"YH6sayoSaQeWIwW7","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Ragnatela","type":"power","system":{"level":2,"magicschool":"Costrizione","description":"in un'area di 6 metri qualsiasi mossa di movimento,assaltare o travolgere per poterla fare è necessario superare un tiro salvezza su IST CD 13"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904814,"modifiedTime":1675877939468,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"Z1enNb056VVT8v5C","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Pietrificazione","type":"power","system":{"level":4,"magicschool":"Costrizione","description":"Il bersaglio viene tramutato in una pietra per 5 minuti rendendolo immune a danni ed effetti ma non potendo eseguire nessuna mossa. CD 18 su FIS per Negare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904818,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ZTzGLsI7fYvMZK44","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Catastrofe","type":"power","system":{"level":3,"magicschool":"Indole - Caos","description":"infligge 12d6 danni a una creatura legale CD 16, MEN, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904896,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"b2ftOwRXke7sRraG","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Potere della furia","type":"power","system":{"level":4,"magicschool":"Guerra","description":"i danni inflitti dal bersaglio con le armi sono tutti raddoppiati prima di applicare eventuali effetti di critico fino alla fine del prossimo scontro. questa magia non influenza i danni aggiuntivi dovuti da elementi"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904878,"modifiedTime":1675877939478,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"b2nNuZqzQSJv8p1P","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Palla di Fuoco","type":"power","system":{"level":3,"magicschool":"Elementale - Fuoco","description":"tutte le creature in un area di raggio 6 metri subiscono 10d6 danni da fuoco. CD 16,ist, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904837,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"bnWyUAi6Su0InjRo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Tempesta di fulmini","type":"power","system":{"level":3,"magicschool":"Elementale - Aria","description":"tutte le creature in un area di raggio 6 metri subiscono 10d6 danni da scossa. CD 16, IST, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904831,"modifiedTime":1675877939471,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"cOXbmiXeQRJwlhdd","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca Orso","type":"power","system":{"level":3,"magicschool":"Evocazione - Animale","description":"artiglio 2d6, morso 1d10, fis 6 ist 1 men 0"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904846,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"dIl9bt79csKa8qSQ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cerchio contro il caos","type":"power","system":{"level":4,"magicschool":"Indole - Legge","description":"l'incantatore e tutti i suoi alleati entro 9 metri ottengono un bonus di +3 al txc e al danno contro creature caotiche, fino alla fine del prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904911,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"dKeIgbWOvb5WyQZ8","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Destino casuale","type":"power","system":{"level":4,"magicschool":"Fato","description":"Quando si lancia questo potere si determinano casualmente tre dei poteri di livello 1,2 o 3 di una sfera casuale e si lanciano contemporaneamente è possibile scegliere bersagli diversi per ogni potere"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904855,"modifiedTime":1675877939475,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"e5sdgdR1TBcKEpoO","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca spettro","type":"power","system":{"level":3,"magicschool":"Evocazione - Non Morte","description":"tocco 1d4 più riduzione di 1 punto di fis per 24 ore (CD 16, FIS, negare), fis 0, ist 5,men 2."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904850,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"fJ30QpZ9OAb5JJyB","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Globo di forza","type":"power","system":{"level":3,"magicschool":"Forza","description":"tutte le creature in un area di raggio 6 metri subiscono 8d6 danni da forza. CD 18, IST,negare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904860,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"fKEXWz1U2rXN10bh","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Vita Falsa","type":"power","system":{"level":2,"magicschool":"Negromanzia","description":"un bersaglio ottiene, per uno scontro 2d10 + 10 pf extra."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904939,"modifiedTime":1675877939484,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"fYgXo7Pcq4HKOQqK","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca aquila","type":"power","system":{"level":1,"magicschool":"Evocazione - Animale","description":"creatura volante, artiglio o becco 1d4 danni, fis 1, ist 3, men 1."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904845,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"fzJGod0FE4WiReR0","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Rampicanti","type":"power","system":{"level":4,"magicschool":"Vegetale","description":"in un raggio di 6 metri si crea dei rampicanti, muoversi allinterno dellarea fa subire 4d6 danni, CD IST 16 Dimezza, se si subisce i danni si deve fare una prova contrapposta con i rampicanti per non essere immobilizzati, per i rampicanti si una il FIS di chi ha lanciato il potere."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904986,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"gJGGSLgSqnJ8f7NZ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Vera invisibilità","type":"power","system":{"level":4,"magicschool":"Oscurità","description":"l'incantatore rimane invisibile per 5 minuti"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904946,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"gVLEpQCmNRI1d9lo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Bomba al vetriolo","type":"power","system":{"level":2,"magicschool":"Elementale - Terra","description":"tutti i bersagli difronte all'incantatore entro 6 metri subiscono 5d6 danni da acido. CD 14, IST, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904841,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"gW2OzkrdGkW38XK6","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cerchio contro la legge","type":"power","system":{"level":4,"magicschool":"Indole - Caos","description":"l'incantatore e tutti i suoi alleati entro 9 metri ottengono un bonus di +3 al txc e al danno contro creature legali, fino alla fine del prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904899,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"guHItAsGkNVxsEyf","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Buona speranza","type":"power","system":{"level":2,"magicschool":"Indole - Bene","description":"Un bersaglio di allineamento buono ottiene un +10 ai tiri di Sfidare la morte,se supera il tiro si cura di 2d10+10, poi l'effetto di questo potere termina."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904890,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"h1wvKCb0vzWc6VLI","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Dissolvi magie","type":"power","system":{"level":2,"magicschool":"Conoscenze","description":"questo incantesimo se lanciato su un bersaglio permette di togliergli un incantesimo attivo ( generalmente si parte sempre dal più forte ). se lanciata su un area permette di togliere l'incantesimo dall'area, in ogni caso per riuscire in questo intento è necessario superare una prova su men con CD in base al livello dell'incantesimo. livello 1 CD 10 livello 2 CD 14 livello 3 CD 16 livello 4 CD 18"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904809,"modifiedTime":1675877939467,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"hsNBWzXXYCTtRxte","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Immolarsi","type":"power","system":{"level":4,"magicschool":"Indole - Bene","description":"Il bersaglio di allineamento buono diventa immune a qualsiasi tipo di danno per 3 round dopo di che fino alla fine dello scontro fallisce automaticamente il prossimo tiro di Sfidare la morte"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904892,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"iHsSDP1pZMS8LwxC","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Ancora dimensionale","type":"power","system":{"level":4,"magicschool":"Forza","description":"in un raggio di 12 metri è impossibile usare qualsiasi tipo spostamento magico e qualsiasi incantesimo delle sfere di evocazione, tempo e viaggio per i successivi 5 minuti"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904861,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"iNo5f9tC1uLoUN9L","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resistenza alla scossa","type":"power","system":{"level":4,"magicschool":"Elementale - Aria","description":"il bersaglio riduce per il prossimo scontro tutti i danni subiti di tipo scossa di 20"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904833,"modifiedTime":1675877939472,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ip5OKhEQxoeb7pNy","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Forza","type":"power","system":{"level":2,"magicschool":"Guerra","description":"il bersaglio ottiene un bonus di 3 punti a fis per la durata fino all afine dello scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904874,"modifiedTime":1675877939477,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ipXemqc1aOOxqoyG","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Nube tossica","type":"power","system":{"level":3,"magicschool":"Elementale - Terra","description":"tutte le creature in un area di raggio 6 metri subiscono 10d6 danni da acido. CD 16, IST,dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904842,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ivnemz1L6Q3HTsjA","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Manto celato","type":"power","system":{"level":3,"magicschool":"Oscurità","description":"il personaggio diventa invisibile finchè non effettua azioni ostili, o trascorre 1 ora di tempo con questo incantesimo attivo."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904945,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ivuHaYY53wtFZGkJ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Levitazione","type":"power","system":{"level":1,"magicschool":"Viaggio","description":"permette di alzarsi dal terreno e andare solo in alto o in basso ignorando la forza di gravità, per 5 minuti"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904986,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"j7RjSZH85KRovJKc","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Resistenza all' acido","type":"power","system":{"level":4,"magicschool":"Elementale - Terra","description":"il bersaglio riduce per il prossimo scontro tutti i danni subiti di tipo acido di 20"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904843,"modifiedTime":1675877939473,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"jSH5a5NALT6v8E6H","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Trappola superiore","type":"power","system":{"level":4,"magicschool":"Rune","description":"questa runa può contenere un qualsiasi incantesimo di terzo livello o inferiore che si attiva al momento prescelto secondo il metodo i attivazione scelto dal runologo ( es. se toccata da un elfo )"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904970,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"jfGVhTT1diGxg3LR","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Immagine Speculare","type":"power","system":{"level":1,"magicschool":"Illusione","description":"crea 1d4 copie del bersaglio che appaiono intorno a lui. Ogni volta che si tenta di colpire il bersaglio si verifica casualmente se viene colpito il bersaglio o una delle copie. Le copie durano 6 round o fino a quando non vengono colpite"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904881,"modifiedTime":1675877939478,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"kMn8UGS6YtugQVi2","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Occhio per occhio","type":"power","system":{"level":2,"magicschool":"Indole - Equilibrio","description":"Fino alla fine dello scontro,il bersaglio di allineamento neutrale, che subisce un colpo riflette lo stesso identico quantitativo di punti ferita persi a chi gli provoca il danno, dopo di che questo effetto rimane attivo altri 3 round prima di terminare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904901,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ku6axOQVWmkXgyAV","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Immagine illusoria","type":"power","system":{"level":2,"magicschool":"Illusione","description":"crea un illusione di qualsiasi dimensione, difficile da riconoscere (CD 18, MEN), che può muoversi, riprodurre suoni e parlare attraverso la voce dell'incantatore, l'illusione svanisce dopo 15 minuti o dopo essere stata colpita."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904882,"modifiedTime":1675877939478,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"lRyyrm32BmBH05OM","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Punire la legge","type":"power","system":{"level":1,"magicschool":"Indole - Caos","description":"Se il bersaglio è di allineamento legale subisce 4d6 danni CD 14, MEN, dimezzare. Altrimenti il bersaglio riduce i danni subiti da creature legali di 5 punti per il prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904895,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"leMppxqSJDUNxpuo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Spore velenose","type":"power","system":{"level":2,"magicschool":"Vegetale","description":"i bersagli entro 12 metri dall'incantatore subiscono 4d8.CD 16, IST, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904982,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"lgjVKvYLB62C5OyL","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Di Fronte alla legge","type":"power","system":{"level":2,"magicschool":"Indole - Legge","description":"Fino alla fine dello scontro un bersaglio di allineamento legale che subisce un colpo può decidere di disarmare il proprio avversario che lo ha colpito CD 16 su FIS per negare oppure di farlo sdraiare per terra CD 16 su MEN per negare oppure di infliggergli 5d6 danni CD 16 su IST per negare, dopo di che questo effetto rimane attivo altri 3 round prima di terminare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904908,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"lrvqjBpUmos0t4HB","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Tsunami","type":"power","system":{"level":4,"magicschool":"Elementale - Acqua","description":"i bersagli di fronte all'incantatore subiscono 15d6 danni da freddo, CD 18, IST, dimezzare, e devono riuscire in un tiro salvezza su fis CD 16 o cadere per terra"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904827,"modifiedTime":1675877939471,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"luMwwiXjCbV7zV2k","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Identificare artefatti","type":"power","system":{"level":4,"magicschool":"Conoscenze","description":"lanciando questo incantesimo su un artefatto se ne capisce il funzionamento e le proprietà magiche ad esso associate"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904811,"modifiedTime":1675877939467,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"lx6FGweyivwXnUS4","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Comando","type":"power","system":{"level":3,"magicschool":"Ammaliamento","description":"il bersaglio esegue un ordine impartito alla creatura che non sia un ordine suicida CD 16, MEN, negare. una volta eseguito il comando l'effetto svanisce o dopo che sia trascorso 3 giorni."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904803,"modifiedTime":1675877939466,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"mIMKFBYf3Wjdz2DU","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cerchio contro il bene","type":"power","system":{"level":4,"magicschool":"Indole - Male","description":"l'incantatore e tutti i suoi alleati entro 9 metri ottengono un bonus di +3 al txc e al danno contro creature buone, fino alla fine del prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904918,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"mTJvyuuhZr9wORuu","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Epurare invisibilità","type":"power","system":{"level":3,"magicschool":"Visione","description":"in un'area di raggio 20 metri si annulla tutti gli effetti di invisibilità"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904993,"modifiedTime":1675877939489,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"mrBJcZlqf2AXWfnU","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Prosciugare","type":"power","system":{"level":2,"magicschool":"Morte","description":"tutti i bersagli, tranne l'incantatore, entro 10 metri da lui subiscono 4d4 danni."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904934,"modifiedTime":1675877939484,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"nJFSR7YDdiC5aI5F","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Camminare nel vento","type":"power","system":{"level":4,"magicschool":"Viaggio","description":"l'incantatore e fino a un massimo di 10 alleati possono spendere 4 mosse consecutive per trasformarsi in una nuvola e 4 mosse consecutive per tornare normali. nello stato di nuvola ci si muove a una velocità di 360m ma non si può usare ne abilità, ne incantantesi ne è possibile attaccare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904990,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ntMeWTWn23Z87hdD","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Parlare con il morto","type":"power","system":{"level":4,"magicschool":"Linguaggi","description":"e' possibile fare una domanda a un morto il quale risponderà al meglio delle sue capacità alla domanda fatta"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904925,"modifiedTime":1675877939482,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"oClFfv4HOgXgbk6u","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Reggia meravigliosa","type":"power","system":{"level":4,"magicschool":"Trasmutazione","description":"si crea una reggia in un altro piano dove è possibile riposare tranquillamente senza essere disturbati, l'incantatore può scegliere chi entra dentro la reggia, la reggia non termina a fine giornata ma persiste fino a quando l'incantatore non decide di uscire o sono trascorsi 3 giorni"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904980,"modifiedTime":1675877939487,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"oHTmpHJrU8hzVEv7","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Tempesta di ghiaccio","type":"power","system":{"level":3,"magicschool":"Elementale - Acqua","description":"tutte le creature in un area di raggio 6 metri subiscono 10d6 danni da freddo. CD 16, IST, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904825,"modifiedTime":1675877939470,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"omCX4zDN753iGPNr","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Retaggio","type":"power","system":{"level":3,"magicschool":"Indole - Equilibrio","description":"infligge 12d6 danni a una creatura neutrale CD 16, MEN, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904902,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"on4EicWu0uubdb5o","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Oscurità magica","type":"power","system":{"level":2,"magicschool":"Oscurità","description":"un area di 6 metri viene oscurata e non è possibile illuminarla in alcun modo. l'incantesimo neutralizza luce magica. l'effetto persiste per 5 minuti."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904945,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"oqWkBcoDNbdIj4ya","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cerchio contro il male","type":"power","system":{"level":4,"magicschool":"Indole - Bene","description":"l'incantatore e tutti i suoi alleati entro 9 metri ottengono un bonus di +3 al txc e al danno contro creature malvagie, fino alla fine del prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904893,"modifiedTime":1675877939479,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"pRLjX4jdslpxXHfR","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Scurovisione","type":"power","system":{"level":1,"magicschool":"Visione","description":"il bersaglio vede nel buio nel raggio di 10 metri per 1 ora"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904991,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"pyO4ExVqT7vRaBeK","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Parlare con i morti","type":"power","system":{"level":1,"magicschool":"Linguaggi","description":"il morto può rispondere a 5 domande fatte dall'incantatore con un si o un no."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904920,"modifiedTime":1675877939481,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"qFvbYLTi3t2C0iD0","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Tempo atmosferico","type":"power","system":{"level":1,"magicschool":"Tempo","description":"permettere di cambiare il tempo atmosferico da pioggia, a sole, a tempesta, a neve, in un raggio di 300 metri dall'incantatore, per 1 ora."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904972,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"qRyiUS9gGHy4Op9X","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Colpo del sole","type":"power","system":{"level":3,"magicschool":"Luce","description":"Il bersaglio subisce 8d6 danni CD 18, IST, negare"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904928,"modifiedTime":1675877939483,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"qTUOLlJQ8zULEhhI","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cecitá","type":"power","system":{"level":4,"magicschool":"Luce","description":"il bersaglio diventa accecato CD 18, FIS nega questo effetto e subisce 3d6 danni."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904931,"modifiedTime":1675877939483,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"rN03o7ursWpEHlNN","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cura ferite","type":"power","system":{"level":1,"magicschool":"Guarigione","description":"cura il bersaglio di 2d10 + 10."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904863,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"sqqxalQvLW3iSebG","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Alito di morte","type":"power","system":{"level":4,"magicschool":"Morte","description":"i bersagli di fronte all'incantatore subiscono 60 danni , CD 14 fis per negare questo effetto e subire solo 3d6 danni"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904936,"modifiedTime":1675877939484,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"tiDoC5PMgbOgfgIa","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cerchio contro l' equilibrio","type":"power","system":{"level":4,"magicschool":"Indole - Equilibrio","description":"l'incantatore e tutti i suoi alleati entro 9 metri ottengono un bonus di +3 al txc e al danno contro creature neutrali, fino alla fine del prossimo scontro"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904905,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"u60tRTInSsCwthRj","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Cambia bersaglio","type":"power","system":{"level":2,"magicschool":"Fato","description":"Puoi scegliere due alleati, compreso te stesso e fino alla fine dello scontro tutti i danni subiti da uno, e viceversa, vengono dimezzati e la metà per difetto vanno all'altro. Il secondo bersaglio non può ridurre mai questo danno."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904854,"modifiedTime":1675877939475,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ucedLMom9HNyIar6","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Interdizione alla morte","type":"power","system":{"level":4,"magicschool":"Morte","description":"il bersaglio fino alla fine del giorno supera automaticamente tutte le prove per il controllo sulla morte, ed è immune a gli incantesimi della sfera morte"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904937,"modifiedTime":1675877939484,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"ukjoDdLQ3EG8YG8X","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Charme","type":"power","system":{"level":2,"magicschool":"Ammaliamento","description":"la creatura considera l'incantatore un alleato per l'intera giornata. CD 15, MEN, negare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904797,"modifiedTime":1675877939466,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"uqJljByAKFAlnI2Z","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Domanda divina","type":"power","system":{"level":3,"magicschool":"Divinazione","description":"può fare una domanda al master il quale può rispondere con un si o un no."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904820,"modifiedTime":1675877939469,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"v1p3CqaMjGn4032X","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Segno di protezione","type":"power","system":{"level":2,"magicschool":"Rune","description":"il bersaglio può ignorare i danni inflitti dal primo colpo ricevuto in seguito all'incantesimo. il segno scompare all'alba del giorno successivo se non viene scaricato prima."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904968,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"vDxv1Amvg7xs2cM4","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Rigenerazione","type":"power","system":{"level":4,"magicschool":"Negromanzia","description":"il bersaglio rigenera parti del corpo distrutte o tagliate o perse che aveva in precedenza e recupera tutti i punti ferita"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904941,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"vSGeP4nrgzmoixcw","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Dettame","type":"power","system":{"level":3,"magicschool":"Indole - Legge","description":"infligge 12d6 danni ad una creatura caotica. CD 16, MEN, dimezzare."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904909,"modifiedTime":1675877939480,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"vj2MXWRP76IF9gdQ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Aiuto della natura","type":"power","system":{"level":4,"magicschool":"Vegetale","description":"<p>si evocano 3 trent che rimangono per 5 round ognuno con le seguenti statistiche: fis: 7 ist:3 men:3 3x frustata 2d6, guarigione rapida 5. si considera una unica evocazione al fine dei limiti di controllo di creature evocate e si calcolano le statistiche come le creature evocate, ma il tempo di lancio di questo incantesimo &egrave; di una mossa incantesimo</p>"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904985,"modifiedTime":1675877939488,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"vtmeYf3FxtbUlc8k","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Dissolvi magie superiori","type":"power","system":{"level":4,"magicschool":"Conoscenze","description":"funziona come l'incantesimo della stessa sfera di secondo livello dissolvi magie, ma si ottiene un bonus di +5 al tiro per dissolvere l'incantesimo"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904812,"modifiedTime":1675877939468,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"wQp0B9jxS1XQQ9oi","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Titano","type":"power","system":{"level":3,"magicschool":"Guerra","description":"il bersaglio ottiene un bonus di 5 punti a fis cumulabile con l'incantesimo forza fino alla fine dello scontro."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904876,"modifiedTime":1675877939477,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"wnw46cRzlPWbO5PV","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Evoca scheletro","type":"power","system":{"level":1,"magicschool":"Evocazione - Non Morte","description":"artiglio 1d4 o danni dell'arma, fis 2, ist 2, men 0."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904848,"modifiedTime":1675877939474,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"x2Wn2yyZzfuS67r5","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Luce abbagliante","type":"power","system":{"level":2,"magicschool":"Luce","description":"un'area di 6 metri viene pervasa dalla luce i bersagli nellarea ottengono un -5 ai tiri per colpire, TS FIS 16 per negare . Il potere neutralizza oscurità magica. L'effetto nellarea persiste per 5 minuti."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904927,"modifiedTime":1675877939483,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"x6dRKlegqwmp0dh9","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Visione del vero","type":"power","system":{"level":4,"magicschool":"Visione","description":"Un personaggio riesce per i successivi 5 minuti a vedere le cose per come sono realmente vede sia le aree magiche che le mutazioni, riconosce tutto ciò che è alterato"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904994,"modifiedTime":1675877939490,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"x77FS5eTPPTlfvqU","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Vendetta della furia","type":"power","system":{"level":4,"magicschool":"Guerra","description":"fino alla fine del prossimo scontro tutti i risultati di 18,19 sul txc sono considerati come 20"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904879,"modifiedTime":1675877939478,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"x96WvKX2sEQHJjJZ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Bloccare il tempo","type":"power","system":{"level":4,"magicschool":"Tempo","description":"con questo incantesimo l'incantatore può fare altri 3 turni consecutivi, non è possibile però lanciare incantesimi contro i nemici o usare mosse di attacco"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904975,"modifiedTime":1675877939486,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"xSeI7UXUOy20nx4U","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Permanenza","type":"power","system":{"level":4,"magicschool":"Forza","description":"questo incantesimo và usato su un altro incantesimo e se questo aveva la dicitura “per il prossimo scontro” diventa “fino a fine giornata”"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904862,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"xipmns7LBQ3k3HuG","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Rimuovi status","type":"power","system":{"level":2,"magicschool":"Guarigione","description":"rimuove tutti gli status negativi al bersaglio come il veleno, malattie, sonno o la perdita di caratteristiche, chi usa questo incantesimo deve essere a conoscenza di cosa vuole rimuovere"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904865,"modifiedTime":1675877939476,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"yYPcGqpad7uxCLlo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Scintilla","type":"power","system":{"level":1,"magicschool":"Elementale - Aria","description":"l'incantatore deve effettuare un tiro per colpire a distanza entro 20 metri per infliggere 4d4 danni da scossa al bersaglio."},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904829,"modifiedTime":1675877939471,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"zTe8Bxq5Rc3lrrCo","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Salvezza","type":"power","system":{"level":2,"magicschool":"Protezione","description":"il bersaglio ottiene un bonus di 5 punti al risultato del primo tiro salvezza che effettua"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904954,"modifiedTime":1675877939485,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"zV19MhRi8xVJBGWq","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Alito di vita","type":"power","system":{"level":4,"magicschool":"Guarigione","description":"riporta il bersaglio al suo massimo di punti ferita anche se questo è morto negli ultimi 3 round"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904869,"modifiedTime":1675877939477,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"zbZ8urPD9fwpHNeR","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}
{"name":"Vedere invisibile","type":"power","system":{"level":2,"magicschool":"Visione","description":"il bersaglio vede le creature invisibili per 5 minuti"},"img":"systems/fvtt-warhero/images/icons/magia.webp","effects":[],"flags":{},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.19","coreVersion":"10.291","createdTime":1675877904992,"modifiedTime":1675877939489,"lastModifiedBy":"rDR9x9ZA2osHkrld"},"_id":"zdi9q4TiPn7KSSOZ","folder":null,"sort":0,"ownership":{"default":0,"rDR9x9ZA2osHkrld":3}}

View File

@ -0,0 +1,2 @@
{"name":"Elf","type":"race","img":"systems/fvtt-warhero/images/icons/razze.webp","system":{"description":"<p>Creature raffinate dalle vaste conoscenze molto affini alla<br>magia, con aspetti esotici e lunghe orecchie a punta</p>\n<ul>\n<li>HP Progression = Low (+2 Hp for level)</li>\n<li>Languages: Common, Elf</li>\n<li>Level 1,5 = +1 use to counterspell</li>\n<li>Level 1,2,4,6,8= +2% to all throws with d100</li>\n<li>Level 2,5,7=+1 Mana</li>\n<li>Level 1,4,8 = +1 INT</li>\n<li>Livello 3,6,9 = +1 TxC e +1 Damage</li>\n</ul>"},"effects":[],"flags":{"core":{"sourceId":"Item.bXFkTKWCyWs7c9Ps"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674283365951,"modifiedTime":1674287954294,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"dGj39hnZpsEWw8kS"}
{"name":"Dirza","type":"race","img":"systems/fvtt-warhero/images/icons/razze.webp","system":{"description":"<p>Razza nata dall&rsquo;ingegno delle altre razze creata durante<br>esperimenti, sono dei costrutti con volont&agrave; propria</p>\n<p>&nbsp;</p>\n<ul>\n<li>HP Progression = Medium (+4 Hp for level)</li>\n<li>Languages: Common, Undercommon</li>\n<li>Level 1,5,7 = +1 use to disarm</li>\n<li>Level 1 =&nbsp; Weapon competency: Long weapon</li>\n<li>Level 1,4,8 = +1 STR or +1 DEX</li>\n<li>Livello 3,6,9 = +1 TxC e +1 Damage</li>\n</ul>"},"effects":[],"flags":{"core":{"sourceId":"Item.t9BvXbl4oqD7BAUT"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674283365951,"modifiedTime":1674287952690,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"qeOasFFrQqrI0y62"}

3
packs/shields.db Normal file
View File

@ -0,0 +1,3 @@
{"name":"Wooden tower shield","type":"shield","img":"systems/fvtt-warhero/images/icons/difensiva.webp","system":{"shieldtype":"heavy","parrybonus":5,"equipped":false,"cost":38,"slotused":1,"slotlocation":"shield","description":"<p>A wooden large shield. Parry +5</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.tK8bPZVbZaKgow7K"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674286037851,"modifiedTime":1674287856939,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"GfIDXBblhVS3VdXN"}
{"name":"Wooden large shield","type":"shield","img":"systems/fvtt-warhero/images/icons/difensiva.webp","system":{"shieldtype":"medium","parrybonus":3,"equipped":false,"cost":38,"slotused":1,"slotlocation":"shield","description":"<p>A wooden large shield. Parry +3</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.tK8bPZVbZaKgow7K"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674286037851,"modifiedTime":1674287860571,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"Xju80dPOF4jqJ5B3"}
{"name":"Buckler","type":"shield","img":"systems/fvtt-warhero/images/icons/difensiva.webp","system":{"shieldtype":"light","parrybonus":1,"equipped":false,"cost":12,"slotused":1,"slotlocation":"shield","description":"<p>A bucker. Parry +1</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.tQEp3JxDQab5yPV5"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674286037851,"modifiedTime":1674287858729,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"ronuYFULqGPjn0ij"}

8
packs/weapons.db Normal file
View File

@ -0,0 +1,8 @@
{"name":"Stick (two-hand)","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"long","damage":"1d8","cost":2,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>A Long sword</p>\n<p>It can goes into slot weapon1 or when not used in belt slot.</p>\n<p>It can be used 1 hand (1d6+STR) or 2 hands (1d8 + STR*1.5)</p>\n<p>&nbsp;</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.EhoZ1NSTZst09mHE"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285262655,"modifiedTime":1674287971706,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"4ZL7UAmh9jSs8zbh"}
{"name":"Long sword","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"long","damage":"1d8","cost":12,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>A Long sword</p>\n<p>It can goes into slot weapon1 or when not used in belt slot.</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.EhoZ1NSTZst09mHE"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285262655,"modifiedTime":1674287968028,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"Jd2a6a6b4wpbDJ3w"}
{"name":"Greatsword","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"twohanded","damage":"3d6","cost":42,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>A Greatsword</p>\n<p>It can goes into slot weapon1 or when not used in belt slot.</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.jUtvX6kjiTzQQh59"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285262655,"modifiedTime":1674287985414,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"YZbg0VJ4Hb2xIXMD"}
{"name":"Stick (one-hand)","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"long","damage":"1d6","cost":2,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>A Long sword</p>\n<p>It can goes into slot weapon1 or when not used in belt slot.</p>\n<p>It can be used 1 hand (1d6+STR) or 2 hands (1d8 + STR*1.5)</p>\n<p>&nbsp;</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.EhoZ1NSTZst09mHE"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285262655,"modifiedTime":1674287970122,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"YgnGOzeuxgprHW3u"}
{"name":"Dagger","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"short","damage":"1d6","cost":2,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>A dagger.</p>\n<p>Can be used as light weapons (1d6+STR) or as thrown weapon (1d8)</p>\n<p>It can goes into slot weapon1 or when not used in belt slot.</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.XUOhKngx7fl9oVWV"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285262655,"modifiedTime":1674287978363,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"bl1pTDhGeVQPtTEc"}
{"name":"Bow","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"shooting","damage":"2d6","cost":32,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>It fires @UUID[Compendium.world.ammunitions.f7QTqfFzyTWLFOrY]{Arrow}</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.SF7nuKVRyXZSOcdB"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285448228,"modifiedTime":1674288088722,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"kkn0H33tCD3594Mx"}
{"name":"CrossBow","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"shooting","damage":"2d6","cost":45,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>It fires @UUID[Compendium.world.ammunitions.f7QTqfFzyTWLFOrY]{Arrow}</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.6xn63xsRt7AGSk8h"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285448228,"modifiedTime":1674288094741,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"koM5TEFPzTlZeuMn"}
{"name":"Dagger (Thrown)","type":"weapon","img":"systems/fvtt-warhero/images/icons/two-handed-sword.svg","system":{"weapontype":"throwing","damage":"1d8","cost":2,"equipped":false,"slotused":1,"slotlocation":"weapon1","description":"<p>A dagger.</p>\n<p>Can be used as light weapons (1d6+STR) or as thrown weapon (1d8)</p>\n<p>It can goes into slot weapon1 or when not used in belt slot.</p>","quantity":1},"effects":[],"flags":{"core":{"sourceId":"Item.LJWhSxBqpEqtSuhE"}},"_stats":{"systemId":"fvtt-warhero","systemVersion":"10.0.2","coreVersion":"10.291","createdTime":1674285262655,"modifiedTime":1674287980751,"lastModifiedBy":"HTxW4IKZV3evIunu"},"folder":null,"sort":0,"ownership":{"default":0,"HTxW4IKZV3evIunu":3},"_id":"rD1xh7I9UNmSDFWR"}

File diff suppressed because it is too large Load Diff

View File

@ -1,60 +0,0 @@
{{!-- Carac Tab --}}
<div class="tab items" data-group="primary" data-tab="statistics">
<div class="grid grid-2col">
<div class="">
<div class="flexrow">
<span class="generic-label packed-left"><a class="generic-pool-roll"><button class="chat-card-button">Dice Pool</button></a></span>
</div>
</div>
<div class="">
<ul>
<li class="item flexrow list-item" data-key="momentum">
<span class="stat-label flexrow" name="momentum"> <h4>{{data.momentum.label}}</h4> </span>
<input type="text" class="padd-right" name="data.momentum.value" value="{{data.momentum.value}}" data-dtype="Number"/>
<input type="text" class="padd-right" name="data.momentum.max" value="{{data.momentum.max}}" data-dtype="Number"/>
</li>
</ul>
</div>
</div>
</div>
<ul>
<li class="item flexrow list-item" data-key="mr">
<span class="stat-label flexrow" name="mr">
<a class="roll-mr" data-stat-key="{{mr}}"><h4>{{data.mr.label}}</h4></a>
</span>
<select class="carac-base flexrow" type="text" name="data.mr.value" value="{{data.mr.value}}"
data-dtype="Number" >
{{#select data.mr.value}}
{{{@root.optionsDiceList}}}
{{/select}}
</select>
<input type="text" class="padd-right input-numeric-short" name="data.mr.mod" value="{{data.mr.mod}}" data-dtype="Number"/>
</li>
</ul>
<li class="item flexrow list-item" data-attr-key="{{key}}">
{{#each data.secondary as |stat2 key|}}
{{#if stat2.iscombat}}
<span class="stat-label" name="{{key}}">
<h4>{{stat2.label}} : </h4>
</span>
<span class="small-label padd-right packed-left">Cur</span><input type="text" class="padd-right update-field input-numeric-short" data-field-name="data.secondary.{{key}}.value" value="{{stat2.value}}" data-dtype="Number"/>
<span class="small-label padd-right packed-left">&nbsp;Max</span><input type="text" class="padd-right update-field input-numeric-short" data-field-name="data.secondary.{{key}}.max" value="{{stat2.max}}" data-dtype="Number"/>
{{/if}}
{{/each}}
</li>
<li class="item flexrow list-item" data-key="momentum">
<span class="stat-label flexrow" name="momentum"><h4>{{data.momentum.label}}:</h4></span>
<span class="small-label padd-right packed-left">Cur</span><input type="text" class="padd-right update-field input-numeric-short" data-field-name="data.momentum.value" value="{{data.momentum.value}}" data-dtype="Number"/>
<span class="small-label padd-right packed-left">&nbsp;Max</span><input type="text" class="padd-right update-field input-numeric-short" data-field-name="data.momentum.max" value="{{data.momentum.max}}" data-dtype="Number"/>
</li>

View File

@ -7,9 +7,10 @@
],
"description": "Warhero RPG system for FoundryVTT",
"esmodules": [
"modules/warhero-main.js"
"modules/warhero-main.js",
"modules/import-global.js"
],
"gridDistance": 5,
"gridDistance": 1,
"gridUnits": "m",
"languages": [
{
@ -17,27 +18,22 @@
"name": "English",
"path": "lang/en.json",
"flags": {}
}
],
"license": "LICENSE.txt",
"packs": [
},
{
"type": "Item",
"label": "Races",
"name": "races",
"path": "packs/races.db",
"system": "fvtt-warhero",
"private": false,
"lang": "it",
"name": "English",
"path": "lang/it.json",
"flags": {}
}
],
"primaryTokenAttribute": "secondary.hp",
"secondaryTokenAttribute": "secondary.effort",
"license": "LICENSE.txt",
"primaryTokenAttribute": "attributes.hp",
"secondaryTokenAttribute": "attributes.mana",
"socket": true,
"styles": [
"styles/simple.css"
],
"version": "10.0.2",
"version": "10.0.54",
"compatibility": {
"minimum": "10",
"verified": "10",
@ -45,8 +41,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.2.zip",
"download": "https://www.uberwald.me/gitea/public/fvtt-warhero/archive/fvtt-warhero-10.0.54.zip",
"url": "https://www.uberwald.me/gitea/public/fvtt-warhero",
"background": "images/ui/warhero_welcome_page.webp",
"id": "fvtt-warhero"
}

View File

@ -1,18 +1,24 @@
{
"Actor": {
"types": ["character", "npc"],
"types": [
"character",
"npc",
"monster",
"party"
],
"templates": {
"biodata": {
"biodata": {
"class": "",
"age": 0,
"size": 0,
"size": "medium",
"weight": "",
"height": "",
"hair": "",
"sex": "",
"eyes": "",
"background": "",
"religion": "",
"description": "",
"notes": "",
"gmnotes": ""
@ -20,71 +26,207 @@
},
"core": {
"subactors": [],
"abilities": {
"str":{
"label": "Strength",
"statistics": {
"str": {
"label": "WH.ui.Strength",
"abbrev": "str",
"col": 1,
"value": 1
"style": "edit",
"hassave": true,
"roll": true,
"save": 0,
"value": 0
},
"agi":{
"label": "Agility",
"abbrev": "agi",
"col": 1,
"value": 1
},
"dex":{
"label": "Dexterity",
"dex": {
"label": "WH.ui.Dexterity",
"abbrev": "dex",
"col": 1,
"value": 1
"style": "edit",
"hassave": true,
"roll": true,
"save": 0,
"value": 0
},
"con":{
"label": "Constitution",
"abbrev": "con",
"col": 1,
"value": 1
"min": {
"label": "WH.ui.Mind",
"abbrev": "min",
"style": "edit",
"hassave": true,
"roll": true,
"save": 0,
"value": 0
}
},
"attributes": {
"hp": {
"label": "WH.ui.HitPoints",
"abbrev": "hp",
"style": "edit",
"hasmax": true,
"isheader": true,
"max": 30,
"value": 30
},
"int":{
"label": "Intelligence",
"abbrev": "int",
"col": 2,
"value": 1
"knowledge": {
"label": "WH.ui.Knowledge",
"abbrev": "knowledge",
"style": "edit",
"hasmax": false,
"roll": true,
"max": 0,
"value": 0
},
"wit":{
"label": "Wits",
"abbrev": "wit",
"col": 2,
"value": 1
"def": {
"label": "WH.ui.Defence",
"abbrev": "def",
"style": "edit",
"iscombat": true,
"max": 12,
"value": 12
},
"cha":{
"label": "Charisma",
"abbrev": "cha",
"col": 2,
"value": 1
"txcm": {
"label": "WH.ui.Throw2HitM",
"abbrev": "txcm",
"istxc": true,
"style": "edit",
"roll": true,
"iscombat": true,
"max": 0,
"value": 0
},
"txcr": {
"label": "WH.ui.Throw2HitR",
"abbrev": "txcr",
"istxc": true,
"style": "edit",
"roll": true,
"iscombat": true,
"max": 0,
"value": 0
},
"mana": {
"label": "WH.ui.Mana",
"abbrev": "pm",
"style": "edit",
"hasmax": true,
"isheader": true,
"max": 3,
"value": 3
},
"ini": {
"label": "WH.ui.Initiative",
"abbrev": "ini",
"style": "edit",
"iscombat": true,
"roll": true,
"max": 0,
"value": 0
},
"movearth": {
"label": "WH.ui.Movement",
"abbrev": "mov",
"style": "edit",
"max": 6,
"value": 6
},
"movswim": {
"label": "WH.ui.MovementSwim",
"abbrev": "mov",
"style": "edit",
"max": 0,
"value": 0
},
"movfly": {
"label": "WH.ui.MovementFly",
"abbrev": "mov",
"style": "edit",
"max": 0,
"value": 0
}
},
"secondary": {
"hp": {
"label": "Hitpoint",
"abbrev": "hb",
"value": -1,
"max": 0
},
"effort": {
"label": "Effort",
"abbrev": "eff",
"value": -1,
"max": 0
}
},
"social": {
"fame": {
"label": "Fame",
"xp": {
"label": "WH.ui.XP",
"abbrev": "xp",
"islevel": true,
"style": "edit",
"value": 0
},
"reputation": {
"label": "Reputation",
"malusmultiweapon": {
"label": "WH.ui.malusmultiweapon",
"abbrev": "malusmultiweapon",
"iscombat": true,
"style": "edit",
"value": 0
},
"drbonus": {
"label": "WH.ui.drbonus",
"abbrev": "drbonus",
"style": "edit",
"iscombat": true,
"value": 0
},
"drbonustotal": {
"label": "WH.ui.drbonustotal",
"abbrev": "drbonustotal",
"disabled": true,
"style": "edit",
"iscombat": true,
"value": 0
},
"meleedamagebonus": {
"label": "WH.ui.meleedamagebonus",
"abbrev": "meleedamagebonus",
"iscombat": true,
"style": "edit",
"value": 0
},
"rangeddamagebonus": {
"label": "WH.ui.rangeddamagebonus",
"abbrev": "rangeddamagebonus",
"iscombat": true,
"style": "edit",
"value": 0
},
"parrybonus": {
"label": "WH.ui.parrybonus",
"abbrev": "parrybonus",
"isparrybonus": true,
"iscombat": true,
"style": "edit",
"value": 0
},
"parrybonustotal": {
"label": "WH.ui.parrybonustotal",
"abbrev": "parrybonustotal",
"disabled": true,
"style": "edit",
"iscombat": true,
"roll": true,
"value": 0
},
"counterspell": {
"label": "WH.ui.counterspell",
"stat": "min",
"abbrev": "counterspell",
"style": "edit",
"hasmax": false,
"roll": true,
"max": 1,
"value": 0,
"hasuse": true,
"nbuse": 0,
"maxuse": 0
},
"createitem": {
"label": "WH.ui.createitem",
"abbrev": "createitem",
"style": "edit",
"value": 0
},
"nblanguage": {
"label": "WH.ui.languagesbonus",
"abbrev": "nblanguage",
"style": "edit",
"disabled": true,
"value": 0
}
}
@ -94,51 +236,185 @@
"description": ""
}
},
"party": {
"templates": [
"biodata"
]
},
"character": {
"templates": [ "biodata", "core" ]
"templates": [
"biodata",
"core"
]
},
"npc": {
"templates": [ "biodata", "core" ]
}
"templates": [
"biodata",
"core"
]
},
"monster": {
"templates": [
"biodata",
"core"
]
}
},
"Item": {
"types": [ "race", "weapon", "armor", "shield", "equipment", "money" , "skill", "power", "condition", "class"],
"types": [
"equipment",
"race",
"weapon",
"armor",
"shield",
"skill",
"power",
"language",
"condition",
"class",
"money",
"potion",
"poison",
"trap",
"classitem",
"competency"
],
"templates": {
"commonclassrace": {
"weapons": {
"short": false,
"long": false,
"twohanded": false,
"shooting": false,
"polearm": false,
"throwing": false
},
"armors": {
"light": false,
"medium": false,
"heavy": false
},
"shields": {
"light": false,
"medium": false,
"tower": false
}
}
},
"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": {
"weapons": {
"short": false,
"long": false,
"twohanded": false,
"shotgun": false,
"throwing": false
},
"armors": {
"light": false,
"medium": false,
"heavy": false
},
"shields": {
"light": false,
"medium": false,
"tower": false
},
"templates": [
"commonclassrace"
],
"issecondary": false,
"description": ""
},
"race": {
"description": "",
"hpprogresion": "hp2",
"languages": "",
"attributebonus1": "",
"attributebonus4": "",
"attributebonus8": "",
"templates": [
"commonclassrace"
]
},
"language": {
"shortdescription": "",
"description": ""
},
"skill": {
"raceskill": false,
"classskill": false,
"unlimited": false,
"acquiredatlevel": 0,
"currentuse": 0,
"maxuse": 0,
"description": ""
},
"weapon": {
"weapontype": "short",
"damage": "1d6",
"damage2hands": "1d6",
"rollformula": "",
"damageformula": "",
"cost": 0,
"equipped": false,
"quantity": 1,
"slotused": 1,
"slotlocation": "weapon1",
"isidentified": "unknown",
"magiccharge": "notapplicable",
"chargevalue": 0,
"description": ""
},
"armor": {
@ -146,46 +422,50 @@
"equipped": false,
"damagereduction": 1,
"cost": 0,
"quantity": 1,
"slotused": 1,
"slotlocation": "armor",
"description":""
"isidentified": "unknown",
"magiccharge": "notapplicable",
"chargevalue": 0,
"description": ""
},
"shield": {
"shieldtype": "light",
"parrybonus": 1,
"equipped": false,
"cost": 0,
"quantity": 1,
"slotused": 1,
"slotlocation": "shield",
"description":""
"isidentified": "unknown",
"magiccharge": "notapplicable",
"chargevalue": 0,
"description": ""
},
"equipment": {
"equiptype": "",
"cost": 0,
"quantity": 0,
"quantity": 1,
"equipped": false,
"slotused": 1,
"slotlocation": "backpack",
"description":""
"providedslot": 0,
"isidentified": "unknown",
"magiccharge": "notapplicable",
"chargevalue": 0,
"description": ""
},
"power": {
"level1": "",
"level2": "",
"level3": "",
"level4_1": "",
"level4_2": "",
"level": "",
"magicschool": "",
"description": ""
},
"money" : {
"value": 0,
"quantity": 0,
"description": ""
},
"spell":{
"spell": {
"lore": "",
"circle": 1,
"range": "",
"description": ""
}
}
}
}

File diff suppressed because it is too large Load Diff

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

@ -13,137 +13,50 @@
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
<ul>
{{#if (eq mode "save")}}
<li>{{localize "WH.chat.save"}} {{localize stat.label}} : {{stat.save}}</li>
{{else}}
{{#if stat}}
<li>{{localize stat.label}} : {{stat.value}}</li>
{{/if}}
{{/if}}
<div>
<ul>
{{#if (eq rollOrder 1)}}
<li><strong>Roll with {{rollType}} - Roll 1</strong></li>
{{/if}}
{{#if (eq rollOrder 2)}}
<li><strong>Roll with {{rollType}} - Roll 2</strong></li>
{{/if}}
{{#if (eq rollOrder 3)}}
<li><strong>Roll with {{rollType}} - Final result !</strong></li>
{{/if}}
{{#if weapon}}
<li>{{localize "WH.ui.weapon"}} : {{weapon.name}}</li>
{{/if}}
{{#if hasBM}}
<li>Bonus/Malus : {{bonusMalus}}</li>
{{/if}}
{{#if save}}
<li>Save : {{save.label}} - {{save.value}}d6
({{#each roll.terms.0.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if sizeDice}}
<li>Size/Range/Cover/Situational dices
({{#each roll.terms.0.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if ability}}
<li>Ability : {{ability.label}} - {{ability.value}}d6
({{#each roll.terms.0.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if skill}}
<li>Skill : {{skill.name}} - {{skill.data.skilldice}}
{{#if featSL}}
- with Feat SL +{{featSL}}
{{/if}}
&nbsp;({{#each roll.terms.2.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if noAdvantage}}
<li>No advantage due to condition : {{noAdvantage.name}}</li>
{{#if usemWeaponMalus}}
<li>{{localize "WH.chat.mweaponmalus"}}: {{mWeaponMalus}}</li>
{{/if}}
{{#if diceFormula}}
<li>Formula : {{diceFormula}}</li>
{{#if isCriticalSuccess}}
<li><span class="crit-success">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
{{#if (or (eq advantage "advantage1") forceAdvantage)}}
<li>1 Advantage Die !
&nbsp;({{#each roll.terms.8.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if (eq advantage "advantage2") }}
<li>2 Advantage Dice !
&nbsp;({{#each roll.terms.8.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{#if isCriticalFailure}}
<li><span class="crit-failure">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
<li>{{localize "WH.chat.diceresult"}} : <span>{{diceResult}}</span></li>
{{/if}}
{{/if}}
{{/if}}
{{#if (or (eq disadvantage "disadvantage1") forceDisadvantage)}}
<li>1 Disadvantage Die !
&nbsp;({{#each roll.terms.10.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if (eq disadvantage "disadvantage2")}}
<li>2 Disadvantage Dice !
&nbsp;({{#each roll.terms.10.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if (eq rollAdvantage "roll-advantage")}}
<li>Roll with Advantage !</li>
{{/if}}
{{#if (eq rollAdvantage "roll-disadvantage")}}
<li>Roll with Disadvantage !</li>
{{/if}}
{{#if skillArmorPenalty}}
<li>Armor Penalty : {{skillArmorPenalty}} Disadvantage Dice
&nbsp;({{#each roll.terms.12.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if power}}
<li>{{localize "WH.ui.power"}} : {{power.name}}</li>
<li>{{localize "WH.ui.magicschool"}} : {{power.system.magicschool}}</li>
<li>{{localize "WH.ui.level"}} : {{power.system.level}}</li>
<li>{{{powerText}}}</li>
{{else}}
<li><strong>{{localize "WH.chat.result"}} : {{roll.total}} </strong></li>
{{/if}}
{{#if hasBonusDice}}
<li>Skill bonus dice : {{hasBonusDice}}
&nbsp;({{#each roll.terms.6.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if complexSkillDisadvantage}}
<li>Roll with Disadvantage because of Complex Skill at SL 0 !</li>
{{/if}}
{{#if hasFeatDie}}
<li>Feat Die : d10
&nbsp;({{#each roll.terms.4.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
{{#if useshield}}
<li>Shield : {{shield.name}} - {{shield.data.shielddie}}
({{#each roll.terms.14.results as |die idx|}}
{{die.result}}&nbsp;
{{/each}})
</li>
{{/if}}
<li><strong>Number of successes</strong> {{nbSuccess}} </li>
<!-- <button class="chat-card-button reroll-level-remaining" data-roll-id="{{rollId}}">Reroll</button> -->
</ul>
</div>
</ul>
</div>
</div>

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

@ -0,0 +1,40 @@
<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>
<ul>
<li>{{localize stat.label}} : {{stat.value}}</li>
<li><strong>Result : {{roll.total}} </strong></li>
<li>Formula : {{diceFormula}}</li>
{{#if isCriticalSuccess}}
<li><span class="crit-success">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
{{#if isCriticalFailure}}
<li><span class="crit-failure">{{localize "WH.chat.diceresult"}} : {{diceResult}}</span></li>
{{else}}
<li>{{localize "WH.chat.diceresult"}} : <span>{{diceResult}}</span></li>
{{/if}}
{{/if}}
{{#if isSuccess}}
<li><strong>{{localize "WH.chat.parysuccess"}} </strong></li>
{{else}}
<li><strong>{{localize "WH.chat.paryfailed"}} </strong></li>
{{/if}}
</ul>
</div>
</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

@ -0,0 +1,58 @@
<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">
<div class="tab details" data-group="primary" data-tab="description">
<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>
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.isclasssecondary"}}</label>
<input type="checkbox" name="system.issecondary" {{checked system.issecondary}}/>
</li>
{{#each system.weapons as |weaponflag key|}}
<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}}/>
</li>
{{/each}}
{{#each system.armors as |armorflag key|}}
<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}}/>
</li>
{{/each}}
{{#each system.shields as |shieldflag key|}}
<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}}/>
</li>
{{/each}}
</ul>
</div>
</section>
</form>

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

@ -10,17 +10,73 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="tab details" data-group="primary" data-tab="description">
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
<label class="generic-label">Description</label>
<div class="medium-editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
<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>
</ul>
</div>

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,22 @@
<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

@ -5,23 +5,32 @@
<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-medium ">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="generic-label">Unit value</label>
<input type="text" class="item-field-label-medium " name="system.value" value="{{system.value}}" data-dtype="Number"/>
</li>
</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>

View File

@ -1,28 +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}}
<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>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-warhero/templates/partial-item-nav.html}}
<div class="tab details" data-group="primary" data-tab="description">
{{!-- 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>
<label class="generic-label">Description</label>
<div class="medium-editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
<div class="tab details" data-group="primary" data-tab="details">
<ul>
</ul>
</div>
</section>
</form>
</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

@ -12,41 +12,18 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="tab description" data-group="primary" data-tab="description">
<div>
<label class="generic-label">{{localize WH.ui.level}} 1</label>
<div class="small-editor item-text-long-line">
{{editor level1 target="system.level1" button=true owner=owner editable=editable}}
</div>
</div>
<div>
<label class="generic-label">{{localize WH.ui.level}} 2</label>
<div class="small-editor item-text-long-line">
{{editor level2 target="system.level2" button=true owner=owner editable=editable}}
</div>
</div>
<div>
<label class="generic-label">{{localize WH.ui.level}} 3</label>
<div class="small-editor item-text-long-line">
{{editor level3 target="system.level3" button=true owner=owner editable=editable}}
</div>
</div>
<div>
<label class="generic-label">{{localize WH.ui.level}} 4</label>
<div class="small-editor item-text-long-line">
{{editor level4 target="system.level4" button=true owner=owner editable=editable}}
</div>
</div>
<div>
<label class="generic-label">{{localize WH.ui.notes}}</label>
<div class="small-editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
{{> systems/fvtt-warhero/templates/partial-item-description.html}}
</div>
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.magicschool"}}</label>
<input type="text" class="item-field-label-long" name="system.magicschool" value="{{system.magicschool}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.level"}}</label>
<input type="text" class="item-field-label-long" name="system.level" value="{{system.level}}" data-dtype="Number"/>
</li>
</ul>
</div>

View File

@ -10,17 +10,77 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="tab details" data-group="primary" data-tab="description">
<label class="generic-label">Description</label>
<div class="medium-editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
{{> systems/fvtt-warhero/templates/partial-item-nav.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul>
</ul>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.hpprog"}}</label>
<select class="item-field-label-long " type="text" name="system.hpprogresion" value="{{system.hpprogresion}}" data-dtype="String">
{{#select system.hpprogresion}}
{{#each config.progressionList as |prog key|}}
<option value="{{key}}">{{localize prog}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.lan"}}</label>
<input type="text" class="item-field-label-long" name="system.languages" value="{{system.languages}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.attrbonus"}} Lvl 1</label>
<select class="item-field-label-long " type="text" name="system.attributebonus1" value="{{system.attributebonus1}}" data-dtype="String">
{{#select system.attributebonus1}}
{{#each statistics as |ability key|}}
<option value="{{key}}">{{localize ability.label}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.attrbonus"}} Lvl 4</label>
<select class="item-field-label-long " type="text" name="system.attributebonus4" value="{{system.attributebonus4}}" data-dtype="String">
{{#select system.attributebonus4}}
{{#each statistics as |ability key|}}
<option value="{{key}}">{{localize ability.label}}</option>
{{/each}}
{{/select}}
</select>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.attrbonus"}} Lvl 8</label>
<select class="item-field-label-long " type="text" name="system.attributebonus8" value="{{system.attributebonus8}}" data-dtype="String">
{{#select system.attributebonus8}}
{{#each statistics as |ability key|}}
<option value="{{key}}">{{localize ability.label}}</option>
{{/each}}
{{/select}}
</select>
</li>
{{#each system.weapons as |weaponflag key|}}
<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}}/>
</li>
{{/each}}
{{#each system.armors as |armorflag key|}}
<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}}/>
</li>
{{/each}}
{{#each system.shields as |shieldflag key|}}
<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}}/>
</li>
{{/each}}
</ul>
</div>

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,8 +15,34 @@
<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>
</ul>
</div>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.isclassskill"}}</label>
<input type="checkbox" name="system.classskill" {{checked system.classskill}}/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.unlimited"}}</label>
<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}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.currentuse"}}</label>
<input type="text" class="item-field-label-medium " name="system.currentuse" value="{{system.currentuse}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.maxuse"}}</label>
<input type="text" class="item-field-label-medium " name="system.maxuse" value="{{system.maxuse}}" data-dtype="Number"/>
</li>
{{/if}}
</ul>
</div>
</section>
</form>

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|}}
@ -27,11 +27,25 @@
{{/select}}
</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,110 +11,460 @@
<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>
</ul>
</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}}
{{/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>
<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>
<div class="ability-item status-block">
{{> systems/fvtt-crucible-rpg/templates/partial-actor-status.html}}
</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="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">
<div class="flexrow">
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item items-title-bg">
<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">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>
<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">Background</label>
<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 skills as |skill key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{skill._id}}">
{{#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="{{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>
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>
@ -122,213 +472,10 @@
</li>
{{/each}}
</ul>
{{/each}}
<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>
</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>
</li>
{{/each}}
</ul>
<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>
</span>
</li>
{{#each feats as |feat key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{feat._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>
<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="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>
</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>
<span class="item-field-label-short">
<label class="short-label">Attack</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>
<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>
<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">Armors</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Type</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Absorption</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>
<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>
<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">Equipment</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Quantity</label>
</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>
</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>
</div>
<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

@ -1,19 +0,0 @@
<li class="item flexrow list-item item-ability-roll" data-attr-key="{{key}}">
<span class="ability-label ability-margin" name="{{key}}">
<h4 class="ability-text-white ability-margin"><a class="roll-ability ability-margin" data-ability-key="{{key}}">{{ability.label}}</a></h4>
</span>
<select class="status-small-label color-class-common" type="text" name="system.abilities.{{key}}.value" value="{{ability.value}}"
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select ability.value}}
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
{{/select}}
</select>
</li>

View File

@ -0,0 +1,62 @@
<li class="item flexrow list-item item-stat-roll" data-attr-key="{{key}}">
<span class="{{fieldClass}}" name="{{key}}">
<h4 class="{{fieldClass}}">
{{#if roll}}
<i class="fa-solid fa-dice-d20"></i><a class="roll-this stat-margin" data-type="{{path}}" data-key="{{key}}">{{localize stat.label}}</a>
{{else}}
{{localize stat.label}}
{{/if}}
</h4>
</span>
{{#if (eq style "dropdown")}}
<select class="item-field-label-short" type="text" name="system.{{path}}.{{key}}.value" value="{{stat.value}}"
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select stat.value}}
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
{{/select}}
</select>
{{/if}}
{{#if (eq style "edit")}}
<input type="text" class="item-field-label-short " {{#if disabled}}disabled{{/if}} name="system.{{path}}.{{key}}.value" value="{{stat.value}}" data-dtype="Number"/>
{{#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-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 (concat "WH.ui.save" key)}}
</a>
</h4>
</span>
<input type="text" class="item-field-label-short " name="system.{{path}}.{{key}}.save" value="{{stat.save}}" data-dtype="Number"/>
{{/if}}
{{#if islevel}}
<span class="item-field-label-short" name="{{key}}">
<h4 class="item-field-label-short">{{localize "WH.ui.level"}}
</h4>
</span>
<input type="text" disabled class="item-field-label-short " value="{{stat.level}}" data-dtype="Number"/>
{{/if}}
</li>

View File

@ -0,0 +1,53 @@
<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}}" data-slot="{{slotKey}}" 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>
<span class="item-field-label-medium">
{{#if item.system.isidentified}}
<label class="short-label">{{localize (concat "WH.conf." item.system.isidentified)}}</label>
{{else}}
<label class="short-label">{{localize (concat "WH.conf." item.system.notapplicable)}}</label>
{{/if}}
</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>

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,35 @@
{{/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.magiccharge"}}</label>
<select class="item-field-label-long " type="text" name="system.magiccharge" value="{{system.magiccharge}}" data-dtype="String">
{{#select system.magiccharge}}
{{#each config.magicCharge 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.chargevalue"}}</label>
<input type="text" class="item-field-label-medium " name="system.chargevalue" value="{{system.chargevalue}}" data-dtype="Number"/>
</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>
<input type="text" class="item-field-label-medium " name="system.cost" value="{{system.cost}}" data-dtype="Number"/>
</li>
</li>
<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,8 +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">
<div class="tab details" data-group="primary" data-tab="description">
<label class="generic-label">Description</label>
<div class="editor item-text-long-line">
{{editor description target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
</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>

100
templates/party-sheet.html Normal file
View File

@ -0,0 +1,100 @@
<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>
</div>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<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">
{{!-- Equipement Tab --}}
<div class="tab equipment" data-group="primary" data-tab="equipment">
{{#each partySlots 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">
<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

@ -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

@ -7,161 +7,106 @@
</header>
<div class="flexcol">
{{#if sizeDice}}
<div class="flexrow">
<span class="roll-dialog-label">Size basic dices : </span>
<span class="roll-dialog-label">{{sizeDice.nb}}{{sizeDice.dice}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Distance bonus dice(s) : </span>
<select class="status-small-label color-class-common" type="text" id="distanceBonusDice" value="{{distanceBonusDice}}" data-dtype="String" >
{{#select distanceBonusDice}}
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
{{/select}}
</select>
</div>
{{/if}}
{{#if hasCover}}
<div class="flexrow">
<span class="roll-dialog-label">Cover : </span>
<select class="status-small-label color-class-common" type="text" id="hasCover" value="{{hasCover}}" data-dtype="String" >
{{#select hasCover}}
<option value="none">None</option>
<option value="cover50">Cover at 50% (+1 dice)</option>
{{/select}}
</select>
</div>
{{/if}}
{{#if situational}}
<div class="flexrow">
<span class="roll-dialog-label">Situational : </span>
<select class="status-small-label color-class-common" type="text" id="situational" value="{{situational}}" data-dtype="String" >
{{#select situational}}
<option value="none">None</option>
<option value="dodge">Dodge (+1 dice)</option>
<option value="prone">Prone (+1 dice)</option>
<option value="moving">Moving (+1 dice)</option>
<option value="Engaged">Engaged (+1 dice)</option>
{{/select}}
</select>
</div>
{{/if}}
{{#if save}}
<div class="flexrow">
<span class="roll-dialog-label">{{save.label}} : </span>
<span class="roll-dialog-label">{{save.value}}d6</span>
</div>
{{/if}}
{{#if ability}}
<div class="flexrow">
<span class="roll-dialog-label">Ability : </span>
<span class="roll-dialog-label">{{ability.value}}d6</span>
</div>
{{/if}}
{{#if weapon}}
<div class="flexrow">
<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-label">Weapon : </span>
<span class="roll-dialog-label">{{weapon.name}}</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}}
<span class="item-field-label-medium">{{stat.value}}</span>
{{/if}}
</div>
{{#if stat.istxc}}
<div class="flexrow">
<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>
{{/if}}
{{#if shield}}
<div class="flexrow">
<span class="roll-dialog-label">Use shield ? : </span>
<span class="roll-dialog-label"><input type="checkbox" id="useshield" name="useshield" {{checked useshield}}/></span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">{{shield.name}} : </span>
<span class="roll-dialog-label">{{shield.data.shielddie}}</span>
</div>
{{/if}}
{{#if skill}}
<div class="flexrow">
<span class="roll-dialog-label">Skill : </span>
<span class="roll-dialog-label">{{skill.name}} - {{skill.data.skilldice}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Feature die or SL+2? : </span>
<span class="roll-dialog-label">{{#if skill.data.isfeatdie}} Yes {{else}} No {{/if}}</span>
</div>
{{/if}}
{{#if noAdvantage}}
<div>
<span class="roll-dialog-label">No advantage due to condition : {{noAdvantage.name}}</span>
</div>
{{else}}
<div class="flexrow">
<span class="roll-dialog-label">Advantage : </span>
<select class="status-small-label color-class-common" type="text" id="advantage" value="{{advantage}}" data-dtype="String" >
{{#select advantage}}
<option value="none">None</option>
<option value="advantage1">1 Advantage</option>
<option value="advantage2">2 Advantages</option>
{{/select}}
</select>
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">Disadvantage : </span>
<select class="status-small-label color-class-common" type="text" id="disadvantage" value="{{disadvantage}}" data-dtype="String" >
{{#select disadvantage}}
<option value="none">None</option>
<option value="disadvantage1">1 Disadvantage</option>
<option value="disadvantage2">2 Disadvantages</option>
{{/select}}
</select>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Roll with Advantage/Disadvantage : </span>
<select class="status-small-label color-class-common" type="text" id="rollAdvantage" value="{{rollAdvantage}}" data-dtype="String" >
{{#select rollAdvantage}}
<option value="none">None</option>
<option value="roll-advantage">Roll with Advantage</option>
<option value="roll-disadvantage">Roll with Disadvantage</option>
{{/select}}
</select>
</div>
{{#if forceAdvantage}}
<div class="flexrow">
<span class="roll-dialog-label">1 Advantage from condition : {{forceAdvantage.name}}
{{#if advantageFromTarget}} (Provided by targetted actor) {{/if}}
<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>
{{/if}}
{{#if forceDisadvantage}}
<div class="flexrow">
<span class="roll-dialog-label">1 Disadvantage from condition : {{forceDisadvantage.name}} </span>
</div>
{{/if}}
{{#if forceRollAdvantage}}
<div class="flexrow">
<span class="roll-dialog-label">Roll Advantage from condition : {{forceRollAdvantage.name}} </span>
</div>
{{/if}}
{{#if forceRollDisadvantage}}
<div class="flexrow">
<span class="roll-dialog-label">Roll Disadvantage from condition : {{forceRollDisadvantage.name}} </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-vlong">{{localize "WH.chat.power"}} : </span>
<span class="item-field-label-medium">{{power.name}}</span>
</div>
<div class="flexrow">
<span class="item-field-label-vlong">{{localize "WH.chat.powerlevel"}} : </span>
<span class="item-field-label-medium">{{power.system.level}}</span>
</div>
{{/if}}
</div>
{{#if hasBM}}
<div class="flexrow">
<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>
<option value="-5">-5</option>
<option value="-4">-4</option>
<option value="-3">-3</option>
<option value="-2">-2</option>
<option value="-1">-1</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
{{/select}}
</select>
</div>
{{/if}}
</div>
</form>