Manage ers
This commit is contained in:
@ -5,14 +5,21 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["protagonist"],
|
||||
position: {
|
||||
width: 840,
|
||||
width: 848,
|
||||
height: 620,
|
||||
},
|
||||
window: {
|
||||
contentClasses: ["protagonist-content"],
|
||||
},
|
||||
actions: {
|
||||
createEquipment: CthulhuEternalProtagonistSheet.#onCreateEquipment,
|
||||
createGear: CthulhuEternalProtagonistSheet.#onCreateGear,
|
||||
createArmor: CthulhuEternalProtagonistSheet.#onCreateArmor,
|
||||
createWeapon: CthulhuEternalProtagonistSheet.#onCreateWeapon,
|
||||
createBond: CthulhuEternalProtagonistSheet.#onCreateBond,
|
||||
createInjury: CthulhuEternalProtagonistSheet.#onCreateInjury,
|
||||
createMentalDisorder: CthulhuEternalProtagonistSheet.#onCreateMentalDisorder,
|
||||
createMotivation: CthulhuEternalProtagonistSheet.#onCreateMotivation,
|
||||
createSkill: CthulhuEternalProtagonistSheet.#onCreateSkill
|
||||
},
|
||||
}
|
||||
|
||||
@ -27,6 +34,9 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
skills: {
|
||||
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-skills.hbs",
|
||||
},
|
||||
status: {
|
||||
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-status.hbs",
|
||||
},
|
||||
equipment: {
|
||||
template: "systems/fvtt-cthulhu-eternal/templates/protagonist-equipment.hbs",
|
||||
},
|
||||
@ -43,10 +53,11 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
/**
|
||||
* Prepare an array of form header tabs.
|
||||
* @returns {Record<string, Partial<ApplicationTab>>}
|
||||
*/
|
||||
*/
|
||||
#getTabs() {
|
||||
const tabs = {
|
||||
skills: { id: "skills", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.skills" },
|
||||
status: { id: "status", group: "sheet", icon: "fa-solid fa-file-waveform", label: "CTHULHUETERNAL.Label.status" },
|
||||
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "CTHULHUETERNAL.Label.equipment" },
|
||||
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "CTHULHUETERNAL.Label.biography" },
|
||||
}
|
||||
@ -104,8 +115,15 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
context.armors = doc.itemTypes.armor
|
||||
context.gears = doc.itemTypes.gear
|
||||
break
|
||||
case "status":
|
||||
context.tab = context.tabs.status
|
||||
context.injuries = doc.itemTypes.injury
|
||||
context.mentaldisorders = doc.itemTypes.mentaldisorder
|
||||
context.bonds = doc.itemTypes.bond
|
||||
break
|
||||
case "biography":
|
||||
context.tab = context.tabs.biography
|
||||
context.motivations = doc.itemTypes.motivation
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
||||
break
|
||||
@ -118,15 +136,36 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS
|
||||
* @param {Event} event The initiating click event.
|
||||
* @param {HTMLElement} target The current target of the event listener.
|
||||
*/
|
||||
static #onCreateEquipment(event, target) {
|
||||
// Création d'une armure
|
||||
if (event.shiftKey) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newArmor"), type: "armor" }])
|
||||
}
|
||||
// Création d'une arme
|
||||
else {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newWeapon"), type: "weapon" }])
|
||||
}
|
||||
static #onCreateGear(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newGear"), type: "gear" }])
|
||||
}
|
||||
|
||||
static #onCreateWeapon(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newWeapon"), type: "weapon" }])
|
||||
}
|
||||
|
||||
static #onCreateArmor(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newArmor"), type: "armor" }])
|
||||
}
|
||||
|
||||
static #onCreateBond(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newBond"), type: "bond" }])
|
||||
}
|
||||
|
||||
static #onCreateInjury(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newInjury"), type: "injury" }])
|
||||
}
|
||||
|
||||
static #onCreateMentalDisorder(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newMentalDisorder"), type: "mentaldisorder" }])
|
||||
}
|
||||
|
||||
static #onCreateMotivation(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newMotivation"), type: "motivation" }])
|
||||
}
|
||||
|
||||
static #onCreateSkill(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newSkill"), type: "skill" }])
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5,21 +5,6 @@ import * as BOND from "./bond.mjs"
|
||||
|
||||
export const SYSTEM_ID = "fvtt-cthulhu-eternal"
|
||||
|
||||
export const AVAILABLE_SETTINGS = {
|
||||
common: "CTHULHUETERNAL.Settings.Common",
|
||||
modern: "CTHULHUETERNAL.Settings.Modern",
|
||||
jazz: "CTHULHUETERNAL.Settings.Jazz",
|
||||
future: "CTHULHUETERNAL.Settings.Future",
|
||||
coldwar: "CTHULHUETERNAL.Settings.ColdWar",
|
||||
ww2: "CTHULHUETERNAL.Settings.WW2",
|
||||
ww1: "CTHULHUETERNAL.Settings.WW1",
|
||||
victorian: "CTHULHUETERNAL.Settings.Victorian",
|
||||
revolution: "CTHULHUETERNAL.Settings.Revolution",
|
||||
medieval: "CTHULHUETERNAL.Settings.Medieval",
|
||||
ageofsail: "CTHULHUETERNAL.Settings.AgeOfSail",
|
||||
classical: "CTHULHUETERNAL.Settings.Classical"
|
||||
}
|
||||
|
||||
export const ASCII = `
|
||||
▄████▄ ▄▄▄█████▓ ██░ ██ █ ██ ██▓ ██░ ██ █ ██ ▓█████▄▄▄█████▓▓█████ ██▀███ ███▄ █ ▄▄▄ ██▓
|
||||
▒██▀ ▀█ ▓ ██▒ ▓▒▓██░ ██▒ ██ ▓██▒▓██▒ ▓██░ ██▒ ██ ▓██▒ ▓█ ▀▓ ██▒ ▓▒▓█ ▀ ▓██ ▒ ██▒ ██ ▀█ █ ▒████▄ ▓██▒
|
||||
@ -31,10 +16,155 @@ export const ASCII = `
|
||||
░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ▒ ░ ░
|
||||
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
|
||||
░
|
||||
|
||||
|
||||
`
|
||||
|
||||
|
||||
export const AVAILABLE_SETTINGS = {
|
||||
modern: "CTHULHUETERNAL.Settings.Modern",
|
||||
jazz: "CTHULHUETERNAL.Settings.Jazz",
|
||||
future: "CTHULHUETERNAL.Settings.Future",
|
||||
coldwar: "CTHULHUETERNAL.Settings.ColdWar",
|
||||
ww2: "CTHULHUETERNAL.Settings.WW2",
|
||||
ww1: "CTHULHUETERNAL.Settings.WW1",
|
||||
victorian: "CTHULHUETERNAL.Settings.Victorian",
|
||||
revolution: "CTHULHUETERNAL.Settings.Revolution",
|
||||
medieval: "CTHULHUETERNAL.Settings.Medieval",
|
||||
ageofsail: "CTHULHUETERNAL.Settings.AgeOfSail",
|
||||
classical: "CTHULHUETERNAL.Settings.Classical",
|
||||
postapo: "CTHULHUETERNAL.Settings.PostApo"
|
||||
}
|
||||
|
||||
export const ERA_CSS = {
|
||||
jazz: { primaryFont: "RozhaOne", secondaryFont: "RozhaOne", titleFont: "Broadway", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(9%) saturate(2368%) hue-rotate(360deg) brightness(86%) contrast(84%)" },
|
||||
modern: { primaryFont: "Georama", secondaryFont: "Georama", titleFont: "Georama", imgFilter: "brightness(0) saturate(100%) invert(92%) sepia(11%) saturate(1214%) hue-rotate(51deg) brightness(93%) contrast(86%)" },
|
||||
future: { primaryFont: "Megrim", secondaryFont: "Megrim", titleFont: "Seabreed", imgFilter: "brightness(0) saturate(100%) invert(83%) sepia(30%) saturate(588%) hue-rotate(168deg) brightness(105%) contrast(103%)" },
|
||||
victorian: { primaryFont: "Volkhov", secondaryFont: "Volkhov", titleFont: "Excelsior", imgFilter: "brightness(0) saturate(100%) invert(100%) sepia(59%) saturate(1894%) hue-rotate(337deg) brightness(88%) contrast(98%)" },
|
||||
coldwar: { primaryFont: "BebasNeue", secondaryFont: "BebasNeue", titleFont: "TopSecret", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(14%) saturate(2508%) hue-rotate(202deg) brightness(99%) contrast(105%)"},
|
||||
revolution: { primaryFont: "IMFell", secondaryFont: "IMFell", titleFont: "Dominican", imgFilter: "brightness(0) saturate(100%) invert(81%) sepia(25%) saturate(386%) hue-rotate(7deg) brightness(101%) contrast(84%)" },
|
||||
medieval: { primaryFont: "UncialAntiqua", secondaryFont: "UncialAntiqua", titleFont: "Luminari", imgFilter: "brightness(0) saturate(100%) invert(93%) sepia(46%) saturate(354%) hue-rotate(321deg) brightness(93%) contrast(87%)"},
|
||||
ww2: { primaryFont: "SairaStencilOne", secondaryFont: "SairaStencilOne", titleFont: "Armalite", imgFilter: "brightness(0) saturate(100%) invert(95%) sepia(9%) saturate(1471%) hue-rotate(342deg) brightness(103%) contrast(107%)"},
|
||||
ww1: { primaryFont: "CarterOne", secondaryFont: "CarterOne", titleFont: "SigmarOne", imgFilter: "brightness(0) saturate(100%) invert(90%) sepia(38%) saturate(341%) hue-rotate(21deg) brightness(105%) contrast(105%)"},
|
||||
ageofsail: { primaryFont: "Tangerine", secondaryFont: "Tangerine", titleFont: "P22Operina", imgFilter: "brightness(0) saturate(100%) invert(43%) sepia(74%) saturate(3154%) hue-rotate(336deg) brightness(95%) contrast(83%)" },
|
||||
classical: { primaryFont: "SpectralSC", secondaryFont: "SpectralSC", titleFont: "TrajanPro", imgFilter: "brightness(0) saturate(100%) invert(52%) sepia(32%) saturate(7492%) hue-rotate(265deg) brightness(89%) contrast(95%)" },
|
||||
postapo: { primaryFont: "Teko", secondaryFont: "Teko", titleFont: "Teko", imgFilter: "brightness(0) saturate(100%) invert(44%) sepia(55%) saturate(2341%) hue-rotate(329deg) brightness(122%) contrast(103%))" }
|
||||
}
|
||||
|
||||
export const RESOURCE_RATING = {
|
||||
jazz: {
|
||||
0: {name: "Penury", description: "CTHULHUETERNAL.Resource.Penury", income: 0, assets: "CTHULHUETERNAL.Resource.NoAssets"},
|
||||
4: {name: "Poor", description: "CTHULHUETERNAL.Resource.Poor", income: 700, assets: "CTHULHUETERNAL.Resource.PoorJazz"},
|
||||
8: {name: "Average", description: "CTHULHUETERNAL.Resource.Average", income: 3000, assets: "CTHULHUETERNAL.Resource.AverageJazz"},
|
||||
12: {name: "Above Average", description: "CTHULHUETERNAL.Resource.AboveAverage", income: 5000, assets: "CTHULHUETERNAL.Resource.AboveAverageJazz"},
|
||||
16: {name: "Well Off", description: "CTHULHUETERNAL.Resource.WellOff", income: 10000, assets: "CTHULHUETERNAL.Resource.WellOffJazz"},
|
||||
18: {name: "Rich", description: "CTHULHUETERNAL.Resource.Rich", income: 15000, assets: "CTHULHUETERNAL.Resource.RichJazz"},
|
||||
19: {name: "Very Rich", description: "CTHULHUETERNAL.Resource.VeryRich", income: 50000, assets: "CTHULHUETERNAL.Resource.VeryRichJazz"},
|
||||
20: {name: "Super Rich", description: "CTHULHUETERNAL.Resource.SuperRich", income: 100000, assets: "CTHULHUETERNAL.Resource.SuperRichJazz"}
|
||||
},
|
||||
modern: {
|
||||
0: {name: "Penury", description: "CTHULHUETERNAL.Resource.Penury", income: 0, assets: "CTHULHUETERNAL.Resource.NoAssets"},
|
||||
4: {name: "Poor", description: "CTHULHUETERNAL.Resource.Poor", income: 20000, assets: "CTHULHUETERNAL.Resource.PoorModern"},
|
||||
8: {name: "Average", description: "CTHULHUETERNAL.Resource.Average", income: 50000, assets: "CTHULHUETERNAL.Resource.AverageModern"},
|
||||
12: {name: "Above Average", description: "CTHULHUETERNAL.Resource.AboveAverage", income: 100000, assets: "CTHULHUETERNAL.Resource.AboveAverageModern"},
|
||||
16: {name: "Well Off", description: "CTHULHUETERNAL.Resource.WellOff", income: 150000, assets: "CTHULHUETERNAL.Resource.WellOffModern"},
|
||||
18: {name: "Rich", description: "CTHULHUETERNAL.Resource.Rich", income: 20000, assets: "CTHULHUETERNAL.Resource.RichModern"},
|
||||
19: {name: "Very Rich", description: "CTHULHUETERNAL.Resource.VeryRich", income: 500000, assets: "CTHULHUETERNAL.Resource.VeryRichModern"},
|
||||
20: {name: "Super Rich", description: "CTHULHUETERNAL.Resource.SuperRich", income: 1000000, assets: "CTHULHUETERNAL.Resource.SuperRichModern"}
|
||||
},
|
||||
victorian: {
|
||||
0: {name: "Penury", description: "CTHULHUETERNAL.Resource.Penury", income: 0, assets: "CTHULHUETERNAL.Resource.NoAssets"},
|
||||
4: {name: "Poor", description: "CTHULHUETERNAL.Resource.Poor", income: 30, assets: "CTHULHUETERNAL.Resource.PoorVictorian"},
|
||||
8: {name: "Average", description: "CTHULHUETERNAL.Resource.Average", income: 90, assets: "CTHULHUETERNAL.Resource.AverageVictorian"},
|
||||
12: {name: "Above Average", description: "CTHULHUETERNAL.Resource.AboveAverage", income: 400, assets: "CTHULHUETERNAL.Resource.AboveAverageVictorian"},
|
||||
16: {name: "Well Off", description: "CTHULHUETERNAL.Resource.WellOff", income: 1500, assets: "CTHULHUETERNAL.Resource.WellOffVictorian"},
|
||||
18: {name: "Rich", description: "CTHULHUETERNAL.Resource.Rich", income: 5000, assets: "CTHULHUETERNAL.Resource.RichVictorian"},
|
||||
19: {name: "Very Rich", description: "CTHULHUETERNAL.Resource.VeryRich", income: 40000, assets: "CTHULHUETERNAL.Resource.VeryRichVictorian"},
|
||||
20: {name: "Super Rich", description: "CTHULHUETERNAL.Resource.SuperRich", income: 200000, assets: "CTHULHUETERNAL.Resource.SuperRichVictorian"}
|
||||
}
|
||||
}
|
||||
|
||||
export const MENTAL_ILLNESS_CURE_SKILL = {
|
||||
jazz: "CTHULHUETERNAL.Skill.Psychoanalyze",
|
||||
modern: "CTHULHUETERNAL.Skill.Psychoanalyze",
|
||||
victorian: "CTHULHUETERNAL.Skill.Reassure",
|
||||
}
|
||||
|
||||
export const WEAPON_SKILL_MAPPING = {
|
||||
modern: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
jazz: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
victorian: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
coldwar: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
ww1: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
ww2: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
future: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.FirearmsBeams",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.FirearmsBeams",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
revolution: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
ageofsail: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"rangedfirearm": "CTHULHUETERNAL.Skill.Firearms",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
medieval: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
},
|
||||
classical: {
|
||||
"melee": "CTHULHUETERNAL.Skill.Melee",
|
||||
"rangedprimitive": "CTHULHUETERNAL.Skill.RangedWeapons",
|
||||
"rangedthrown": "CTHULHUETERNAL.Skill.Athletics",
|
||||
"unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat"
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Include all constant definitions within the SYSTEM global export
|
||||
* @type {Object}
|
||||
@ -45,7 +175,11 @@ export const SYSTEM = {
|
||||
HARSHNESS: PROTAGONIST.HARSHNESS,
|
||||
WEAPON_TYPE: WEAPON.WEAPON_TYPE,
|
||||
WEAPON_SUBTYPE: WEAPON.WEAPON_SUBTYPE,
|
||||
WEAPON_SKILL_MAPPING,
|
||||
BOND_TYPE: BOND.BOND_TYPE,
|
||||
AVAILABLE_SETTINGS,
|
||||
RESOURCE_RATING,
|
||||
MENTAL_ILLNESS_CURE_SKILL,
|
||||
ERA_CSS,
|
||||
ASCII
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ export const defaultItemImg = {
|
||||
skill: "systems/fvtt-cthulhu-eternal/assets/icons/icon_skill.svg",
|
||||
archetype: "systems/fvtt-cthulhu-eternal/assets/icons/icon_archetype.svg",
|
||||
bond: "systems/fvtt-cthulhu-eternal/assets/icons/icon_bond.svg",
|
||||
mentaldisorder: "systems/fvtt-cthulhu-eternal/assets/icons/icon_mentaldisorder.svg",
|
||||
mentaldisorder: "systems/fvtt-cthulhu-eternal/assets/icons/icon_mental_disorder.svg",
|
||||
arcane: "systems/fvtt-cthulhu-eternal/assets/icons/icon_arcane.svg",
|
||||
injury: "systems/fvtt-cthulhu-eternal/assets/icons/icon_injury.svg",
|
||||
motivation: "systems/fvtt-cthulhu-eternal/assets/icons/icon_motivation.svg",
|
||||
|
@ -130,6 +130,8 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class
|
||||
initialScore: options.initialScore,
|
||||
targetScore: options.initialScore,
|
||||
isLowWP: options.isLowWP,
|
||||
isZeroWP: options.isZeroWP,
|
||||
rollModes,
|
||||
fieldRollMode,
|
||||
choiceModifier,
|
||||
@ -167,24 +169,23 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
// If the user cancels the dialog, exit
|
||||
if (rollContext === null) return
|
||||
|
||||
const rollData = {
|
||||
rollType: options.rollType,
|
||||
rollItem: options.rollItem,
|
||||
actorId: options.actorId,
|
||||
actorName: options.actorName,
|
||||
actorImage: options.actorImage,
|
||||
rollMode: rollContext.visibility,
|
||||
hasTarget: options.hasTarget,
|
||||
initialScore: options.initialScore,
|
||||
targetName,
|
||||
targetArmor,
|
||||
targetMalus,
|
||||
...rollContext,
|
||||
}
|
||||
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
|
||||
rollData.rollMode = rollContext.visibility
|
||||
rollData.targetName = targetName
|
||||
rollData.targetArmor = targetArmor
|
||||
rollData.targetMalus = targetMalus
|
||||
|
||||
// Update target score
|
||||
console.log(rollData)
|
||||
rollData.targetScore = Math.min( Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
|
||||
|
||||
if ( rollData.isLowWP ) {
|
||||
rollData.targetScore -= 20
|
||||
}
|
||||
if ( rollData.isZeroWP ) {
|
||||
rollData.targetScore = 0
|
||||
}
|
||||
rollData.targetScore = Math.min( Math.max(rollData.targetScore, 0), 100)
|
||||
|
||||
/**
|
||||
* A hook event that fires before the roll is made.
|
||||
*/
|
||||
@ -270,32 +271,25 @@ export default class CthulhuEternalRoll extends Roll {
|
||||
* @property {string} tooltip - The tooltip text for the chat card.
|
||||
*/
|
||||
async _getChatCardData(isPrivate) {
|
||||
const cardData = {
|
||||
css: [SYSTEM.id, "dice-roll"],
|
||||
data: this.data,
|
||||
diceTotal: this.dice.reduce((t, d) => t + d.total, 0),
|
||||
isGM: game.user.isGM,
|
||||
rollItem: this.options.rollItem,
|
||||
initialScore: this.options.initialScore,
|
||||
targetScore: this.options.targetScore,
|
||||
rollType: this.options.rollType,
|
||||
modifier: this.options.modifier,
|
||||
formula: this.formula,
|
||||
total: this.total,
|
||||
isSuccess: this.options.isSuccess,
|
||||
isFailure: this.options.isFailure,
|
||||
isCritical: this.options.isCritical,
|
||||
actorId: this.actorId,
|
||||
actingCharName: this.actorName,
|
||||
actingCharImg: this.actorImage,
|
||||
resultType: this.resultType,
|
||||
hasTarget: this.hasTarget,
|
||||
targetName: this.targetName,
|
||||
targetArmor: this.targetArmor,
|
||||
realDamage: this.realDamage,
|
||||
isPrivate: isPrivate,
|
||||
}
|
||||
let cardData = foundry.utils.duplicate(this.options)
|
||||
cardData.css = [SYSTEM.id, "dice-roll"]
|
||||
cardData.data = this.data
|
||||
cardData.diceTotal = this.dice.reduce((t, d) => t + d.total, 0)
|
||||
cardData.isGM = game.user.isGM
|
||||
cardData.formula = this.formula
|
||||
cardData.total = this.total
|
||||
cardData.actorId = this.actorId
|
||||
cardData.actingCharName = this.actorName
|
||||
cardData.actingCharImg = this.actorImage
|
||||
cardData.resultType = this.resultType
|
||||
cardData.hasTarget = this.hasTarget
|
||||
cardData.targetName = this.targetName
|
||||
cardData.targetArmor = this.targetArmor
|
||||
cardData.realDamage = this.realDamage
|
||||
cardData.isPrivate = isPrivate
|
||||
|
||||
console.log(cardData)
|
||||
|
||||
cardData.cssClass = cardData.css.join(" ")
|
||||
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
|
||||
return cardData
|
||||
|
@ -5,7 +5,7 @@ export default class CthulhuEternalArchetype extends foundry.abstract.TypeDataMo
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
const schema = {}
|
||||
|
||||
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
|
||||
schema.description = new fields.HTMLField({
|
||||
required: false,
|
||||
|
@ -6,7 +6,7 @@ export default class CthulhuEternalArmor extends foundry.abstract.TypeDataModel
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.protection = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||
|
||||
|
@ -7,7 +7,7 @@ export default class CthulhuEternalGHear extends foundry.abstract.TypeDataModel
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||
|
||||
return schema
|
||||
|
@ -142,6 +142,15 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
isLowWP() {
|
||||
return this.wp.value <= 2
|
||||
}
|
||||
|
||||
isZeroWP() {
|
||||
return this.wp.value === 0
|
||||
}
|
||||
|
||||
/** */
|
||||
/**
|
||||
* Rolls a dice for a character.
|
||||
@ -168,6 +177,8 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData
|
||||
let roll = await CthulhuEternalRoll.prompt({
|
||||
rollType,
|
||||
rollItem,
|
||||
isLowWP: this.isLowWP(),
|
||||
isZeroWP: this.isZeroWP(),
|
||||
actorId: this.parent.id,
|
||||
actorName: this.parent.name,
|
||||
actorImage: this.parent.img,
|
||||
|
@ -6,9 +6,9 @@ export default class CthulhuEternalSkill extends foundry.abstract.TypeDataModel
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
|
||||
schema.base = new fields.StringField({ required: true, initial: "WIS" })
|
||||
schema.base = new fields.StringField({ required: true, initial: "0" })
|
||||
schema.bonus = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||
schema.diceEvolved = new fields.BooleanField({ required: true, initial: true })
|
||||
schema.rollFailed = new fields.BooleanField({ required: true, initial: false })
|
||||
|
@ -7,7 +7,7 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel {
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
schema.settings = new fields.StringField({ required: true, initial: "modern", choices: SYSTEM.AVAILABLE_SETTINGS })
|
||||
|
||||
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPE })
|
||||
schema.damage = new fields.StringField({required: true, initial: "1d6"})
|
||||
|
@ -1,6 +1,19 @@
|
||||
|
||||
export class CthulhuEternalUtils {
|
||||
|
||||
static registerSettings() {
|
||||
game.settings.register("fvtt-cthulhu-eternal", "settings-era", {
|
||||
name: game.i18n.localize("CHTUHLUETERNAL.Settings.era"),
|
||||
hint: game.i18n.localize("CHTUHLUETERNAL.Settings.eraHint"),
|
||||
default: true,
|
||||
scope: "world",
|
||||
type: String,
|
||||
choices: SYSTEM.AVAILABLE_SETTINGS,
|
||||
config: true,
|
||||
onChange: _ => window.location.reload()
|
||||
});
|
||||
}
|
||||
|
||||
static registerHandlebarsHelpers() {
|
||||
|
||||
Handlebars.registerHelper('isNull', function (val) {
|
||||
@ -153,4 +166,17 @@ export class CthulhuEternalUtils {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
static setupCSSRootVariables() {
|
||||
const era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
|
||||
|
||||
let eraCSS = SYSTEM.ERA_CSS[era];
|
||||
if (!eraCSS) eraCSS = SYSTEM.ERA_CSS["jazz"];
|
||||
|
||||
document.documentElement.style.setProperty('--font-primary', eraCSS.primaryFont);
|
||||
document.documentElement.style.setProperty('--font-secondary', eraCSS.secondaryFont);
|
||||
document.documentElement.style.setProperty('--font-title', eraCSS.titleFont);
|
||||
document.documentElement.style.setProperty('--img-icon-color-filter', eraCSS.imgFilter);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user