Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d03c5f2c1e | |||
| 1f2d82bd0b | |||
| 151312b994 | |||
| 10e668bc71 | |||
| 0ee42aef99 |
@@ -212,6 +212,10 @@ i.fvtt-hellborn {
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
}
|
||||
.fvtt-hellborn .character-main .character-pc .character-right .character-definition .character-definition-pronouns input {
|
||||
min-width: 21.2rem;
|
||||
max-width: 21.2rem;
|
||||
}
|
||||
.fvtt-hellborn .character-main .character-pc .character-right .character-definition .form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -703,6 +707,29 @@ i.fvtt-hellborn {
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-hellborn .tab.character-biography .main-div .aliases {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.fvtt-hellborn .tab.character-biography .main-div .aliases .form-group {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.fvtt-hellborn .tab.character-biography .main-div .aliases .form-group label {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-hellborn .tab.character-biography .main-div .aliases input {
|
||||
text-align: left;
|
||||
min-width: 41rem;
|
||||
max-width: 41rem;
|
||||
}
|
||||
.fvtt-hellborn .tab.character-biography .main-div .biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
@@ -1302,6 +1329,28 @@ i.fvtt-hellborn {
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-hellborn .tab.enemy-traits .main-div .ailments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-hellborn .tab.enemy-traits .main-div .ailments .ailment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
.fvtt-hellborn .tab.enemy-traits .main-div .ailments .ailment label {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.fvtt-hellborn .tab.enemy-traits .main-div .ailments .ailment .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-hellborn .tab.enemy-traits .main-div .maleficas {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
@@ -2397,6 +2446,20 @@ i.fvtt-hellborn {
|
||||
font-family: var(--font-primary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
}
|
||||
.flavor-text-damage {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
color: var(--color-dark-2);
|
||||
margin-top: 5px;
|
||||
}
|
||||
.flavor-text-damage h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
color: var(--title-color);
|
||||
}
|
||||
.dice-roll {
|
||||
flex-direction: column;
|
||||
}
|
||||
@@ -2419,6 +2482,14 @@ i.fvtt-hellborn {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.dice-roll .intro-chat h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
color: var(--title-color);
|
||||
}
|
||||
.dice-roll .intro-chat .intro-img {
|
||||
padding: 4px;
|
||||
max-width: 80px;
|
||||
|
||||
23
lang/en.json
23
lang/en.json
@@ -64,6 +64,9 @@
|
||||
"age": {
|
||||
"label": "Age"
|
||||
},
|
||||
"aliases": {
|
||||
"label": "Aliases"
|
||||
},
|
||||
"birthplace": {
|
||||
"label": "Birthplace"
|
||||
},
|
||||
@@ -76,6 +79,9 @@
|
||||
"hair": {
|
||||
"label": "Hair"
|
||||
},
|
||||
"dod": {
|
||||
"label": "Date of Death"
|
||||
},
|
||||
"height": {
|
||||
"label": "Height"
|
||||
},
|
||||
@@ -386,10 +392,10 @@
|
||||
"combat": "Combat",
|
||||
"Counters": "Counters",
|
||||
"creature": "Creature",
|
||||
"fiendishSuccess": "Fiendish Failure",
|
||||
"fiendishFailure": "Fiendish Failure",
|
||||
"satanicSuccess": "Satanic Success",
|
||||
"bonus": "Bonus",
|
||||
"penalty": "Penalty",
|
||||
"bonus": "Upright XP Trigger",
|
||||
"penalty": "Reversed XP Trigger",
|
||||
"quote": "Quote",
|
||||
"current": "Curr.",
|
||||
"damage": "Damage",
|
||||
@@ -574,7 +580,10 @@
|
||||
"Tarot": {
|
||||
"FIELDS": {
|
||||
"bonus": {
|
||||
"label": "Bonus"
|
||||
"label": "Upright XP Trigger"
|
||||
},
|
||||
"penalty": {
|
||||
"label": "Reversed XP Trigger"
|
||||
},
|
||||
"description": {
|
||||
"label": "Description"
|
||||
@@ -637,6 +646,12 @@
|
||||
},
|
||||
"Weapon": {
|
||||
"FIELDS": {
|
||||
"stat": {
|
||||
"label": "Stat"
|
||||
},
|
||||
"damageStat": {
|
||||
"label": "Damage Stat"
|
||||
},
|
||||
"ammo": {
|
||||
"label": "Ammo"
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@ export const CHOICE_ADVANTAGES_DISADVANTAGES ={
|
||||
export const PERK_ROLES = {
|
||||
"abbetor": { id: "abbetor", label: "Abbetor" },
|
||||
"blade": { id: "blade", label: "Blade" },
|
||||
"brawler": { id: "brawler", label: "Brawler" },
|
||||
"other": { id: "other", label: "Other" },
|
||||
"gunslinger": { id: "gunslinger", label: "Gunslinger" },
|
||||
"malefic": { id: "malefic", label: "Malefic" },
|
||||
"mastermind": { id: "mastermind", label: "Mastermind" },
|
||||
@@ -64,8 +64,7 @@ export const PERK_ROLES = {
|
||||
|
||||
export const MALEFICA_DOMAINS = {
|
||||
"adfectus": { id: "adfectus", label: "Adfectus" },
|
||||
"animalis": { id: "animalis", label: "Animalis" },
|
||||
"carnes ": { id: "carnes", label: "Carnes" },
|
||||
"other": { id: "other", label: "Other" },
|
||||
"divinus": { id: "divinus", label: "Divinus" },
|
||||
"ignis": { id: "ignis", label: "Ignis" },
|
||||
"iunctio": { id: "iunctio", label: "Iunctio" },
|
||||
|
||||
@@ -84,29 +84,29 @@ export default class HellbornRoll extends Roll {
|
||||
static async prompt(options = {}) {
|
||||
let formula = `3D6 + 0D6KH - 0D6KH + ${options?.rollItem?.value}`
|
||||
|
||||
let actor = game.actors.get(options.actorId)
|
||||
switch (options.rollType) {
|
||||
case "stat":
|
||||
break
|
||||
case "damage":
|
||||
{
|
||||
let formula = options.rollItem.system.damage
|
||||
if (options.rollItem?.system?.damageStat && options.rollItem.system.damageStat !== "none" && options.rollItem.system.damageStat !== "") {
|
||||
let statKey = options.rollItem.system?.damageStat.toLowerCase()
|
||||
let statValue = actor.system.stats[statKey].value
|
||||
formula = `${formula} + ${statValue}`
|
||||
}
|
||||
let damageRoll = new Roll(formula)
|
||||
await damageRoll.evaluate()
|
||||
await damageRoll.toMessage({
|
||||
flavor: `${options.rollItem.name} - Damage Roll - ${options.rollItem.system.damageType}`,
|
||||
flavor: `<div class="flavor-text-damage"><h2>Damage Roll : ${options.rollItem.name}</h2><BR><strong> ${options.rollItem.system.damageType}</strong></div>`,
|
||||
});
|
||||
return
|
||||
}
|
||||
case "weapon":
|
||||
{
|
||||
let actor = game.actors.get(options.actorId)
|
||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||
let statKey = "skin"
|
||||
if (options.weapon.system.weaponType === "melee") {
|
||||
if ( options.weapon.system.properties.toLowerCase().match("heavy") || options.weapon.system.properties.toLowerCase().match("oversized")) {
|
||||
statKey = "flesh"
|
||||
}
|
||||
}
|
||||
let statKey = options.weapon.system.stat.toLowerCase()
|
||||
options.rollItem = actor.system.stats[statKey]
|
||||
}
|
||||
break
|
||||
@@ -199,7 +199,17 @@ export default class HellbornRoll extends Roll {
|
||||
|
||||
options.nbAdvantages = Number(options.nbAdvantages)
|
||||
options.nbDisadvantages = Number(options.nbDisadvantages)
|
||||
let diceFormula = `3D6 + ${options.nbAdvantages}D6kh - ${options.nbDisadvantages}D6kh + ${options.rollItem.value}`
|
||||
let dice = 3;
|
||||
let keep = ""
|
||||
if ( options.nbAdvantages > 0 || options.nbDisadvantages > 0) {
|
||||
dice = 4;
|
||||
if ( options.nbAdvantages > options.nbDisadvantages) {
|
||||
keep = "kh3"
|
||||
} else {
|
||||
keep = "kl3"
|
||||
}
|
||||
}
|
||||
let diceFormula = `${dice}D6${keep} + ${options.rollItem.value}`
|
||||
const roll = new this(diceFormula, options.data, rollData)
|
||||
await roll.evaluate()
|
||||
console.log("Roll", rollData, roll)
|
||||
@@ -219,22 +229,30 @@ export default class HellbornRoll extends Roll {
|
||||
} else if (this.total >= options.difficulty) {
|
||||
resultType = "success"
|
||||
}
|
||||
|
||||
// Compute the result quality
|
||||
this.options.satanicSuccess = false
|
||||
this.options.fiendishFailure = false
|
||||
this.options.rollData = foundry.utils.duplicate(rollData)
|
||||
if (resultType === "success") {
|
||||
let nb6 = roll.terms[0].results.filter(r => r.result === 6).length
|
||||
nb6 += roll.terms[3].total === 6 ? 1 : 0
|
||||
this.options.satanicSuccess = nb6 >= 3
|
||||
|
||||
// Check if all results are equal
|
||||
let workResults = foundry.utils.duplicate(roll.terms[0].results)
|
||||
// Get the most common result of the roll
|
||||
let commonResult = workResults.reduce((acc, r) => {
|
||||
acc[r.result] = (acc[r.result] || 0) + 1
|
||||
return acc
|
||||
}, {})
|
||||
commonResult = Object.entries(commonResult).reduce((a, b) => (a[1] > b[1]) ? a : b)[0]
|
||||
let nbEqual = workResults.filter(r => Number(r.result) === Number(commonResult)).length
|
||||
|
||||
if (commonResult >= 4 && nbEqual >= 3) {
|
||||
this.options.satanicSuccess = true
|
||||
if (this.options.satanicSuccess) {
|
||||
resultType = "success"
|
||||
}
|
||||
}
|
||||
if (resultType === "failure") {
|
||||
let nb1 = roll.terms[0].results.filter(r => r.result === 1).length
|
||||
nb1 += roll.terms[5].total === 1 ? 1 : 0
|
||||
this.options.fiendishFailure = nb1 >= 3
|
||||
if (commonResult <= 3 && nbEqual >= 3) {
|
||||
this.options.fiendishFailure = true
|
||||
if (this.options.fiendishFailure) {
|
||||
resultType = "failure"
|
||||
}
|
||||
@@ -242,6 +260,7 @@ export default class HellbornRoll extends Roll {
|
||||
this.options.resultType = resultType
|
||||
this.options.isSuccess = resultType === "success"
|
||||
this.options.isFailure = resultType === "failure"
|
||||
this.options.results = roll.terms[0].results
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -112,16 +112,16 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel {
|
||||
})
|
||||
|
||||
schema.biodata = new fields.SchemaField({
|
||||
age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }),
|
||||
age: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
gender: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }),
|
||||
height: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
birthplace: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
hair: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
home: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }),
|
||||
apparentAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }),
|
||||
chronologicalAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }),
|
||||
weight: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
apparentAge: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
chronologicalAge: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
dod: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
soul: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
aliases: new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
|
||||
@@ -42,6 +42,21 @@ export default class HellbornEnemy extends foundry.abstract.TypeDataModel {
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
})
|
||||
|
||||
// Ailments
|
||||
const ailmentField = (label) => {
|
||||
const schema = {
|
||||
enabled: new fields.BooleanField({ required: true, initial: false }),
|
||||
label: new fields.StringField({ required: true, initial: label })
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
schema.ailments = new fields.SchemaField(
|
||||
Object.values(SYSTEM.AILMENTS).reduce((obj, ailment) => {
|
||||
obj[ailment.id] = ailmentField(ailment.label)
|
||||
return obj
|
||||
}, {}),
|
||||
)
|
||||
|
||||
schema.defense = new fields.SchemaField({
|
||||
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
|
||||
@@ -9,7 +9,7 @@ export default class HellbornTarot extends foundry.abstract.TypeDataModel {
|
||||
schema.bonus = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||
schema.penalty = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||
|
||||
schema.orientation = new fields.StringField({ required: true, initial: "Upright", choices: {"Upright": {label: "Upright"}, "Downright": {label: "Downright"}} });
|
||||
schema.orientation = new fields.StringField({ required: true, initial: "Upright", choices: {"Upright": {label: "Upright"}, "Downright": {label: "Reversed"}} });
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.positiveEffect = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.negativeEffect = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
@@ -7,12 +7,14 @@ export default class HellbornWeapon extends foundry.abstract.TypeDataModel {
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.stat = new fields.StringField({ required: true, initial: "skin", choices: {"skin": "Skin", "flesh": "Flesh" }})
|
||||
|
||||
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPES })
|
||||
schema.subType = new fields.StringField({ required: false, initial: "pistols", choices: SYSTEM.RANGED_SUBTYPES })
|
||||
schema.properties = new fields.StringField({required: true, initial: ""})
|
||||
|
||||
schema.damage = new fields.StringField({required: true, initial: "1d6"})
|
||||
schema.damageStat = new fields.StringField({ required: true, initial: "none", choices: {"none": "None", "skin": "Skin", "flesh": "Flesh", "heart": "Heart", "mind": "Mind", "soul": "Soul" }})
|
||||
schema.damageType = new fields.StringField({ required: false, initial : "Physical" })
|
||||
|
||||
schema.ammo = new fields.StringField({ required: false, initial: "" })
|
||||
@@ -25,4 +27,14 @@ export default class HellbornWeapon extends foundry.abstract.TypeDataModel {
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Weapon"]
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
let actor = this.parent?.actor;
|
||||
if (actor) {
|
||||
this.damageFormula = this.damage + (this.damageStat !== "none" ? `+${actor.system.stats[this.damageStat].value}` : "");
|
||||
} else {
|
||||
this.damageFormula = this.damage;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -65,12 +65,18 @@
|
||||
gap: 5px;
|
||||
|
||||
.character-definition {
|
||||
.character-definition-pronouns {
|
||||
input {
|
||||
min-width: 21.2rem;
|
||||
max-width: 21.2rem;
|
||||
}
|
||||
}
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.splitted {
|
||||
.splitted {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
@@ -183,15 +189,15 @@
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
.characteristics-label{
|
||||
.characteristics-label {
|
||||
color: grey;
|
||||
font-size:small;
|
||||
font-size: small;
|
||||
}
|
||||
label {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.spaced-left{
|
||||
.spaced-left {
|
||||
margin-left: 0.8rem;
|
||||
}
|
||||
input {
|
||||
@@ -585,6 +591,29 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.aliases {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
margin-left: 4px;
|
||||
.form-group {
|
||||
label {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 41rem;
|
||||
max-width: 41rem;
|
||||
}
|
||||
}
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.splitted {
|
||||
.splitted {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
@@ -165,7 +165,7 @@
|
||||
}
|
||||
}
|
||||
.enemy-column {
|
||||
display:flex;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
fieldset {
|
||||
@@ -191,9 +191,9 @@
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
.characteristics-label{
|
||||
.characteristics-label {
|
||||
color: grey;
|
||||
font-size:small;
|
||||
font-size: small;
|
||||
label {
|
||||
min-width: 3.5rem;
|
||||
max-width: 3.5rem;
|
||||
@@ -207,7 +207,7 @@
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.spaced-left{
|
||||
.spaced-left {
|
||||
margin-left: 0.8rem;
|
||||
}
|
||||
input {
|
||||
@@ -247,7 +247,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.equipments {
|
||||
.equipments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
@@ -279,6 +279,29 @@
|
||||
}
|
||||
}
|
||||
|
||||
.ailments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 4px;
|
||||
.ailment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
label {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.maleficas {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
@@ -374,7 +397,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tab.enemy-biography .main-div {
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
.item-to-chat {
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
margin-left:10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
@@ -77,6 +77,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
.flavor-text-damage {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
color: var(--color-dark-2);
|
||||
margin-top: 5px;
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
color: var(--title-color);
|
||||
}
|
||||
}
|
||||
|
||||
&.dice-roll {
|
||||
flex-direction: column;
|
||||
|
||||
@@ -98,10 +113,19 @@
|
||||
border-radius: 20px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
color: var(--title-color);
|
||||
}
|
||||
|
||||
.intro-img {
|
||||
padding: 4px;
|
||||
max-width: 80px;
|
||||
min-width : 80px;
|
||||
min-width: 80px;
|
||||
align-self: top;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -158,6 +182,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.result {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -17,34 +17,42 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="biodata">
|
||||
<fieldset >
|
||||
<legend>{{localize "HELLBORN.Label.biodata"}}</legend>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode}}
|
||||
<div class="aliases">
|
||||
{{formField systemFields.biodata.fields.aliases value=system.biodata.aliases rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode}}
|
||||
<div class="biodata">
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.dod value=system.biodata.dod rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
<span class="ammo" data-tooltip="Ammo">{{upperFirst item.system.ammo}}</span>
|
||||
|
||||
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||
data-roll-type="damage" data-roll-value="{{item.system.damage}}">
|
||||
data-roll-type="damage" data-roll-value="{{item.system.damageFormula}}">
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
{{item.system.damage}}</a>
|
||||
{{item.system.damageFormula}}</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
</div>
|
||||
|
||||
<fieldset class="character-definition">
|
||||
<div class="flexcol character-definition-pronouns">
|
||||
{{formField systemFields.pronouns value=system.pronouns rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="splitted">
|
||||
<div>
|
||||
<div class="flexcol">
|
||||
{{formField systemFields.pronouns value=system.pronouns rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
@@ -56,7 +56,7 @@
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label><a data-action="toChat" data-item-uuid="{{upright.uuid}}">Reversed</a></label>
|
||||
<label><a data-action="toChat" data-item-uuid="{{downright.uuid}}">Reversed</a></label>
|
||||
<input class="trait" type="text" value="{{downright.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{downright.id}}"
|
||||
|
||||
@@ -5,55 +5,68 @@
|
||||
{{actorName}}
|
||||
</div>
|
||||
<div class="intro-right">
|
||||
|
||||
{{#if (eq rollType "stat")}}
|
||||
<h2>{{localize "HELLBORN.Label.statRoll"}}</h2>
|
||||
{{/if}}
|
||||
{{#if weapon}}
|
||||
<h2>Weapon : {{weapon.name}}</strong></h2>
|
||||
{{/if}}
|
||||
|
||||
<ul>
|
||||
|
||||
{{#if (eq rollType "stat")}}
|
||||
<li><strong>{{localize "HELLBORN.Label.statRoll"}}</strong></li>
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{#if weapon}}
|
||||
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
||||
<li><strong>Properties :</strong> {{weapon.system.properties}}</li>
|
||||
<li>
|
||||
<span>
|
||||
<span><strong>{{localize rollItem.label}} : {{rollItem.value}}</strong></span>
|
||||
<span>{{localize "HELLBORN.Label.difficulty"}} : {{difficulty}}</span>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
{{#if (gt nbAdvantages 0)}}
|
||||
<li>With Advantage !</li>
|
||||
{{/if}}
|
||||
{{#if (gt nbDisadvantages 0)}}
|
||||
<li>With Disadvantages ! </li>
|
||||
{{/if}}
|
||||
|
||||
<li><strong>{{localize rollItem.label}} : {{rollItem.value}}</strong></li>
|
||||
<li>Results :
|
||||
{{#each results as |result|}}
|
||||
{{result.result}}
|
||||
{{/each}}
|
||||
</li>
|
||||
|
||||
<li>{{localize "HELLBORN.Label.difficulty"}} : {{difficulty}}</li>
|
||||
{{#if isSuccess}}
|
||||
{{#if satanicSuccess}}
|
||||
<li class="result-satanic-success">
|
||||
{{localize "HELLBORN.Label.satanicSuccess"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="result-success">
|
||||
{{localize "HELLBORN.Label.success"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{#if isFailure}}
|
||||
{{#if fiendishFailure}}
|
||||
<li class="result-fiendish-failure">
|
||||
{{localize "HELLBORN.Label.fiendishFailure"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="result-failure">
|
||||
{{localize "HELLBORN.Label.failure"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq resultType "unknown")}}
|
||||
<li class="result-unknown">
|
||||
{{localize "HELLBORN.Label.unknown"}}
|
||||
</li>
|
||||
{{else}}
|
||||
{{#if isSuccess}}
|
||||
{{#if satanicSuccess}}
|
||||
<li class="result-satanic-success">
|
||||
{{localize "HELLBORN.Label.satanicSuccess"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="result-success">
|
||||
{{localize "HELLBORN.Label.success"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{#if isFailure}}
|
||||
{{#if fiendishFailure}}
|
||||
<li class="result-fiendish-failure">
|
||||
{{localize "HELLBORN.Label.fiendishFailure"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="result-failure">
|
||||
{{localize "HELLBORN.Label.failure"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isCritical}}
|
||||
{{/if}}
|
||||
<li class="result-unknown">
|
||||
{{localize "HELLBORN.Label.unknown"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="intro-chat">
|
||||
<h2>{{name}}</h2>
|
||||
<ul>
|
||||
<li><strong>{{system.flavorText}}</strong></li>
|
||||
<li><strong><i>{{system.flavorText}}</i></strong></li>
|
||||
<li><strong>Role : </strong>{{upperFirst system.role}}</li>
|
||||
<li><strong>Level : </strong>{{getRomanLevel system.level}}</li>
|
||||
<li>{{{system.description}}}</li>
|
||||
|
||||
@@ -4,11 +4,21 @@
|
||||
<ul>
|
||||
<li><strong>Orientation : </strong>{{system.orientation}}</li>
|
||||
<li><strong>Quote : </strong>{{system.quote}}</li>
|
||||
<li><strong>Bonus : </strong>{{system.bonus}}</li>
|
||||
<li><strong>Penalty : </strong>{{system.penalty}}</li>
|
||||
|
||||
{{#if (eq system.orientation "Upright")}}
|
||||
<li><strong>Upright XP Trigger : </strong>{{system.bonus}}</li>
|
||||
{{else}}
|
||||
<li><strong>Reversed XP Trigger : </strong>{{system.penalty}}</li>
|
||||
{{/if}}
|
||||
|
||||
<li><strong>Description : </strong>{{{system.description}}}</li>
|
||||
<li><strong>Positive Effect : </strong>{{{system.positiveEffect}}}</li>
|
||||
<li><strong>Negative Effect : </strong>{{{system.negativeEffect}}}</li>
|
||||
|
||||
{{#if (eq system.orientation "Upright")}}
|
||||
<li><strong>Positive Effect : </strong>{{{system.positiveEffect}}}</li>
|
||||
{{else}}
|
||||
<li><strong>Negative Effect : </strong>{{{system.negativeEffect}}}</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -33,6 +33,19 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.ailments"}}</legend>
|
||||
|
||||
<div class="ailments">
|
||||
{{#each system.ailments as |item id|}}
|
||||
<div class="ailment " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="false">
|
||||
<label>{{item.label}}</label> <input type="checkbox" class="checkbox" name="system.ailments.{{id}}.enabled"
|
||||
{{#if item.enabled}} checked {{/if}}>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="enemy-column">
|
||||
|
||||
<fieldset>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
{{formField systemFields.stat value=system.stat localize=true}}
|
||||
{{formField systemFields.weaponType value=system.weaponType localize=true}}
|
||||
{{#if (eq system.weaponType "ranged")}}
|
||||
{{formField systemFields.subType value=system.subType localize=true}}
|
||||
@@ -14,6 +15,8 @@
|
||||
|
||||
{{formField systemFields.properties value=system.properties classes="long-input"}}
|
||||
{{formField systemFields.damage value=system.damage}}
|
||||
{{formField systemFields.damageStat value=system.damageStat localize=true}}
|
||||
|
||||
{{formField systemFields.damageType value=system.damageType}}
|
||||
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
|
||||
Reference in New Issue
Block a user