2 Commits

Author SHA1 Message Date
4d96c15066 Add compendium data
All checks were successful
Release Creation / build (release) Successful in 1m2s
2025-06-30 21:11:23 +02:00
fb5c408bbd Enhance CSS
All checks were successful
Release Creation / build (release) Successful in 54s
2025-06-17 00:40:51 +02:00
31 changed files with 115 additions and 21 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

BIN
assets/tarots/13_Death.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -562,6 +562,10 @@ i.fvtt-hellborn {
min-width: 4.5rem;
max-width: 4.5rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .ammoQuantity {
min-width: 3rem;
max-width: 3rem;
}
.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .type {
min-width: 3rem;
max-width: 3rem;
@@ -1985,6 +1989,17 @@ i.fvtt-hellborn {
min-width: 12rem;
max-width: 12rem;
}
.fvtt-hellborn .tarot-content fieldset .flexrow,
.fvtt-hellborn .tarot-content fieldset .scrollable-content {
align-items: flex-start;
}
.fvtt-hellborn .tarot-content fieldset .tarot-pic {
margin-left: 1rem;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
}
.fvtt-hellborn .tarot-content .header {
display: flex;
}
@@ -2444,6 +2459,9 @@ i.fvtt-hellborn {
justify-content: center;
align-items: center;
}
.item-to-chat ul .tarot-spacing {
margin-top: 0.5rem;
}
.item-to-chat ul li {
margin: 0 10px;
font-family: var(--font-primary);
@@ -2456,7 +2474,8 @@ i.fvtt-hellborn {
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2);
color: var(--color-dark-2);
margin-top: 5px;
margin-top: 0px;
align-items: center;
}
.flavor-text-damage .chat-damage-type {
font-weight: bold;
@@ -2466,11 +2485,12 @@ i.fvtt-hellborn {
margin-bottom: 0.5rem;
}
.flavor-text-damage h2 {
margin-top: 10px;
margin-left: 10px;
margin-bottom: 4px;
text-align: center;
margin-top: 4px;
margin-left: 4px;
margin-bottom: 0px;
font-family: var(--font-title);
font-size: calc(var(--font-size-standard) * 1.2);
font-size: calc(var(--font-size-standard) * 1.1);
color: var(--title-color);
}
.dice-roll {

View File

@@ -486,7 +486,7 @@
"label": "Maintain"
},
"choiceMaintainDuration": {
"label": "Choice Maintain/Duration"
"label": "Maintain/Duration"
},
"description": {
"label": "Description"
@@ -655,6 +655,9 @@
"ammo": {
"label": "Ammo"
},
"ammoQuantity": {
"label": "Ammo Quantity"
},
"cost": {
"label": "Cost"
},

View File

@@ -19,6 +19,7 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
createMalefica: HellbornCharacterSheet.#onCreateMalefica,
createRitual: HellbornCharacterSheet.#onCreateRitual,
createPerk: HellbornCharacterSheet.#onCreatePerk,
modifyAmmo: HellbornCharacterSheet.#onModifyAmmo,
},
}
@@ -169,6 +170,18 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newPerk"), type: "perk" }])
}
static async #onModifyAmmo(event, target) {
const quantity = parseInt($(event.target).data("quantity"))
const itemId = $(event.target).data("item-id")
const item = this.document.items.get(itemId)
if (!item) {
console.warn(`HellbornCharacterSheet: Item with ID ${itemId} not found`)
return
}
const currentAmmo = item.system.ammoQuantity || 0
const newAmmo = Math.max(0, currentAmmo + quantity) // Ensure ammo doesn't go below 0
await item.update({ "system.ammoQuantity": newAmmo })
}
/**
* Handles the roll action triggered by user interaction.

View File

@@ -202,11 +202,11 @@ export default class HellbornRoll extends Roll {
options.nbDisadvantages = Number(options.nbDisadvantages)
let dice = 3;
let keep = ""
if ( options.nbAdvantages > 0 || options.nbDisadvantages > 0) {
if ( (options.nbAdvantages !== options.nbDisadvantages) && options.nbAdvantages > 0 || options.nbDisadvantages > 0) {
dice = 4;
if ( options.nbAdvantages > options.nbDisadvantages) {
keep = "kh3"
} else {
} else if (options.nbAdvantages < options.nbDisadvantages) {
keep = "kl3"
}
}

View File

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

Binary file not shown.

View File

@@ -0,0 +1 @@
MANIFEST-000010

View File

View File

@@ -0,0 +1,15 @@
2025/06/30-20:37:58.108400 7f0798bfa6c0 Recovering log #8
2025/06/30-20:37:58.118139 7f0798bfa6c0 Delete type=3 #6
2025/06/30-20:37:58.118202 7f0798bfa6c0 Delete type=0 #8
2025/06/30-21:11:07.629621 7f07923ff6c0 Level-0 table #13: started
2025/06/30-21:11:07.632961 7f07923ff6c0 Level-0 table #13: 19920 bytes OK
2025/06/30-21:11:07.639130 7f07923ff6c0 Delete type=0 #11
2025/06/30-21:11:07.658870 7f07923ff6c0 Manual compaction at level-0 from '!folders!0d8PWsAGxiRfOlkP' @ 72057594037927935 : 1 .. '!items!zCOHBP3SYlGAY6zI' @ 0 : 0; will stop at (end)
2025/06/30-21:11:07.675316 7f07923ff6c0 Manual compaction at level-1 from '!folders!0d8PWsAGxiRfOlkP' @ 72057594037927935 : 1 .. '!items!zCOHBP3SYlGAY6zI' @ 0 : 0; will stop at '!items!xiuPJDuvpdMEtiPe' @ 284 : 1
2025/06/30-21:11:07.675323 7f07923ff6c0 Compacting 1@1 + 1@2 files
2025/06/30-21:11:07.680513 7f07923ff6c0 Generated table #14@1: 267 keys, 115927 bytes
2025/06/30-21:11:07.680536 7f07923ff6c0 Compacted 1@1 + 1@2 files => 115927 bytes
2025/06/30-21:11:07.686716 7f07923ff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2025/06/30-21:11:07.686840 7f07923ff6c0 Delete type=2 #5
2025/06/30-21:11:07.686988 7f07923ff6c0 Delete type=2 #13
2025/06/30-21:11:07.693807 7f07923ff6c0 Manual compaction at level-1 from '!items!xiuPJDuvpdMEtiPe' @ 284 : 1 .. '!items!zCOHBP3SYlGAY6zI' @ 0 : 0; will stop at (end)

View File

@@ -0,0 +1,8 @@
2025/06/30-19:11:32.088394 7f0792ffd6c0 Recovering log #4
2025/06/30-19:11:32.165054 7f0792ffd6c0 Delete type=3 #2
2025/06/30-19:11:32.165125 7f0792ffd6c0 Delete type=0 #4
2025/06/30-19:18:30.163563 7f07923ff6c0 Level-0 table #9: started
2025/06/30-19:18:30.163654 7f07923ff6c0 Level-0 table #9: 0 bytes OK
2025/06/30-19:18:30.170671 7f07923ff6c0 Delete type=0 #7
2025/06/30-19:18:30.184576 7f07923ff6c0 Manual compaction at level-0 from '!folders!0d8PWsAGxiRfOlkP' @ 72057594037927935 : 1 .. '!items!zCOHBP3SYlGAY6zI' @ 0 : 0; will stop at (end)
2025/06/30-19:18:30.184606 7f07923ff6c0 Manual compaction at level-1 from '!folders!0d8PWsAGxiRfOlkP' @ 72057594037927935 : 1 .. '!items!zCOHBP3SYlGAY6zI' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -438,6 +438,10 @@
min-width: 4.5rem;
max-width: 4.5rem;
}
.ammoQuantity {
min-width: 3rem;
max-width: 3rem;
}
.type {
min-width: 3rem;
max-width: 3rem;

View File

@@ -69,6 +69,9 @@
margin: 0;
justify-content: center;
align-items: center;
.tarot-spacing {
margin-top: 0.5rem;
}
li {
margin: 0 10px;
font-family: var(--font-primary);
@@ -84,7 +87,8 @@
font-family: var(--font-secondary);
font-size: calc(var(--font-size-standard) * 1.2);
color: var(--color-dark-2);
margin-top: 5px;
margin-top: 0px;
align-items: center;
.chat-damage-type {
font-weight: bold;
display: flex;
@@ -93,11 +97,12 @@
margin-bottom:0.5rem;
}
h2 {
margin-top: 10px;
margin-left: 10px;
margin-bottom: 4px;
text-align: center;
margin-top: 4px;
margin-left: 4px;
margin-bottom: 0px;
font-family: var(--font-title);
font-size: calc(var(--font-size-standard) * 1.2);
font-size: calc(var(--font-size-standard) * 1.1);
color: var(--title-color);
}
}

View File

@@ -24,8 +24,18 @@
min-width: 12rem;
max-width: 12rem;
}
.flexrow,
.scrollable-content {
align-items: flex-start;
}
.tarot-pic {
margin-left: 1rem;
display: flex;
flex-direction: column;
justify-content: flex-start; // aligne le contenu en haut
align-items: center; // ce }
}
}
.header {
display: flex;
img {

View File

@@ -49,6 +49,14 @@
}
},
"packs": [
{
"name": "hellborn-quickstart",
"banner": "systems/fvtt-hellborn/assets/ui/banner_compendium.png",
"label": "Hellborn - Quickstart",
"system": "fvtt-hellborn",
"path": "packs-system/hellborn-quickstart",
"type": "Item"
}
],
"grid": {
"distance": 10,

View File

@@ -10,15 +10,20 @@
{{#each weapons as |item|}}
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}} - {{upperFirst item.system.weaponType}}" />
<i class="fa-regular fa-dice"></i>
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
{{item.name}}
</div>
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
<!-- <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>
<span class="ammoQuantity" data-tooltip="ammoQuantity">
<i class="fa-solid fa-octagon-plus" data-action="modifyAmmo" data-quantity="1" data-item-id="{{item.id}}"></i>
{{item.system.ammoQuantity}}
<i class="fa-solid fa-octagon-minus" data-action="modifyAmmo" data-quantity="-1" data-item-id="{{item.id}}"></i>
</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.damageFormula}}">

View File

@@ -16,15 +16,15 @@
<li><strong>Reversed XP Trigger : </strong>{{system.penalty}}</li>
{{/if}}
<li><strong>Description : </strong>{{{system.description}}}</li>
<li class="tarot-spacing"><strong>Description : </strong>{{{system.description}}}</li>
{{#if (eq system.orientation "Upright")}}
<li><strong>Positive Effect : </strong>{{{system.positiveEffect}}}</li>
<li class="tarot-spacing"><strong>Positive Effect : </strong>{{{system.positiveEffect}}}</li>
{{else}}
<li><strong>Negative Effect : </strong>{{{system.negativeEffect}}}</li>
<li class="tarot-spacing"><strong>Negative Effect : </strong>{{{system.negativeEffect}}}</li>
{{/if}}
</ul>
<img class="item-img" src="{{system.image}}" />
</div>
</div>

View File

@@ -27,7 +27,7 @@
{{formInput systemFields.negativeEffect enriched=enrichedNegativeEffect value=system.negativeEffect name="system.negativeEffect"
toggled=true}}
</div>
<div>
<div class="tarot-pic">
<img src="{{system.image}}" class="item-img" data-edit="image" data-action="editImage" data-tooltip="{{localize "HELLBORN.Label.imageTooltip"}}"/>
{{formField systemFields.image value=system.image localize=true }}
</div>

View File

@@ -11,6 +11,7 @@
{{formField systemFields.subType value=system.subType localize=true}}
{{formField systemFields.range value=system.range localize=true}}
{{formField systemFields.ammo value=system.ammo localize=true}}
{{formField systemFields.ammoQuantity value=system.ammoQuantity localize=true}}
{{/if}}
{{formField systemFields.properties value=system.properties classes="long-input"}}