Initial import
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
import { TeDeumUtility } from "../common/tedeum-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class EcrymeActorSheet extends ActorSheet {
|
||||
export class TeDeumActorPJSheet extends ActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
@ -35,24 +35,11 @@ export class EcrymeActorSheet extends ActorSheet {
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
system: duplicate(this.object.system),
|
||||
limited: this.object.limited,
|
||||
skills: this.actor.prepareSkills(),
|
||||
traits: this.actor.getRollTraits(),
|
||||
confrontations: this.actor.getConfrontations(),
|
||||
ideal: this.actor.getIdeal(),
|
||||
spleen: this.actor.getSpleen(),
|
||||
impacts: this.object.getImpacts(),
|
||||
config: duplicate(game.system.ecryme.config),
|
||||
weapons: this.actor.getWeapons(),
|
||||
maneuvers: this.actor.getManeuvers(),
|
||||
impactsMalus: this.actor.getImpactsMalus(),
|
||||
archetype: duplicate(this.actor.getArchetype()),
|
||||
competences: this.actor.getCompetences(),
|
||||
config: duplicate(game.system.tedeum.config),
|
||||
armes: this.actor.getArmes(),
|
||||
equipments: this.actor.getEquipments(),
|
||||
hasCephaly: EcrymeUtility.hasCephaly(),
|
||||
hasBoheme: EcrymeUtility.hasBoheme(),
|
||||
hasAmertume: EcrymeUtility.hasAmertume(),
|
||||
cephalySkills: this.actor.getCephalySkills(),
|
||||
subActors: duplicate(this.actor.getSubActors()),
|
||||
annency: this.actor.getAnnency(),
|
||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
||||
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
||||
equipementlibre: await TextEditor.enrichHTML(this.object.system.equipementlibre, { async: true }),
|
||||
@ -80,12 +67,6 @@ export class EcrymeActorSheet extends ActorSheet {
|
||||
if (e.keyCode === 13) return false;
|
||||
});
|
||||
|
||||
html.find('.open-annency').click(ev => {
|
||||
let actorId = $(ev.currentTarget).data("annency-id")
|
||||
const actor = game.actors.get(actorId)
|
||||
actor.sheet.render(true)
|
||||
})
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
@ -124,40 +105,12 @@ export class EcrymeActorSheet extends ActorSheet {
|
||||
this.actor.incDecQuantity( li.data("item-id"), +1 );
|
||||
} );
|
||||
|
||||
html.find('.roll-skill').click((event) => {
|
||||
html.find('.roll-competence').click((event) => {
|
||||
let categKey = $(event.currentTarget).data("category-key")
|
||||
let skillKey = $(event.currentTarget).data("skill-key")
|
||||
this.actor.rollSkill(categKey, skillKey)
|
||||
});
|
||||
html.find('.roll-spec').click((event) => {
|
||||
let categKey = $(event.currentTarget).data("category-key")
|
||||
let skillKey = $(event.currentTarget).data("skill-key")
|
||||
let specId = $(event.currentTarget).data("spec-id")
|
||||
this.actor.rollSpec(categKey, skillKey, specId)
|
||||
});
|
||||
html.find('.roll-skill-confront').click((event) => {
|
||||
let categKey = $(event.currentTarget).data("category-key")
|
||||
let skillKey = $(event.currentTarget).data("skill-key")
|
||||
this.actor.rollSkillConfront(categKey, skillKey)
|
||||
});
|
||||
html.find('.roll-cephaly').click((event) => {
|
||||
let skillKey = $(event.currentTarget).data("skill-key")
|
||||
this.actor.rollCephalySkillConfront(skillKey)
|
||||
});
|
||||
html.find('.roll-weapon-confront').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let weaponId = li.data("item-id");
|
||||
this.actor.rollWeaponConfront(weaponId)
|
||||
});
|
||||
|
||||
html.find('.impact-modify').click((event) => {
|
||||
let impactType = $(event.currentTarget).data("impact-type")
|
||||
let impactLevel = $(event.currentTarget).data("impact-level")
|
||||
let modifier = Number($(event.currentTarget).data("impact-modifier"))
|
||||
this.actor.modifyImpact(impactType, impactLevel, modifier)
|
||||
});
|
||||
|
||||
html.find('.roll-weapon').click((event) => {
|
||||
html.find('.roll-arme').click((event) => {
|
||||
const armeId = $(event.currentTarget).data("arme-id")
|
||||
this.actor.rollArme(armeId)
|
||||
});
|
||||
|
@ -14,7 +14,7 @@ export class TeDeumHotbar {
|
||||
if (documentData.type == "Item") {
|
||||
console.log("Drop done !!!", bar, documentData, slot)
|
||||
let item = documentData.data
|
||||
let command = `game.system.ecryme.EcrymeHotbar.rollMacro("${item.name}", "${item.type}");`
|
||||
let command = `game.system.tedeum.EcrymeHotbar.rollMacro("${item.name}", "${item.type}");`
|
||||
let macro = game.macros.contents.find(m => (m.name === item.name) && (m.command === command))
|
||||
if (!macro) {
|
||||
macro = await Macro.create({
|
||||
@ -75,11 +75,11 @@ export class TeDeumHotbar {
|
||||
return ui.notifications.warn(`Unable to find the item of the macro in the current actor`)
|
||||
}
|
||||
// Trigger the item roll
|
||||
if (item.type === "weapon") {
|
||||
return actor.rollWeapon( item.id)
|
||||
if (item.type === "arme") {
|
||||
return actor.rollArme( item.id)
|
||||
}
|
||||
if (item.type === "skill") {
|
||||
return actor.rollSkill( item.id)
|
||||
if (item.type === "competence") {
|
||||
return actor.rollCompetence( item.id)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,14 @@ export const LOCALISATION = {
|
||||
"tete":{ label: "Tête", value: 1, id :"tete", nbArmure: 2 },
|
||||
}
|
||||
|
||||
export const ARME_SPECIFICITE = {
|
||||
"encombrante": { label: "Encombrante", id :"encombrante" },
|
||||
"maintiendistance": { label: "Maintien à distance", id :"maintiendistance" },
|
||||
"treslongue": { label: "Très longue", id :"treslongue" },
|
||||
"coupassomant": { label: "Coup assomant", id :"coupassomant" },
|
||||
"peutlancer": { label: "Peut être lancée", id :"peutlancer" },
|
||||
}
|
||||
|
||||
export const TEDEUM_CONFIG = {
|
||||
descriptionValeur: {
|
||||
1: { qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
|
||||
|
30
modules/data/tedeum-schema-arme.js
Normal file
30
modules/data/tedeum-schema-arme.js
Normal file
@ -0,0 +1,30 @@
|
||||
export default class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
const requiredInteger = { required: true, nullable: false, integer: true };
|
||||
const schema = {};
|
||||
|
||||
schema.specificites = new fields.SchemaField(
|
||||
Object.values((ARME_SPECIFICITE)).reduce((obj, spec) => {
|
||||
obj[spec.id] = new fields.SchemaField({
|
||||
hasSpec: new fields.BooleanField({initial: false}),
|
||||
});
|
||||
return obj;
|
||||
}, {})
|
||||
);
|
||||
|
||||
schema.degatsArmure = new fields.SchemaField( {
|
||||
sansarmure : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
cuir : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
plates : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
mailles : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
});
|
||||
|
||||
schema.initiativeBonus = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
|
||||
|
||||
schema.degats = new fields.StringField({ required: false, blank: true, initial: undefined });
|
||||
schema.description = new fields.HTMLField({ required: true, blank: true });
|
||||
|
||||
return schema;
|
||||
}
|
||||
}
|
14
modules/data/tedeum-schema-competence.js
Normal file
14
modules/data/tedeum-schema-competence.js
Normal file
@ -0,0 +1,14 @@
|
||||
export default class TeDeumCompetenceSchema extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
const requiredInteger = { required: true, nullable: false, integer: true };
|
||||
const schema = {};
|
||||
|
||||
schema.caracteristique = new fields.StringField({ required: true, blank: false, initial: "puissance" });
|
||||
schema.score = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
|
||||
schema.scoreBase = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
|
||||
schema.description = new fields.HTMLField({ required: true, blank: true });
|
||||
|
||||
return schema;
|
||||
}
|
||||
}
|
@ -13,17 +13,17 @@ export class TeDeumRollDialog extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
constructor(actor, rollData, html, options, close = undefined) {
|
||||
let conf = {
|
||||
title: game.i18n.localize("ECRY.ui.rolltitle"),
|
||||
title: "Lancer !",
|
||||
content: html,
|
||||
buttons: {
|
||||
roll: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: game.i18n.localize("ECRY.ui.roll"),
|
||||
label: "Lancer",
|
||||
callback: () => { this.roll() }
|
||||
},
|
||||
cancel: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: game.i18n.localize("ECRY.ui.cancel"),
|
||||
label: "Annuler",
|
||||
callback: () => { this.close() }
|
||||
}
|
||||
},
|
||||
@ -43,7 +43,7 @@ export class TeDeumRollDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async refreshDialog() {
|
||||
const content = await renderTemplate("systems/fvtt-ecryme/templates/dialogs/roll-dialog-generic.hbs", this.rollData)
|
||||
const content = await renderTemplate("systems/fvtt-tedeum/templates/dialogs/roll-dialog-generic.hbs", this.rollData)
|
||||
this.data.content = content
|
||||
this.render(true)
|
||||
}
|
||||
@ -63,24 +63,6 @@ export class TeDeumRollDialog extends Dialog {
|
||||
html.find('#roll-difficulty').change((event) => {
|
||||
this.rollData.difficulty = Number(event.currentTarget.value) || 0
|
||||
})
|
||||
html.find('#roll-specialization').change((event) => {
|
||||
this.rollData.selectedSpecs = $('#roll-specialization').val()
|
||||
})
|
||||
html.find('#roll-trait-bonus').change((event) => {
|
||||
this.rollData.traitsBonus = $('#roll-trait-bonus').val()
|
||||
})
|
||||
html.find('#roll-trait-malus').change((event) => {
|
||||
this.rollData.traitsMalus = $('#roll-trait-malus').val()
|
||||
})
|
||||
html.find('#roll-select-transcendence').change((event) => {
|
||||
this.rollData.skillTranscendence = Number($('#roll-select-transcendence').val())
|
||||
})
|
||||
html.find('#roll-use-spleen').change((event) => {
|
||||
this.rollData.useSpleen = event.currentTarget.checked
|
||||
})
|
||||
html.find('#roll-use-ideal').change((event) => {
|
||||
this.rollData.useIdeal = event.currentTarget.checked
|
||||
})
|
||||
|
||||
}
|
||||
}
|
@ -10,7 +10,7 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-tedeum", "sheet", "item"],
|
||||
template: "systems/fvtt-tedeum/templates/item-sheet.hbs",
|
||||
template: "systems/fvtt-te-deum/templates/item-sheet.hbs",
|
||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||
width: 620,
|
||||
height: 580,
|
||||
@ -57,7 +57,7 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
editable: this.isEditable,
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
system: duplicate(this.object.system),
|
||||
config: duplicate(game.system.ecryme.config),
|
||||
config: duplicate(game.system.tedeum.config),
|
||||
limited: this.object.limited,
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
@ -66,10 +66,6 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
isGM: game.user.isGM
|
||||
}
|
||||
|
||||
if ( this.object.type == "archetype") {
|
||||
formData.tarots = EcrymeUtility.getTarots()
|
||||
}
|
||||
|
||||
this.options.editable = !(this.object.origin == "embeddedItem");
|
||||
console.log("ITEM DATA", formData, this);
|
||||
return formData;
|
||||
@ -104,8 +100,8 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
payload: chatData,
|
||||
});
|
||||
|
||||
renderTemplate('systems/Ecryme/templates/post-item.html', chatData).then(html => {
|
||||
let chatOptions = EcrymeUtility.chatDataSetup(html);
|
||||
renderTemplate('systems/fvtt-te-deum/templates/post-item.html', chatData).then(html => {
|
||||
let chatOptions = TeDeumUtility.chatDataSetup(html);
|
||||
ChatMessage.create(chatOptions)
|
||||
});
|
||||
}
|
||||
@ -121,7 +117,7 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
if (itemData.name != 'None') {
|
||||
let item = await Item.create(itemData, { temporary: true });
|
||||
item.system.origin = "embeddedItem";
|
||||
new EcrymeItemSheet(item).render(true);
|
||||
new TeDeumItemSheet(item).render(true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,7 +129,7 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
let itemData = this.object.system[field][idx];
|
||||
if (itemData.name != 'None') {
|
||||
let newArray = [];
|
||||
for (var i = 0; i < oldArray.length; i++) {
|
||||
for (let i = 0; i < oldArray.length; i++) {
|
||||
if (i != idx) {
|
||||
newArray.push(oldArray[i]);
|
||||
}
|
||||
@ -174,7 +170,7 @@ export class TeDeumItemSheet extends ItemSheet {
|
||||
/* -------------------------------------------- */
|
||||
get template() {
|
||||
let type = this.item.type;
|
||||
return `systems/fvtt-ecryme/templates/items/item-${type}-sheet.hbs`
|
||||
return `systems/fvtt-te-deum/templates/items/item-${type}-sheet.hbs`
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -11,6 +11,7 @@
|
||||
import { TeDeumActor } from "./actors/tedeum-actor.js";
|
||||
import { TeDeumItemSheet } from "./items/tedeum-item-sheet.js";
|
||||
import { TeDeumActorSheet } from "./actors/tedeum-actor-sheet.js";
|
||||
import { TeDeumPJSchema } from "./common/tedeum-schema-pj.js";
|
||||
import { TeDeumUtility } from "./common/tedeum-utility.js";
|
||||
import { TeDeumCombat } from "./app/tedeum-combat.js";
|
||||
import { TeDeumItem } from "./items/tedeum-item.js";
|
||||
@ -27,7 +28,7 @@ Hooks.once("init", async function () {
|
||||
console.log(`Initializing TeDeum RPG`);
|
||||
|
||||
game.system.tedeum = {
|
||||
config: ECRYME_CONFIG,
|
||||
config: TEDEUM_CONFIG,
|
||||
TeDeumHotbar
|
||||
}
|
||||
|
||||
@ -47,21 +48,24 @@ Hooks.once("init", async function () {
|
||||
TeDeumUtility.onSocketMesssage(data)
|
||||
});
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Define custom Entity classes
|
||||
CONFIG.Combat.documentClass = TeDeumCombat
|
||||
CONFIG.Actor.documentClass = TeDeumActor
|
||||
CONFIG.Actor.documentClass = TeDeumActor;
|
||||
CONFIG.Item.documentClass = TeDeumItem
|
||||
CONFIG.Actor.dataModels = {
|
||||
pj: TeDeumPJSchema,
|
||||
pnj: TeDeumPJSchema,
|
||||
};
|
||||
CONFIG.Item.dataModels = {
|
||||
arme: models.TeDeumArmeSchema,
|
||||
competence: models.TeDeumCompetenceSchema,
|
||||
};
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("fvtt-tedeum", TeDeumActorSheet, { types: ["pc"], makeDefault: true });
|
||||
Actors.registerSheet("fvtt-tedeum", TeDeumActorSheet, { types: ["npc"], makeDefault: true });
|
||||
Actors.registerSheet("fvtt-tedeum", TeDeumAnnencySheet, { types: ["annency"], makeDefault: false });
|
||||
|
||||
Actors.registerSheet(SYSTEM_ID, TeDeumActorPJSheet, { types: ["pj"], makeDefault: true });
|
||||
Actors.registerSheet(SYSTEM_ID, TeDeumActorPJSheet, { types: ["pnj"], makeDefault: true });
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-tedeum", TeDeumItemSheet, { makeDefault: true });
|
||||
Items.registerSheet(SYSTEM_ID, TeDeumItemSheet, { makeDefault: true });
|
||||
|
||||
TeDeumUtility.init()
|
||||
});
|
||||
|
Reference in New Issue
Block a user