Annence/Boheme

This commit is contained in:
LeRatierBretonnien 2023-08-08 14:54:39 +02:00
parent 61a1a4a904
commit b2219c0f81
30 changed files with 410 additions and 141 deletions

View File

@ -155,7 +155,8 @@
"enhancements": "Enhancements",
"oniricform": "Oniric shape (Boheme)",
"ideals": "Ideals",
"politic": "Political ideal"
"politic": "Political ideal",
"boheme": "Boheme"
}
}
}

View File

@ -156,7 +156,8 @@
"enhancements": "Améliorations",
"oniricform": "Forme Onorique (Bohême)",
"ideals": "Idéaux",
"politic": "Idéaux politiques"
"politic": "Idéaux politiques",
"boheme": "Bohême"
}
}
}

View File

@ -52,6 +52,7 @@ export class EcrymeActorSheet extends ActorSheet {
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 }),
@ -79,6 +80,12 @@ 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")

View File

@ -68,6 +68,31 @@ export class EcrymeActor extends Actor {
return comp;
}
/* -------------------------------------------- */
buildAnnencyActorList() {
let membersFull = {}
for(let id of this.system.base.characters) {
let actor = game.actors.get(id)
membersFull[id] = { name: actor.name, id: actor.id, img: actor.img }
}
return membersFull
}
/* ----------------------- --------------------- */
addAnnencyActor(actorId) {
let members = duplicate(this.system.base.characters)
members.push(actorId)
this.update({ 'system.base.characters': members })
}
async removeAnnencyActor(actorId) {
let members = this.system.base.characters.filter(id => id != actorId)
this.update({ 'system.base.characters': members })
}
/* -------------------------------------------- */
getAnnency() {
return game.actors.find(a => a.type == 'annency' && a.system.base.characters.includes(this.id))
}
/* -------------------------------------------- */
getConfrontations() {
return this.items.filter(it => it.type == "confrontation")

View File

@ -0,0 +1,143 @@
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
import { EcrymeUtility } from "../common/ecryme-utility.js";
/* -------------------------------------------- */
export class EcrymeAnnencySheet extends ActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["fvtt-ecryme", "sheet", "actor"],
template: "systems/fvtt-ecryme/templates/actors/annency-sheet.hbs",
width: 640,
height: 600,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "annency" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: true
});
}
/* -------------------------------------------- */
async getData() {
let formData = {
title: this.title,
id: this.actor.id,
type: this.actor.type,
img: this.actor.img,
name: this.actor.name,
editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked",
system: duplicate(this.object.system),
limited: this.object.limited,
config: duplicate(game.system.ecryme.config),
hasCephaly: EcrymeUtility.hasCephaly(),
hasBoheme: EcrymeUtility.hasBoheme(),
hasAmertume: EcrymeUtility.hasAmertume(),
characters: this.actor.buildAnnencyActorList(),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
isGM: game.user.isGM
}
this.formData = formData;
console.log("Annency : ", formData, this.object);
return formData;
}
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
super.activateListeners(html);
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
html.bind("keydown", function (e) { // Ignore Enter in actores sheet
if (e.keyCode === 13) return false;
});
html.find('.actor-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let actorId = li.data("actor-id")
const actor = game.actors.get(actorId)
actor.sheet.render(true)
})
html.find('.actor-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let actorId = li.data("actor-id")
this.actor.removeAnnencyActor(actorId)
})
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
const item = this.actor.items.get(itemId);
item.sheet.render(true);
});
// Delete Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item")
EcrymeUtility.confirmDelete(this, li).catch("Error : No deletion confirmed")
})
html.find('.item-add').click(ev => {
let dataType = $(ev.currentTarget).data("type")
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
})
html.find('.subactor-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let actorId = li.data("actor-id");
let actor = game.actors.get(actorId);
actor.sheet.render(true);
});
html.find('.subactor-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let actorId = li.data("actor-id");
this.actor.delSubActor(actorId);
});
html.find('.update-field').change(ev => {
const fieldName = $(ev.currentTarget).data("field-name");
let value = Number(ev.currentTarget.value);
this.actor.update({ [`${fieldName}`]: value });
});
}
/* -------------------------------------------- */
async _onDropActor(event, dragData) {
const actor = fromUuidSync(dragData.uuid)
if (actor) {
this.actor.addAnnencyActor(actor.id)
} else {
ui.notifications.warn("Actor not found")
}
super._onDropActor(event)
}
/* -------------------------------------------- */
/** @override */
setPosition(options = {}) {
const position = super.setPosition(options);
const sheetBody = this.element.find(".sheet-body");
const bodyHeight = position.height - 192;
sheetBody.css("height", bodyHeight);
return position;
}
/* -------------------------------------------- */
/** @override */
_updateObject(event, formData) {
// Update the Actor
return this.object.update(formData);
}
}

View File

@ -11,6 +11,7 @@
import { EcrymeActor } from "./actors/ecryme-actor.js";
import { EcrymeItemSheet } from "./items/ecryme-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";
@ -58,7 +59,7 @@ Hooks.once("init", async function () {
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
//Actors.registerSheet("fvtt-ecryme", EcrymeNPCSheet, { types: ["pnj"], makeDefault: false });
Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false });
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });

View File

@ -1 +1 @@
MANIFEST-000038
MANIFEST-000046

View File

@ -1,7 +1,7 @@
2023/08/08-09:07:13.603738 7f5867fff6c0 Recovering log #36
2023/08/08-09:07:13.613379 7f5867fff6c0 Delete type=3 #34
2023/08/08-09:07:13.613547 7f5867fff6c0 Delete type=0 #36
2023/08/08-09:07:28.094335 7f58677fe6c0 Level-0 table #41: started
2023/08/08-09:07:28.094367 7f58677fe6c0 Level-0 table #41: 0 bytes OK
2023/08/08-09:07:28.130086 7f58677fe6c0 Delete type=0 #39
2023/08/08-09:07:28.130372 7f58677fe6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
2023/08/08-14:38:49.036882 7f5afcdf86c0 Recovering log #44
2023/08/08-14:38:49.124780 7f5afcdf86c0 Delete type=3 #42
2023/08/08-14:38:49.124893 7f5afcdf86c0 Delete type=0 #44
2023/08/08-14:54:21.588098 7f58677fe6c0 Level-0 table #49: started
2023/08/08-14:54:21.588122 7f58677fe6c0 Level-0 table #49: 0 bytes OK
2023/08/08-14:54:21.594444 7f58677fe6c0 Delete type=0 #47
2023/08/08-14:54:21.607310 7f58677fe6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/08/08-08:56:25.009827 7f5afcdf86c0 Recovering log #32
2023/08/08-08:56:25.043068 7f5afcdf86c0 Delete type=3 #30
2023/08/08-08:56:25.043112 7f5afcdf86c0 Delete type=0 #32
2023/08/08-09:07:10.720233 7f58677fe6c0 Level-0 table #37: started
2023/08/08-09:07:10.720259 7f58677fe6c0 Level-0 table #37: 0 bytes OK
2023/08/08-09:07:10.728506 7f58677fe6c0 Delete type=0 #35
2023/08/08-09:07:10.742534 7f58677fe6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
2023/08/08-14:36:00.338439 7f5867fff6c0 Recovering log #40
2023/08/08-14:36:00.347950 7f5867fff6c0 Delete type=3 #38
2023/08/08-14:36:00.348021 7f5867fff6c0 Delete type=0 #40
2023/08/08-14:38:45.882749 7f58677fe6c0 Level-0 table #45: started
2023/08/08-14:38:45.882812 7f58677fe6c0 Level-0 table #45: 0 bytes OK
2023/08/08-14:38:45.920058 7f58677fe6c0 Delete type=0 #43
2023/08/08-14:38:45.981054 7f58677fe6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000038
MANIFEST-000046

View File

@ -1,7 +1,7 @@
2023/08/08-09:07:13.616518 7f5867fff6c0 Recovering log #36
2023/08/08-09:07:13.626451 7f5867fff6c0 Delete type=3 #34
2023/08/08-09:07:13.626504 7f5867fff6c0 Delete type=0 #36
2023/08/08-09:07:28.173846 7f58677fe6c0 Level-0 table #41: started
2023/08/08-09:07:28.173906 7f58677fe6c0 Level-0 table #41: 0 bytes OK
2023/08/08-09:07:28.221287 7f58677fe6c0 Delete type=0 #39
2023/08/08-09:07:28.221402 7f58677fe6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
2023/08/08-14:38:49.155473 7f5867fff6c0 Recovering log #44
2023/08/08-14:38:49.260893 7f5867fff6c0 Delete type=3 #42
2023/08/08-14:38:49.260950 7f5867fff6c0 Delete type=0 #44
2023/08/08-14:54:21.600756 7f58677fe6c0 Level-0 table #49: started
2023/08/08-14:54:21.600776 7f58677fe6c0 Level-0 table #49: 0 bytes OK
2023/08/08-14:54:21.607211 7f58677fe6c0 Delete type=0 #47
2023/08/08-14:54:21.607330 7f58677fe6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/08/08-08:56:25.046084 7f5867fff6c0 Recovering log #32
2023/08/08-08:56:25.085371 7f5867fff6c0 Delete type=3 #30
2023/08/08-08:56:25.085419 7f5867fff6c0 Delete type=0 #32
2023/08/08-09:07:10.736291 7f58677fe6c0 Level-0 table #37: started
2023/08/08-09:07:10.736337 7f58677fe6c0 Level-0 table #37: 0 bytes OK
2023/08/08-09:07:10.742372 7f58677fe6c0 Delete type=0 #35
2023/08/08-09:07:10.742595 7f58677fe6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
2023/08/08-14:36:00.351163 7f5867fff6c0 Recovering log #40
2023/08/08-14:36:00.363535 7f5867fff6c0 Delete type=3 #38
2023/08/08-14:36:00.363690 7f5867fff6c0 Delete type=0 #40
2023/08/08-14:38:46.072007 7f58677fe6c0 Level-0 table #45: started
2023/08/08-14:38:46.072050 7f58677fe6c0 Level-0 table #45: 0 bytes OK
2023/08/08-14:38:46.103317 7f58677fe6c0 Delete type=0 #43
2023/08/08-14:38:46.137931 7f58677fe6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000038
MANIFEST-000046

View File

@ -1,7 +1,7 @@
2023/08/08-09:07:13.603739 7f5afddfa6c0 Recovering log #36
2023/08/08-09:07:13.613381 7f5afddfa6c0 Delete type=3 #34
2023/08/08-09:07:13.613431 7f5afddfa6c0 Delete type=0 #36
2023/08/08-09:07:28.018452 7f58677fe6c0 Level-0 table #41: started
2023/08/08-09:07:28.018491 7f58677fe6c0 Level-0 table #41: 0 bytes OK
2023/08/08-09:07:28.055806 7f58677fe6c0 Delete type=0 #39
2023/08/08-09:07:28.130329 7f58677fe6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
2023/08/08-14:38:49.036954 7f5867fff6c0 Recovering log #44
2023/08/08-14:38:49.153034 7f5867fff6c0 Delete type=3 #42
2023/08/08-14:38:49.153108 7f5867fff6c0 Delete type=0 #44
2023/08/08-14:54:21.558302 7f58677fe6c0 Level-0 table #49: started
2023/08/08-14:54:21.558341 7f58677fe6c0 Level-0 table #49: 0 bytes OK
2023/08/08-14:54:21.572779 7f58677fe6c0 Delete type=0 #47
2023/08/08-14:54:21.573011 7f58677fe6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/08/08-08:56:25.009829 7f5867fff6c0 Recovering log #32
2023/08/08-08:56:25.043069 7f5867fff6c0 Delete type=3 #30
2023/08/08-08:56:25.043120 7f5867fff6c0 Delete type=0 #32
2023/08/08-09:07:10.688033 7f58677fe6c0 Level-0 table #37: started
2023/08/08-09:07:10.688071 7f58677fe6c0 Level-0 table #37: 0 bytes OK
2023/08/08-09:07:10.694013 7f58677fe6c0 Delete type=0 #35
2023/08/08-09:07:10.710270 7f58677fe6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
2023/08/08-14:36:00.338438 7f5afd5f96c0 Recovering log #40
2023/08/08-14:36:00.347864 7f5afd5f96c0 Delete type=3 #38
2023/08/08-14:36:00.347905 7f5afd5f96c0 Delete type=0 #40
2023/08/08-14:38:46.031269 7f58677fe6c0 Level-0 table #45: started
2023/08/08-14:38:46.031315 7f58677fe6c0 Level-0 table #45: 0 bytes OK
2023/08/08-14:38:46.071808 7f58677fe6c0 Delete type=0 #43
2023/08/08-14:38:46.137889 7f58677fe6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000038
MANIFEST-000046

View File

@ -1,7 +1,7 @@
2023/08/08-09:07:13.616518 7f5afd5f96c0 Recovering log #36
2023/08/08-09:07:13.626497 7f5afd5f96c0 Delete type=3 #34
2023/08/08-09:07:13.626556 7f5afd5f96c0 Delete type=0 #36
2023/08/08-09:07:28.130506 7f58677fe6c0 Level-0 table #41: started
2023/08/08-09:07:28.130559 7f58677fe6c0 Level-0 table #41: 0 bytes OK
2023/08/08-09:07:28.173605 7f58677fe6c0 Delete type=0 #39
2023/08/08-09:07:28.221390 7f58677fe6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
2023/08/08-14:38:49.127661 7f5afcdf86c0 Recovering log #44
2023/08/08-14:38:49.237408 7f5afcdf86c0 Delete type=3 #42
2023/08/08-14:38:49.237452 7f5afcdf86c0 Delete type=0 #44
2023/08/08-14:54:21.594546 7f58677fe6c0 Level-0 table #49: started
2023/08/08-14:54:21.594573 7f58677fe6c0 Level-0 table #49: 0 bytes OK
2023/08/08-14:54:21.600659 7f58677fe6c0 Delete type=0 #47
2023/08/08-14:54:21.607322 7f58677fe6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/08/08-08:56:25.046084 7f5afcdf86c0 Recovering log #32
2023/08/08-08:56:25.085370 7f5afcdf86c0 Delete type=3 #30
2023/08/08-08:56:25.085408 7f5afcdf86c0 Delete type=0 #32
2023/08/08-09:07:10.728779 7f58677fe6c0 Level-0 table #37: started
2023/08/08-09:07:10.728820 7f58677fe6c0 Level-0 table #37: 0 bytes OK
2023/08/08-09:07:10.736158 7f58677fe6c0 Delete type=0 #35
2023/08/08-09:07:10.742554 7f58677fe6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
2023/08/08-14:36:00.351163 7f5afd5f96c0 Recovering log #40
2023/08/08-14:36:00.360537 7f5afd5f96c0 Delete type=3 #38
2023/08/08-14:36:00.360576 7f5afd5f96c0 Delete type=0 #40
2023/08/08-14:38:46.103419 7f58677fe6c0 Level-0 table #45: started
2023/08/08-14:38:46.103439 7f58677fe6c0 Level-0 table #45: 0 bytes OK
2023/08/08-14:38:46.137624 7f58677fe6c0 Delete type=0 #43
2023/08/08-14:38:46.137971 7f58677fe6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)

View File

@ -90,7 +90,7 @@
],
"title": "Ecryme, le Jeu de Rôles",
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme",
"version": "11.0.13",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.13.zip",
"version": "11.0.16",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.16.zip",
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
}

View File

@ -1,7 +1,7 @@
{
"Actor": {
"types": [
"pc"
"pc","annency"
],
"templates": {
"biodata": {
@ -136,20 +136,6 @@
"major": 0
}
},
"annency": {
"iscollective": false,
"ismultiple": false,
"characters": "",
"location": {"1": "", "2": "", "3":"", "4":"", "5":"" },
"description": "",
"enhancements": "",
"boheme": {
"name": "",
"ideals": "",
"politic": "",
"description": ""
}
},
"cephaly": {
"name": "ECRY.ui.cephaly",
"skilllist": {
@ -187,7 +173,28 @@
"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"
]
},
"pc": {
"templates": [

View File

@ -151,74 +151,20 @@
{{/each}}
</ul>
<h3>{{localize "ECRY.ui.annency"}}</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.iscollective"}}
</span>
<input type="checkbox" class="item-field-label-short" name="system.annency.iscollective"
value="{{system.annency.iscollective}}" {{checked system.annency.iscollective}} />
<span class="item-name-label-medium">
{{localize "ECRY.ui.ismultiple"}}
</span>
<input type="checkbox" class="item-field-label-short" name="system.annency.ismultiple"
value="{{system.annency.ismultiple}}" {{checked system.annency.ismultiple}} />
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.description"}}
</span>
<textarea class="textarea-default" rows="3" name="system.annency.description">{{system.annency.description}}</textarea>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.characters"}}
</span>
<textarea class="textarea-default" rows="3" name="system.annency.characters">{{system.annency.characters}}</textarea>
</li>
</ul>
<h3>{{localize "ECRY.ui.oniricform"}}</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.name"}}</span>
<input type="text" class="item-field-label-long" name="system.annency.boheme.name" value="{{system.annency.boheme.name}}" data-dtype="String"/>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.ideals"}}</span>
<input type="text" class="item-field-label-long" name="system.annency.boheme.ideals" value="{{system.annency.boheme.ideals}}" data-dtype="String"/>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.politic"}}</span>
<input type="text" class="item-field-label-long" name="system.annency.boheme.politic" value="{{system.annency.boheme.politic}}" data-dtype="String"/>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.description"}}</span>
<textarea class="textarea-default" rows="3" name="system.annency.boheme.description">{{system.annency.boheme.description}}</textarea>
</li>
</ul>
</div>
<div>
<h3>{{localize "ECRY.ui.annency"}}</h3>
{{#if annency}}
<h3>{{localize "ECRY.ui.annency"}} : <a class="open-annency" data-annency-id="{{annency.id}}">{{annency.name}}<i class="fas fa-edit"></i></a></h3>
<ul class="stat-list alternate-list item-list">
{{#each system.annency.location as |location index|}}
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.location"}} {{index}}
<span class="item-name-label-long">
{{annency.system.base.description}}
</span>
<textarea class="textarea-default" rows="3" name="system.annency.location.{{index}}">{{location}}</textarea>
</li>
{{/each}}
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.enhancements"}}
</span>
<textarea class="textarea-default" rows="3" name="system.annency.enhancements">{{system.annency.enhancements}}</textarea>
</li>
</ul>
{{/if}}
</div>
</div>

View File

@ -0,0 +1,138 @@
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="header-fields">
<div class="flexrow">
<div class="profile-img-container">
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
</div>
<div class="flexcol">
<h1 class="charname margin-right"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
<div class="flexrow">
<ul>
<li class="flexrow item" data-item-id="{{spleen.id}}">
<label class="item-name-label-medium">Description :</label>
<textarea class="textarea-default" rows="3" name="system.base.description">{{system.base.description}}</textarea>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
{{#if hasCephaly}}
<a class="item" data-tab="annency">{{localize "ECRY.ui.annency"}}</a>
{{/if}}
{{#if hasBoheme}}
<a class="item" data-tab="boheme">{{localize "ECRY.ui.boheme"}}</a>
{{/if}}
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{#if hasCephaly}}
{{!-- Cephaly Tab --}}
<div class="tab annency" data-group="primary" data-tab="annency">
<div class="grid grid-2col">
<div>
<h3>{{localize "ECRY.ui.annency"}}</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-short">
{{localize "ECRY.ui.iscollective"}}
</span>
<input type="checkbox" class="item-field-label-short" name="system.base.iscollective"
value="{{system.base.iscollective}}" {{checked system.base.iscollective}} />
<span class="item-name-label-short">
{{localize "ECRY.ui.ismultiple"}}
</span>
<input type="checkbox" class="item-field-label-short" name="system.base.ismultiple"
value="{{system.base.ismultiple}}" {{checked system.base.ismultiple}} />
</li>
</ul>
<h3>{{localize "ECRY.ui.characters"}}</h3>
<ul class="stat-list alternate-list item-list">
{{#each characters as |character id|}}
<li class="item flexrow " data-actor-id="{{character.id}}" >
<img class="item-name-img" src="{{character.img}}" />
<span class="item-name-label competence-name">{{character.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control actor-edit" title="Edit Actor"><i class="fas fa-edit"></i></a>
<a class="item-control actor-delete" title="Delete Actor"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div>
<h3>{{localize "ECRY.ui.location"}}</h3>
<ul class="stat-list alternate-list item-list">
{{#each system.base.location as |location index|}}
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.location"}} {{index}}
</span>
<textarea class="textarea-default" rows="3" name="system.base.location.{{index}}">{{location}}</textarea>
</li>
{{/each}}
<li class="item flexrow list-item">
<span class="item-name-label-medium">
{{localize "ECRY.ui.enhancements"}}
</span>
<textarea class="textarea-default" rows="3" name="system.base.enhancements">{{system.base.enhancements}}</textarea>
</li>
</ul>
</div>
</div>
</div>
{{/if}}
{{#if hasBoheme}}
<div class="tab boheme" data-group="primary" data-tab="boheme">
<h3>{{localize "ECRY.ui.oniricform"}}</h3>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.name"}}</span>
<input type="text" class="item-field-label-long" name="system.boheme.name" value="{{system.boheme.name}}" data-dtype="String"/>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.ideals"}}</span>
<input type="text" class="item-field-label-long" name="system.boheme.ideals" value="{{system.boheme.ideals}}" data-dtype="String"/>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.politic"}}</span>
<input type="text" class="item-field-label-long" name="system.boheme.politic" value="{{system.boheme.politic}}" data-dtype="String"/>
</li>
<li class="item flexrow list-item">
<span class="item-name-label-medium">{{localize "ECRY.ui.description"}}</span>
<textarea class="textarea-default" rows="3" name="system.boheme.description">{{system.boheme.description}}</textarea>
</li>
</ul>
</div>
{{/if}}
</section>
</form>