Compare commits
19 Commits
fvtt-ecrym
...
fvtt-ecrym
Author | SHA1 | Date | |
---|---|---|---|
bf94dc30b8 | |||
fc3b83cfc2 | |||
19b88c3de9 | |||
d669059403 | |||
45d419115d | |||
b9e2a77e88 | |||
5dca748bf3 | |||
98f9e1e2a6 | |||
1a90be13be | |||
e2f97762b9 | |||
de11053a9a | |||
3f7ce9918e | |||
919147b4af | |||
22953744ba | |||
6aee41b817 | |||
e7268a1578 | |||
0d25bbe764 | |||
554a1af531 | |||
b2219c0f81 |
54
.gitea/workflows/main.yml
Normal file
54
.gitea/workflows/main.yml
Normal file
@ -0,0 +1,54 @@
|
||||
name: Release Creation
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
|
||||
|
||||
#- uses: actions/checkout@v3
|
||||
- uses: RouxAntoine/checkout@v3.5.4
|
||||
with:
|
||||
ref: 'master'
|
||||
|
||||
# get part of the tag after the `v`
|
||||
- name: Extract tag version number
|
||||
id: get_version
|
||||
uses: battila7/get-version-action@v2
|
||||
|
||||
# Substitute the Manifest and Download URLs in the module.json
|
||||
- name: Substitute Manifest and Download Links For Versioned Ones
|
||||
id: sub_manifest_link_version
|
||||
uses: microsoft/variable-substitution@v1
|
||||
with:
|
||||
files: 'system.json'
|
||||
env:
|
||||
version: ${{steps.get_version.outputs.version-without-v}}
|
||||
url: https://www.uberwald.me/gitea/uberwald/fvtt-ecryme
|
||||
manifest: https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/releases/latest/module.json
|
||||
download: https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/releases/download/${{github.event.release.tag_name}}/fvtt-ecryme.zip
|
||||
|
||||
# Create a zip file with all files required by the module to add to the release
|
||||
- run: |
|
||||
apt update -y
|
||||
apt install -y zip
|
||||
|
||||
- run: zip -r ./fvtt-ecryme.zip system.json template.json README.md LICENSE.txt fonts/ images/ lang/ modules/ packs/ styles/ templates/ translated/
|
||||
|
||||
- name: setup go
|
||||
uses: https://github.com/actions/setup-go@v4
|
||||
with:
|
||||
go-version: '>=1.20.1'
|
||||
|
||||
- name: Use Go Action
|
||||
id: use-go-action
|
||||
uses: https://gitea.com/actions/release-action@main
|
||||
with:
|
||||
files: |-
|
||||
./fvtt-ecryme.zip
|
||||
system.json
|
||||
api_key: '${{secrets.RELEASE_TOKEN_UBERWALD}}'
|
7
LICENSE.txt
Normal file
7
LICENSE.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Copyright 2023 Open Sesame Games
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
41
README.md
41
README.md
@ -1,6 +1,41 @@
|
||||
# Système Foundry pour Ecryme v2 (French RPG, Open Sesam Games, Official)
|
||||
# Ecryme v2 system for FoundryVTT (French RPG, Open Sesam Games, Official)
|
||||
|
||||
# Developmement
|
||||
This is a base game system with functionnal character sheets for the game Ecryme, powered by the Engrenage system.
|
||||
You can join the kickstarter and obtain the base books here : https://www.kickstarter.com/projects/osg-us/ecryme
|
||||
|
||||
Uberwald
|
||||
# System overview
|
||||
|
||||
The game system in Foundry offers the following features :
|
||||
- PC/NPC sheet
|
||||
- Skill rolls
|
||||
- Cephaly rolls (with Anency support)
|
||||
- Confrontation management, with detailed result in the chat card
|
||||
- Weapon rolls
|
||||
- Trait management, with Spleen and Ideal also.
|
||||
- Compendiums of items for the game
|
||||
-
|
||||

|
||||
|
||||
|
||||
# Contributions
|
||||
|
||||
- Original code realised by Uberwald (https://www.uberwald.me/)
|
||||
|
||||
|
||||
# English translation
|
||||
|
||||
English translation by Conal Longden and Ian McClung
|
||||
|
||||
# Copyright mentions
|
||||
|
||||
Copyright 2023 Open Sesame Games
|
||||
All rights reserved
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Ecryme is a game written by Alexandre Clavel and Samuel Metzener, in a universe created by Mathieu gaborit. All of the aforementionned authors retain there moral rights regarding this work in both print and digital formats.
|
||||
|
||||
# Requests or Problems
|
||||
|
||||
Please report any requests or problems you have at contact@open-sesame.games
|
||||
|
||||
|
7
changelog.md
Normal file
7
changelog.md
Normal file
@ -0,0 +1,7 @@
|
||||
v11.0.30
|
||||
|
||||
Snapshot and more detailed README
|
||||
|
||||
v11.0.28
|
||||
|
||||
Initial release
|
11
lang/en.json
11
lang/en.json
@ -1,7 +1,9 @@
|
||||
{
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"Personnage": "PC"
|
||||
"pc": "Player Character",
|
||||
"npc": "Non-Player Character",
|
||||
"annency": "Annency"
|
||||
},
|
||||
"Item": {
|
||||
"trait": "Trait",
|
||||
@ -16,7 +18,8 @@
|
||||
"cogs": "Cogs",
|
||||
"cephaly": "Cephaly",
|
||||
"boheme": "Boheme",
|
||||
"amertume": "Amertume"
|
||||
"amertume": "Amertume",
|
||||
"gamelevel": "Game level"
|
||||
},
|
||||
"chat": {
|
||||
"formula": "Formula",
|
||||
@ -155,7 +158,9 @@
|
||||
"enhancements": "Enhancements",
|
||||
"oniricform": "Oniric shape (Boheme)",
|
||||
"ideals": "Ideals",
|
||||
"politic": "Political ideal"
|
||||
"politic": "Political ideal",
|
||||
"boheme": "Boheme",
|
||||
"annencybonus": "Annency bonus"
|
||||
}
|
||||
}
|
||||
}
|
19
lang/fr.json
19
lang/fr.json
@ -1,7 +1,9 @@
|
||||
{
|
||||
"TYPES": {
|
||||
"Actor":{
|
||||
"Personnage": "PJ"
|
||||
"pc": "Personnage Joueur",
|
||||
"npc": "Personnage Non Joueur",
|
||||
"annency": "Anence"
|
||||
},
|
||||
"Item": {
|
||||
"trait": "Trait",
|
||||
@ -16,7 +18,8 @@
|
||||
"cogs": "Engrenages",
|
||||
"cephaly": "Céphalie",
|
||||
"boheme": "Bohême",
|
||||
"amertume": "Amertume"
|
||||
"amertume": "Amertume",
|
||||
"gamelevel": "Niveau de jeu"
|
||||
},
|
||||
"chat": {
|
||||
"formula": "Formule",
|
||||
@ -34,10 +37,10 @@
|
||||
},
|
||||
"rule": {
|
||||
"cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1",
|
||||
"cephaly-success-34": "Durée : 1 semaine - Impact : Léger - Bonus : 2 - Elegie : 2",
|
||||
"cephaly-success-56": "Durée : 1 mois - Impact : Grave - Bonus : 3 - Elegie : 3",
|
||||
"cephaly-success-78": "Durée : 1 année - Impact : Majeur - Bonus : 4 - Elegie : 4",
|
||||
"cephaly-success-910": "Durée : Permanent - Impact : Mort - Bonus : 5 - Elegie : 5",
|
||||
"cephaly-success-4": "Durée : 1 semaine - Impact : Léger - Bonus : 2 - Elegie : 2",
|
||||
"cephaly-success-6": "Durée : 1 mois - Impact : Grave - Bonus : 3 - Elegie : 3",
|
||||
"cephaly-success-8": "Durée : 1 année - Impact : Majeur - Bonus : 4 - Elegie : 4",
|
||||
"cephaly-success-10": "Durée : Permanent - Impact : Mort - Bonus : 5 - Elegie : 5",
|
||||
"cephaly-failure-2": "Durée : 1 scène - Impact : Superficiel - Malus : 1 - Symptôme non visible et sans gravité - Altération bégigne difficilement repérable",
|
||||
"cephaly-failure-4": "Durée : 1 semaine - Impact : Léger - Malus : 2 - Symptôme visible non incapacitant - Altération repérable",
|
||||
"cephaly-failure-6": "Durée : 1 mois - Impact : Grave - Malus : 3 - Symptôme incapacitant - Altération repérable et fâcheuse",
|
||||
@ -156,7 +159,9 @@
|
||||
"enhancements": "Améliorations",
|
||||
"oniricform": "Forme Onorique (Bohême)",
|
||||
"ideals": "Idéaux",
|
||||
"politic": "Idéaux politiques"
|
||||
"politic": "Idéaux politiques",
|
||||
"boheme": "Bohême",
|
||||
"annencybonus": "Bonus d'Anence"
|
||||
}
|
||||
}
|
||||
}
|
@ -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")
|
||||
|
@ -54,6 +54,18 @@ export class EcrymeActor extends Actor {
|
||||
super._preUpdate(changed, options, user);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _preCreate(data, options, user) {
|
||||
await super._preCreate(data, options, user);
|
||||
|
||||
// Configure prototype token settings
|
||||
const prototypeToken = {};
|
||||
if (this.type === "pc") Object.assign(prototypeToken, {
|
||||
sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
|
||||
});
|
||||
this.updateSource({ prototypeToken });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getMoneys() {
|
||||
let comp = this.items.filter(item => item.type == 'money');
|
||||
@ -68,6 +80,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")
|
||||
@ -311,7 +348,7 @@ export class EcrymeActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
modifyConfrontBonus( modifier ) {
|
||||
let newBonus = this.system.internals.confrontbonus + bonus
|
||||
let newBonus = this.system.internals.confrontbonus + modifier
|
||||
this.update({'system.internals.confrontbonus': newBonus})
|
||||
}
|
||||
|
||||
@ -391,6 +428,7 @@ export class EcrymeActor extends Actor {
|
||||
let rollData = this.getCommonRollData()
|
||||
rollData.mode = "cephaly"
|
||||
rollData.skill = duplicate(this.system.cephaly.skilllist[skillKey])
|
||||
rollData.annency = duplicate(this.getAnnency())
|
||||
rollData.img = rollData.skill.img
|
||||
rollData.skill.categKey = "cephaly"
|
||||
rollData.skill.skillKey = skillKey
|
||||
@ -419,6 +457,8 @@ export class EcrymeActor extends Actor {
|
||||
rollData.title = game.i18n.localize("ECRY.ui.confrontation") + " : " + game.i18n.localize(rollData.skill.name)
|
||||
rollData.executionTotal = rollData.skill.value
|
||||
rollData.preservationTotal = rollData.skill.value
|
||||
rollData.traitsBonus = duplicate(rollData.traits)
|
||||
rollData.traitsMalus = duplicate(rollData.traits)
|
||||
rollData.applyTranscendence = "execution"
|
||||
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
||||
confrontStartDialog.render(true)
|
||||
|
143
modules/actors/ecryme-annency-sheet.js
Normal file
143
modules/actors/ecryme-annency-sheet.js
Normal 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);
|
||||
}
|
||||
}
|
@ -221,7 +221,7 @@ export class EcrymeUtility {
|
||||
let msg = await this.createChatWithRollMode(this.confrontData1.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-confrontation-result.hbs`, confront)
|
||||
})
|
||||
msg.setFlag("world", "ecryme-rolldata", confront)
|
||||
await msg.setFlag("world", "ecryme-rolldata", confront)
|
||||
console.log("Confront result", confront)
|
||||
|
||||
this.lastConfront = confront
|
||||
@ -492,7 +492,7 @@ export class EcrymeUtility {
|
||||
rollData.margin = rollData.total - rollData.difficulty
|
||||
if (rollData.total > rollData.difficulty) {
|
||||
rollData.isSuccess = true
|
||||
let maxMargin = rollData.skill.value + (rollData.spec) ? 2 : 0
|
||||
let maxMargin = rollData.skill.value + ((rollData.spec) ? 2 : 0)
|
||||
rollData.margin = Math.min(rollData.margin, maxMargin)
|
||||
}
|
||||
}
|
||||
@ -539,6 +539,9 @@ export class EcrymeUtility {
|
||||
diceFormula += "+" + rollData.bonusMalusTraits
|
||||
diceFormula += "+" + rollData.bonusMalusPerso
|
||||
diceFormula += "+" + rollData.impactMalus
|
||||
if (rollData.annency) {
|
||||
diceFormula += "+" + rollData.annencyBonus
|
||||
}
|
||||
rollData.diceFormula = diceFormula
|
||||
return diceFormula
|
||||
}
|
||||
@ -567,7 +570,7 @@ export class EcrymeUtility {
|
||||
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-generic-result.hbs`, rollData)
|
||||
})
|
||||
msg.setFlag("world", "ecryme-rolldata", rollData)
|
||||
await msg.setFlag("world", "ecryme-rolldata", rollData)
|
||||
console.log("Rolldata result", rollData)
|
||||
}
|
||||
|
||||
@ -584,7 +587,7 @@ export class EcrymeUtility {
|
||||
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-generic-result.hbs`, rollData)
|
||||
})
|
||||
msg.setFlag("world", "ecryme-rolldata", rollData)
|
||||
await msg.setFlag("world", "ecryme-rolldata", rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -684,6 +687,7 @@ export class EcrymeUtility {
|
||||
bonusMalusPerso: 0,
|
||||
bonusMalusSituation: 0,
|
||||
bonusMalusDef: 0,
|
||||
annencyBonus: 0,
|
||||
bonusMalusPortee: 0,
|
||||
skillTranscendence: 0,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
|
@ -245,7 +245,9 @@ export class EcrymeConfrontDialog extends Dialog {
|
||||
this.rollData.applyTranscendence = $('#roll-apply-transcendence').val()
|
||||
this.computeTotals()
|
||||
})
|
||||
|
||||
html.find('#annency-bonus').change((event) => {
|
||||
this.rollData.annencyBonus = Number(event.currentTarget.value)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
@ -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,8 @@ 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", EcrymeActorSheet, { types: ["npc"], makeDefault: true });
|
||||
Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false });
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
|
||||
@ -66,7 +68,7 @@ Hooks.once("init", async function () {
|
||||
EcrymeUtility.init()
|
||||
|
||||
console.log("Babele INIT!")
|
||||
Babele.get().setSystemTranslationsDir("translated");
|
||||
Babele.get().setSystemTranslationsDir("translated")
|
||||
|
||||
});
|
||||
|
||||
|
@ -1 +1 @@
|
||||
MANIFEST-000038
|
||||
MANIFEST-000070
|
||||
|
@ -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/22-08:18:29.415756 7f4f609fd6c0 Recovering log #68
|
||||
2023/08/22-08:18:29.426603 7f4f609fd6c0 Delete type=3 #66
|
||||
2023/08/22-08:18:29.426655 7f4f609fd6c0 Delete type=0 #68
|
||||
2023/08/22-08:21:44.533362 7f4ccb7fe6c0 Level-0 table #73: started
|
||||
2023/08/22-08:21:44.533404 7f4ccb7fe6c0 Level-0 table #73: 0 bytes OK
|
||||
2023/08/22-08:21:44.540850 7f4ccb7fe6c0 Delete type=0 #71
|
||||
2023/08/22-08:21:44.560122 7f4ccb7fe6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||
|
@ -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/17-08:30:06.224452 7fa0dcff96c0 Recovering log #64
|
||||
2023/08/17-08:30:06.244297 7fa0dcff96c0 Delete type=3 #62
|
||||
2023/08/17-08:30:06.244357 7fa0dcff96c0 Delete type=0 #64
|
||||
2023/08/17-08:31:03.278842 7f9e3ffff6c0 Level-0 table #69: started
|
||||
2023/08/17-08:31:03.278870 7f9e3ffff6c0 Level-0 table #69: 0 bytes OK
|
||||
2023/08/17-08:31:03.285336 7f9e3ffff6c0 Delete type=0 #67
|
||||
2023/08/17-08:31:03.285445 7f9e3ffff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
BIN
packs/help/000005.ldb
Normal file
BIN
packs/help/000005.ldb
Normal file
Binary file not shown.
1
packs/help/CURRENT
Normal file
1
packs/help/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000006
|
8
packs/help/LOG
Normal file
8
packs/help/LOG
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/22-08:18:29.469195 7f4f611fe6c0 Recovering log #4
|
||||
2023/08/22-08:18:29.483356 7f4f611fe6c0 Delete type=3 #2
|
||||
2023/08/22-08:18:29.483413 7f4f611fe6c0 Delete type=0 #4
|
||||
2023/08/22-08:21:44.524795 7f4ccb7fe6c0 Level-0 table #9: started
|
||||
2023/08/22-08:21:44.524832 7f4ccb7fe6c0 Level-0 table #9: 0 bytes OK
|
||||
2023/08/22-08:21:44.533220 7f4ccb7fe6c0 Delete type=0 #7
|
||||
2023/08/22-08:21:44.560099 7f4ccb7fe6c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2023/08/22-08:21:44.560175 7f4ccb7fe6c0 Manual compaction at level-1 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
5
packs/help/LOG.old
Normal file
5
packs/help/LOG.old
Normal file
@ -0,0 +1,5 @@
|
||||
2023/08/17-08:30:06.273842 7fa0dd7fa6c0 Delete type=3 #1
|
||||
2023/08/17-08:31:03.298799 7f9e3ffff6c0 Level-0 table #5: started
|
||||
2023/08/17-08:31:03.302135 7f9e3ffff6c0 Level-0 table #5: 2278 bytes OK
|
||||
2023/08/17-08:31:03.309094 7f9e3ffff6c0 Delete type=0 #3
|
||||
2023/08/17-08:31:03.309619 7f9e3ffff6c0 Manual compaction at level-0 from '!journal!N3XOO6dRLuKwQfp2' @ 72057594037927935 : 1 .. '!journal.pages!N3XOO6dRLuKwQfp2.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
BIN
packs/help/MANIFEST-000006
Normal file
BIN
packs/help/MANIFEST-000006
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000038
|
||||
MANIFEST-000070
|
||||
|
@ -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/22-08:18:29.434436 7f4ccbfff6c0 Recovering log #68
|
||||
2023/08/22-08:18:29.469056 7f4ccbfff6c0 Delete type=3 #66
|
||||
2023/08/22-08:18:29.469125 7f4ccbfff6c0 Delete type=0 #68
|
||||
2023/08/22-08:21:44.540974 7f4ccb7fe6c0 Level-0 table #73: started
|
||||
2023/08/22-08:21:44.541011 7f4ccb7fe6c0 Level-0 table #73: 0 bytes OK
|
||||
2023/08/22-08:21:44.552192 7f4ccb7fe6c0 Delete type=0 #71
|
||||
2023/08/22-08:21:44.560142 7f4ccb7fe6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||
|
@ -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/17-08:30:06.246354 7fa0de7fc6c0 Recovering log #64
|
||||
2023/08/17-08:30:06.257748 7fa0de7fc6c0 Delete type=3 #62
|
||||
2023/08/17-08:30:06.257814 7fa0de7fc6c0 Delete type=0 #64
|
||||
2023/08/17-08:31:03.285529 7f9e3ffff6c0 Level-0 table #69: started
|
||||
2023/08/17-08:31:03.285609 7f9e3ffff6c0 Level-0 table #69: 0 bytes OK
|
||||
2023/08/17-08:31:03.291891 7f9e3ffff6c0 Delete type=0 #67
|
||||
2023/08/17-08:31:03.309552 7f9e3ffff6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
0
packs/specialisation/000072.log
Normal file
0
packs/specialisation/000072.log
Normal file
@ -1 +1 @@
|
||||
MANIFEST-000038
|
||||
MANIFEST-000070
|
||||
|
@ -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/22-08:18:29.415768 7f4f619ff6c0 Recovering log #68
|
||||
2023/08/22-08:18:29.430277 7f4f619ff6c0 Delete type=3 #66
|
||||
2023/08/22-08:18:29.430403 7f4f619ff6c0 Delete type=0 #68
|
||||
2023/08/22-08:21:44.516245 7f4ccb7fe6c0 Level-0 table #73: started
|
||||
2023/08/22-08:21:44.516287 7f4ccb7fe6c0 Level-0 table #73: 0 bytes OK
|
||||
2023/08/22-08:21:44.524497 7f4ccb7fe6c0 Delete type=0 #71
|
||||
2023/08/22-08:21:44.524682 7f4ccb7fe6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||
|
@ -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/17-08:30:06.224380 7fa0dd7fa6c0 Recovering log #64
|
||||
2023/08/17-08:30:06.241271 7fa0dd7fa6c0 Delete type=3 #62
|
||||
2023/08/17-08:30:06.241353 7fa0dd7fa6c0 Delete type=0 #64
|
||||
2023/08/17-08:31:03.262782 7f9e3ffff6c0 Level-0 table #69: started
|
||||
2023/08/17-08:31:03.262832 7f9e3ffff6c0 Level-0 table #69: 0 bytes OK
|
||||
2023/08/17-08:31:03.268889 7f9e3ffff6c0 Delete type=0 #67
|
||||
2023/08/17-08:31:03.285415 7f9e3ffff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
0
packs/traits/000072.log
Normal file
0
packs/traits/000072.log
Normal file
@ -1 +1 @@
|
||||
MANIFEST-000038
|
||||
MANIFEST-000070
|
||||
|
@ -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/22-08:18:29.432772 7f4f609fd6c0 Recovering log #68
|
||||
2023/08/22-08:18:29.459891 7f4f609fd6c0 Delete type=3 #66
|
||||
2023/08/22-08:18:29.460035 7f4f609fd6c0 Delete type=0 #68
|
||||
2023/08/22-08:21:44.552339 7f4ccb7fe6c0 Level-0 table #73: started
|
||||
2023/08/22-08:21:44.552379 7f4ccb7fe6c0 Level-0 table #73: 0 bytes OK
|
||||
2023/08/22-08:21:44.559932 7f4ccb7fe6c0 Delete type=0 #71
|
||||
2023/08/22-08:21:44.560159 7f4ccb7fe6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||
|
@ -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/17-08:30:06.243329 7fa0ddffb6c0 Recovering log #64
|
||||
2023/08/17-08:30:06.257748 7fa0ddffb6c0 Delete type=3 #62
|
||||
2023/08/17-08:30:06.257816 7fa0ddffb6c0 Delete type=0 #64
|
||||
2023/08/17-08:31:03.292149 7f9e3ffff6c0 Level-0 table #69: started
|
||||
2023/08/17-08:31:03.292214 7f9e3ffff6c0 Level-0 table #69: 0 bytes OK
|
||||
2023/08/17-08:31:03.298635 7f9e3ffff6c0 Delete type=0 #67
|
||||
2023/08/17-08:31:03.309589 7f9e3ffff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||
|
Binary file not shown.
25
system.json
25
system.json
@ -73,6 +73,18 @@
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Help/Aides",
|
||||
"type": "JournalEntry",
|
||||
"name": "help",
|
||||
"path": "packs/help",
|
||||
"system": "fvtt-ecryme",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
}
|
||||
],
|
||||
"license": "LICENSE.txt",
|
||||
@ -88,9 +100,18 @@
|
||||
"styles": [
|
||||
"styles/ecryme.css"
|
||||
],
|
||||
"relationships": {
|
||||
"requires": [
|
||||
{
|
||||
"id": "babele",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"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.20",
|
||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.20.zip",
|
||||
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"Actor": {
|
||||
"types": [
|
||||
"pc"
|
||||
"pc","annency", "npc"
|
||||
],
|
||||
"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,8 +173,35 @@
|
||||
"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",
|
||||
|
@ -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>
|
||||
<ul class="stat-list alternate-list item-list">
|
||||
{{#each system.annency.location as |location index|}}
|
||||
{{#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">
|
||||
<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>
|
||||
|
138
templates/actors/annency-sheet.hbs
Normal file
138
templates/actors/annency-sheet.hbs
Normal 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"> </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>
|
@ -16,14 +16,21 @@
|
||||
<div>
|
||||
<ul>
|
||||
<li>{{localize "ECRY.ui.cephaly"}} : {{localize skill.name}}</li>
|
||||
|
||||
{{#if annency}}
|
||||
<li>{{localize "ECRY.ui.annencybonus"}} {{annency.name}}: {{annencyBonus}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (gt marginExecution 0)}}
|
||||
<li>{{localize "ECRY.ui.execution"}} {{executionTotal}} vs {{difficulty}} : {{marginExecution}}</li>
|
||||
<li>{{localize cephalySuccess}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (gt marginPreservation 0)}}
|
||||
<li>{{localize "ECRY.ui.preservation"}} {{preservationTotal}} vs {{difficulty}} : {{marginPreservation}}</li>
|
||||
<li>{{localize cephalyFailure}}</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -100,6 +100,24 @@
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{#if annency}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">{{localize "ECRY.ui.annency"}} : {{annency.name}}</span>
|
||||
<span class="roll-dialog-label">{{annency.system.base.description}}</span>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">{{localize "ECRY.ui.annencybonus"}}</span>
|
||||
<select class="" id="annency-bonus" name="annencyBonus" data-type="String">
|
||||
<option value="0">0</option>
|
||||
<option value="1">+1</option>
|
||||
<option value="2">+2</option>
|
||||
<option value="3">+3</option>
|
||||
<option value="4">+4</option>
|
||||
<option value="5">+5</option>
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Bonus/Malus : </span>
|
||||
|
Reference in New Issue
Block a user