Initial import

This commit is contained in:
LeRatierBretonnien 2023-12-11 21:41:51 +01:00
parent db5fbb0e63
commit 4c0e70a77e
12 changed files with 122 additions and 463 deletions

View File

@ -3,7 +3,7 @@
* @extends {ActorSheet}
*/
import { EcrymeUtility } from "../common/tedeum-utility.js";
import { TeDeumUtility } from "../common/tedeum-utility.js";
/* -------------------------------------------- */
export class EcrymeActorSheet extends ActorSheet {
@ -12,8 +12,8 @@ export class EcrymeActorSheet extends ActorSheet {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme", "sheet", "actor"],
template: "systems/fvtt-ecryme/templates/actors/actor-sheet.hbs",
classes: ["fvtt-tedeum", "sheet", "actor"],
template: "systems/fvtt-tedeum/templates/actors/actor-sheet.hbs",
width: 860,
height:680,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" }],

View File

@ -1,7 +1,5 @@
/* -------------------------------------------- */
import { EcrymeUtility } from "../common/ecryme-utility.js";
import { EcrymeRollDialog } from "../dialogs/ecryme-roll-dialog.js";
import { EcrymeConfrontStartDialog } from "../dialogs/ecryme-confront-start-dialog.js";
import { TeDeumUtility } from "../common/tedeum-utility.js";
/* -------------------------------------------- */
/* -------------------------------------------- */
@ -9,7 +7,7 @@ import { EcrymeConfrontStartDialog } from "../dialogs/ecryme-confront-start-dial
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
* @extends {Actor}
*/
export class EcrymeActor extends Actor {
export class TeDeumActor extends Actor {
/* -------------------------------------------- */
/**

View File

@ -1,7 +1,7 @@
import { EcrymeUtility } from "../common/tedeum-utility.js";
import { TeDeumUtility } from "../common/tedeum-utility.js";
/* -------------------------------------------- */
export class EcrymeCombat extends Combat {
export class TeDeumCombat extends Combat {
/* -------------------------------------------- */
async rollInitiative(ids, formula = undefined, messageOptions = {} ) {

View File

@ -1,13 +1,12 @@
/* -------------------------------------------- */
import { EcrymeUtility } from "../common/tedeum-utility.js";
import { EcrymeCharacterSummary } from "./ecryme-summary-app.js"
import { TeDeumUtility } from "../common/tedeum-utility.js";
/* -------------------------------------------- */
export class EcrymeCommands {
static init() {
if (!game.system.ecryme.commands) {
if (!game.system.tedeum.commands) {
const commands = new EcrymeCommands();
commands.registerCommand({ path: ["/resume"], func: (content, msg, params) => EcrymeCharacterSummary.displayPCSummary(), descr: "Affiche la liste des PJs!" });
game.system.ecryme.commands = commands;

View File

@ -1,5 +1,5 @@
export class EcrymeHotbar {
export class TeDeumHotbar {
/**
* Create a macro when dropping an entity on the hotbar

View File

@ -1,62 +1,71 @@
export const SYSTEM_ID = "fvtt-te-deum";
export const ECRYME_CONFIG = {
export const LOCALISATION = {
"pieddroit":{ label: "Pied Droit", value: 1, id :"pieddroit", nbArmure: 1 },
"jambedroite": { label: "Jambe Droite", value: 1, id :"jambedroite", nbArmure: 1 },
"jambegauche": { label: "Jambe Gauche", value: 1, id :"jambegauche", nbArmure: 1 },
"piedgauche":{ label: "Pied Gauche", value: 1, id :"piedgauche", nbArmure: 1 },
"piedgauche":{ label: "Pied Gauche", value: 1, id :"piedgauche", nbArmure: 1 },
"maindroite":{ label: "Main Droite", value: 1, id :"maindroite", nbArmure: 1 },
"maingauche":{ label: "Main Gauche", value: 1, id :"maingauche", nbArmure: 1 },
"brasdroit":{ label: "Bras Droit", value: 1, id :"brasdroit", nbArmure: 2 },
"brasgauche":{ label: "Bras Gauche", value: 1, id :"brasgauche", nbArmure: 2 },
"corps":{ label: "Corps", value: 1, id :"corps", nbArmure: 2 },
"tete":{ label: "Tête", value: 1, id :"tete", nbArmure: 2 },
}
traitTypes: {
normal: "Normal",
spleen: "Spleen",
ideal: "Ideal"
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é" },
2: { qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Frustre", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
3: { qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
4: { qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
5: { qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
6: { qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
7: { qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
8: { qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
9: { qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
10: { qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
11: { qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
12: { qualite: "Admirabme", dice: "d20", negativeDice: "d4", savoir: "Humaniste", sensibilite: "Spirituel", entregent: "Sémillant", puissance: "Hercule", complexion: "Aguerri", adresse: "Alerte" },
},
weaponTypes: {
"melee": "ECRY.ui.melee",
"ranged": "ECRY.ui.ranged"
caracteristiques: {
savoir: { id: "savoir", value: 1, label: "Savoir" },
sensibilite: { id: "sensibilite", value: 1, label: "Sensibilité" },
entregent: { id: "entregent", value: 1, label: "Entregent" },
complexion: { id: "complexion", value: 1, label: "Complexion" },
puissance: { id:"puissance", value: 1, label: "Puissance" },
adresse: { id: "adresse", value: 1, label: "Adresse" },
},
traitLevel: [
{value: -3, text: "-3"},
{value: -2, text: "-2"},
{value: -1, text: "-1"},
{value: +1, text: "+1"},
{value: +2, text: "+2"},
{value: +3, text: "+3"}
],
impactTypes: {
physical: "ECRY.ui.physical",
mental: "ECRY.ui.mental",
social: "ECRY.ui.social"
localisation: {
1: LOCALISATION.pieddroit,
2: LOCALISATION.piedgauche,
3: LOCALISATION.jambedroite,
4: LOCALISATION.jambedroite,
5: LOCALISATION.jambegauche,
6: LOCALISATION.jambegauche,
7: LOCALISATION.maindroite,
8: LOCALISATION.maingauche,
9: LOCALISATION.brasdroit,
10: LOCALISATION.brasdroit,
11: LOCALISATION.brasgauche,
12: LOCALISATION.brasgauche,
13: LOCALISATION.corps,
14: LOCALISATION.corps,
15: LOCALISATION.corps,
16: LOCALISATION.corps,
17: LOCALISATION.corps,
18: LOCALISATION.tete,
19: LOCALISATION.tete,
20: LOCALISATION.tete
},
impactLevels: {
superficial: "ECRY.ui.superficial",
light: "ECRY.ui.light",
serious: "ECRY.ui.serious",
major: "ECRY.ui.major"
},
difficulty: {
"-1": {difficulty: "ECRY.ui.none", frequency: "ECRY.ui.none", value: "-"},
"8": { difficulty: "ECRY.ui.troublesome", frequency: "ECRY.ui.occasional", value: 8 },
"10": { difficulty: "ECRY.ui.difficult", frequency: "ECRY.ui.uncommon", value: 10 },
"12": { difficulty: "ECRY.ui.verydifficult", frequency: "ECRY.ui.rare", value: 12 },
"14": { difficulty: "ECRY.ui.extremdifficult", frequency: "ECRY.ui.veryrare", value: 14 },
"16": { difficulty: "ECRY.ui.increddifficult", frequency: "ECRY.ui.exceptrare", value: 16 },
},
skillLevel: {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10"
},
costUnits: {
"ingot": {name: "ECRY.ui.ingot", value: 100000},
"ingotin": {name: "ECRY.ui.ingotin", value: 10000},
"goldcoin": {name: "ECRY.ui.goldcoin", value: 1000 },
"lige": {name: "ECRY.ui.lige", value: 100 },
"hurle": {name: "ECRY.ui.hurle", value: 10 },
"coin": {name: "ECRY.ui.coin", value: 1 }
difficulte: {
routine: {label: "Routine", value: 3},
facile: {label: "Facile", value: 5},
pardefaut: {label: "Par Défaut", value: 7},
malaise: {label: "Malaisé", value: 9},
difficile: {label: "difficile", value:11},
perilleux: {label: "Perilleux", value:13},
desespere: {label: "Désespéré", value:15}
}
}

View File

@ -1,47 +1,13 @@
/* -------------------------------------------- */
import { EcrymeCommands } from "../app/tedeum-commands.js";
/* -------------------------------------------- */
const __maxImpacts = { superficial: 4, light: 3, serious: 2, major: 1 }
const __nextImpacts = { superficial: "light", light: "serious", serious: "major", major: "major" }
const __effect2Impact = ["none", "superficial", "superficial", "light", "light", "serious", "serious", "major", "major"]
const __cephalySuccess = {
1: "cephaly-success-2",
2: "cephaly-success-2",
3: "cephaly-success-4",
4: "cephaly-success-4",
5: "cephaly-success-6",
6: "cephaly-success-6",
7: "cephaly-success-8",
8: "cephaly-success-8",
9: "cephaly-success-9",
10: "cephaly-success-10"
}
const __cephalyFailure = {
1: "cephaly-failure-2",
2: "cephaly-failure-2",
3: "cephaly-failure-4",
4: "cephaly-failure-4",
5: "cephaly-failure-6",
6: "cephaly-failure-6",
7: "cephaly-failure-8",
8: "cephaly-failure-8",
9: "cephaly-failure-9",
10: "cephaly-failure-10"
}
/* -------------------------------------------- */
export class EcrymeUtility {
export class TeDeumUtility {
/* -------------------------------------------- */
static async init() {
Hooks.on('renderChatLog', (log, html, data) => EcrymeUtility.chatListeners(html));
Hooks.on("getChatLogEntryContext", (html, options) => EcrymeUtility.chatMenuManager(html, options));
Hooks.on('renderChatLog', (log, html, data) => TeDeumUtility.chatListeners(html));
Hooks.on("getChatLogEntryContext", (html, options) => TeDeumUtility.chatMenuManager(html, options));
this.rollDataStore = {}
this.defenderStore = {}
EcrymeCommands.init();
}
/* -------------------------------------------- */

View File

@ -1,13 +1,13 @@
import { EcrymeUtility } from "../common/ecryme-utility.js";
import { TeDeumUtility } from "../common/tedeum-utility.js";
export class EcrymeRollDialog extends Dialog {
export class TeDeumRollDialog extends Dialog {
/* -------------------------------------------- */
static async create(actor, rollData) {
let options = { classes: ["ecryme-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-ecryme/templates/dialogs/roll-dialog-generic.hbs', rollData);
return new EcrymeRollDialog(actor, rollData, html, options);
let options = { classes: ["tedeum-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-tedeum/templates/dialogs/roll-dialog-generic.hbs', rollData);
return new TeDeumRollDialog(actor, rollData, html, options);
}
/* -------------------------------------------- */

View File

@ -1,16 +1,16 @@
import { EcrymeUtility } from "../common/tedeum-utility.js";
import { TeDeumUtility } from "../common/tedeum-utility.js";
/**
* Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet}
*/
export class EcrymeItemSheet extends ItemSheet {
export class TeDeumItemSheet extends ItemSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme", "sheet", "item"],
template: "systems/fvtt-ecryme/templates/item-sheet.hbs",
classes: ["fvtt-tedeum", "sheet", "item"],
template: "systems/fvtt-tedeum/templates/item-sheet.hbs",
dragDrop: [{ dragSelector: null, dropSelector: null }],
width: 620,
height: 580,

View File

@ -1,21 +1,16 @@
import { EcrymeUtility } from "../common/ecryme-utility.js";
import { TeDeumUtility } from "../common/tedeum-utility.js";
export const defaultItemImg = {
weapon: "systems/fvtt-ecryme/images/icons/icon_weapon.webp",
arme: "systems/fvtt-ecryme/images/icons/icon_arme.webp",
equipment: "systems/fvtt-ecryme/images/icons/icon_equipment.webp",
contact: "systems/fvtt-ecryme/images/icons/icon_contact.webp",
boheme: "systems/fvtt-ecryme/images/icons/icon_boheme.webp",
trait: "systems/fvtt-ecryme/images/icons/icon_trait.webp",
annency: "systems/fvtt-ecryme/images/icons/icon_annency.webp",
skill: "systems/fvtt-ecryme/images/icons/icon_skill.webp",
specialization: "systems/fvtt-ecryme/images/icons/icon_spec.webp"
competence: "systems/fvtt-ecryme/images/icons/icon_competence.webp",
}
/**
* Extend the basic ItemSheet with some very simple modifications
* @extends {ItemSheet}
*/
export class EcrymeItem extends Item {
export class TeDeumItem extends Item {
constructor(data, context) {
if (!data.img) {

View File

@ -1,5 +1,5 @@
/**
* Ecryme system
* Te Deum system
* Author: Uberwald
* Software License: Prop
*/
@ -8,16 +8,14 @@
/* -------------------------------------------- */
// Import Modules
import { EcrymeActor } from "./actors/ecryme-actor.js";
import { EcrymeItemSheet } from "./items/tedeum-item-sheet.js";
import { EcrymeActorSheet } from "./actors/ecryme-actor-sheet.js";
import { EcrymeAnnencySheet } from "./actors/ecryme-annency-sheet.js";
import { EcrymeUtility } from "./common/ecryme-utility.js";
import { EcrymeCombat } from "./app/ecryme-combat.js";
import { EcrymeItem } from "./items/ecryme-item.js";
import { EcrymeHotbar } from "./app/ecryme-hotbar.js"
import { EcrymeCharacterSummary } from "./app/ecryme-summary-app.js"
import { ECRYME_CONFIG } from "./common/ecryme-config.js"
import { TeDeumActor } from "./actors/tedeum-actor.js";
import { TeDeumItemSheet } from "./items/tedeum-item-sheet.js";
import { TeDeumActorSheet } from "./actors/tedeum-actor-sheet.js";
import { TeDeumUtility } from "./common/tedeum-utility.js";
import { TeDeumCombat } from "./app/tedeum-combat.js";
import { TeDeumItem } from "./items/tedeum-item.js";
import { TeDeumHotbar } from "./app/tedeum-hotbar.js"
import { TEDEUM_CONFIG } from "./common/tedeum-config.js"
/* -------------------------------------------- */
/* Foundry VTT Initialization */
@ -26,16 +24,16 @@ import { ECRYME_CONFIG } from "./common/ecryme-config.js"
/************************************************************************************/
Hooks.once("init", async function () {
console.log(`Initializing Ecryme RPG`);
console.log(`Initializing TeDeum RPG`);
game.system.ecryme = {
game.system.tedeum = {
config: ECRYME_CONFIG,
EcrymeHotbar
TeDeumHotbar
}
/* -------------------------------------------- */
// preload handlebars templates
EcrymeUtility.preloadHandlebarsTemplates();
TeDeumUtility.preloadHandlebarsTemplates();
/* -------------------------------------------- */
// Set an initiative formula for the system
@ -45,31 +43,27 @@ Hooks.once("init", async function () {
};
/* -------------------------------------------- */
game.socket.on("system.fvtt-ecryme", data => {
EcrymeUtility.onSocketMesssage(data)
game.socket.on("system.fvtt-tedeum", data => {
TeDeumUtility.onSocketMesssage(data)
});
/* -------------------------------------------- */
// Define custom Entity classes
CONFIG.Combat.documentClass = EcrymeCombat
CONFIG.Actor.documentClass = EcrymeActor
CONFIG.Item.documentClass = EcrymeItem
CONFIG.Combat.documentClass = TeDeumCombat
CONFIG.Actor.documentClass = TeDeumActor
CONFIG.Item.documentClass = TeDeumItem
/* -------------------------------------------- */
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["npc"], makeDefault: true });
Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false });
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 });
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
EcrymeUtility.init()
console.log("Babele INIT!")
Babele.get().setSystemTranslationsDir("translated")
Items.registerSheet("fvtt-tedeum", TeDeumItemSheet, { makeDefault: true });
TeDeumUtility.init()
});
/* -------------------------------------------- */
@ -78,8 +72,8 @@ function welcomeMessage() {
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: `<div id="welcome-message-ecryme"><span class="rdd-roll-part">
<strong>Bienvenu dans Ecryme !</strong>` });
content: `<div id="welcome-message-tedeum"><span class="rdd-roll-part">
<strong>Bienvenu dans TeDeum !</strong>` });
}
}
@ -125,8 +119,7 @@ Hooks.once("ready", function () {
registerUsageCount(game.system.id)
welcomeMessage();
EcrymeUtility.ready()
EcrymeCharacterSummary.ready()
TeDeumUtility.ready()
})
@ -138,7 +131,7 @@ Hooks.on("chatMessage", (html, content, msg) => {
if (content[0] == '/') {
let regExp = /(\S+)/g;
let commands = content.match(regExp);
if (game.system.ecryme.commands.processChatCommand(commands, content, msg)) {
if (game.system.tedeum.commands.processChatCommand(commands, content, msg)) {
return false;
}
}

View File

@ -1,312 +1,11 @@
{
"Actor": {
"types": [
"pc","annency", "npc"
],
"templates": {
"biodata": {
"biodata": {
"age": "",
"size": "",
"lieunaissance": "",
"nationalite": "",
"profession": "",
"residence": "",
"milieusocial": "",
"poids": "",
"cheveux": "",
"sexe": "",
"yeux": "",
"enfance": "",
"description": "",
"gmnotes": ""
}
},
"core": {
"subactors": [],
"equipmentfree": "",
"skills": {
"physical": {
"name": "ECRY.ui.physical",
"skilllist": {
"athletics": {
"name": "ECRY.ui.athletics",
"max": 0,
"value": 0
},
"driving": {
"name": "ECRY.ui.driving",
"max": 0,
"value": 0
},
"fencing": {
"name": "ECRY.ui.fencing",
"max": 0,
"value": 0
},
"brawling": {
"name": "ECRY.ui.brawling",
"max": 0,
"value": 0
},
"shooting": {
"name": "ECRY.ui.shooting",
"max": 0,
"value": 0
}
}
},
"mental": {
"name": "ECRY.ui.mental",
"skilllist": {
"anthropomecanology": {
"name": "ECRY.ui.anthropomecanology",
"value": 0,
"max": 10
},
"ecrymology": {
"name": "ECRY.ui.ecrymology",
"value": 0,
"max": 10
},
"traumatology": {
"name": "ECRY.ui.traumatology",
"value": 0,
"max": 10
},
"traversology": {
"name": "ECRY.ui.traversology",
"value": 0,
"max": 10
},
"urbatechnology": {
"name": "ECRY.ui.urbatechnology",
"value": 0,
"max": 10
}
}
},
"social": {
"name": "ECRY.ui.social",
"skilllist": {
"quibbling": {
"name": "ECRY.ui.quibbling",
"value": 0,
"max": 10
},
"creativity": {
"name": "ECRY.ui.creativity",
"value": 0,
"max": 10
},
"loquacity": {
"name": "ECRY.ui.loquacity",
"value": 0,
"max": 10
},
"guile": {
"name": "ECRY.ui.guile",
"value": 0,
"max": 10
},
"performance": {
"name": "ECRY.ui.performance",
"value": 0,
"max": 10
}
}
}
},
"impacts": {
"physical": {
"superficial": 0,
"light": 0,
"serious": 0,
"major": 0
},
"mental": {
"superficial": 0,
"light": 0,
"serious": 0,
"major": 0
},
"social": {
"superficial": 0,
"light": 0,
"serious": 0,
"major": 0
}
},
"cephaly": {
"name": "ECRY.ui.cephaly",
"skilllist": {
"elegy": {
"name": "ECRY.ui.elegy",
"value": 0,
"max": 10
},
"entelechy": {
"name": "ECRY.ui.entelechy",
"value": 0,
"max": 10
},
"mekany": {
"name": "ECRY.ui.mekany",
"value": 0,
"max": 10
},
"psyche": {
"name": "ECRY.ui.psyche",
"value": 0,
"max": 10
},
"scoria": {
"name": "ECRY.ui.scoria",
"value": 0,
"max": 10
}
}
},
"internals": {
"confrontbonus": 0
}
},
"npccore": {
"npctype": "",
"description": ""
},
"annency": {
"base": {
"iscollective": false,
"ismultiple": false,
"characters": [],
"location": {"1": "", "2": "", "3":"", "4":"", "5":"" },
"description": "",
"enhancements": ""
},
"boheme": {
"name": "",
"ideals": "",
"politic": "",
"description": ""
}
}
},
"annency": {
"templates": [
"annency"
]
},
"npc": {
"templates": [
"biodata",
"core"
]
},
"pc": {
"templates": [
"biodata",
"core"
]
}
"types": ["pj", "pnj"],
"pj": {},
"pnj": {}
},
"Item": {
"types": [
"equipment",
"trait",
"weapon",
"specialization",
"maneuver"
],
"templates": {
"common": {
"description": ""
},
"equipement": {
"weight": 0,
"cost": 0,
"costunit": ""
}
},
"maneuver": {
"templates": [
"common"
]
},
"confrontation": {
"templates": [
"common"
],
"attackerId": "",
"defenserId": "",
"rolllist": [],
"bonusexecution": 0,
"bonuspreservation": 0
},
"equipment": {
"templates": [
"common",
"equipement"
],
"quantity": 1,
"weight": 0
},
"trait": {
"templates": [
"common"
],
"traitype": "normal",
"level": 1
},
"weapon": {
"templates": [
"common",
"equipement"
],
"weapontype": "melee",
"effect": 0
},
"specialization": {
"bonus": 2,
"templates": [
"common"
],
"skillkey": ""
},
"scar": {
"templates": [
"common"
],
"skillcategory": [
"physical",
"mental",
"social",
"cephalie"
],
"scarLevel": 1
},
"annency": {
"templates": [
"common"
],
"collective": false,
"multiple": false,
"improvements": ""
},
"boheme": {
"templates": [
"common"
],
"ideals": "",
"political": ""
},
"contact": {
"templates": [
"common"
],
"attitude": "neutral",
"organization": "",
"location": ""
}
"types": ["arme"],
"arme": {}
}
}