Suppression item Attribut : redondant avec le DataModel personnage
- DataModel CelestopolAttribute supprimé (items.mjs) - CelestopolAttributeSheet supprimée (item-sheets.mjs) - Imports/registrations retirés (fvtt-celestopol.mjs) - Section 'Attributs' supprimée de character-competences.hbs - Action createAttribute + contexte attributes retirés (character-sheet.mjs) - Template attribute.hbs supprimé - Clés i18n attribute/attributes/newAttribute supprimées (fr.json) - Type 'attribute' retiré des htmlFields (system.json) - htmlFields anomaly corrigés : technique/narratif/exemples Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -9,7 +9,6 @@ import {
|
|||||||
CelestopolNPC,
|
CelestopolNPC,
|
||||||
CelestopolAnomaly,
|
CelestopolAnomaly,
|
||||||
CelestopolAspect,
|
CelestopolAspect,
|
||||||
CelestopolAttribute,
|
|
||||||
CelestopolEquipment,
|
CelestopolEquipment,
|
||||||
} from "./module/models/_module.mjs"
|
} from "./module/models/_module.mjs"
|
||||||
import {
|
import {
|
||||||
@@ -23,7 +22,6 @@ import {
|
|||||||
CelestopolNPCSheet,
|
CelestopolNPCSheet,
|
||||||
CelestopolAnomalySheet,
|
CelestopolAnomalySheet,
|
||||||
CelestopolAspectSheet,
|
CelestopolAspectSheet,
|
||||||
CelestopolAttributeSheet,
|
|
||||||
CelestopolEquipmentSheet,
|
CelestopolEquipmentSheet,
|
||||||
} from "./module/applications/_module.mjs"
|
} from "./module/applications/_module.mjs"
|
||||||
|
|
||||||
@@ -42,7 +40,6 @@ Hooks.once("init", () => {
|
|||||||
|
|
||||||
CONFIG.Item.dataModels.anomaly = CelestopolAnomaly
|
CONFIG.Item.dataModels.anomaly = CelestopolAnomaly
|
||||||
CONFIG.Item.dataModels.aspect = CelestopolAspect
|
CONFIG.Item.dataModels.aspect = CelestopolAspect
|
||||||
CONFIG.Item.dataModels.attribute = CelestopolAttribute
|
|
||||||
CONFIG.Item.dataModels.equipment = CelestopolEquipment
|
CONFIG.Item.dataModels.equipment = CelestopolEquipment
|
||||||
|
|
||||||
// ── Document classes ────────────────────────────────────────────────────
|
// ── Document classes ────────────────────────────────────────────────────
|
||||||
@@ -88,11 +85,6 @@ Hooks.once("init", () => {
|
|||||||
makeDefault: true,
|
makeDefault: true,
|
||||||
label: "CELESTOPOL.Sheet.aspect",
|
label: "CELESTOPOL.Sheet.aspect",
|
||||||
})
|
})
|
||||||
foundry.documents.collections.Items.registerSheet(SYSTEM_ID, CelestopolAttributeSheet, {
|
|
||||||
types: ["attribute"],
|
|
||||||
makeDefault: true,
|
|
||||||
label: "CELESTOPOL.Sheet.attribute",
|
|
||||||
})
|
|
||||||
foundry.documents.collections.Items.registerSheet(SYSTEM_ID, CelestopolEquipmentSheet, {
|
foundry.documents.collections.Items.registerSheet(SYSTEM_ID, CelestopolEquipmentSheet, {
|
||||||
types: ["equipment"],
|
types: ["equipment"],
|
||||||
makeDefault: true,
|
makeDefault: true,
|
||||||
@@ -204,7 +196,6 @@ function _preloadTemplates() {
|
|||||||
`${base}/npc-blessures.hbs`,
|
`${base}/npc-blessures.hbs`,
|
||||||
`${base}/anomaly.hbs`,
|
`${base}/anomaly.hbs`,
|
||||||
`${base}/aspect.hbs`,
|
`${base}/aspect.hbs`,
|
||||||
`${base}/attribute.hbs`,
|
|
||||||
`${base}/equipment.hbs`,
|
`${base}/equipment.hbs`,
|
||||||
`${base}/roll-dialog.hbs`,
|
`${base}/roll-dialog.hbs`,
|
||||||
`${base}/chat-message.hbs`,
|
`${base}/chat-message.hbs`,
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
"Item": {
|
"Item": {
|
||||||
"anomaly": "Anomalie",
|
"anomaly": "Anomalie",
|
||||||
"aspect": "Aspect",
|
"aspect": "Aspect",
|
||||||
"attribute": "Attribut",
|
|
||||||
"equipment": "Équipement"
|
"equipment": "Équipement"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -170,11 +169,9 @@
|
|||||||
"anomaly": "Anomalie",
|
"anomaly": "Anomalie",
|
||||||
"anomalies": "Anomalies",
|
"anomalies": "Anomalies",
|
||||||
"aspects": "Aspects",
|
"aspects": "Aspects",
|
||||||
"attributes": "Attributs",
|
|
||||||
"equipments": "Équipements",
|
"equipments": "Équipements",
|
||||||
"newAnomaly": "Nouvelle anomalie",
|
"newAnomaly": "Nouvelle anomalie",
|
||||||
"newAspect": "Nouvel aspect",
|
"newAspect": "Nouvel aspect",
|
||||||
"newAttribute": "Nouvel attribut",
|
|
||||||
"newEquipment": "Nouvel équipement",
|
"newEquipment": "Nouvel équipement",
|
||||||
"value": "Valeur",
|
"value": "Valeur",
|
||||||
"scores": "Scores bonus / malus",
|
"scores": "Scores bonus / malus",
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
export { default as CelestopolCharacterSheet } from "./sheets/character-sheet.mjs"
|
export { default as CelestopolCharacterSheet } from "./sheets/character-sheet.mjs"
|
||||||
export { default as CelestopolNPCSheet } from "./sheets/npc-sheet.mjs"
|
export { default as CelestopolNPCSheet } from "./sheets/npc-sheet.mjs"
|
||||||
export { CelestopolAnomalySheet, CelestopolAspectSheet, CelestopolAttributeSheet, CelestopolEquipmentSheet } from "./sheets/item-sheets.mjs"
|
export { CelestopolAnomalySheet, CelestopolAspectSheet, CelestopolEquipmentSheet } from "./sheets/item-sheets.mjs"
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
|||||||
actions: {
|
actions: {
|
||||||
createAnomaly: CelestopolCharacterSheet.#onCreateAnomaly,
|
createAnomaly: CelestopolCharacterSheet.#onCreateAnomaly,
|
||||||
createAspect: CelestopolCharacterSheet.#onCreateAspect,
|
createAspect: CelestopolCharacterSheet.#onCreateAspect,
|
||||||
createAttribute: CelestopolCharacterSheet.#onCreateAttribute,
|
|
||||||
createEquipment: CelestopolCharacterSheet.#onCreateEquipment,
|
createEquipment: CelestopolCharacterSheet.#onCreateEquipment,
|
||||||
useAnomaly: CelestopolCharacterSheet.#onUseAnomaly,
|
useAnomaly: CelestopolCharacterSheet.#onUseAnomaly,
|
||||||
resetAnomalyUses: CelestopolCharacterSheet.#onResetAnomalyUses,
|
resetAnomalyUses: CelestopolCharacterSheet.#onResetAnomalyUses,
|
||||||
@@ -68,7 +67,6 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
|||||||
context.tab = context.tabs.competences
|
context.tab = context.tabs.competences
|
||||||
context.anomaly = doc.itemTypes.anomaly[0] ?? null
|
context.anomaly = doc.itemTypes.anomaly[0] ?? null
|
||||||
context.aspects = doc.itemTypes.aspect
|
context.aspects = doc.itemTypes.aspect
|
||||||
context.attributes = doc.itemTypes.attribute
|
|
||||||
if (context.anomaly) {
|
if (context.anomaly) {
|
||||||
const def = SYSTEM.ANOMALY_DEFINITIONS[context.anomaly.system.subtype] ?? SYSTEM.ANOMALY_DEFINITIONS.none
|
const def = SYSTEM.ANOMALY_DEFINITIONS[context.anomaly.system.subtype] ?? SYSTEM.ANOMALY_DEFINITIONS.none
|
||||||
context.anomalySkillLabels = def.technicalSkills.map(key => {
|
context.anomalySkillLabels = def.technicalSkills.map(key => {
|
||||||
@@ -120,12 +118,6 @@ export default class CelestopolCharacterSheet extends CelestopolActorSheet {
|
|||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
|
|
||||||
static #onCreateAttribute() {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{
|
|
||||||
name: game.i18n.localize("CELESTOPOL.Item.newAttribute"), type: "attribute",
|
|
||||||
}])
|
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreateEquipment() {
|
static #onCreateEquipment() {
|
||||||
this.document.createEmbeddedDocuments("Item", [{
|
this.document.createEmbeddedDocuments("Item", [{
|
||||||
name: game.i18n.localize("CELESTOPOL.Item.newEquipment"), type: "equipment",
|
name: game.i18n.localize("CELESTOPOL.Item.newEquipment"), type: "equipment",
|
||||||
|
|||||||
@@ -53,27 +53,6 @@ export class CelestopolAspectSheet extends CelestopolItemSheet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CelestopolAttributeSheet extends CelestopolItemSheet {
|
|
||||||
static DEFAULT_OPTIONS = {
|
|
||||||
classes: ["attribute"],
|
|
||||||
position: { width: 620, height: 520 },
|
|
||||||
}
|
|
||||||
static PARTS = {
|
|
||||||
main: { template: "systems/fvtt-celestopol/templates/attribute.hbs" },
|
|
||||||
}
|
|
||||||
async _prepareContext() {
|
|
||||||
const ctx = await super._prepareContext()
|
|
||||||
ctx.skills = SYSTEM.SKILLS
|
|
||||||
ctx.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
|
|
||||||
this.document.system.description, { async: true })
|
|
||||||
ctx.enrichedTechnique = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
|
|
||||||
this.document.system.technique, { async: true })
|
|
||||||
ctx.enrichedNarratif = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
|
|
||||||
this.document.system.narratif, { async: true })
|
|
||||||
return ctx
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CelestopolEquipmentSheet extends CelestopolItemSheet {
|
export class CelestopolEquipmentSheet extends CelestopolItemSheet {
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ["equipment"],
|
classes: ["equipment"],
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
export { default as CelestopolCharacter } from "./character.mjs"
|
export { default as CelestopolCharacter } from "./character.mjs"
|
||||||
export { default as CelestopolNPC } from "./npc.mjs"
|
export { default as CelestopolNPC } from "./npc.mjs"
|
||||||
export { CelestopolAnomaly, CelestopolAspect, CelestopolAttribute, CelestopolEquipment } from "./items.mjs"
|
export { CelestopolAnomaly, CelestopolAspect, CelestopolEquipment } from "./items.mjs"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { SYSTEM } from "../config/system.mjs"
|
import { SYSTEM } from "../config/system.mjs"
|
||||||
|
|
||||||
/** Schéma partagé pour les bonus/malus par domaine (utilisé dans anomaly/aspect/attribute). */
|
/** Schéma partagé pour les bonus/malus par domaine (utilisé dans anomaly/aspect). */
|
||||||
function skillScoresSchema() {
|
function skillScoresSchema() {
|
||||||
const fields = foundry.data.fields
|
const fields = foundry.data.fields
|
||||||
const reqInt = { required: true, nullable: false, integer: true }
|
const reqInt = { required: true, nullable: false, integer: true }
|
||||||
@@ -57,21 +57,6 @@ export class CelestopolAspect extends foundry.abstract.TypeDataModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CelestopolAttribute extends foundry.abstract.TypeDataModel {
|
|
||||||
static defineSchema() {
|
|
||||||
const fields = foundry.data.fields
|
|
||||||
const reqInt = { required: true, nullable: false, integer: true }
|
|
||||||
return {
|
|
||||||
value: new fields.NumberField({ ...reqInt, initial: 0, min: 0, max: 8 }),
|
|
||||||
scores: skillScoresSchema(),
|
|
||||||
description: new fields.HTMLField({ required: true, textSearch: true }),
|
|
||||||
technique: new fields.HTMLField({ required: true, textSearch: true }),
|
|
||||||
narratif: new fields.HTMLField({ required: true, textSearch: true }),
|
|
||||||
notes: new fields.HTMLField({ required: true, textSearch: true }),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CelestopolEquipment extends foundry.abstract.TypeDataModel {
|
export class CelestopolEquipment extends foundry.abstract.TypeDataModel {
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
const fields = foundry.data.fields
|
const fields = foundry.data.fields
|
||||||
|
|||||||
@@ -42,9 +42,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"anomaly": { "htmlFields": ["description", "technique", "narratif", "notes"] },
|
"anomaly": { "htmlFields": ["technique", "narratif", "exemples"] },
|
||||||
"aspect": { "htmlFields": ["description", "technique", "narratif", "notes"] },
|
"aspect": { "htmlFields": ["description", "technique", "narratif", "notes"] },
|
||||||
"attribute": { "htmlFields": ["description", "technique", "narratif", "notes"] },
|
|
||||||
"equipment": { "htmlFields": ["description", "notes"] }
|
"equipment": { "htmlFields": ["description", "notes"] }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
<div class="item-sheet attribute">
|
|
||||||
<header class="item-header">
|
|
||||||
<div class="item-portrait" data-action="editImage">
|
|
||||||
<img src="{{item.img}}" alt="{{item.name}}">
|
|
||||||
</div>
|
|
||||||
<div class="item-header-fields">
|
|
||||||
<input type="text" name="name" value="{{item.name}}" {{#unless isEditable}}disabled{{/unless}}>
|
|
||||||
<div class="item-meta">
|
|
||||||
<div class="item-value-field">
|
|
||||||
<label>{{localize "CELESTOPOL.Item.value"}}</label>
|
|
||||||
{{#if isEditable}}
|
|
||||||
<input type="number" name="system.value" value="{{system.value}}" min="0" max="8">
|
|
||||||
{{else}}
|
|
||||||
<span class="item-value-display">{{system.value}}</span>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<nav class="item-tabs sheet-tabs tabs" data-group="item-tabs">
|
|
||||||
<a class="item active" data-group="item-tabs" data-tab="description">{{localize "CELESTOPOL.Tab.description"}}</a>
|
|
||||||
<a class="item" data-group="item-tabs" data-tab="technique">{{localize "CELESTOPOL.Tab.technique"}}</a>
|
|
||||||
<a class="item" data-group="item-tabs" data-tab="scores">{{localize "CELESTOPOL.Item.scores"}}</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section class="tab active" data-group="item-tabs" data-tab="description">
|
|
||||||
<div class="form-group">
|
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="tab" data-group="item-tabs" data-tab="technique">
|
|
||||||
<div class="form-group">
|
|
||||||
<label>{{localize "CELESTOPOL.Item.technique"}}</label>
|
|
||||||
{{formInput systemFields.technique enriched=enrichedTechnique value=system.technique name="system.technique" toggled=true}}
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>{{localize "CELESTOPOL.Item.narratif"}}</label>
|
|
||||||
{{formInput systemFields.narratif enriched=enrichedNarratif value=system.narratif name="system.narratif" toggled=true}}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="tab" data-group="item-tabs" data-tab="scores">
|
|
||||||
{{> "systems/fvtt-celestopol/templates/partials/item-scores.hbs" skills=skills system=system}}
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
@@ -154,25 +154,5 @@
|
|||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{!-- Attributs --}}
|
|
||||||
<div class="items-group">
|
|
||||||
<div class="items-header">
|
|
||||||
<span>{{localize "CELESTOPOL.Item.attributes"}}</span>
|
|
||||||
{{#if isEditMode}}
|
|
||||||
<a data-action="createAttribute" title="{{localize 'CELESTOPOL.Item.newAttribute'}}"><i class="fas fa-plus"></i></a>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
{{#each attributes as |item|}}
|
|
||||||
<div class="item-row" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
<img src="{{item.img}}" class="item-icon" alt="{{item.name}}">
|
|
||||||
<span class="item-name">{{item.name}}</span>
|
|
||||||
<span class="item-value">{{item.system.value}}</span>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a data-action="edit" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
{{#if ../isEditMode}}<a data-action="delete" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user