6 Commits

Author SHA1 Message Date
28ec390020 Various fixes
All checks were successful
Release Creation / build (release) Successful in 59s
2025-05-26 18:26:55 +02:00
86ee9a44ec Add Enemy sheet
All checks were successful
Release Creation / build (release) Successful in 54s
2025-05-25 22:38:24 +02:00
abfc4e8443 Add Enemy sheet
All checks were successful
Release Creation / build (release) Successful in 58s
2025-05-25 22:04:42 +02:00
707a318bb7 Add Enemy sheet
All checks were successful
Release Creation / build (release) Successful in 56s
2025-05-25 21:56:02 +02:00
368e087e0d Add Enemy sheet
All checks were successful
Release Creation / build (release) Successful in 59s
2025-05-25 21:52:56 +02:00
f2e6415f33 Add Enemy sheet 2025-05-25 21:52:09 +02:00
23 changed files with 237 additions and 82 deletions

View File

@@ -417,8 +417,8 @@ i.fvtt-hellborn {
display: flex;
align-items: center;
gap: 4px;
min-width: 18rem;
max-width: 18rem;
min-width: 20rem;
max-width: 20rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .controls {
font-size: 0.7rem;
@@ -426,16 +426,20 @@ i.fvtt-hellborn {
max-width: 1.8rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .damage {
min-width: 3.2rem;
max-width: 3.2rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .domain {
min-width: 5rem;
max-width: 5rem;
min-width: 4rem;
max-width: 4rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .level {
min-width: 3rem;
max-width: 3rem;
min-width: 2rem;
max-width: 2rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .item-img {
width: 24px;
@@ -460,8 +464,8 @@ i.fvtt-hellborn {
max-width: 1.8rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .rituals .ritual .ingredients {
min-width: 26rem;
max-width: 26rem;
min-width: 24rem;
max-width: 24rem;
}
.fvtt-hellborn .tab.character-maleficas .main-div .rituals .ritual .name {
min-width: 12rem;
@@ -543,20 +547,28 @@ i.fvtt-hellborn {
max-width: 1.8rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .properties {
min-width: 21rem;
max-width: 21rem;
min-width: 16.3rem;
max-width: 16.3rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .range {
min-width: 4.5rem;
max-width: 4.5rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .ammo {
min-width: 4.5rem;
max-width: 4.5rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .type {
min-width: 3rem;
max-width: 3rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .damage {
min-width: 4rem;
max-width: 4rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .damage {
min-width: 6rem;
max-width: 6rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .item-img {
width: 24px;
@@ -624,8 +636,12 @@ i.fvtt-hellborn {
max-width: 1.8rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .quantity {
min-width: 2rem;
max-width: 2rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .item-img {
width: 24px;
@@ -1310,16 +1326,20 @@ i.fvtt-hellborn {
max-width: 1.8rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .maleficas .malefica .domain {
min-width: 5rem;
max-width: 5rem;
min-width: 4rem;
max-width: 4rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .maleficas .malefica .damage {
min-width: 3.2rem;
max-width: 3.2rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .maleficas .malefica .level {
min-width: 3rem;
max-width: 3rem;
min-width: 2rem;
max-width: 2rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .maleficas .malefica .name {
min-width: 11rem;
max-width: 11rem;
min-width: 10rem;
max-width: 10em;
}
.fvtt-hellborn .tab.enemy-traits .main-div .maleficas .malefica .item-img {
width: 24px;
@@ -1349,20 +1369,28 @@ i.fvtt-hellborn {
max-width: 1.8rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .properties {
min-width: 21rem;
max-width: 21rem;
min-width: 18rem;
max-width: 18rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .type {
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .range {
min-width: 4rem;
max-width: 4rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .ammo {
min-width: 3rem;
max-width: 3rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .type {
min-width: 3rem;
max-width: 3rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .damage {
min-width: 6rem;
max-width: 6rem;
min-width: 4rem;
max-width: 4rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.fvtt-hellborn .tab.enemy-traits .main-div .weapons .weapon .item-img {
width: 24px;
@@ -2174,6 +2202,11 @@ i.fvtt-hellborn {
display: flex;
align-items: center;
}
.fvtt-hellborn .malefica-content fieldset .form-fields input[type="checkbox"] {
min-width: 2rem;
max-width: 2rem;
text-align: center;
}
.fvtt-hellborn .malefica-content fieldset .form-group input {
min-width: 12rem;
max-width: 12rem;
@@ -2345,7 +2378,9 @@ i.fvtt-hellborn {
color: var(--color-dark-1);
}
.item-to-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);
@@ -2385,9 +2420,11 @@ i.fvtt-hellborn {
flex-direction: row;
}
.dice-roll .intro-chat .intro-img {
padding: 5px;
width: 80px;
align-self: center;
padding: 4px;
max-width: 80px;
min-width: 80px;
align-self: top;
text-align: center;
}
.dice-roll .intro-chat .intro-right {
display: flex;

View File

@@ -334,11 +334,8 @@
"description": {
"label": "Description"
},
"enc": {
"label": "Enc"
},
"techAge": {
"label": "Tech Age"
"quantity": {
"label": "Quantity"
}
}
},
@@ -476,9 +473,21 @@
},
"Malefica": {
"FIELDS": {
"duration": {
"label": "Duration"
},
"description": {
"label": "Description"
},
"hasDamage": {
"label": "Has Damage"
},
"damage": {
"label": "Damage"
},
"damageType": {
"label": "Damage Type"
},
"domain": {
"label": "Domain"
},
@@ -631,6 +640,9 @@
"damage": {
"label": "Damage"
},
"damageType": {
"label": "Damage Type"
},
"description": {
"label": "Description"
},

View File

@@ -211,6 +211,12 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
if (item.type === "ritual") {
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-ritual.hbs", item.toObject())
}
if (item.type === "species-trait") {
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-trait.hbs", item.toObject())
}
if (item.type === "tarot") {
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-tarot.hbs", item.toObject())
}
const chatData = {
user: game.user.id,
speaker: ChatMessage.getSpeaker({ actor: this.actor }),

View File

@@ -53,6 +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" },
"gunslinger": { id: "gunslinger", label: "Gunslinger" },
"malefic": { id: "malefic", label: "Malefic" },
"mastermind": { id: "mastermind", label: "Mastermind" },
@@ -63,6 +64,8 @@ export const PERK_ROLES = {
export const MALEFICA_DOMAINS = {
"adfectus": { id: "adfectus", label: "Adfectus" },
"animalis": { id: "animalis", label: "Animalis" },
"carnes ": { id: "carnes", label: "Carnes" },
"divinus": { id: "divinus", label: "Divinus" },
"ignis": { id: "ignis", label: "Ignis" },
"iunctio": { id: "iunctio", label: "Iunctio" },

View File

@@ -93,7 +93,7 @@ export default class HellbornRoll extends Roll {
let damageRoll = new Roll(formula)
await damageRoll.evaluate()
await damageRoll.toMessage({
flavor: `${options.rollItem.name} - Damage Roll`
flavor: `${options.rollItem.name} - Damage Roll - ${options.rollItem.system.damageType}`,
});
return
}

View File

@@ -8,6 +8,7 @@ export default class HellbornEquipment extends foundry.abstract.TypeDataModel {
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.quantity = new fields.NumberField({ required: true, initial: 1, min: 0, integer: true })
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
return schema

View File

@@ -11,6 +11,10 @@ export default class HellbornMalefica extends foundry.abstract.TypeDataModel {
schema.domain = new fields.StringField({ required: true, nullable: false, choices: SYSTEM.MALEFICA_DOMAINS, initial: "adfectus" })
schema.level = new fields.StringField({ required: true, nullable: false, choices: SYSTEM.MALEFICA_LEVELS, initial: "1" })
schema.time = new fields.StringField({ required: true, initial : "" })
schema.duration = new fields.StringField({ required: true, initial : "" })
schema.hasDamage = new fields.BooleanField({ required: true, initial: false })
schema.damage = new fields.StringField({ required: false, initial : "" })
schema.damageType = new fields.StringField({ required: false, initial : "" })
schema.range = new fields.StringField({ required: true, initial : "" })
schema.target = new fields.StringField({ required: true, initial : "" })

View File

@@ -13,6 +13,8 @@ export default class HellbornWeapon extends foundry.abstract.TypeDataModel {
schema.properties = new fields.StringField({required: true, initial: ""})
schema.damage = new fields.StringField({required: true, initial: "1d6"})
schema.damageType = new fields.StringField({ required: false, initial : "Physical" })
schema.ammo = new fields.StringField({ required: false, initial: "" })
schema.range = new fields.StringField({ required: false, initial: "" })
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })

View File

@@ -286,24 +286,28 @@
display: flex;
align-items: center;
gap: 4px;
min-width: 18rem;
max-width: 18rem;
min-width: 20rem;
max-width: 20rem;
.controls {
font-size: 0.7rem;
min-width: 1.8rem;
max-width: 1.8rem;
}
.name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.damage {
min-width: 3.2rem;
max-width: 3.2rem;
}
.domain {
min-width: 5rem;
max-width: 5rem;
min-width: 4rem;
max-width: 4rem;
}
.level {
min-width: 3rem;
max-width: 3rem;
min-width: 2rem;
max-width: 2rem;
}
.item-img {
width: 24px;
@@ -329,8 +333,8 @@
max-width: 1.8rem;
}
.ingredients {
min-width: 26rem;
max-width: 26rem;
min-width: 24rem;
max-width: 24rem;
}
.name {
min-width: 12rem;
@@ -417,20 +421,28 @@
max-width: 1.8rem;
}
.properties {
min-width: 21rem;
max-width: 21rem;
min-width: 16.3rem;
max-width: 16.3rem;
}
.range {
min-width: 4.5rem;
max-width: 4.5rem;
}
.ammo {
min-width: 4.5rem;
max-width: 4.5rem;
}
.type {
min-width: 3rem;
max-width: 3rem;
}
.damage {
min-width: 4rem;
max-width: 4rem;
}
.damage {
min-width: 6rem;
max-width: 6rem;
}
.name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.item-img {
width: 24px;
@@ -500,8 +512,12 @@
max-width: 1.8rem;
}
.name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.quantity {
min-width: 2rem;
max-width: 2rem;
}
.item-img {
width: 24px;

View File

@@ -301,16 +301,20 @@
max-width: 1.8rem;
}
.domain {
min-width: 5rem;
max-width: 5rem;
min-width: 4rem;
max-width: 4rem;
}
.damage {
min-width: 3.2rem;
max-width: 3.2rem;
}
.level {
min-width: 3rem;
max-width: 3rem;
min-width: 2rem;
max-width: 2rem;
}
.name {
min-width: 11rem;
max-width: 11rem;
min-width: 10rem;
max-width: 10em;
}
.item-img {
width: 24px;
@@ -340,20 +344,28 @@
max-width: 1.8rem;
}
.properties {
min-width: 21rem;
max-width: 21rem;
min-width: 18rem;
max-width: 18rem;
}
.type {
.range {
min-width: 4rem;
max-width: 4rem;
}
.ammo {
min-width: 3rem;
max-width: 3rem;
}
.type {
min-width: 3rem;
max-width: 3rem;
}
.damage {
min-width: 6rem;
max-width: 6rem;
min-width: 4rem;
max-width: 4rem;
}
.name {
min-width: 12rem;
max-width: 12rem;
min-width: 10rem;
max-width: 10rem;
}
.item-img {
width: 24px;

View File

@@ -8,7 +8,10 @@
display: flex;
align-items: center;
}
.form-group label {
.form-fields input[type="checkbox"] {
min-width: 2rem;
max-width: 2rem;
text-align: center;
}
.form-group input {
min-width: 12rem;

View File

@@ -56,7 +56,9 @@
.item-to-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);
@@ -97,9 +99,11 @@
display: flex;
flex-direction: row;
.intro-img {
padding: 5px;
width: 80px;
align-self: center;
padding: 4px;
max-width: 80px;
min-width : 80px;
align-self: top;
text-align: center;
}
.intro-right {
display: flex;

View File

@@ -17,6 +17,8 @@
</div>
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
<span class="range" data-tooltip="Range">{{upperFirst item.system.range}}</span>
<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}}">
@@ -74,6 +76,8 @@
<div class="name" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<span class="quantity" data-tooltip="Quantity">{{item.system.quantity}}</span>
<div class="controls">
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>

View File

@@ -44,7 +44,7 @@
<div>
<div class="flexrow">
<div class="form-group">
<label>Upright</label>
<label><a data-action="toChat" data-item-uuid="{{upright.uuid}}">Upright</a></label>
<input class="trait" type="text" value="{{upright.name}}" disabled >
<div class="controls">
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{upright.id}}"
@@ -56,7 +56,7 @@
</div>
<div class="flexrow">
<div class="form-group">
<label>Reversed</label>
<label><a data-action="toChat" data-item-uuid="{{upright.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}}"

View File

@@ -17,6 +17,14 @@
</div>
<span class="domain" data-tooltip="Domain">{{upperFirst item.system.domain}}</span>
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
{{#if item.system.hasDamage}}
<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}}">
<i class="fa-regular fa-dice"></i>
{{item.system.damage}}</a>
{{else}}
<span class="damage" data-tooltip="Damage">-</span>
{{/if}}
<div class="controls">
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"

View File

@@ -6,6 +6,7 @@
<li><strong>Domain : </strong>{{upperFirst system.domain}}</li>
<li><strong>Level : </strong>{{getRomanLevel system.level}}</li>
<li><strong>Time : </strong>{{system.time}}</li>
<li><strong>Duration : </strong>{{system.duration}}</li>
<li><strong>Range : </strong>{{system.range}}</li>
<li><strong>Target : </strong>{{system.target}}</li>
<li>{{{system.description}}}</li>

View File

@@ -14,7 +14,7 @@
{{#if weapon}}
<li><strong>Weapon : {{weapon.name}}</strong></li>
<li><strong>Properties : {{weapon.system.properties}}</strong></li>
<li><strong>Properties :</strong> {{weapon.system.properties}}</li>
{{/if}}
<li><strong>{{localize rollItem.label}} : {{rollItem.value}}</strong></li>

15
templates/chat-tarot.hbs Normal file
View File

@@ -0,0 +1,15 @@
<div class="item-to-chat">
<div class="intro-chat">
<h2>{{name}}</h2>
<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>
<li>{{{system.description}}}</li>
<li>{{{system.positiveEffect}}}</li>
<li>{{{system.negativeEffect}}}</li>
</ul>
</div>
</div>

9
templates/chat-trait.hbs Normal file
View File

@@ -0,0 +1,9 @@
<div class="item-to-chat">
<div class="intro-chat">
<h2>{{name}}</h2>
<ul>
<li>{{{system.description}}}</li>
</ul>
</div>
</div>

View File

@@ -77,6 +77,14 @@
</div>
<span class="domain" data-tooltip="Domain">{{upperFirst item.system.domain}}</span>
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
{{#if item.system.hasDamage}}
<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}}">
<i class="fa-regular fa-dice"></i>
{{item.system.damage}}</a>
{{else}}
<span class="damage" data-tooltip="Damage">-</span>
{{/if}}
<div class="controls">
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
@@ -107,6 +115,8 @@
</div>
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
<span class="range" data-tooltip="Range">{{upperFirst item.system.range}}</span>
<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}}">

View File

@@ -5,6 +5,7 @@
</div>
<fieldset>
{{formField systemFields.quantity value=system.quantity}}
{{formField systemFields.cost value=system.cost}}
</fieldset>

View File

@@ -8,8 +8,14 @@
{{formField systemFields.domain value=system.domain localize=true}}
{{formField systemFields.level value=system.level localize=true}}
{{formField systemFields.time value=system.time localize=true }}
{{formField systemFields.duration value=system.duration localize=true}}
{{formField systemFields.range value=system.range localize=true}}
{{formField systemFields.target value=system.target localize=true}}
{{formField systemFields.hasDamage value=system.hasDamage localize=true}}
{{#if system.hasDamage}}
{{formField systemFields.damage value=system.damage}}
{{formField systemFields.damageType value=system.damageType}}
{{/if}}
</fieldset>
<fieldset>

View File

@@ -14,6 +14,7 @@
{{formField systemFields.properties value=system.properties classes="long-input"}}
{{formField systemFields.damage value=system.damage}}
{{formField systemFields.damageType value=system.damageType}}
{{formField systemFields.cost value=system.cost}}
</fieldset>