4 Commits

Author SHA1 Message Date
8e645a359a Foundryv14 migration
All checks were successful
Release Creation / build (release) Successful in 58s
2026-04-01 23:10:19 +02:00
e6d8195eca Display weapon costs
All checks were successful
Release Creation / build (release) Successful in 1m40s
2025-12-26 17:59:54 +01:00
748c4480c9 Add armorRegular
All checks were successful
Release Creation / build (release) Successful in 1m7s
2025-11-24 19:49:15 +01:00
21dca4446f Fix starship agility
All checks were successful
Release Creation / build (release) Successful in 51s
2025-11-16 13:49:33 +01:00
21 changed files with 57 additions and 41 deletions

View File

@@ -622,6 +622,9 @@
"armorCritical": { "armorCritical": {
"label": "Armor (Crit.)" "label": "Armor (Crit.)"
}, },
"armorRegular": {
"label": "Armor (Reg.)"
},
"guns" : { "guns" : {
"label": "Guns" "label": "Guns"
}, },
@@ -728,6 +731,9 @@
"armorCritical": { "armorCritical": {
"label": "Armor (Crit.)" "label": "Armor (Crit.)"
}, },
"armorRegular": {
"label": "Armor (Reg.)"
},
"crew": { "crew": {
"label": "Crew" "label": "Crew"
}, },

View File

@@ -199,7 +199,10 @@ export default class FTLNomadRoll extends Roll {
label: label, label: label,
callback: (event, button, dialog) => { callback: (event, button, dialog) => {
const output = Array.from(button.form.elements).reduce((obj, input) => { const output = Array.from(button.form.elements).reduce((obj, input) => {
if (input.name) obj[input.name] = input.value if (input.name) {
// For checkboxes, use checked property instead of value
obj[input.name] = input.type === 'checkbox' ? input.checked : input.value
}
return obj return obj
}, {}) }, {})
return output return output
@@ -271,7 +274,7 @@ export default class FTLNomadRoll extends Roll {
options.skillModifier = Number(rollData.skillModifier) || 0 options.skillModifier = Number(rollData.skillModifier) || 0
options.rangeModifier = Number(rollData.rangeModifier) || 0 options.rangeModifier = Number(rollData.rangeModifier) || 0
options.numericModifierSelect = Number(rollData.numericModifierSelect) || 0 options.numericModifierSelect = Number(rollData.numericModifierSelect) || 0
options.useVehicleBonus = rollData.useVehicleBonus !== "off" && rollData.useVehicleBonus !== false options.useVehicleBonus = rollData.useVehicleBonus === true
options.finalModifier = options.numericModifier + options.skillModifier + options.rangeModifier options.finalModifier = options.numericModifier + options.skillModifier + options.rangeModifier
let mod = options.rollItem?.value || 0 let mod = options.rollItem?.value || 0
mod += options.numericModifierSelect mod += options.numericModifierSelect

View File

@@ -11,6 +11,7 @@ export default class FTLNomadStarship extends foundry.abstract.TypeDataModel {
schema.hullType = new fields.StringField({ required: true, initial: "small", choices: SYSTEM.STARSHIP_HULL }) schema.hullType = new fields.StringField({ required: true, initial: "small", choices: SYSTEM.STARSHIP_HULL })
schema.endurance = new fields.StringField({ required: true, initial: "" }) schema.endurance = new fields.StringField({ required: true, initial: "" })
schema.armor = new fields.StringField({ required: true, initial: "" }) schema.armor = new fields.StringField({ required: true, initial: "" })
schema.armorRegular = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.armorCritical = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) schema.armorCritical = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.crewList = new fields.ArrayField(new fields.StringField({ required: true }), { initial: [] }) schema.crewList = new fields.ArrayField(new fields.StringField({ required: true }), { initial: [] })
schema.crewCapacity = new fields.StringField({ required: true, initial: "" }) schema.crewCapacity = new fields.StringField({ required: true, initial: "" })

View File

@@ -9,6 +9,7 @@ export default class FTLNomadVehicle extends foundry.abstract.TypeDataModel {
schema.agility = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) schema.agility = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.armor = new fields.StringField({ required: true, initial: "" }) schema.armor = new fields.StringField({ required: true, initial: "" })
schema.armorRegular = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.armorCritical = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) schema.armorCritical = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
schema.cargo = new fields.StringField({ required: true, initial: "" }) schema.cargo = new fields.StringField({ required: true, initial: "" })
schema.crewList = new fields.ArrayField(new fields.StringField({ required: true }), { initial: [] }) schema.crewList = new fields.ArrayField(new fields.StringField({ required: true }), { initial: [] })

View File

@@ -1 +1 @@
MANIFEST-000136 MANIFEST-000152

View File

@@ -1,7 +1,7 @@
2025/11/15-21:57:15.481581 7f4781ffb6c0 Recovering log #134 2026/04/01-23:09:00.608481 7f10b23ff6c0 Recovering log #150
2025/11/15-21:57:15.491519 7f4781ffb6c0 Delete type=3 #132 2026/04/01-23:09:00.656167 7f10b23ff6c0 Delete type=3 #148
2025/11/15-21:57:15.491588 7f4781ffb6c0 Delete type=0 #134 2026/04/01-23:09:00.656221 7f10b23ff6c0 Delete type=0 #150
2025/11/15-21:59:21.237179 7f4780bff6c0 Level-0 table #139: started 2026/04/01-23:10:07.079122 7f0e93fff6c0 Level-0 table #155: started
2025/11/15-21:59:21.237222 7f4780bff6c0 Level-0 table #139: 0 bytes OK 2026/04/01-23:10:07.079149 7f0e93fff6c0 Level-0 table #155: 0 bytes OK
2025/11/15-21:59:21.302054 7f4780bff6c0 Delete type=0 #137 2026/04/01-23:10:07.084891 7f0e93fff6c0 Delete type=0 #153
2025/11/15-21:59:21.450579 7f4780bff6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end) 2026/04/01-23:10:07.096219 7f0e93fff6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/11/11-09:55:29.500472 7f0922ffd6c0 Recovering log #130 2025/12/26-16:59:42.750082 7f4a837fe6c0 Recovering log #146
2025/11/11-09:55:29.510925 7f0922ffd6c0 Delete type=3 #128 2025/12/26-16:59:42.761235 7f4a837fe6c0 Delete type=3 #144
2025/11/11-09:55:29.511008 7f0922ffd6c0 Delete type=0 #130 2025/12/26-16:59:42.761321 7f4a837fe6c0 Delete type=0 #146
2025/11/11-12:13:09.876661 7f0920bff6c0 Level-0 table #135: started 2025/12/26-17:00:21.585370 7f4a81ffb6c0 Level-0 table #151: started
2025/11/11-12:13:09.876709 7f0920bff6c0 Level-0 table #135: 0 bytes OK 2025/12/26-17:00:21.585498 7f4a81ffb6c0 Level-0 table #151: 0 bytes OK
2025/11/11-12:13:09.882679 7f0920bff6c0 Delete type=0 #133 2025/12/26-17:00:21.592450 7f4a81ffb6c0 Delete type=0 #149
2025/11/11-12:13:09.882804 7f0920bff6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end) 2025/12/26-17:00:21.611289 7f4a81ffb6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000114 MANIFEST-000130

View File

@@ -1,7 +1,14 @@
2025/11/15-21:57:15.495359 7f47817fa6c0 Recovering log #112 2026/04/01-23:09:00.659665 7f10b0bfc6c0 Recovering log #128
2025/11/15-21:57:15.505936 7f47817fa6c0 Delete type=3 #110 2026/04/01-23:09:00.709557 7f10b0bfc6c0 Delete type=3 #126
2025/11/15-21:57:15.505987 7f47817fa6c0 Delete type=0 #112 2026/04/01-23:09:00.709626 7f10b0bfc6c0 Delete type=0 #128
2025/11/15-21:59:21.388865 7f4780bff6c0 Level-0 table #117: started 2026/04/01-23:10:07.084983 7f0e93fff6c0 Level-0 table #133: started
2025/11/15-21:59:21.388934 7f4780bff6c0 Level-0 table #117: 0 bytes OK 2026/04/01-23:10:07.089043 7f0e93fff6c0 Level-0 table #133: 62004 bytes OK
2025/11/15-21:59:21.450426 7f4780bff6c0 Delete type=0 #115 2026/04/01-23:10:07.096062 7f0e93fff6c0 Delete type=0 #131
2025/11/15-21:59:21.450606 7f4780bff6c0 Manual compaction at level-0 from '!actors!0FQ6XaRi24OorI21' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end) 2026/04/01-23:10:07.096243 7f0e93fff6c0 Manual compaction at level-0 from '!actors!0FQ6XaRi24OorI21' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at '!actors.items!xVufZOXxQResoXcc.wDy4l9wzEj4qaDgO' @ 191 : 1
2026/04/01-23:10:07.096254 7f0e93fff6c0 Compacting 1@0 + 1@1 files
2026/04/01-23:10:07.100334 7f0e93fff6c0 Generated table #134@0: 78 keys, 62634 bytes
2026/04/01-23:10:07.100351 7f0e93fff6c0 Compacted 1@0 + 1@1 files => 62634 bytes
2026/04/01-23:10:07.106108 7f0e93fff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2026/04/01-23:10:07.106192 7f0e93fff6c0 Delete type=2 #97
2026/04/01-23:10:07.106314 7f0e93fff6c0 Delete type=2 #133
2026/04/01-23:10:07.128341 7f0e93fff6c0 Manual compaction at level-0 from '!actors.items!xVufZOXxQResoXcc.wDy4l9wzEj4qaDgO' @ 191 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/11/11-09:55:29.516089 7f0921ffb6c0 Recovering log #108 2025/12/26-16:59:42.770831 7f4a83fff6c0 Recovering log #124
2025/11/11-09:55:29.525977 7f0921ffb6c0 Delete type=3 #106 2025/12/26-16:59:42.781890 7f4a83fff6c0 Delete type=3 #122
2025/11/11-09:55:29.526050 7f0921ffb6c0 Delete type=0 #108 2025/12/26-16:59:42.782078 7f4a83fff6c0 Delete type=0 #124
2025/11/11-12:13:09.863976 7f0920bff6c0 Level-0 table #113: started 2025/12/26-17:00:21.598990 7f4a81ffb6c0 Level-0 table #129: started
2025/11/11-12:13:09.864017 7f0920bff6c0 Level-0 table #113: 0 bytes OK 2025/12/26-17:00:21.599067 7f4a81ffb6c0 Level-0 table #129: 0 bytes OK
2025/11/11-12:13:09.870509 7f0920bff6c0 Delete type=0 #111 2025/12/26-17:00:21.605011 7f4a81ffb6c0 Delete type=0 #127
2025/11/11-12:13:09.882783 7f0920bff6c0 Manual compaction at level-0 from '!actors!0FQ6XaRi24OorI21' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end) 2025/12/26-17:00:21.611318 7f4a81ffb6c0 Manual compaction at level-0 from '!actors!0FQ6XaRi24OorI21' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -6,7 +6,7 @@
"download": "#{DOWNLOAD}#", "download": "#{DOWNLOAD}#",
"url": "https://www.uberwald.me/gitea/public/fvtt-ftl-nomad", "url": "https://www.uberwald.me/gitea/public/fvtt-ftl-nomad",
"license": "LICENSE", "license": "LICENSE",
"version": "13.0.0", "version": "14.0.0",
"authors": [ "authors": [
{ {
"name": "Uberwald", "name": "Uberwald",
@@ -21,7 +21,7 @@
}, },
"compatibility": { "compatibility": {
"minimum": "13", "minimum": "13",
"verified": "13" "verified": "14"
}, },
"esmodules": ["fvtt-ftl-nomad.mjs"], "esmodules": ["fvtt-ftl-nomad.mjs"],
"styles": ["css/fvtt-ftl-nomad.css"], "styles": ["css/fvtt-ftl-nomad.css"],

View File

@@ -24,8 +24,8 @@
}} }}
{{formField {{formField
systemFields.armor systemFields.armorRegular
value=system.armor value=system.armorRegular
localize=true localize=true
disabled=isPlayMode disabled=isPlayMode
}} }}

View File

@@ -21,8 +21,8 @@
disabled=isPlayMode disabled=isPlayMode
}} }}
{{formField {{formField
systemFields.armor systemFields.armorRegular
value=system.armor value=system.armorRegular
localize=true localize=true
disabled=isPlayMode disabled=isPlayMode
}} }}

View File

@@ -13,11 +13,9 @@
{{formField systemFields.damage value=system.damage}} {{formField systemFields.damage value=system.damage}}
{{formField systemFields.enc value=system.enc}} {{formField systemFields.enc value=system.enc}}
{{formField cost value=system.cost}} {{formField systemFields.cost value=system.cost}}
{{#if (eq system.weaponType "vehicle")}}
{{formField systemFields.ammoCost value=system.ammoCost}} {{formField systemFields.ammoCost value=system.ammoCost}}
{{formField systemFields.magazine value=system.magazine}} {{formField systemFields.magazine value=system.magazine}}
{{/if}}
</fieldset> </fieldset>