Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2578ea4dc1 | |||
| d80e3e4658 | |||
| 188501423a |
@@ -413,10 +413,10 @@ i.fvtt-ftl-nomad {
|
||||
background-color: var(--color-light-1);
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
min-height: 16rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography prose-mirror.active {
|
||||
min-height: 150px;
|
||||
min-height: 16rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .field-label {
|
||||
margin-left: 8px;
|
||||
|
||||
@@ -31,6 +31,13 @@ Hooks.once("init", function () {
|
||||
utils: FTLNomadUtils,
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Set an initiative formula for the system
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "2d6 + @skills.combat.value",
|
||||
decimals: 1
|
||||
};
|
||||
|
||||
CONFIG.Actor.documentClass = documents.FTLNomadActor
|
||||
CONFIG.Actor.dataModels = {
|
||||
character: models.FTLNomadCharacter,
|
||||
|
||||
@@ -363,11 +363,17 @@
|
||||
"cargo": "Cargo",
|
||||
"vehicle": "Vehicle",
|
||||
"starship": "Starship",
|
||||
"Easy4": "Easy (+4D)",
|
||||
"Easy3": "Easy (+3D)",
|
||||
"Easy2": "Easy (+2D)",
|
||||
"Easy": "Easy (+1D)",
|
||||
"Moderate": "Moderate (+0D)",
|
||||
"Difficult": "Difficult (-1D)",
|
||||
"Formidable": "Formidable (-2D)",
|
||||
"Formidable3": "Formidable (-3D)",
|
||||
"Impossible": "Impossible (-4D)",
|
||||
"Impossible5": "Impossible (-5D)",
|
||||
"Impossible6": "Impossible (-6D)",
|
||||
"combat": "Combat",
|
||||
"physical": "Physical",
|
||||
"social": "Social",
|
||||
|
||||
@@ -114,11 +114,17 @@ export const CREATURE_SIZES = {
|
||||
}
|
||||
|
||||
export const MODIFIER_CHOICES = {
|
||||
"easy4": { id: "easy4", label: "FTLNOMAD.Label.Easy4", value: "4" },
|
||||
"easy3": { id: "easy3", label: "FTLNOMAD.Label.Easy3", value: "3" },
|
||||
"easy2": { id: "easy2", label: "FTLNOMAD.Label.Easy2", value: "2" },
|
||||
"easy": { id: "easy", label: "FTLNOMAD.Label.Easy", value: "1" },
|
||||
"moderate": { id: "moderate", label: "FTLNOMAD.Label.Moderate", value: "0" },
|
||||
"difficult": { id: "difficult", label: "FTLNOMAD.Label.Difficult", value: "-1" },
|
||||
"formidable": { id: "formidable", label: "FTLNOMAD.Label.Formidable", value: "-2" },
|
||||
"impossible": { id: "impossible", label: "FTLNOMAD.Label.Impossible", value: "-4" }
|
||||
"formidable3": { id: "formidable3", label: "FTLNOMAD.Label.Formidable3", value: "-3" },
|
||||
"impossible": { id: "impossible", label: "FTLNOMAD.Label.Impossible", value: "-4" },
|
||||
"impossible5": { id: "impossible5", label: "FTLNOMAD.Label.Impossible5", value: "-5" },
|
||||
"impossible6": { id: "impossible6", label: "FTLNOMAD.Label.Impossible6", value: "-6" }
|
||||
}
|
||||
|
||||
export const STARSHIP_HULL = {
|
||||
|
||||
@@ -93,6 +93,7 @@ export default class FTLNomadRoll extends Roll {
|
||||
break
|
||||
case "damage":
|
||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||
formula = options.weapon.system.damage
|
||||
break
|
||||
case "weapon":
|
||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||
@@ -212,11 +213,30 @@ export default class FTLNomadRoll extends Roll {
|
||||
options.numericModifier = Number(rollData.numericModifier) || 0
|
||||
options.skillModifier = Number(rollData.skillModifier) || 0
|
||||
options.rangeModifier = Number(rollData.rangeModifier) || 0
|
||||
options.finalModifier = options.numericModifier + options.skillModifier + options.rangeModifier
|
||||
let mod = options.rollItem?.value || 0
|
||||
|
||||
// Build the dice formula
|
||||
let diceFormula = `${2 + Math.abs(options.skillModifier)}D6`
|
||||
if (options.skillModifier > 0) {
|
||||
let diceFormula = "2d6"
|
||||
if (options.rollType === "damage") {
|
||||
let damageFormula = options.weapon.system.damage.toUpperCase().replace(/D/g, "d")
|
||||
// Extract the mod (if present), like in 3d6+1
|
||||
let match = damageFormula.match(/([+-]\d+)$/)
|
||||
if (match) {
|
||||
mod += Number(match[1])
|
||||
damageFormula = damageFormula.replace(match[1], "")
|
||||
}
|
||||
// Replace the D6 by the correct number of D6
|
||||
damageFormula = damageFormula.replace(/(\d*)d6/gi, (match, p1) => {
|
||||
let numDice = Number(p1) || 1
|
||||
numDice += Math.abs(options.skillModifier)
|
||||
return `${numDice}d6`
|
||||
})
|
||||
diceFormula = damageFormula
|
||||
} else {
|
||||
diceFormula = `${2 + Math.abs(options.finalModifier)}D6`
|
||||
}
|
||||
if (options.finalModifier > 0) {
|
||||
diceFormula += `kh2 + ${mod}`
|
||||
} else {
|
||||
diceFormula += `kl2 + ${mod}`
|
||||
|
||||
@@ -35,8 +35,8 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
schema.health = new fields.SchemaField({
|
||||
staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
wounds: new fields.NumberField({ ...requiredInteger, initial:0, min: 0 }),
|
||||
triageResults: new fields.StringField({ required: true, nullable: false, initial: "none", choices: SYSTEM.TRIAGE_RESULTS })
|
||||
wounds: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
triageResults: new fields.StringField({ required: true, nullable: false, initial: "none", choices: SYSTEM.TRIAGE_RESULTS })
|
||||
})
|
||||
|
||||
schema.enc = new fields.SchemaField({
|
||||
@@ -76,18 +76,18 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
|
||||
let encMax = 10 + (2*this.skills.physical.value)
|
||||
|
||||
let encMax = 10 + (2 * this.skills.physical.value)
|
||||
if (encMax !== this.enc.max) {
|
||||
this.enc.max = encMax
|
||||
}
|
||||
let enc = 0
|
||||
let armor = 0
|
||||
for (let i of this.parent.items) {
|
||||
for (let i of this.parent.items) {
|
||||
if (i.system?.enc) {
|
||||
enc += i.system.enc
|
||||
}
|
||||
if ( i.system?.protection) {
|
||||
if (i.system?.protection) {
|
||||
armor += i.system.protection
|
||||
}
|
||||
}
|
||||
@@ -97,12 +97,12 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
if (armor !== this.armor.value) {
|
||||
this.armor.value = armor
|
||||
}
|
||||
let staminaMax = 14 + (3*this.skills.physical.value)
|
||||
let staminaMax = 14 + (3 * this.skills.physical.value)
|
||||
if (staminaMax !== this.health.staminaMax) {
|
||||
this.health.staminaMax = staminaMax
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
isEncumbered() {
|
||||
return this.enc.value > this.enc.max
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
MANIFEST-000035
|
||||
MANIFEST-000051
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
2025/07/13-19:19:55.407043 7f3fa77fe6c0 Recovering log #33
|
||||
2025/07/13-19:19:55.417622 7f3fa77fe6c0 Delete type=3 #31
|
||||
2025/07/13-19:19:55.417740 7f3fa77fe6c0 Delete type=0 #33
|
||||
2025/07/13-19:30:09.138052 7f3fa57fa6c0 Level-0 table #38: started
|
||||
2025/07/13-19:30:09.142514 7f3fa57fa6c0 Level-0 table #38: 69052 bytes OK
|
||||
2025/07/13-19:30:09.149276 7f3fa57fa6c0 Delete type=0 #36
|
||||
2025/07/13-19:30:09.149522 7f3fa57fa6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||
2025/07/13-19:30:09.149572 7f3fa57fa6c0 Manual compaction at level-1 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at '!items!zv9dwgL3p7ThQn7j' @ 347 : 0
|
||||
2025/07/13-19:30:09.149581 7f3fa57fa6c0 Compacting 1@1 + 1@2 files
|
||||
2025/07/13-19:30:09.155375 7f3fa57fa6c0 Generated table #39@1: 273 keys, 107280 bytes
|
||||
2025/07/13-19:30:09.155393 7f3fa57fa6c0 Compacted 1@1 + 1@2 files => 107280 bytes
|
||||
2025/07/13-19:30:09.161181 7f3fa57fa6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2025/07/13-19:30:09.161294 7f3fa57fa6c0 Delete type=2 #14
|
||||
2025/07/13-19:30:09.161440 7f3fa57fa6c0 Delete type=2 #38
|
||||
2025/07/13-19:30:09.181330 7f3fa57fa6c0 Manual compaction at level-1 from '!items!zv9dwgL3p7ThQn7j' @ 347 : 0 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||
2025/08/26-08:04:22.211637 7f99c9ffb6c0 Recovering log #48
|
||||
2025/08/26-08:04:22.223370 7f99c9ffb6c0 Delete type=3 #46
|
||||
2025/08/26-08:04:22.223498 7f99c9ffb6c0 Delete type=0 #48
|
||||
2025/08/26-08:13:33.915174 7f99c8ff96c0 Level-0 table #54: started
|
||||
2025/08/26-08:13:33.915296 7f99c8ff96c0 Level-0 table #54: 0 bytes OK
|
||||
2025/08/26-08:13:33.948896 7f99c8ff96c0 Delete type=0 #52
|
||||
2025/08/26-08:13:33.949217 7f99c8ff96c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
2025/07/13-10:30:52.384204 7f3fa77fe6c0 Recovering log #29
|
||||
2025/07/13-10:30:52.394989 7f3fa77fe6c0 Delete type=3 #27
|
||||
2025/07/13-10:30:52.395058 7f3fa77fe6c0 Delete type=0 #29
|
||||
2025/07/13-10:33:26.219686 7f3fa57fa6c0 Level-0 table #34: started
|
||||
2025/07/13-10:33:26.219728 7f3fa57fa6c0 Level-0 table #34: 0 bytes OK
|
||||
2025/07/13-10:33:26.225987 7f3fa57fa6c0 Delete type=0 #32
|
||||
2025/07/13-10:33:26.233983 7f3fa57fa6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||
2025/07/13-10:33:26.244796 7f3fa57fa6c0 Manual compaction at level-1 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||
2025/08/25-21:48:36.909732 7f99c9ffb6c0 Delete type=3 #1
|
||||
2025/08/25-21:56:45.440471 7f99c8ff96c0 Level-0 table #49: started
|
||||
2025/08/25-21:56:45.440527 7f99c8ff96c0 Level-0 table #49: 0 bytes OK
|
||||
2025/08/25-21:56:45.504826 7f99c8ff96c0 Delete type=0 #47
|
||||
2025/08/25-21:56:45.558056 7f99c8ff96c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at '!items!zv9dwgL3p7ThQn7j' @ 385 : 1
|
||||
2025/08/25-21:56:45.558080 7f99c8ff96c0 Compacting 1@0 + 0@1 files
|
||||
2025/08/25-21:56:45.590210 7f99c8ff96c0 Generated table #50@0: 285 keys, 111653 bytes
|
||||
2025/08/25-21:56:45.590298 7f99c8ff96c0 Compacted 1@0 + 0@1 files => 111653 bytes
|
||||
2025/08/25-21:56:45.648076 7f99c8ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2025/08/25-21:56:45.648259 7f99c8ff96c0 Delete type=2 #44
|
||||
2025/08/25-21:56:45.801444 7f99c8ff96c0 Manual compaction at level-0 from '!items!zv9dwgL3p7ThQn7j' @ 385 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||
|
||||
0
packs/ftl-nomad-vehicles/000039.log
Normal file
0
packs/ftl-nomad-vehicles/000039.log
Normal file
@@ -1 +1 @@
|
||||
MANIFEST-000014
|
||||
MANIFEST-000029
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
2025/07/13-19:19:55.423004 7f3fa5ffb6c0 Recovering log #12
|
||||
2025/07/13-19:19:55.432450 7f3fa5ffb6c0 Delete type=3 #10
|
||||
2025/07/13-19:19:55.432507 7f3fa5ffb6c0 Delete type=0 #12
|
||||
2025/07/13-19:30:09.131809 7f3fa57fa6c0 Level-0 table #17: started
|
||||
2025/07/13-19:30:09.131855 7f3fa57fa6c0 Level-0 table #17: 0 bytes OK
|
||||
2025/07/13-19:30:09.137925 7f3fa57fa6c0 Delete type=0 #15
|
||||
2025/07/13-19:30:09.149491 7f3fa57fa6c0 Manual compaction at level-0 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||
2025/07/13-19:30:09.149534 7f3fa57fa6c0 Manual compaction at level-1 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||
2025/08/26-08:04:22.229470 7f99caffd6c0 Recovering log #26
|
||||
2025/08/26-08:04:22.240597 7f99caffd6c0 Delete type=3 #24
|
||||
2025/08/26-08:04:22.240743 7f99caffd6c0 Delete type=0 #26
|
||||
2025/08/26-08:13:33.840012 7f99c8ff96c0 Level-0 table #32: started
|
||||
2025/08/26-08:13:33.840112 7f99c8ff96c0 Level-0 table #32: 0 bytes OK
|
||||
2025/08/26-08:13:33.862575 7f99c8ff96c0 Delete type=0 #30
|
||||
2025/08/26-08:13:33.949166 7f99c8ff96c0 Manual compaction at level-0 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
2025/07/13-10:30:52.399161 7f3fa5ffb6c0 Recovering log #8
|
||||
2025/07/13-10:30:52.409521 7f3fa5ffb6c0 Delete type=3 #6
|
||||
2025/07/13-10:30:52.409646 7f3fa5ffb6c0 Delete type=0 #8
|
||||
2025/07/13-10:33:26.202414 7f3fa57fa6c0 Level-0 table #13: started
|
||||
2025/07/13-10:33:26.202485 7f3fa57fa6c0 Level-0 table #13: 0 bytes OK
|
||||
2025/07/13-10:33:26.208789 7f3fa57fa6c0 Delete type=0 #11
|
||||
2025/07/13-10:33:26.233915 7f3fa57fa6c0 Manual compaction at level-0 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||
2025/07/13-10:33:26.234020 7f3fa57fa6c0 Manual compaction at level-1 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||
2025/08/25-21:48:36.994202 7f99ca7fc6c0 Delete type=3 #1
|
||||
2025/08/25-21:56:45.505125 7f99c8ff96c0 Level-0 table #27: started
|
||||
2025/08/25-21:56:45.505238 7f99c8ff96c0 Level-0 table #27: 0 bytes OK
|
||||
2025/08/25-21:56:45.557727 7f99c8ff96c0 Delete type=0 #25
|
||||
2025/08/25-21:56:45.648499 7f99c8ff96c0 Manual compaction at level-0 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at '!folders!vRnrOJqSMlxbSgyX' @ 92 : 1
|
||||
2025/08/25-21:56:45.648514 7f99c8ff96c0 Compacting 1@0 + 0@1 files
|
||||
2025/08/25-21:56:45.676577 7f99c8ff96c0 Generated table #28@0: 51 keys, 49087 bytes
|
||||
2025/08/25-21:56:45.676616 7f99c8ff96c0 Compacted 1@0 + 0@1 files => 49087 bytes
|
||||
2025/08/25-21:56:45.736809 7f99c8ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
||||
2025/08/25-21:56:45.736931 7f99c8ff96c0 Delete type=2 #22
|
||||
2025/08/25-21:56:45.801488 7f99c8ff96c0 Manual compaction at level-0 from '!folders!vRnrOJqSMlxbSgyX' @ 92 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||
|
||||
0
packs/ftl-nomad-vehicles/lost/000020.log
Normal file
0
packs/ftl-nomad-vehicles/lost/000020.log
Normal file
@@ -219,10 +219,10 @@
|
||||
.character-biography {
|
||||
background-color: var(--color-light-1);
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
min-height: 16rem;
|
||||
}
|
||||
prose-mirror.active {
|
||||
min-height: 150px;
|
||||
min-height: 16rem;
|
||||
}
|
||||
.field-label {
|
||||
margin-left: 8px;
|
||||
|
||||
@@ -23,12 +23,12 @@
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true class="character-description"}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true class="character-notes"}}
|
||||
</fieldset>
|
||||
</div>
|
||||
</section>
|
||||
Reference in New Issue
Block a user