Compare commits
59 Commits
fvtt-ecrym
...
fvtt-ecrym
| Author | SHA1 | Date | |
|---|---|---|---|
| bda88c067e | |||
| 4003e0e42b | |||
| a6d811bcda | |||
| 94eb637637 | |||
| 8c58367cdc | |||
| c439ca978c | |||
| ffe1144f2a | |||
| 38ef07d17b | |||
| a8cc2dce4b | |||
| 0fadd0783c | |||
| a55a038d32 | |||
| d012f78881 | |||
| 01e13da234 | |||
| bc09b5050d | |||
| d68001b376 | |||
| 6b22dade9c | |||
| 965fc02eb3 | |||
| 0ef689bf1b | |||
| c6dcc187d8 | |||
| e2f24405af | |||
| 0487893f47 | |||
| d7b7bccbdf | |||
| dbf4b17afb | |||
| 51e5a409c4 | |||
| 1e4692e850 | |||
| 40e12c1bba | |||
| 2450dce46c | |||
| 67c1066194 | |||
| 65fe498572 | |||
| e1990f88b4 | |||
| f99abb0966 | |||
| ec6e6be231 | |||
| 9d26d7bfad | |||
| 81848155e5 | |||
| 6778a9aa0b | |||
| 63aa49c77f | |||
| 0a3265419a | |||
| f5093980b0 | |||
| 062a597b70 | |||
| 1d0d123947 | |||
| 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
@@ -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/public/fvtt-ecryme
|
||||||
|
manifest: https://www.uberwald.me/gitea/public/fvtt-ecryme/releases/latest/system.json
|
||||||
|
download: https://www.uberwald.me/gitea/public/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
@@ -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.
|
||||||
43
README.md
@@ -1,6 +1,43 @@
|
|||||||
# Système Foundry pour Ecryme v2 (French RPG, Open Sesam Games, Official)
|
# Ecryme v2 system for FoundryVTT (French RPG, Open Sesam Games, Official)
|
||||||
|
|
||||||
# Developmement
|
|
||||||
|
|
||||||
Uberwald
|
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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|||||||
33
changelog.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
v12.0.0
|
||||||
|
|
||||||
|
- Support Foundry v11/v12
|
||||||
|
- Correction sur le niveau de jeu par défaut
|
||||||
|
|
||||||
|
v11.0.39
|
||||||
|
|
||||||
|
- Modification sur la prise en compte des traits en bonus/malus
|
||||||
|
- Correction sur les images de l'aide intégrée FR
|
||||||
|
|
||||||
|
v11.0.38
|
||||||
|
|
||||||
|
- Corrections sur les champs background/notes/equipement libre
|
||||||
|
- Taduction des répertoires
|
||||||
|
- Ajout de 2 landing pages
|
||||||
|
|
||||||
|
v11.0.36
|
||||||
|
|
||||||
|
- Enable deletion specialization
|
||||||
|
- Custome bonus for specializations
|
||||||
|
- Specialization direct rolls
|
||||||
|
|
||||||
|
v11.0.31
|
||||||
|
|
||||||
|
Add profession, fix equipment tab and add missing translation
|
||||||
|
|
||||||
|
v11.0.30
|
||||||
|
|
||||||
|
Snapshot and more detailed README
|
||||||
|
|
||||||
|
v11.0.28
|
||||||
|
|
||||||
|
Initial release
|
||||||
4
images/.directory
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Dolphin]
|
||||||
|
Timestamp=2024,3,15,11,30,15.103
|
||||||
|
Version=4
|
||||||
|
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails
|
||||||
4
images/assets/.directory
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Dolphin]
|
||||||
|
Timestamp=2024,3,15,11,30,26.235
|
||||||
|
Version=4
|
||||||
|
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails
|
||||||
BIN
images/assets/ecryme_cephalie_01.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
BIN
images/assets/ecryme_cephalie_02.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
images/assets/ecryme_cephalie_03.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
images/assets/ecryme_confrontation_01.png
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
images/assets/ecryme_confrontation_02.png
Normal file
|
After Width: | Height: | Size: 353 KiB |
BIN
images/assets/ecryme_confrontation_03.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
images/assets/ecryme_confrontation_04.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
images/assets/ecryme_landing_01.webp
Normal file
|
After Width: | Height: | Size: 388 KiB |
BIN
images/assets/ecryme_level.png
Normal file
|
After Width: | Height: | Size: 248 KiB |
4
images/ui/.directory
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Dolphin]
|
||||||
|
Timestamp=2024,3,15,11,30,19.681
|
||||||
|
Version=4
|
||||||
|
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails
|
||||||
21
lang/en.json
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"TYPES": {
|
"TYPES": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"Personnage": "PC"
|
"pc": "Player Character",
|
||||||
|
"npc": "Non-Player Character",
|
||||||
|
"annency": "Annency"
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"trait": "Trait",
|
"trait": "Trait",
|
||||||
@@ -16,7 +18,8 @@
|
|||||||
"cogs": "Cogs",
|
"cogs": "Cogs",
|
||||||
"cephaly": "Cephaly",
|
"cephaly": "Cephaly",
|
||||||
"boheme": "Boheme",
|
"boheme": "Boheme",
|
||||||
"amertume": "Amertume"
|
"amertume": "Amertume",
|
||||||
|
"gamelevel": "Game level"
|
||||||
},
|
},
|
||||||
"chat": {
|
"chat": {
|
||||||
"formula": "Formula",
|
"formula": "Formula",
|
||||||
@@ -30,7 +33,9 @@
|
|||||||
"traitbonus": "Bonus trait",
|
"traitbonus": "Bonus trait",
|
||||||
"traitmalus": "Malus trait",
|
"traitmalus": "Malus trait",
|
||||||
"bonusmalustraits": "Traits Bonus/Malus",
|
"bonusmalustraits": "Traits Bonus/Malus",
|
||||||
"spectranscend": "Self-Transcend : "
|
"spectranscend": "Self-Transcend : ",
|
||||||
|
"confrontselect": "Selected for confrontation",
|
||||||
|
"sentogm": "Confrontation has been sent to GM"
|
||||||
},
|
},
|
||||||
"rule": {
|
"rule": {
|
||||||
"cephaly-success-2": "Duration : 1 scene - Impact : Superficial - Bonus : 1 - Elegy : 1",
|
"cephaly-success-2": "Duration : 1 scene - Impact : Superficial - Bonus : 1 - Elegy : 1",
|
||||||
@@ -48,6 +53,7 @@
|
|||||||
"notenoughdice": "Execution and Preservation must have 2 dices allocated"
|
"notenoughdice": "Execution and Preservation must have 2 dices allocated"
|
||||||
},
|
},
|
||||||
"ui": {
|
"ui": {
|
||||||
|
"equipmentfree": "Equipments (free input)",
|
||||||
"traitType": "Trait type",
|
"traitType": "Trait type",
|
||||||
"niveauTrait": "Trait level",
|
"niveauTrait": "Trait level",
|
||||||
"weight": "Weight",
|
"weight": "Weight",
|
||||||
@@ -155,7 +161,14 @@
|
|||||||
"enhancements": "Enhancements",
|
"enhancements": "Enhancements",
|
||||||
"oniricform": "Oniric shape (Boheme)",
|
"oniricform": "Oniric shape (Boheme)",
|
||||||
"ideals": "Ideals",
|
"ideals": "Ideals",
|
||||||
"politic": "Political ideal"
|
"politic": "Political ideal",
|
||||||
|
"boheme": "Boheme",
|
||||||
|
"annencybonus": "Annency bonus",
|
||||||
|
"bornplace": "Born place",
|
||||||
|
"residence": "Residence",
|
||||||
|
"origin": "Origin",
|
||||||
|
"childhood": "Childhood",
|
||||||
|
"bonus": "Bonus"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
29
lang/fr.json
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"TYPES": {
|
"TYPES": {
|
||||||
"Actor":{
|
"Actor":{
|
||||||
"Personnage": "PJ"
|
"pc": "Personnage Joueur",
|
||||||
|
"npc": "Personnage Non Joueur",
|
||||||
|
"annency": "Anence"
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"trait": "Trait",
|
"trait": "Trait",
|
||||||
@@ -16,7 +18,8 @@
|
|||||||
"cogs": "Engrenages",
|
"cogs": "Engrenages",
|
||||||
"cephaly": "Céphalie",
|
"cephaly": "Céphalie",
|
||||||
"boheme": "Bohême",
|
"boheme": "Bohême",
|
||||||
"amertume": "Amertume"
|
"amertume": "Amertume",
|
||||||
|
"gamelevel": "Niveau de jeu"
|
||||||
},
|
},
|
||||||
"chat": {
|
"chat": {
|
||||||
"formula": "Formule",
|
"formula": "Formule",
|
||||||
@@ -30,14 +33,16 @@
|
|||||||
"traitbonus": "Trait bonus",
|
"traitbonus": "Trait bonus",
|
||||||
"traitmalus": "Trait malus",
|
"traitmalus": "Trait malus",
|
||||||
"bonusmalustraits": "Bonus/Malus des Traits",
|
"bonusmalustraits": "Bonus/Malus des Traits",
|
||||||
"spectranscend": "Dépassement de soi : "
|
"spectranscend": "Dépassement de soi : ",
|
||||||
|
"confrontselected": "Confrontation selectionnée",
|
||||||
|
"sentogm": "La confrontation a été envoyée au MJ"
|
||||||
},
|
},
|
||||||
"rule": {
|
"rule": {
|
||||||
"cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1",
|
"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-4": "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-6": "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-8": "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-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-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-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",
|
"cephaly-failure-6": "Durée : 1 mois - Impact : Grave - Malus : 3 - Symptôme incapacitant - Altération repérable et fâcheuse",
|
||||||
@@ -49,6 +54,7 @@
|
|||||||
"notenoughdice": "L'Accomplissement et la Préservation doivent avoir 2 dés chacun"
|
"notenoughdice": "L'Accomplissement et la Préservation doivent avoir 2 dés chacun"
|
||||||
},
|
},
|
||||||
"ui": {
|
"ui": {
|
||||||
|
"equipmentfree": "Equipements (saisie libre)",
|
||||||
"traitType": "Type de trait",
|
"traitType": "Type de trait",
|
||||||
"niveauTrait": "Niveau du trait",
|
"niveauTrait": "Niveau du trait",
|
||||||
"effect": "Incidence",
|
"effect": "Incidence",
|
||||||
@@ -156,7 +162,14 @@
|
|||||||
"enhancements": "Améliorations",
|
"enhancements": "Améliorations",
|
||||||
"oniricform": "Forme Onorique (Bohême)",
|
"oniricform": "Forme Onorique (Bohême)",
|
||||||
"ideals": "Idéaux",
|
"ideals": "Idéaux",
|
||||||
"politic": "Idéaux politiques"
|
"politic": "Idéaux politiques",
|
||||||
|
"boheme": "Bohême",
|
||||||
|
"annencybonus": "Bonus d'Anence",
|
||||||
|
"bornplace": "Lieu de naissance",
|
||||||
|
"residence": "Résidence",
|
||||||
|
"origin": "Origine",
|
||||||
|
"childhood": "Enfance",
|
||||||
|
"bonus": "Bonus"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,12 +6,12 @@
|
|||||||
import { EcrymeUtility } from "../common/ecryme-utility.js";
|
import { EcrymeUtility } from "../common/ecryme-utility.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class EcrymeActorSheet extends ActorSheet {
|
export class EcrymeActorSheet extends foundry.appv1.sheets.ActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-ecryme", "sheet", "actor"],
|
classes: ["fvtt-ecryme", "sheet", "actor"],
|
||||||
template: "systems/fvtt-ecryme/templates/actors/actor-sheet.hbs",
|
template: "systems/fvtt-ecryme/templates/actors/actor-sheet.hbs",
|
||||||
width: 860,
|
width: 860,
|
||||||
@@ -33,7 +33,7 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
name: this.actor.name,
|
name: this.actor.name,
|
||||||
editable: this.isEditable,
|
editable: this.isEditable,
|
||||||
cssClass: this.isEditable ? "editable" : "locked",
|
cssClass: this.isEditable ? "editable" : "locked",
|
||||||
system: duplicate(this.object.system),
|
system: foundry.utils.duplicate(this.object.system),
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
skills: this.actor.prepareSkills(),
|
skills: this.actor.prepareSkills(),
|
||||||
traits: this.actor.getRollTraits(),
|
traits: this.actor.getRollTraits(),
|
||||||
@@ -41,20 +41,21 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
ideal: this.actor.getIdeal(),
|
ideal: this.actor.getIdeal(),
|
||||||
spleen: this.actor.getSpleen(),
|
spleen: this.actor.getSpleen(),
|
||||||
impacts: this.object.getImpacts(),
|
impacts: this.object.getImpacts(),
|
||||||
config: duplicate(game.system.ecryme.config),
|
config: foundry.utils.duplicate(game.system.ecryme.config),
|
||||||
weapons: this.actor.getWeapons(),
|
weapons: this.actor.getWeapons(),
|
||||||
maneuvers: this.actor.getManeuvers(),
|
maneuvers: this.actor.getManeuvers(),
|
||||||
impactsMalus: this.actor.getImpactsMalus(),
|
impactsMalus: this.actor.getImpactsMalus(),
|
||||||
archetype: duplicate(this.actor.getArchetype()),
|
archetype: foundry.utils.duplicate(this.actor.getArchetype()),
|
||||||
equipements: this.actor.getEquipments(),
|
equipments: this.actor.getEquipments(),
|
||||||
hasCephaly: EcrymeUtility.hasCephaly(),
|
hasCephaly: EcrymeUtility.hasCephaly(),
|
||||||
hasBoheme: EcrymeUtility.hasBoheme(),
|
hasBoheme: EcrymeUtility.hasBoheme(),
|
||||||
hasAmertume: EcrymeUtility.hasAmertume(),
|
hasAmertume: EcrymeUtility.hasAmertume(),
|
||||||
cephalySkills: this.actor.getCephalySkills(),
|
cephalySkills: this.actor.getCephalySkills(),
|
||||||
subActors: duplicate(this.actor.getSubActors()),
|
subActors: foundry.utils.duplicate(this.actor.getSubActors()),
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
annency: this.actor.getAnnency(),
|
||||||
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, { async: true }),
|
||||||
equipementlibre: await TextEditor.enrichHTML(this.object.system.equipementlibre, { async: true }),
|
notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.notes, { async: true }),
|
||||||
|
equipementlibre: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.equipmentfree, { async: true }),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
@@ -62,7 +63,7 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
}
|
}
|
||||||
this.formData = formData;
|
this.formData = formData;
|
||||||
|
|
||||||
console.log("PC : ", formData, this.object);
|
//console.log("PC : ", formData, this.object);
|
||||||
return formData;
|
return formData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,10 +80,19 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
if (e.keyCode === 13) return false;
|
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
|
// Update Inventory Item
|
||||||
html.find('.item-edit').click(ev => {
|
html.find('.item-edit').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item")
|
const li = $(ev.currentTarget).parents(".item")
|
||||||
let itemId = li.data("item-id")
|
let itemId = li.data("item-id")
|
||||||
|
if (!itemId) {
|
||||||
|
itemId = $(ev.currentTarget).data("item-id")
|
||||||
|
}
|
||||||
const item = this.actor.items.get( itemId );
|
const item = this.actor.items.get( itemId );
|
||||||
item.sheet.render(true);
|
item.sheet.render(true);
|
||||||
});
|
});
|
||||||
@@ -122,6 +132,12 @@ export class EcrymeActorSheet extends ActorSheet {
|
|||||||
let skillKey = $(event.currentTarget).data("skill-key")
|
let skillKey = $(event.currentTarget).data("skill-key")
|
||||||
this.actor.rollSkill(categKey, skillKey)
|
this.actor.rollSkill(categKey, skillKey)
|
||||||
});
|
});
|
||||||
|
html.find('.roll-spec').click((event) => {
|
||||||
|
let categKey = $(event.currentTarget).data("category-key")
|
||||||
|
let skillKey = $(event.currentTarget).data("skill-key")
|
||||||
|
let specId = $(event.currentTarget).data("spec-id")
|
||||||
|
this.actor.rollSpec(categKey, skillKey, specId)
|
||||||
|
});
|
||||||
html.find('.roll-skill-confront').click((event) => {
|
html.find('.roll-skill-confront').click((event) => {
|
||||||
let categKey = $(event.currentTarget).data("category-key")
|
let categKey = $(event.currentTarget).data("category-key")
|
||||||
let skillKey = $(event.currentTarget).data("skill-key")
|
let skillKey = $(event.currentTarget).data("skill-key")
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export class EcrymeActor extends Actor {
|
|||||||
if (data instanceof Array) {
|
if (data instanceof Array) {
|
||||||
return super.create(data, options);
|
return super.create(data, options);
|
||||||
}
|
}
|
||||||
// If the created actor has items (only applicable to duplicated actors) bypass the new actor creation logic
|
// If the created actor has items (only applicable to foundry.utils.duplicated actors) bypass the new actor creation logic
|
||||||
if (data.items) {
|
if (data.items) {
|
||||||
let actor = super.create(data, options);
|
let actor = super.create(data, options);
|
||||||
return actor;
|
return actor;
|
||||||
@@ -54,6 +54,18 @@ export class EcrymeActor extends Actor {
|
|||||||
super._preUpdate(changed, options, user);
|
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() {
|
getMoneys() {
|
||||||
let comp = this.items.filter(item => item.type == 'money');
|
let comp = this.items.filter(item => item.type == 'money');
|
||||||
@@ -61,13 +73,39 @@ export class EcrymeActor extends Actor {
|
|||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getArchetype() {
|
getArchetype() {
|
||||||
let comp = duplicate(this.items.find(item => item.type == 'archetype') || { name: "Pas d'archetype" })
|
let comp = foundry.utils.duplicate(this.items.find(item => item.type == 'archetype') || { name: "Pas d'archetype" })
|
||||||
if (comp?.system) {
|
if (comp?.system) {
|
||||||
comp.tarot = EcrymeUtility.getTarot(comp.system.lametutelaire)
|
comp.tarot = EcrymeUtility.getTarot(comp.system.lametutelaire)
|
||||||
}
|
}
|
||||||
|
|
||||||
return comp;
|
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 = foundry.utils.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() {
|
||||||
|
let annency = game.actors.find(a => a.type == 'annency' && a.system.base.characters.includes(this.id))
|
||||||
|
return annency || {}
|
||||||
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getConfrontations() {
|
getConfrontations() {
|
||||||
return this.items.filter(it => it.type == "confrontation")
|
return this.items.filter(it => it.type == "confrontation")
|
||||||
@@ -98,7 +136,7 @@ export class EcrymeActor extends Actor {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareSkills() {
|
prepareSkills() {
|
||||||
let skills = duplicate(this.system.skills)
|
let skills = foundry.utils.duplicate(this.system.skills)
|
||||||
for (let categKey in skills) {
|
for (let categKey in skills) {
|
||||||
let category = skills[categKey]
|
let category = skills[categKey]
|
||||||
for (let skillKey in category.skilllist) {
|
for (let skillKey in category.skilllist) {
|
||||||
@@ -110,22 +148,22 @@ export class EcrymeActor extends Actor {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCephalySkills() {
|
getCephalySkills() {
|
||||||
let skills = duplicate(this.system.cephaly.skilllist)
|
let skills = foundry.utils.duplicate(this.system.cephaly.skilllist)
|
||||||
return skills
|
return skills
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getImpacts() {
|
getImpacts() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'impact') || [])
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'impact') || [])
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getWeapons() {
|
getWeapons() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'weapon') || [])
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'weapon') || [])
|
||||||
EcrymeUtility.sortArrayObjectsByName(comp)
|
EcrymeUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getManeuvers() {
|
getManeuvers() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'maneuver') || [])
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'maneuver') || [])
|
||||||
EcrymeUtility.sortArrayObjectsByName(comp)
|
EcrymeUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
@@ -133,7 +171,7 @@ export class EcrymeActor extends Actor {
|
|||||||
getItemById(id) {
|
getItemById(id) {
|
||||||
let item = this.items.find(item => item.id == id);
|
let item = this.items.find(item => item.id == id);
|
||||||
if (item) {
|
if (item) {
|
||||||
item = duplicate(item)
|
item = foundry.utils.duplicate(item)
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@@ -163,12 +201,12 @@ export class EcrymeActor extends Actor {
|
|||||||
|
|
||||||
/* ------------------------------------------- */
|
/* ------------------------------------------- */
|
||||||
getEquipments() {
|
getEquipments() {
|
||||||
return this.items.filter(item => item.type == 'equipement')
|
return this.items.filter(item => item.type == 'equipment')
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------- */
|
/* ------------------------------------------- */
|
||||||
async buildContainerTree() {
|
async buildContainerTree() {
|
||||||
let equipments = duplicate(this.items.filter(item => item.type == "equipment") || [])
|
let equipments = foundry.utils.duplicate(this.items.filter(item => item.type == "equipment") || [])
|
||||||
for (let equip1 of equipments) {
|
for (let equip1 of equipments) {
|
||||||
if (equip1.system.iscontainer) {
|
if (equip1.system.iscontainer) {
|
||||||
equip1.system.contents = []
|
equip1.system.contents = []
|
||||||
@@ -263,13 +301,13 @@ export class EcrymeActor extends Actor {
|
|||||||
getSubActors() {
|
getSubActors() {
|
||||||
let subActors = [];
|
let subActors = [];
|
||||||
for (let id of this.system.subactors) {
|
for (let id of this.system.subactors) {
|
||||||
subActors.push(duplicate(game.actors.get(id)))
|
subActors.push(foundry.utils.duplicate(game.actors.get(id)))
|
||||||
}
|
}
|
||||||
return subActors;
|
return subActors;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addSubActor(subActorId) {
|
async addSubActor(subActorId) {
|
||||||
let subActors = duplicate(this.system.subactors);
|
let subActors = foundry.utils.duplicate(this.system.subactors);
|
||||||
subActors.push(subActorId);
|
subActors.push(subActorId);
|
||||||
await this.update({ 'system.subactors': subActors });
|
await this.update({ 'system.subactors': subActors });
|
||||||
}
|
}
|
||||||
@@ -311,7 +349,7 @@ export class EcrymeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
modifyConfrontBonus( modifier ) {
|
modifyConfrontBonus( modifier ) {
|
||||||
let newBonus = this.system.internals.confrontbonus + bonus
|
let newBonus = this.system.internals.confrontbonus + modifier
|
||||||
this.update({'system.internals.confrontbonus': newBonus})
|
this.update({'system.internals.confrontbonus': newBonus})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,9 +378,10 @@ export class EcrymeActor extends Actor {
|
|||||||
rollData.actorId = this.id
|
rollData.actorId = this.id
|
||||||
rollData.img = this.img
|
rollData.img = this.img
|
||||||
rollData.isReroll = false
|
rollData.isReroll = false
|
||||||
rollData.traits = duplicate(this.getRollTraits())
|
rollData.config = game.system.ecryme.config
|
||||||
rollData.spleen = duplicate(this.getSpleen() || {})
|
rollData.traits = foundry.utils.duplicate(this.getRollTraits())
|
||||||
rollData.ideal = duplicate(this.getIdeal() || {})
|
rollData.spleen = foundry.utils.duplicate(this.getSpleen() || {})
|
||||||
|
rollData.ideal = foundry.utils.duplicate(this.getIdeal() || {})
|
||||||
rollData.confrontBonus = this.getBonusList()
|
rollData.confrontBonus = this.getBonusList()
|
||||||
|
|
||||||
return rollData
|
return rollData
|
||||||
@@ -350,14 +389,30 @@ export class EcrymeActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCommonSkill(categKey, skillKey) {
|
getCommonSkill(categKey, skillKey) {
|
||||||
let skill = this.system.skills[categKey].skilllist[skillKey]
|
|
||||||
let rollData = this.getCommonRollData()
|
let rollData = this.getCommonRollData()
|
||||||
|
|
||||||
skill = duplicate(skill)
|
// Specific NPC case
|
||||||
|
let skill
|
||||||
|
if (skillKey == "rawnpc") {
|
||||||
|
skill = {
|
||||||
|
name: "ECRY.ui." + categKey,
|
||||||
|
max: 10,
|
||||||
|
value: this.system.skills[categKey].pnjvalue,
|
||||||
|
spec: []
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skill = this.system.skills[categKey].skilllist[skillKey]
|
||||||
|
skill = foundry.utils.duplicate(skill)
|
||||||
|
skill.spec = this.getSpecializations(skillKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
rollData.skillLevelOptions = [];
|
||||||
|
for (let i=0; i<=skill.value; i++) {
|
||||||
|
rollData.skillLevelOptions[i] = `${i}`
|
||||||
|
}
|
||||||
|
|
||||||
skill.categKey = categKey
|
skill.categKey = categKey
|
||||||
skill.skillKey = skillKey
|
skill.skillKey = skillKey
|
||||||
skill.spec = this.getSpecializations(skillKey)
|
|
||||||
|
|
||||||
rollData.skill = skill
|
rollData.skill = skill
|
||||||
rollData.img = skill.img
|
rollData.img = skill.img
|
||||||
rollData.impactMalus = this.getImpactMalus(categKey)
|
rollData.impactMalus = this.getImpactMalus(categKey)
|
||||||
@@ -373,6 +428,17 @@ export class EcrymeActor extends Actor {
|
|||||||
this.startRoll(rollData).catch("Error on startRoll")
|
this.startRoll(rollData).catch("Error on startRoll")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
rollSpec(categKey, skillKey, specId) {
|
||||||
|
let rollData = this.getCommonSkill(categKey, skillKey)
|
||||||
|
let spec = this.items.find(it => it.type == "specialization" && it.id == specId)
|
||||||
|
rollData.mode = "skill"
|
||||||
|
rollData.selectedSpecs = [spec.id]
|
||||||
|
rollData.forcedSpec = foundry.utils.duplicate(spec)
|
||||||
|
rollData.title = game.i18n.localize(rollData.skill.name)
|
||||||
|
this.startRoll(rollData).catch("Error on startRoll")
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollSkillConfront(categKey, skillKey) {
|
async rollSkillConfront(categKey, skillKey) {
|
||||||
let rollData = this.getCommonSkill(categKey, skillKey)
|
let rollData = this.getCommonSkill(categKey, skillKey)
|
||||||
@@ -381,8 +447,9 @@ export class EcrymeActor extends Actor {
|
|||||||
rollData.executionTotal = rollData.skill.value
|
rollData.executionTotal = rollData.skill.value
|
||||||
rollData.preservationTotal = rollData.skill.value
|
rollData.preservationTotal = rollData.skill.value
|
||||||
rollData.applyTranscendence = "execution"
|
rollData.applyTranscendence = "execution"
|
||||||
rollData.traitsBonus = duplicate(rollData.traits)
|
rollData.traitsBonus = foundry.utils.duplicate(rollData.traits)
|
||||||
rollData.traitsMalus = duplicate(rollData.traits)
|
rollData.traitsMalus = foundry.utils.duplicate(rollData.traits)
|
||||||
|
console.log("ROLLDATA", rollData)
|
||||||
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
||||||
confrontStartDialog.render(true)
|
confrontStartDialog.render(true)
|
||||||
}
|
}
|
||||||
@@ -390,16 +457,16 @@ export class EcrymeActor extends Actor {
|
|||||||
async rollCephalySkillConfront(skillKey) {
|
async rollCephalySkillConfront(skillKey) {
|
||||||
let rollData = this.getCommonRollData()
|
let rollData = this.getCommonRollData()
|
||||||
rollData.mode = "cephaly"
|
rollData.mode = "cephaly"
|
||||||
rollData.skill = duplicate(this.system.cephaly.skilllist[skillKey])
|
rollData.skill = foundry.utils.duplicate(this.system.cephaly.skilllist[skillKey])
|
||||||
|
rollData.annency = foundry.utils.duplicate(this.getAnnency())
|
||||||
rollData.img = rollData.skill.img
|
rollData.img = rollData.skill.img
|
||||||
rollData.skill.categKey = "cephaly"
|
rollData.skill.categKey = "cephaly"
|
||||||
rollData.skill.skillKey = skillKey
|
rollData.skill.skillKey = skillKey
|
||||||
//rollData.impactMalus = this.getImpactMalus(categKey)
|
|
||||||
rollData.title = game.i18n.localize("ECRY.ui.cephaly") + " : " + game.i18n.localize(rollData.skill.name)
|
rollData.title = game.i18n.localize("ECRY.ui.cephaly") + " : " + game.i18n.localize(rollData.skill.name)
|
||||||
rollData.executionTotal = rollData.skill.value
|
rollData.executionTotal = rollData.skill.value
|
||||||
rollData.preservationTotal = rollData.skill.value
|
rollData.preservationTotal = rollData.skill.value
|
||||||
rollData.traitsBonus = duplicate(rollData.traits)
|
rollData.traitsBonus = foundry.utils.duplicate(rollData.traits)
|
||||||
rollData.traitsMalus = duplicate(rollData.traits)
|
rollData.traitsMalus = foundry.utils.duplicate(rollData.traits)
|
||||||
rollData.applyTranscendence = "execution"
|
rollData.applyTranscendence = "execution"
|
||||||
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
||||||
confrontStartDialog.render(true)
|
confrontStartDialog.render(true)
|
||||||
@@ -415,10 +482,12 @@ export class EcrymeActor extends Actor {
|
|||||||
rollData = this.getCommonSkill("physical", "shooting")
|
rollData = this.getCommonSkill("physical", "shooting")
|
||||||
}
|
}
|
||||||
rollData.mode = "weapon"
|
rollData.mode = "weapon"
|
||||||
rollData.weapon = duplicate(weapon)
|
rollData.weapon = foundry.utils.duplicate(weapon)
|
||||||
rollData.title = game.i18n.localize("ECRY.ui.confrontation") + " : " + game.i18n.localize(rollData.skill.name)
|
rollData.title = game.i18n.localize("ECRY.ui.confrontation") + " : " + game.i18n.localize(rollData.skill.name)
|
||||||
rollData.executionTotal = rollData.skill.value
|
rollData.executionTotal = rollData.skill.value
|
||||||
rollData.preservationTotal = rollData.skill.value
|
rollData.preservationTotal = rollData.skill.value
|
||||||
|
rollData.traitsBonus = foundry.utils.duplicate(rollData.traits)
|
||||||
|
rollData.traitsMalus = foundry.utils.duplicate(rollData.traits)
|
||||||
rollData.applyTranscendence = "execution"
|
rollData.applyTranscendence = "execution"
|
||||||
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
let confrontStartDialog = await EcrymeConfrontStartDialog.create(this, rollData)
|
||||||
confrontStartDialog.render(true)
|
confrontStartDialog.render(true)
|
||||||
@@ -428,12 +497,12 @@ export class EcrymeActor extends Actor {
|
|||||||
rollWeapon(weaponId) {
|
rollWeapon(weaponId) {
|
||||||
let weapon = this.items.get(weaponId)
|
let weapon = this.items.get(weaponId)
|
||||||
if (weapon) {
|
if (weapon) {
|
||||||
weapon = duplicate(weapon)
|
weapon = foundry.utils.duplicate(weapon)
|
||||||
let rollData = this.getCommonRollData()
|
let rollData = this.getCommonRollData()
|
||||||
if (weapon.system.armetype == "mainsnues" || weapon.system.armetype == "epee") {
|
if (weapon.system.armetype == "mainsnues" || weapon.system.armetype == "epee") {
|
||||||
rollData.attr = { label: "(Physique+Habilité)/2", value: Math.floor((this.getPhysiqueMalus() + this.system.attributs.physique.value + this.system.attributs.habilite.value) / 2) }
|
rollData.attr = { label: "(Physique+Habilité)/2", value: Math.floor((this.getPhysiqueMalus() + this.system.attributs.physique.value + this.system.attributs.habilite.value) / 2) }
|
||||||
} else {
|
} else {
|
||||||
rollData.attr = duplicate(this.system.attributs.habilite)
|
rollData.attr = foundry.utils.duplicate(this.system.attributs.habilite)
|
||||||
}
|
}
|
||||||
rollData.mode = "weapon"
|
rollData.mode = "weapon"
|
||||||
rollData.weapon = weapon
|
rollData.weapon = weapon
|
||||||
|
|||||||
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 foundry.appv1.sheets.ActorSheet {
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static get defaultOptions() {
|
||||||
|
|
||||||
|
return foundry.utils.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: foundry.utils.duplicate(this.object.system),
|
||||||
|
limited: this.object.limited,
|
||||||
|
config: foundry.utils.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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -43,7 +43,7 @@ export class EcrymeCharacterSummary extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs",
|
template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs",
|
||||||
popOut: true,
|
popOut: true,
|
||||||
resizable: true,
|
resizable: true,
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ export const ECRYME_CONFIG = {
|
|||||||
"melee": "ECRY.ui.melee",
|
"melee": "ECRY.ui.melee",
|
||||||
"ranged": "ECRY.ui.ranged"
|
"ranged": "ECRY.ui.ranged"
|
||||||
},
|
},
|
||||||
traitLevel: [
|
traitLevel: {
|
||||||
{value: -3, text: "-3"},
|
"-3":{value: "-3", text: "-3"},
|
||||||
{value: -2, text: "-2"},
|
"-2":{value: "-2", text: "-2"},
|
||||||
{value: -1, text: "-1"},
|
"-1":{value: "-1", text: "-1"},
|
||||||
{value: +1, text: "+1"},
|
"+1":{value: "+1", text: "+1"},
|
||||||
{value: +2, text: "+2"},
|
"+2":{value: "+2", text: "+2"},
|
||||||
{value: +3, text: "+3"}
|
"+3":{value: "+3", text: "+3"}
|
||||||
],
|
},
|
||||||
impactTypes: {
|
impactTypes: {
|
||||||
physical: "ECRY.ui.physical",
|
physical: "ECRY.ui.physical",
|
||||||
mental: "ECRY.ui.mental",
|
mental: "ECRY.ui.mental",
|
||||||
@@ -30,7 +30,7 @@ export const ECRYME_CONFIG = {
|
|||||||
major: "ECRY.ui.major"
|
major: "ECRY.ui.major"
|
||||||
},
|
},
|
||||||
difficulty: {
|
difficulty: {
|
||||||
"-1": {difficulty: "ECRY.ui.none", frequency: "ECRY.ui.none", value: "-"},
|
"-1": {difficulty: "ECRY.ui.none", frequency: "ECRY.ui.none", value: "-1"},
|
||||||
"8": { difficulty: "ECRY.ui.troublesome", frequency: "ECRY.ui.occasional", value: 8 },
|
"8": { difficulty: "ECRY.ui.troublesome", frequency: "ECRY.ui.occasional", value: 8 },
|
||||||
"10": { difficulty: "ECRY.ui.difficult", frequency: "ECRY.ui.uncommon", value: 10 },
|
"10": { difficulty: "ECRY.ui.difficult", frequency: "ECRY.ui.uncommon", value: 10 },
|
||||||
"12": { difficulty: "ECRY.ui.verydifficult", frequency: "ECRY.ui.rare", value: 12 },
|
"12": { difficulty: "ECRY.ui.verydifficult", frequency: "ECRY.ui.rare", value: 12 },
|
||||||
@@ -57,6 +57,19 @@ export const ECRYME_CONFIG = {
|
|||||||
"lige": {name: "ECRY.ui.lige", value: 100 },
|
"lige": {name: "ECRY.ui.lige", value: 100 },
|
||||||
"hurle": {name: "ECRY.ui.hurle", value: 10 },
|
"hurle": {name: "ECRY.ui.hurle", value: 10 },
|
||||||
"coin": {name: "ECRY.ui.coin", value: 1 }
|
"coin": {name: "ECRY.ui.coin", value: 1 }
|
||||||
|
},
|
||||||
|
transcendanceOptions: {
|
||||||
|
"execution": "ECRY.ui.execution",
|
||||||
|
"preservation": "ECRY.ui.preservation"
|
||||||
|
},
|
||||||
|
bonusMalusPersoOptions: {
|
||||||
|
"-3": {value: "-3", label: "-3"},
|
||||||
|
"-2": {value: "-2", label: "-2"},
|
||||||
|
"-1": {value: "-1", label: "-1"},
|
||||||
|
"0": {value: "0", label: "0"},
|
||||||
|
"+1": {value: "1", label: "+1"},
|
||||||
|
"+2": {value: "2", label: "+2"},
|
||||||
|
"+3": {value: "3", label: "+3"}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -36,7 +36,7 @@ export class EcrymeUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async init() {
|
static async init() {
|
||||||
Hooks.on('renderChatLog', (log, html, data) => EcrymeUtility.chatListeners(html));
|
Hooks.on('renderChatLog', (log, html, data) => EcrymeUtility.chatListeners(html));
|
||||||
Hooks.on("getChatLogEntryContext", (html, options) => EcrymeUtility.chatMenuManager(html, options));
|
Hooks.on("getChatMessageContextOptions", (html, options) => EcrymeUtility.chatMenuManager(html, options));
|
||||||
|
|
||||||
this.rollDataStore = {}
|
this.rollDataStore = {}
|
||||||
this.defenderStore = {}
|
this.defenderStore = {}
|
||||||
@@ -97,6 +97,7 @@ export class EcrymeUtility {
|
|||||||
"level_b": game.i18n.localize("ECRY.settings.boheme"),
|
"level_b": game.i18n.localize("ECRY.settings.boheme"),
|
||||||
"level_a": game.i18n.localize("ECRY.settings.amertume"),
|
"level_a": game.i18n.localize("ECRY.settings.amertume"),
|
||||||
},
|
},
|
||||||
|
default: "level_a",
|
||||||
restricted: true
|
restricted: true
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -126,7 +127,7 @@ export class EcrymeUtility {
|
|||||||
for (let categKey in game.data.template.Actor.templates.core.skills) {
|
for (let categKey in game.data.template.Actor.templates.core.skills) {
|
||||||
let category = game.data.template.Actor.templates.core.skills[categKey]
|
let category = game.data.template.Actor.templates.core.skills[categKey]
|
||||||
for (let skillKey in category.skilllist) {
|
for (let skillKey in category.skilllist) {
|
||||||
let skill = duplicate(category.skilllist[skillKey])
|
let skill = foundry.utils.duplicate(category.skilllist[skillKey])
|
||||||
skill.categKey = categKey // Auto reference the category
|
skill.categKey = categKey // Auto reference the category
|
||||||
game.system.ecryme.config.skills[skillKey] = skill
|
game.system.ecryme.config.skills[skillKey] = skill
|
||||||
}
|
}
|
||||||
@@ -154,8 +155,8 @@ export class EcrymeUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getActorFromRollData(rollData) {
|
static getActorFromRollData(rollData) {
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = game.actors.get(rollData.actorId)
|
||||||
if (rollData.tokenId) {
|
if (rollData.defenderTokenId) {
|
||||||
let token = canvas.tokens.placeables.find(t => t.id == rollData.tokenId)
|
let token = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
|
||||||
if (token) {
|
if (token) {
|
||||||
actor = token.actor
|
actor = token.actor
|
||||||
}
|
}
|
||||||
@@ -215,13 +216,13 @@ export class EcrymeUtility {
|
|||||||
confront.impactPreservation = this.getImpactFromEffect(Math.abs(confront.effectPreservation))
|
confront.impactPreservation = this.getImpactFromEffect(Math.abs(confront.effectPreservation))
|
||||||
}
|
}
|
||||||
if (confront.marginPreservation > 0) {
|
if (confront.marginPreservation > 0) {
|
||||||
confront.bonus1 = -confront.marginPreservation
|
confront.bonus1 = confront.marginPreservation
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = await this.createChatWithRollMode(this.confrontData1.alias, {
|
let msg = await this.createChatWithRollMode(this.confrontData1.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-confrontation-result.hbs`, confront)
|
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)
|
console.log("Confront result", confront)
|
||||||
|
|
||||||
this.lastConfront = confront
|
this.lastConfront = confront
|
||||||
@@ -272,20 +273,17 @@ export class EcrymeUtility {
|
|||||||
let canTranscendRoll = []
|
let canTranscendRoll = []
|
||||||
for (let i = 1; i <= 10; i++) {
|
for (let i = 1; i <= 10; i++) {
|
||||||
canTranscendRoll[i] = function (li) {
|
canTranscendRoll[i] = function (li) {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get($(li).attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "rolldata")
|
let rollData = message.getFlag("world", "rolldata")
|
||||||
//console.log(">>>>>>>>>>>>>>>>>>>>>>>>>> Menu !!!!", rollData)
|
//console.log(">>>>>>>>>>>>>>>>>>>>>>>>>> Menu !!!!", rollData)
|
||||||
if (rollData.skill && i <= rollData.skill.value && !rollData.transcendUsed && rollData.spec) {
|
return (rollData?.skill?.value >= i && !rollData.transcendUsed && rollData.spec)
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
options.push({
|
options.push({
|
||||||
name: game.i18n.localize("ECRY.chat.spectranscend") + i,
|
name: game.i18n.localize("ECRY.chat.spectranscend") + i,
|
||||||
icon: '<i class="fas fa-plus-square"></i>',
|
icon: '<i class="fas fa-plus-square"></i>',
|
||||||
condition: canTranscendRoll[i],
|
condition: canTranscendRoll[i],
|
||||||
callback: li => {
|
callback: li => {
|
||||||
let message = game.messages.get(li.attr("data-message-id"))
|
let message = game.messages.get($(li).attr("data-message-id"))
|
||||||
let rollData = message.getFlag("world", "rolldata")
|
let rollData = message.getFlag("world", "rolldata")
|
||||||
EcrymeUtility.transcendFromSpec(rollData, i).catch("Error on Transcend")
|
EcrymeUtility.transcendFromSpec(rollData, i).catch("Error on Transcend")
|
||||||
}
|
}
|
||||||
@@ -296,26 +294,35 @@ export class EcrymeUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async chatListeners(html) {
|
static async chatListeners(html) {
|
||||||
|
|
||||||
html.on("click", '.button-select-confront', event => {
|
$(html).on("click", '.button-select-confront', event => {
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "ecryme-rolldata")
|
let rollData = message.getFlag("world", "ecryme-rolldata")
|
||||||
|
ui.notifications.info(game.i18n.localize("ECRY.chat.confrontselect"))
|
||||||
EcrymeUtility.manageConfrontation(rollData)
|
EcrymeUtility.manageConfrontation(rollData)
|
||||||
})
|
})
|
||||||
html.on("click", '.button-apply-cephaly-difficulty', event => {
|
$(html).on("click", '.button-apply-cephaly-difficulty', event => {
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "ecryme-rolldata")
|
let rollData = message.getFlag("world", "ecryme-rolldata")
|
||||||
let difficulty = $("#" + rollData.rollId + "-cephaly-difficulty").val()
|
let difficulty = $("#" + rollData.rollId + "-cephaly-difficulty").val()
|
||||||
EcrymeUtility.manageCephalyDifficulty(rollData, difficulty)
|
EcrymeUtility.manageCephalyDifficulty(rollData, difficulty)
|
||||||
})
|
})
|
||||||
html.on("click", '.button-apply-impact', event => {
|
$(html).on("click", '.button-apply-impact', event => {
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
let tokenId = $(event.currentTarget).data("token-id")
|
||||||
|
let actor
|
||||||
|
if (!tokenId) {
|
||||||
|
actorId = $(event.currentTarget).data("actor-id")
|
||||||
|
actor = game.actors.get(actorId)
|
||||||
|
} else {
|
||||||
|
let token = canvas.tokens.placeables.find(t => t.id == tokenId)
|
||||||
|
actor = token?.actor
|
||||||
|
}
|
||||||
actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1)
|
actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1)
|
||||||
})
|
})
|
||||||
html.on("click", '.button-apply-bonus', event => {
|
$(html).on("click", '.button-apply-bonus', event => {
|
||||||
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
let messageId = EcrymeUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
|
||||||
@@ -337,7 +344,7 @@ export class EcrymeUtility {
|
|||||||
'systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs',
|
'systems/fvtt-ecryme/templates/dialogs/partial-confront-bonus-area.hbs',
|
||||||
'systems/fvtt-ecryme/templates/actors/partial-impacts.hbs',
|
'systems/fvtt-ecryme/templates/actors/partial-impacts.hbs',
|
||||||
]
|
]
|
||||||
return loadTemplates(templatePaths);
|
return foundry.applications.handlebars.loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -403,16 +410,21 @@ export class EcrymeUtility {
|
|||||||
|
|
||||||
let id = rollData.rollId
|
let id = rollData.rollId
|
||||||
let oldRollData = this.rollDataStore[id] || {}
|
let oldRollData = this.rollDataStore[id] || {}
|
||||||
let newRollData = mergeObject(oldRollData, rollData)
|
let newRollData = foundry.utils.mergeObject(oldRollData, rollData)
|
||||||
this.rollDataStore[id] = newRollData
|
this.rollDataStore[id] = newRollData
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async onSocketMesssage(msg) {
|
static async onSocketMesssage(msg) {
|
||||||
console.log("SOCKET MESSAGE", msg.name)
|
console.log("SOCKET MESSAGE", msg)
|
||||||
if (msg.name == "msg-draw-card") {
|
if (msg.name == "msg_gm_chat_message") {
|
||||||
if (game.user.isGM && game.system.ecryme.currentTirage) {
|
let rollData = msg.data.rollData
|
||||||
game.system.ecryme.currentTirage.addCard(msg.data.msgId)
|
if (game.user.isGM) {
|
||||||
|
let chatMsg = await this.createChatMessage(rollData.alias, "blindroll", {
|
||||||
|
content: await renderTemplate(msg.data.template, rollData),
|
||||||
|
whisper: game.user.id
|
||||||
|
})
|
||||||
|
chatMsg.setFlag("world", "ecryme-rolldata", rollData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -492,7 +504,7 @@ export class EcrymeUtility {
|
|||||||
rollData.margin = rollData.total - rollData.difficulty
|
rollData.margin = rollData.total - rollData.difficulty
|
||||||
if (rollData.total > rollData.difficulty) {
|
if (rollData.total > rollData.difficulty) {
|
||||||
rollData.isSuccess = true
|
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)
|
rollData.margin = Math.min(rollData.margin, maxMargin)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -516,7 +528,7 @@ export class EcrymeUtility {
|
|||||||
}
|
}
|
||||||
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
|
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
|
||||||
rollData.spec = actor.getSpecialization(rollData.selectedSpecs[0])
|
rollData.spec = actor.getSpecialization(rollData.selectedSpecs[0])
|
||||||
diceFormula += "+2"
|
diceFormula += "+" + (String(rollData.spec.system?.bonus) || "2")
|
||||||
}
|
}
|
||||||
rollData.bonusMalusTraits = 0
|
rollData.bonusMalusTraits = 0
|
||||||
if (rollData.traitsBonus && rollData.traitsBonus.length > 0) {
|
if (rollData.traitsBonus && rollData.traitsBonus.length > 0) {
|
||||||
@@ -525,7 +537,7 @@ export class EcrymeUtility {
|
|||||||
let trait = actor.getTrait(id)
|
let trait = actor.getTrait(id)
|
||||||
console.log(trait, id)
|
console.log(trait, id)
|
||||||
rollData.traitsBonusList.push(trait)
|
rollData.traitsBonusList.push(trait)
|
||||||
rollData.bonusMalusTraits += trait.system.level
|
rollData.bonusMalusTraits += Math.abs(trait.system.level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rollData.traitsMalus && rollData.traitsMalus.length > 0) {
|
if (rollData.traitsMalus && rollData.traitsMalus.length > 0) {
|
||||||
@@ -533,12 +545,15 @@ export class EcrymeUtility {
|
|||||||
for (let id of rollData.traitsMalus) {
|
for (let id of rollData.traitsMalus) {
|
||||||
let trait = actor.getTrait(id)
|
let trait = actor.getTrait(id)
|
||||||
rollData.traitsMalusList.push(trait)
|
rollData.traitsMalusList.push(trait)
|
||||||
rollData.bonusMalusTraits -= trait.system.level
|
rollData.bonusMalusTraits -= Math.abs(trait.system.level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
diceFormula += "+" + rollData.bonusMalusTraits
|
diceFormula += "+" + rollData.bonusMalusTraits
|
||||||
diceFormula += "+" + rollData.bonusMalusPerso
|
diceFormula += "+" + rollData.bonusMalusPerso
|
||||||
diceFormula += "+" + rollData.impactMalus
|
diceFormula += "+" + rollData.impactMalus
|
||||||
|
if (rollData.annency) {
|
||||||
|
diceFormula += "+" + rollData.annencyBonus
|
||||||
|
}
|
||||||
rollData.diceFormula = diceFormula
|
rollData.diceFormula = diceFormula
|
||||||
return diceFormula
|
return diceFormula
|
||||||
}
|
}
|
||||||
@@ -548,7 +563,7 @@ export class EcrymeUtility {
|
|||||||
|
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = game.actors.get(rollData.actorId)
|
||||||
// Fix difficulty
|
// Fix difficulty
|
||||||
if (!rollData.difficulty || rollData.difficulty == "-") {
|
if (!rollData.difficulty || rollData.difficulty == "-1") {
|
||||||
rollData.difficulty = 0
|
rollData.difficulty = 0
|
||||||
}
|
}
|
||||||
rollData.difficulty = Number(rollData.difficulty)
|
rollData.difficulty = Number(rollData.difficulty)
|
||||||
@@ -556,18 +571,18 @@ export class EcrymeUtility {
|
|||||||
let diceFormula = this.computeRollFormula(rollData, actor)
|
let diceFormula = this.computeRollFormula(rollData, actor)
|
||||||
|
|
||||||
// Performs roll
|
// Performs roll
|
||||||
let myRoll = new Roll(diceFormula).roll({ async: false })
|
let myRoll = await new Roll(diceFormula).roll()
|
||||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.roll = duplicate(myRoll)
|
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||||
rollData.total = myRoll.total
|
rollData.total = myRoll.total
|
||||||
rollData.diceSum = myRoll.terms[0].total
|
rollData.diceSum = myRoll.terms[0].total
|
||||||
|
|
||||||
this.computeResults(rollData)
|
this.computeResults(rollData)
|
||||||
|
|
||||||
let msg = await this.createChatWithRollMode(rollData.alias, {
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-generic-result.hbs`, rollData)
|
content: await foundry.applications.handlebars.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)
|
console.log("Rolldata result", rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -584,7 +599,7 @@ export class EcrymeUtility {
|
|||||||
let msg = await this.createChatWithRollMode(rollData.alias, {
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-generic-result.hbs`, rollData)
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -628,12 +643,10 @@ export class EcrymeUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static blindMessageToGM(chatOptions) {
|
static blindMessageToGM(chatData) {
|
||||||
let chatGM = duplicate(chatOptions);
|
chatData.whisper = this.getUsers(user => user.isGM);
|
||||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
console.log("blindMessageToGM", chatData);
|
||||||
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
game.socket.emit("system.fvtt-ecryme", { name: "msg_gm_chat_message", data: chatData });
|
||||||
console.log("blindMessageToGM", chatGM);
|
|
||||||
game.socket.emit("system.fvtt-ecryme", { msg: "msg_gm_chat_message", data: chatGM });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -659,12 +672,8 @@ export class EcrymeUtility {
|
|||||||
switch (rollMode) {
|
switch (rollMode) {
|
||||||
case "blindroll": // GM only
|
case "blindroll": // GM only
|
||||||
if (!game.user.isGM) {
|
if (!game.user.isGM) {
|
||||||
this.blindMessageToGM(chatOptions);
|
|
||||||
|
|
||||||
chatOptions.whisper = [game.user.id];
|
chatOptions.whisper = [game.user.id];
|
||||||
chatOptions.content = "Message only to the GM";
|
} else {
|
||||||
}
|
|
||||||
else {
|
|
||||||
chatOptions.whisper = this.getUsers(user => user.isGM);
|
chatOptions.whisper = this.getUsers(user => user.isGM);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -679,19 +688,20 @@ export class EcrymeUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getBasicRollData() {
|
static getBasicRollData() {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
rollId: randomID(16),
|
rollId: foundry.utils.randomID(16),
|
||||||
type: "roll-data",
|
type: "roll-data",
|
||||||
bonusMalusPerso: 0,
|
bonusMalusPerso: "0",
|
||||||
bonusMalusSituation: 0,
|
bonusMalusSituation: 0,
|
||||||
bonusMalusDef: 0,
|
bonusMalusDef: 0,
|
||||||
|
annencyBonus: 0,
|
||||||
bonusMalusPortee: 0,
|
bonusMalusPortee: 0,
|
||||||
skillTranscendence: 0,
|
skillTranscendence: 0,
|
||||||
rollMode: game.settings.get("core", "rollMode"),
|
rollMode: game.settings.get("core", "rollMode"),
|
||||||
difficulty: "-",
|
difficulty: "-1",
|
||||||
useSpleen: false,
|
useSpleen: false,
|
||||||
useIdeal: false,
|
useIdeal: false,
|
||||||
impactMalus: 0,
|
impactMalus: 0,
|
||||||
config: duplicate(game.system.ecryme.config)
|
config: foundry.utils.duplicate(game.system.ecryme.config)
|
||||||
}
|
}
|
||||||
EcrymeUtility.updateWithTarget(rollData)
|
EcrymeUtility.updateWithTarget(rollData)
|
||||||
return rollData
|
return rollData
|
||||||
@@ -713,11 +723,11 @@ export class EcrymeUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async confirmDelete(actorSheet, li) {
|
static async confirmDelete(actorSheet, li) {
|
||||||
let itemId = li.data("item-id");
|
let itemId = li.data("item-id");
|
||||||
let msgTxt = "<p>Are you sure to remove this Item ?";
|
let msgTxt = "<p>Etes vous certain de souhaiter envoyer cet item dans les limbes ?";
|
||||||
let buttons = {
|
let buttons = {
|
||||||
delete: {
|
delete: {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
icon: '<i class="fas fa-check"></i>',
|
||||||
label: "Yes, remove it",
|
label: "Oui, retirez-le",
|
||||||
callback: () => {
|
callback: () => {
|
||||||
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
|
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
|
||||||
li.slideUp(200, () => actorSheet.render(false));
|
li.slideUp(200, () => actorSheet.render(false));
|
||||||
@@ -725,7 +735,7 @@ export class EcrymeUtility {
|
|||||||
},
|
},
|
||||||
cancel: {
|
cancel: {
|
||||||
icon: '<i class="fas fa-times"></i>',
|
icon: '<i class="fas fa-times"></i>',
|
||||||
label: "Cancel"
|
label: "Annuler"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msgTxt += "</p>";
|
msgTxt += "</p>";
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData) {
|
static async create(actor, rollData) {
|
||||||
|
|
||||||
let options = mergeObject(super.defaultOptions, {
|
let options = foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-ecryme ecryme-confrontation-dialog"],
|
classes: ["fvtt-ecryme ecryme-confrontation-dialog"],
|
||||||
dragDrop: [{ dragSelector: ".confront-dice-container", dropSelector: null }],
|
dragDrop: [{ dragSelector: ".confront-dice-container", dropSelector: null }],
|
||||||
width: 620, height: 'fit-content', 'z-index': 99999
|
width: 620, height: 'fit-content', 'z-index': 99999
|
||||||
});
|
});
|
||||||
|
|
||||||
let html = await renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs', rollData);
|
let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-dialog.hbs', rollData);
|
||||||
return new EcrymeConfrontDialog(actor, rollData, html, options);
|
return new EcrymeConfrontDialog(actor, rollData, html, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,6 +50,7 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
let msg = await EcrymeUtility.createChatMessage(this.rollData.alias, "blindroll", {
|
let msg = await EcrymeUtility.createChatMessage(this.rollData.alias, "blindroll", {
|
||||||
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-confrontation-pending.hbs`, this.rollData)
|
content: await renderTemplate(`systems/fvtt-ecryme/templates/chat/chat-confrontation-pending.hbs`, this.rollData)
|
||||||
})
|
})
|
||||||
|
EcrymeUtility.blindMessageToGM( { rollData: this.rollData, template: "systems/fvtt-ecryme/templates/chat/chat-confrontation-pending.hbs" })
|
||||||
console.log("MSG", this.rollData)
|
console.log("MSG", this.rollData)
|
||||||
msg.setFlag("world", "ecryme-rolldata", this.rollData)
|
msg.setFlag("world", "ecryme-rolldata", this.rollData)
|
||||||
}
|
}
|
||||||
@@ -83,12 +84,23 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
setTimeout(function () { $(".launchConfront").attr("disabled", button) }, 180)
|
setTimeout(function () { $(".launchConfront").attr("disabled", button) }, 180)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ------------------ -------------------------- */
|
||||||
|
_canDragStart(selector) {
|
||||||
|
console.log("CAN DRAG START", selector, super._canDragStart(selector) )
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
_canDragDrop(selector) {
|
||||||
|
console.log("CAN DRAG DROP", selector, super._canDragDrop(selector) )
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
/* ------------------ -------------------------- */
|
/* ------------------ -------------------------- */
|
||||||
_onDragStart(event) {
|
_onDragStart(event) {
|
||||||
|
console.log("DRAGSTART::::", event)
|
||||||
super._onDragStart(event)
|
super._onDragStart(event)
|
||||||
let dragType = $(event.srcElement).data("drag-type")
|
let dragType = $(event.srcElement).data("drag-type")
|
||||||
let diceData = {}
|
let diceData = {}
|
||||||
//console.log("DRAGTYPE", dragType)
|
console.log("DRAGTYPE", dragType)
|
||||||
if (dragType == "dice") {
|
if (dragType == "dice") {
|
||||||
diceData = {
|
diceData = {
|
||||||
dragType: "dice",
|
dragType: "dice",
|
||||||
@@ -111,7 +123,7 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
let data = JSON.parse(dataJSON)
|
let data = JSON.parse(dataJSON)
|
||||||
if ( data.dragType == "dice") {
|
if ( data.dragType == "dice") {
|
||||||
let idx = Number(data.diceIndex)
|
let idx = Number(data.diceIndex)
|
||||||
//console.log("DATA", data, event, event.srcElement.className)
|
console.log("DATA", data, event, event.srcElement.className)
|
||||||
if (event.srcElement.className.includes("execution") &&
|
if (event.srcElement.className.includes("execution") &&
|
||||||
this.rollData.availableDices.filter(d => d.location == "execution").length < 2) {
|
this.rollData.availableDices.filter(d => d.location == "execution").length < 2) {
|
||||||
this.rollData.availableDices[idx].location = "execution"
|
this.rollData.availableDices[idx].location = "execution"
|
||||||
@@ -151,9 +163,9 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
// Apply Transcend if needed
|
// Apply Transcend if needed
|
||||||
if (this.rollData.skillTranscendence > 0) {
|
if (this.rollData.skillTranscendence > 0) {
|
||||||
if (this.rollData.applyTranscendence == "execution") {
|
if (this.rollData.applyTranscendence == "execution") {
|
||||||
this.rollData.executionTotal += this.rollData.skillTranscendence
|
this.rollData.executionTotal += Number(this.rollData.skillTranscendence)
|
||||||
} else {
|
} else {
|
||||||
this.rollData.preservationTotal += this.rollData.skillTranscendence
|
this.rollData.preservationTotal += Number(this.rollData.skillTranscendence)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -180,7 +192,7 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
this.processTranscendence()
|
this.processTranscendence()
|
||||||
|
|
||||||
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
|
if (rollData.selectedSpecs && rollData.selectedSpecs.length > 0) {
|
||||||
rollData.spec = duplicate(actor.getSpecialization(rollData.selectedSpecs[0]))
|
rollData.spec = foundry.utils.duplicate(actor.getSpecialization(rollData.selectedSpecs[0]))
|
||||||
rollData.specApplied = true
|
rollData.specApplied = true
|
||||||
rollData.executionTotal += 2
|
rollData.executionTotal += 2
|
||||||
rollData.preservationTotal += 2
|
rollData.preservationTotal += 2
|
||||||
@@ -200,19 +212,19 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
for (let id of rollData.traitsBonusSelected) {
|
for (let id of rollData.traitsBonusSelected) {
|
||||||
let trait = rollData.traitsBonus.find(t => t._id == id)
|
let trait = rollData.traitsBonus.find(t => t._id == id)
|
||||||
trait.activated = true
|
trait.activated = true
|
||||||
rollData.bonusMalusTraits += trait.system.level
|
rollData.bonusMalusTraits += Number(trait.system.level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rollData.traitsMalusSelected && rollData.traitsMalusSelected.length > 0) {
|
if (rollData.traitsMalusSelected && rollData.traitsMalusSelected.length > 0) {
|
||||||
for (let id of rollData.traitsMalusSelected) {
|
for (let id of rollData.traitsMalusSelected) {
|
||||||
let trait = rollData.traitsMalus.find(t => t._id == id)
|
let trait = rollData.traitsMalus.find(t => t._id == id)
|
||||||
trait.activated = true
|
trait.activated = true
|
||||||
rollData.bonusMalusTraits -= trait.system.level
|
rollData.bonusMalusTraits -= Number(trait.system.level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rollData.executionTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso
|
rollData.executionTotal += Number(rollData.bonusMalusTraits) + Number(rollData.bonusMalusPerso)
|
||||||
rollData.preservationTotal += rollData.bonusMalusTraits + rollData.bonusMalusPerso
|
rollData.preservationTotal += Number(rollData.bonusMalusTraits) + Number(rollData.bonusMalusPerso)
|
||||||
|
|
||||||
this.refreshDialog()
|
this.refreshDialog()
|
||||||
}
|
}
|
||||||
@@ -222,7 +234,7 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
|
|
||||||
html.find('#bonusMalusPerso').change((event) => {
|
html.find('#bonusMalusPerso').change((event) => {
|
||||||
this.rollData.bonusMalusPerso = Number(event.currentTarget.value)
|
this.rollData.bonusMalusPerso = event.currentTarget.value
|
||||||
this.computeTotals()
|
this.computeTotals()
|
||||||
})
|
})
|
||||||
html.find('#roll-specialization').change((event) => {
|
html.find('#roll-specialization').change((event) => {
|
||||||
@@ -245,7 +257,9 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
this.rollData.applyTranscendence = $('#roll-apply-transcendence').val()
|
this.rollData.applyTranscendence = $('#roll-apply-transcendence').val()
|
||||||
this.computeTotals()
|
this.computeTotals()
|
||||||
})
|
})
|
||||||
|
html.find('#annency-bonus').change((event) => {
|
||||||
|
this.rollData.annencyBonus = Number(event.currentTarget.value)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,9 +5,12 @@ export class EcrymeConfrontStartDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData) {
|
static async create(actor, rollData) {
|
||||||
|
if (!actor) throw new Error("Ecryme | No actor provided for confront dialog");
|
||||||
|
if (!rollData) throw new Error("Ecryme | No roll data provided for confront dialog");
|
||||||
|
|
||||||
|
if (actor?.token) rollData.tokenId = actor.token.id;
|
||||||
let options = { classes: ["fvtt-ecryme ecryme-confront-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
|
let options = { classes: ["fvtt-ecryme ecryme-confront-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
|
||||||
let html = await renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-start-dialog.hbs', rollData);
|
let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-ecryme/templates/dialogs/confront-start-dialog.hbs', rollData);
|
||||||
return new EcrymeConfrontStartDialog(actor, rollData, html, options);
|
return new EcrymeConfrontStartDialog(actor, rollData, html, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,22 +46,22 @@ export class EcrymeConfrontStartDialog extends Dialog {
|
|||||||
|
|
||||||
super(conf, options);
|
super(conf, options);
|
||||||
|
|
||||||
this.actor = actor;
|
this.actor = actor?.token?.actor || actor;
|
||||||
this.rollData = rollData;
|
this.rollData = rollData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollConfront(diceFormula) {
|
async rollConfront(diceFormula) {
|
||||||
// Do the initial roll
|
// Do the initial roll
|
||||||
let myRoll = new Roll(diceFormula).roll({async: false})
|
let myRoll = await new Roll(diceFormula).roll()
|
||||||
await EcrymeUtility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
await EcrymeUtility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
// Fill the available dice table
|
// Fill the available dice table
|
||||||
let rollData = this.rollData
|
let rollData = this.rollData
|
||||||
rollData.roll = duplicate(myRoll)
|
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||||
rollData.availableDices = []
|
rollData.availableDices = []
|
||||||
for (let result of myRoll.terms[0].results) {
|
for (let result of myRoll.terms[0].results) {
|
||||||
if (!result.discarded) {
|
if (!result.discarded) {
|
||||||
let resultDup = duplicate(result)
|
let resultDup = foundry.utils.duplicate(result)
|
||||||
resultDup.location = "mainpool"
|
resultDup.location = "mainpool"
|
||||||
rollData.availableDices.push(resultDup)
|
rollData.availableDices.push(resultDup)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ export class EcrymeRollDialog extends Dialog {
|
|||||||
static async create(actor, rollData) {
|
static async create(actor, rollData) {
|
||||||
|
|
||||||
let options = { classes: ["ecryme-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
|
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);
|
let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-ecryme/templates/dialogs/roll-dialog-generic.hbs', rollData);
|
||||||
return new EcrymeRollDialog(actor, rollData, html, options);
|
return new EcrymeRollDialog(actor, rollData, html, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,12 +52,12 @@ export class EcrymeRollDialog extends Dialog {
|
|||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
|
|
||||||
var dialog = this;
|
|
||||||
function onLoad() {
|
function onLoad() {
|
||||||
}
|
}
|
||||||
$(function () { onLoad(); });
|
$(function () { onLoad(); });
|
||||||
|
|
||||||
html.find('#bonusMalusPerso').change((event) => {
|
html.find('#bonusMalusPerso').change((event) => {
|
||||||
|
console.log("DIFF", event.currentTarget.value)
|
||||||
this.rollData.bonusMalusPerso = Number(event.currentTarget.value)
|
this.rollData.bonusMalusPerso = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#roll-difficulty').change((event) => {
|
html.find('#roll-difficulty').change((event) => {
|
||||||
|
|||||||
@@ -5,12 +5,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
const ECRYME_WELCOME_MESSAGE_URL = "https://www.uberwald.me/gitea/public/fvtt-ecryme/raw/branch/master/welcome-message-ecryme.html"
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Import Modules
|
// Import Modules
|
||||||
import { EcrymeActor } from "./actors/ecryme-actor.js";
|
import { EcrymeActor } from "./actors/ecryme-actor.js";
|
||||||
import { EcrymeItemSheet } from "./items/ecryme-item-sheet.js";
|
import { EcrymeItemSheet } from "./items/ecryme-item-sheet.js";
|
||||||
import { EcrymeActorSheet } from "./actors/ecryme-actor-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 { EcrymeUtility } from "./common/ecryme-utility.js";
|
||||||
import { EcrymeCombat } from "./app/ecryme-combat.js";
|
import { EcrymeCombat } from "./app/ecryme-combat.js";
|
||||||
import { EcrymeItem } from "./items/ecryme-item.js";
|
import { EcrymeItem } from "./items/ecryme-item.js";
|
||||||
@@ -56,55 +58,53 @@ Hooks.once("init", async function () {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
|
||||||
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
|
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
|
||||||
//Actors.registerSheet("fvtt-ecryme", EcrymeNPCSheet, { types: ["pnj"], makeDefault: false });
|
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["npc"], makeDefault: true });
|
||||||
|
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false });
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
|
||||||
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
|
foundry.documents.collections.Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
|
||||||
|
|
||||||
EcrymeUtility.init()
|
EcrymeUtility.init()
|
||||||
|
|
||||||
console.log("Babele INIT!")
|
|
||||||
Babele.get().setSystemTranslationsDir("translated");
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
function welcomeMessage() {
|
function welcomeMessage() {
|
||||||
if (game.user.isGM) {
|
if (game.user.isGM) {
|
||||||
|
// Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
|
||||||
|
fetch(ECRYME_WELCOME_MESSAGE_URL)
|
||||||
|
.then(response => response.text())
|
||||||
|
.then(html => {
|
||||||
|
console.log("Fetched welcome message:", html);
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
whisper: [game.user.id],
|
whisper: [game.user.id],
|
||||||
content: `<div id="welcome-message-ecryme"><span class="rdd-roll-part">
|
content: html
|
||||||
<strong>Bienvenu dans Ecryme !</strong>` });
|
});
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error("Error fetching welcome message:", error);
|
||||||
|
ChatMessage.create({
|
||||||
|
user: game.user.id,
|
||||||
|
whisper: [game.user.id],
|
||||||
|
content: "<b>Bienvenue dans Ecryme RPG !</b><br>Visitez le site officiel pour plus d'informations."
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Register world usage statistics
|
async function importDefaultScene() {
|
||||||
function registerUsageCount(registerKey) {
|
let exists = game.scenes.find(j => j.name == "Landing page 1");
|
||||||
if (game.user.isGM) {
|
if (!exists) {
|
||||||
game.settings.register(registerKey, "world-key", {
|
const scenes = await EcrymeUtility.loadCompendium("fvtt-ecryme.scenes")
|
||||||
name: "Unique world key",
|
let newDocuments = scenes.filter(i => i.name == "Landing page 1");
|
||||||
scope: "world",
|
await game.scenes.documentClass.create(newDocuments);
|
||||||
config: false,
|
game.scenes.find(i => i.name == "Landing page 1").activate();
|
||||||
default: "",
|
}
|
||||||
type: String
|
|
||||||
});
|
|
||||||
|
|
||||||
let worldKey = game.settings.get(registerKey, "world-key")
|
|
||||||
if (worldKey == undefined || worldKey == "") {
|
|
||||||
worldKey = randomID(32)
|
|
||||||
game.settings.set(registerKey, "world-key", worldKey)
|
|
||||||
}
|
|
||||||
// Simple API counter
|
|
||||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
|
||||||
//$.ajaxSetup({
|
|
||||||
//headers: { 'Access-Control-Allow-Origin': '*' }
|
|
||||||
//})
|
|
||||||
$.ajax(regURL)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@@ -121,10 +121,20 @@ Hooks.once("ready", function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
registerUsageCount(game.system.id)
|
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter => {
|
||||||
|
console.log("ClassCounter loaded", moduleCounter)
|
||||||
|
moduleCounter.ClassCounter.registerUsageCount()
|
||||||
|
}).catch(err =>
|
||||||
|
console.log("No stats available, giving up.")
|
||||||
|
)
|
||||||
|
|
||||||
welcomeMessage();
|
welcomeMessage();
|
||||||
EcrymeUtility.ready()
|
EcrymeUtility.ready();
|
||||||
EcrymeCharacterSummary.ready()
|
EcrymeCharacterSummary.ready();
|
||||||
|
importDefaultScene();
|
||||||
|
|
||||||
|
// Load translations
|
||||||
|
Babele.get().setSystemTranslationsDir("translated")
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -142,4 +152,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import { EcrymeUtility } from "../common/ecryme-utility.js";
|
|||||||
* Extend the basic ItemSheet with some very simple modifications
|
* Extend the basic ItemSheet with some very simple modifications
|
||||||
* @extends {ItemSheet}
|
* @extends {ItemSheet}
|
||||||
*/
|
*/
|
||||||
export class EcrymeItemSheet extends ItemSheet {
|
export class EcrymeItemSheet extends foundry.appv1.sheets.ItemSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-ecryme", "sheet", "item"],
|
classes: ["fvtt-ecryme", "sheet", "item"],
|
||||||
template: "systems/fvtt-ecryme/templates/item-sheet.hbs",
|
template: "systems/fvtt-ecryme/templates/item-sheet.hbs",
|
||||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||||
@@ -56,13 +56,13 @@ export class EcrymeItemSheet extends ItemSheet {
|
|||||||
name: this.object.name,
|
name: this.object.name,
|
||||||
editable: this.isEditable,
|
editable: this.isEditable,
|
||||||
cssClass: this.isEditable ? "editable" : "locked",
|
cssClass: this.isEditable ? "editable" : "locked",
|
||||||
system: duplicate(this.object.system),
|
system: foundry.utils.duplicate(this.object.system),
|
||||||
config: duplicate(game.system.ecryme.config),
|
config: foundry.utils.duplicate(game.system.ecryme.config),
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }),
|
||||||
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.notes, { async: true }),
|
||||||
isGM: game.user.isGM
|
isGM: game.user.isGM
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ export class EcrymeItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
postItem() {
|
postItem() {
|
||||||
let chatData = duplicate(this.item)
|
let chatData = foundry.utils.duplicate(this.item)
|
||||||
if (this.actor) {
|
if (this.actor) {
|
||||||
chatData.actor = { id: this.actor.id };
|
chatData.actor = { id: this.actor.id };
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
packs/equipment/000192.ldb
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000038
|
MANIFEST-000241
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2023/08/08-09:07:13.603738 7f5867fff6c0 Recovering log #36
|
2025/10/17-15:30:30.745305 7f7b753f96c0 Recovering log #239
|
||||||
2023/08/08-09:07:13.613379 7f5867fff6c0 Delete type=3 #34
|
2025/10/17-15:30:30.799430 7f7b753f96c0 Delete type=3 #237
|
||||||
2023/08/08-09:07:13.613547 7f5867fff6c0 Delete type=0 #36
|
2025/10/17-15:30:30.799501 7f7b753f96c0 Delete type=0 #239
|
||||||
2023/08/08-09:07:28.094335 7f58677fe6c0 Level-0 table #41: started
|
2025/10/17-15:38:10.264480 7f7b6f3ff6c0 Level-0 table #244: started
|
||||||
2023/08/08-09:07:28.094367 7f58677fe6c0 Level-0 table #41: 0 bytes OK
|
2025/10/17-15:38:10.264510 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
|
||||||
2023/08/08-09:07:28.130086 7f58677fe6c0 Delete type=0 #39
|
2025/10/17-15:38:10.271838 7f7b6f3ff6c0 Delete type=0 #242
|
||||||
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)
|
2025/10/17-15:38:10.286239 7f7b6f3ff6c0 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
|
2025/10/17-15:00:21.595853 7f7b75bfa6c0 Recovering log #235
|
||||||
2023/08/08-08:56:25.043068 7f5afcdf86c0 Delete type=3 #30
|
2025/10/17-15:00:21.649813 7f7b75bfa6c0 Delete type=3 #233
|
||||||
2023/08/08-08:56:25.043112 7f5afcdf86c0 Delete type=0 #32
|
2025/10/17-15:00:21.649870 7f7b75bfa6c0 Delete type=0 #235
|
||||||
2023/08/08-09:07:10.720233 7f58677fe6c0 Level-0 table #37: started
|
2025/10/17-15:19:41.013969 7f7b6f3ff6c0 Level-0 table #240: started
|
||||||
2023/08/08-09:07:10.720259 7f58677fe6c0 Level-0 table #37: 0 bytes OK
|
2025/10/17-15:19:41.014009 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
|
||||||
2023/08/08-09:07:10.728506 7f58677fe6c0 Delete type=0 #35
|
2025/10/17-15:19:41.021013 7f7b6f3ff6c0 Delete type=0 #238
|
||||||
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)
|
2025/10/17-15:19:41.041182 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
BIN
packs/equipment/MANIFEST-000241
Normal file
BIN
packs/help/000129.ldb
Normal file
1
packs/help/CURRENT
Normal file
@@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000178
|
||||||
8
packs/help/LOG
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
2025/10/17-15:30:30.971906 7f7b75bfa6c0 Recovering log #176
|
||||||
|
2025/10/17-15:30:31.026021 7f7b75bfa6c0 Delete type=3 #174
|
||||||
|
2025/10/17-15:30:31.026086 7f7b75bfa6c0 Delete type=0 #176
|
||||||
|
2025/10/17-15:38:10.306636 7f7b6f3ff6c0 Level-0 table #181: started
|
||||||
|
2025/10/17-15:38:10.306674 7f7b6f3ff6c0 Level-0 table #181: 0 bytes OK
|
||||||
|
2025/10/17-15:38:10.313150 7f7b6f3ff6c0 Delete type=0 #179
|
||||||
|
2025/10/17-15:38:10.313296 7f7b6f3ff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
|
2025/10/17-15:38:10.313313 7f7b6f3ff6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
8
packs/help/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
2025/10/17-15:00:21.833480 7f7b74bf86c0 Recovering log #172
|
||||||
|
2025/10/17-15:00:21.882268 7f7b74bf86c0 Delete type=3 #170
|
||||||
|
2025/10/17-15:00:21.882323 7f7b74bf86c0 Delete type=0 #172
|
||||||
|
2025/10/17-15:19:41.054674 7f7b6f3ff6c0 Level-0 table #177: started
|
||||||
|
2025/10/17-15:19:41.054706 7f7b6f3ff6c0 Level-0 table #177: 0 bytes OK
|
||||||
|
2025/10/17-15:19:41.060762 7f7b6f3ff6c0 Delete type=0 #175
|
||||||
|
2025/10/17-15:19:41.066886 7f7b6f3ff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
|
2025/10/17-15:19:41.066920 7f7b6f3ff6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
BIN
packs/help/MANIFEST-000178
Normal file
BIN
packs/maneuvers/000192.ldb
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000038
|
MANIFEST-000241
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2023/08/08-09:07:13.616518 7f5867fff6c0 Recovering log #36
|
2025/10/17-15:30:30.916441 7f7b6ffff6c0 Recovering log #239
|
||||||
2023/08/08-09:07:13.626451 7f5867fff6c0 Delete type=3 #34
|
2025/10/17-15:30:30.969161 7f7b6ffff6c0 Delete type=3 #237
|
||||||
2023/08/08-09:07:13.626504 7f5867fff6c0 Delete type=0 #36
|
2025/10/17-15:30:30.969226 7f7b6ffff6c0 Delete type=0 #239
|
||||||
2023/08/08-09:07:28.173846 7f58677fe6c0 Level-0 table #41: started
|
2025/10/17-15:38:10.293308 7f7b6f3ff6c0 Level-0 table #244: started
|
||||||
2023/08/08-09:07:28.173906 7f58677fe6c0 Level-0 table #41: 0 bytes OK
|
2025/10/17-15:38:10.293344 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
|
||||||
2023/08/08-09:07:28.221287 7f58677fe6c0 Delete type=0 #39
|
2025/10/17-15:38:10.299936 7f7b6f3ff6c0 Delete type=0 #242
|
||||||
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)
|
2025/10/17-15:38:10.313277 7f7b6f3ff6c0 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
|
2025/10/17-15:00:21.772351 7f7b753f96c0 Recovering log #235
|
||||||
2023/08/08-08:56:25.085371 7f5867fff6c0 Delete type=3 #30
|
2025/10/17-15:00:21.831028 7f7b753f96c0 Delete type=3 #233
|
||||||
2023/08/08-08:56:25.085419 7f5867fff6c0 Delete type=0 #32
|
2025/10/17-15:00:21.831106 7f7b753f96c0 Delete type=0 #235
|
||||||
2023/08/08-09:07:10.736291 7f58677fe6c0 Level-0 table #37: started
|
2025/10/17-15:19:41.021157 7f7b6f3ff6c0 Level-0 table #240: started
|
||||||
2023/08/08-09:07:10.736337 7f58677fe6c0 Level-0 table #37: 0 bytes OK
|
2025/10/17-15:19:41.021192 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
|
||||||
2023/08/08-09:07:10.742372 7f58677fe6c0 Delete type=0 #35
|
2025/10/17-15:19:41.028272 7f7b6f3ff6c0 Delete type=0 #238
|
||||||
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)
|
2025/10/17-15:19:41.041197 7f7b6f3ff6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
BIN
packs/maneuvers/MANIFEST-000241
Normal file
BIN
packs/scenes/000090.ldb
Normal file
0
packs/scenes/000129.log
Normal file
1
packs/scenes/CURRENT
Normal file
@@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000127
|
||||||
0
packs/scenes/LOCK
Normal file
8
packs/scenes/LOG
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
2025/10/17-15:30:30.864236 7f7b75bfa6c0 Recovering log #125
|
||||||
|
2025/10/17-15:30:30.913603 7f7b75bfa6c0 Delete type=3 #123
|
||||||
|
2025/10/17-15:30:30.913658 7f7b75bfa6c0 Delete type=0 #125
|
||||||
|
2025/10/17-15:38:10.278555 7f7b6f3ff6c0 Level-0 table #130: started
|
||||||
|
2025/10/17-15:38:10.278587 7f7b6f3ff6c0 Level-0 table #130: 0 bytes OK
|
||||||
|
2025/10/17-15:38:10.286086 7f7b6f3ff6c0 Delete type=0 #128
|
||||||
|
2025/10/17-15:38:10.286263 7f7b6f3ff6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||||
|
2025/10/17-15:38:10.286292 7f7b6f3ff6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||||
8
packs/scenes/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
2025/10/17-15:00:21.717758 7f7b74bf86c0 Recovering log #121
|
||||||
|
2025/10/17-15:00:21.769008 7f7b74bf86c0 Delete type=3 #119
|
||||||
|
2025/10/17-15:00:21.769070 7f7b74bf86c0 Delete type=0 #121
|
||||||
|
2025/10/17-15:19:41.060844 7f7b6f3ff6c0 Level-0 table #126: started
|
||||||
|
2025/10/17-15:19:41.060869 7f7b6f3ff6c0 Level-0 table #126: 0 bytes OK
|
||||||
|
2025/10/17-15:19:41.066791 7f7b6f3ff6c0 Delete type=0 #124
|
||||||
|
2025/10/17-15:19:41.066893 7f7b6f3ff6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||||
|
2025/10/17-15:19:41.066927 7f7b6f3ff6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||||
BIN
packs/scenes/MANIFEST-000127
Normal file
BIN
packs/specialisation/000192.ldb
Normal file
0
packs/specialisation/000243.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000038
|
MANIFEST-000241
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2023/08/08-09:07:13.603739 7f5afddfa6c0 Recovering log #36
|
2025/10/17-15:30:30.682022 7f7b75bfa6c0 Recovering log #239
|
||||||
2023/08/08-09:07:13.613381 7f5afddfa6c0 Delete type=3 #34
|
2025/10/17-15:30:30.742602 7f7b75bfa6c0 Delete type=3 #237
|
||||||
2023/08/08-09:07:13.613431 7f5afddfa6c0 Delete type=0 #36
|
2025/10/17-15:30:30.742693 7f7b75bfa6c0 Delete type=0 #239
|
||||||
2023/08/08-09:07:28.018452 7f58677fe6c0 Level-0 table #41: started
|
2025/10/17-15:38:10.271948 7f7b6f3ff6c0 Level-0 table #244: started
|
||||||
2023/08/08-09:07:28.018491 7f58677fe6c0 Level-0 table #41: 0 bytes OK
|
2025/10/17-15:38:10.271975 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
|
||||||
2023/08/08-09:07:28.055806 7f58677fe6c0 Delete type=0 #39
|
2025/10/17-15:38:10.278425 7f7b6f3ff6c0 Delete type=0 #242
|
||||||
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)
|
2025/10/17-15:38:10.286252 7f7b6f3ff6c0 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
|
2025/10/17-15:00:21.537451 7f7b74bf86c0 Recovering log #235
|
||||||
2023/08/08-08:56:25.043069 7f5867fff6c0 Delete type=3 #30
|
2025/10/17-15:00:21.591584 7f7b74bf86c0 Delete type=3 #233
|
||||||
2023/08/08-08:56:25.043120 7f5867fff6c0 Delete type=0 #32
|
2025/10/17-15:00:21.591645 7f7b74bf86c0 Delete type=0 #235
|
||||||
2023/08/08-09:07:10.688033 7f58677fe6c0 Level-0 table #37: started
|
2025/10/17-15:19:41.028380 7f7b6f3ff6c0 Level-0 table #240: started
|
||||||
2023/08/08-09:07:10.688071 7f58677fe6c0 Level-0 table #37: 0 bytes OK
|
2025/10/17-15:19:41.028403 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
|
||||||
2023/08/08-09:07:10.694013 7f58677fe6c0 Delete type=0 #35
|
2025/10/17-15:19:41.034791 7f7b6f3ff6c0 Delete type=0 #238
|
||||||
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)
|
2025/10/17-15:19:41.041211 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
BIN
packs/specialisation/MANIFEST-000241
Normal file
BIN
packs/traits/000192.ldb
Normal file
0
packs/traits/000243.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000038
|
MANIFEST-000241
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2023/08/08-09:07:13.616518 7f5afd5f96c0 Recovering log #36
|
2025/10/17-15:30:30.802095 7f7b6ffff6c0 Recovering log #239
|
||||||
2023/08/08-09:07:13.626497 7f5afd5f96c0 Delete type=3 #34
|
2025/10/17-15:30:30.861659 7f7b6ffff6c0 Delete type=3 #237
|
||||||
2023/08/08-09:07:13.626556 7f5afd5f96c0 Delete type=0 #36
|
2025/10/17-15:30:30.861731 7f7b6ffff6c0 Delete type=0 #239
|
||||||
2023/08/08-09:07:28.130506 7f58677fe6c0 Level-0 table #41: started
|
2025/10/17-15:38:10.258105 7f7b6f3ff6c0 Level-0 table #244: started
|
||||||
2023/08/08-09:07:28.130559 7f58677fe6c0 Level-0 table #41: 0 bytes OK
|
2025/10/17-15:38:10.258177 7f7b6f3ff6c0 Level-0 table #244: 0 bytes OK
|
||||||
2023/08/08-09:07:28.173605 7f58677fe6c0 Delete type=0 #39
|
2025/10/17-15:38:10.264342 7f7b6f3ff6c0 Delete type=0 #242
|
||||||
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)
|
2025/10/17-15:38:10.286223 7f7b6f3ff6c0 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
|
2025/10/17-15:00:21.652305 7f7b753f96c0 Recovering log #235
|
||||||
2023/08/08-08:56:25.085370 7f5afcdf86c0 Delete type=3 #30
|
2025/10/17-15:00:21.715259 7f7b753f96c0 Delete type=3 #233
|
||||||
2023/08/08-08:56:25.085408 7f5afcdf86c0 Delete type=0 #32
|
2025/10/17-15:00:21.715340 7f7b753f96c0 Delete type=0 #235
|
||||||
2023/08/08-09:07:10.728779 7f58677fe6c0 Level-0 table #37: started
|
2025/10/17-15:19:41.034921 7f7b6f3ff6c0 Level-0 table #240: started
|
||||||
2023/08/08-09:07:10.728820 7f58677fe6c0 Level-0 table #37: 0 bytes OK
|
2025/10/17-15:19:41.034948 7f7b6f3ff6c0 Level-0 table #240: 0 bytes OK
|
||||||
2023/08/08-09:07:10.736158 7f58677fe6c0 Delete type=0 #35
|
2025/10/17-15:19:41.041045 7f7b6f3ff6c0 Delete type=0 #238
|
||||||
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)
|
2025/10/17-15:19:41.041223 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
BIN
packs/traits/MANIFEST-000241
Normal file
@@ -46,13 +46,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
|
.sheet header.sheet-header h1 input,
|
||||||
|
.window-app .window-header,
|
||||||
|
#actors .directory-list,
|
||||||
|
#navigation #scene-list .scene.nav-item {
|
||||||
font-size: 1.0rem;
|
font-size: 1.0rem;
|
||||||
} /* For title, sidebar character and scene */
|
}
|
||||||
|
|
||||||
|
/* For title, sidebar character and scene */
|
||||||
.sheet nav.sheet-tabs {
|
.sheet nav.sheet-tabs {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
} /* For nav and title */
|
}
|
||||||
.window-app input, .fvtt-ecryme .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
|
||||||
|
/* For nav and title */
|
||||||
|
.window-app input,
|
||||||
|
.fvtt-ecryme .item-form,
|
||||||
|
.sheet header.sheet-header .flex-group-center.flex-compteurs,
|
||||||
|
.sheet header.sheet-header .flex-group-center.flex-fatigue,
|
||||||
|
select,
|
||||||
|
button,
|
||||||
|
.item-checkbox,
|
||||||
|
#sidebar,
|
||||||
|
#players,
|
||||||
|
#navigation #nav-toggle {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,15 +80,19 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.strong-text {
|
.strong-text {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover {
|
.tabs .item.active,
|
||||||
|
.blessures-list li ul li:first-child:hover,
|
||||||
|
a:hover {
|
||||||
text-shadow: 1px 0px 0px #ff6600;
|
text-shadow: 1px 0px 0px #ff6600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rollable:hover, .rollable:focus {
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
color: #000;
|
color: #000;
|
||||||
text-shadow: 0 0 10px red;
|
text-shadow: 0 0 10px red;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -86,12 +106,17 @@ input:hover {
|
|||||||
input:disabled {
|
input:disabled {
|
||||||
color: #1c2058;
|
color: #1c2058;
|
||||||
}
|
}
|
||||||
|
|
||||||
select:disabled {
|
select:disabled {
|
||||||
color: #1c2058;
|
color: #1c2058;
|
||||||
}
|
}
|
||||||
table {border: 1px solid #7a7971;}
|
|
||||||
|
|
||||||
.grid, .grid-2col {
|
table {
|
||||||
|
border: 1px solid #7a7971;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid,
|
||||||
|
.grid-2col {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-column: span 2 / span 2;
|
grid-column: span 2 / span 2;
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
@@ -235,6 +260,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
object-position: 50% 0;
|
object-position: 50% 0;
|
||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-img-container {
|
.profile-img-container {
|
||||||
margin-right: 0.2rem;
|
margin-right: 0.2rem;
|
||||||
max-width: 140px;
|
max-width: 140px;
|
||||||
@@ -407,7 +433,8 @@ li.folder > .folder-header h3 {
|
|||||||
/*background: #494e6b;*/
|
/*background: #494e6b;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="text"], select[type="text"] {
|
input[type="text"],
|
||||||
|
select[type="text"] {
|
||||||
background: white;
|
background: white;
|
||||||
color: #494e6b;
|
color: #494e6b;
|
||||||
}
|
}
|
||||||
@@ -416,14 +443,22 @@ select {
|
|||||||
background: white;
|
background: white;
|
||||||
color: #494e6b;
|
color: #494e6b;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
|
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
|
||||||
/*color: rgba(168, 139, 139, 0.5);*/
|
/*color: rgba(168, 139, 139, 0.5);*/
|
||||||
.window-app.sheet .window-content .sheet-header select[type="text"], .window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body select[type="text"] {
|
.window-app.sheet .window-content .sheet-header select[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="number"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="number"],
|
||||||
|
.window-app.sheet .window-content .sheet-body select[type="text"] {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
/*color: #494e6b;*/
|
/*color: #494e6b;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
|
.window-app.sheet .window-content .sheet-header input[type="password"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="date"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="time"] {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
background: url("../images/ui/fond_carnet_01.webp");
|
background: url("../images/ui/fond_carnet_01.webp");
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@@ -431,7 +466,9 @@ select {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] {
|
.window-app.sheet .window-content .sheet-body input[type="password"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="date"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="time"] {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
background: url("../images/ui/fond_carnet_01.webp");
|
background: url("../images/ui/fond_carnet_01.webp");
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@@ -439,7 +476,8 @@ select {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select {
|
.window-app.sheet .window-content .sheet-body select,
|
||||||
|
.window-app.sheet .window-content .sheet-header select {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@@ -447,7 +485,8 @@ select {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
|
.window-app .window-content,
|
||||||
|
.window-app.sheet .window-content .sheet-body {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
/*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/
|
/*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/
|
||||||
background: url("../images/ui/fond_carnet_01.webp");
|
background: url("../images/ui/fond_carnet_01.webp");
|
||||||
@@ -456,7 +495,9 @@ select {
|
|||||||
|
|
||||||
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
|
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
|
||||||
|
|
||||||
section.sheet-body{padding: 0.25rem 0.5rem;}
|
section.sheet-body {
|
||||||
|
padding: 0.25rem 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header .profile-img {
|
.sheet header.sheet-header .profile-img {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
@@ -508,8 +549,13 @@ section.sheet-body:after {
|
|||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header .flex-compteurs {text-align: right;}
|
.sheet header.sheet-header .flex-compteurs {
|
||||||
.sheet header.sheet-header .resource-content {width: 2rem;}
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sheet header.sheet-header .resource-content {
|
||||||
|
width: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.select-diff {
|
.select-diff {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -524,7 +570,8 @@ section.sheet-body:after {
|
|||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp {
|
.window-app.sheet .window-content .carac-value,
|
||||||
|
.window-app.sheet .window-content .competence-xp {
|
||||||
margin: 0.05rem;
|
margin: 0.05rem;
|
||||||
flex-basis: 3rem;
|
flex-basis: 3rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -535,15 +582,21 @@ section.sheet-body:after {
|
|||||||
|
|
||||||
/* ======================================== */
|
/* ======================================== */
|
||||||
|
|
||||||
h1, h2, h3, h4 {
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4 {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul, ol {
|
ul,
|
||||||
|
ol {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
ul, li {
|
|
||||||
|
ul,
|
||||||
|
li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,6 +604,7 @@ ul, li {
|
|||||||
margin: 0.010rem;
|
margin: 0.010rem;
|
||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-fields li {
|
.header-fields li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -559,9 +613,11 @@ ul, li {
|
|||||||
.alterne-list>.list-item:hover {
|
.alterne-list>.list-item:hover {
|
||||||
background: rgba(100, 100, 50, 0.25);
|
background: rgba(100, 100, 50, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alterne-list>.list-item:nth-child(even) {
|
.alterne-list>.list-item:nth-child(even) {
|
||||||
background: rgba(80, 60, 0, 0.10);
|
background: rgba(80, 60, 0, 0.10);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alterne-list>.list-item:nth-child(odd) {
|
.alterne-list>.list-item:nth-child(odd) {
|
||||||
background: rgb(160, 130, 100, 0.05);
|
background: rgb(160, 130, 100, 0.05);
|
||||||
}
|
}
|
||||||
@@ -584,36 +640,45 @@ ul, li {
|
|||||||
display: flex !important;
|
display: flex !important;
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-shadow {
|
.list-item-shadow {
|
||||||
background: rgba(87, 60, 32, 0.35);
|
background: rgba(87, 60, 32, 0.35);
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-shadow2 {
|
.list-item-shadow2 {
|
||||||
background: rgba(87, 60, 32, 0.25);
|
background: rgba(87, 60, 32, 0.25);
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-display-show {
|
.item-display-show {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-display-hide {
|
.item-display-hide {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-quantite {
|
.item-quantite {
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin1 {
|
.list-item-margin1 {
|
||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin2 {
|
.list-item-margin2 {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin3 {
|
.list-item-margin3 {
|
||||||
margin-left: 3rem;
|
margin-left: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin4 {
|
.list-item-margin4 {
|
||||||
margin-left: 4rem;
|
margin-left: 4rem;
|
||||||
}
|
}
|
||||||
@@ -626,6 +691,7 @@ ul, li {
|
|||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-column {
|
.competence-column {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
@@ -633,6 +699,7 @@ ul, li {
|
|||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 1;
|
flex-basis: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-header {
|
.competence-header {
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
@@ -644,16 +711,20 @@ ul, li {
|
|||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-header-label {
|
.status-header-label {
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roll-dialog-label {
|
.roll-dialog-label {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
min-width: 96px;
|
min-width: 96px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.short-label {
|
.short-label {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.keyword-label {
|
.keyword-label {
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -678,6 +749,7 @@ ul, li {
|
|||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sante-value,
|
.sante-value,
|
||||||
.competence-value {
|
.competence-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
@@ -685,26 +757,32 @@ ul, li {
|
|||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.description-value {
|
.description-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 4rem;
|
flex-basis: 4rem;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-label {
|
.small-label {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.padd-right {
|
.padd-right {
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.padd-left {
|
.padd-left {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stack-left {
|
.stack-left {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packed-left {
|
.packed-left {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
@@ -730,6 +808,7 @@ ul, li {
|
|||||||
flex: 0 !important;
|
flex: 0 !important;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tokenhudext.left {
|
.tokenhudext.left {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -737,6 +816,7 @@ ul, li {
|
|||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
right: 4rem;
|
right: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tokenhudext.right {
|
.tokenhudext.right {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -744,6 +824,7 @@ ul, li {
|
|||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
left: 4rem;
|
left: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-icon.tokenhudicon {
|
.control-icon.tokenhudicon {
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
@@ -753,12 +834,15 @@ ul, li {
|
|||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
margin: 0.25rem;
|
margin: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-icon.tokenhudicon.right {
|
.control-icon.tokenhudicon.right {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#token-hud .status-effects.active {
|
#token-hud .status-effects.active {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token-sheet .window-content .flexcol .sheet-tabs {
|
.token-sheet .window-content .flexcol .sheet-tabs {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
@@ -782,6 +866,7 @@ ul, li {
|
|||||||
.skill-label {
|
.skill-label {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-good-checkbox {
|
.skill-good-checkbox {
|
||||||
max-height: 10px;
|
max-height: 10px;
|
||||||
max-width: 10px;
|
max-width: 10px;
|
||||||
@@ -809,7 +894,8 @@ ul, li {
|
|||||||
height: 470px !important;
|
height: 470px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-tabs > .collapsed, #chat-controls .chat-control-icon {
|
#sidebar-tabs>.collapsed,
|
||||||
|
#chat-controls .chat-control-icon {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
||||||
}
|
}
|
||||||
@@ -824,6 +910,7 @@ ul, li {
|
|||||||
background: rgba(0, 0, 0, 0.05);
|
background: rgba(0, 0, 0, 0.05);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message-header {
|
.chat-message-header {
|
||||||
background: rgba(220, 220, 210, 0.5);
|
background: rgba(220, 220, 210, 0.5);
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
@@ -834,9 +921,15 @@ ul, li {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to {
|
.message-chat-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-message .message-header .flavor-text,
|
||||||
|
.chat-message .message-header .whisper-to {
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-result-text,
|
.chat-result-text,
|
||||||
.chat-actor-name {
|
.chat-actor-name {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@@ -844,12 +937,15 @@ ul, li {
|
|||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-result-success {
|
.chat-result-success {
|
||||||
color: darkgreen;
|
color: darkgreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-result-failure {
|
.chat-result-failure {
|
||||||
color: darkred;
|
color: darkred;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-img {
|
.chat-img {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
@@ -927,6 +1023,7 @@ ul, li {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-ability-icon {
|
.small-ability-icon {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 2px 2px 2px;
|
padding: 2px 2px 2px 2px;
|
||||||
@@ -935,6 +1032,7 @@ ul, li {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.combat-icon {
|
.combat-icon {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 2px 2px 2px;
|
padding: 2px 2px 2px 2px;
|
||||||
@@ -969,7 +1067,8 @@ ul, li {
|
|||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
/* Control, Tool, hotbar & navigation */
|
/* Control, Tool, hotbar & navigation */
|
||||||
|
|
||||||
#controls .scene-control, #controls .control-tool {
|
#controls .scene-control,
|
||||||
|
#controls .control-tool {
|
||||||
box-shadow: 0 0 3px #000;
|
box-shadow: 0 0 3px #000;
|
||||||
margin: 0 0 8px;
|
margin: 0 0 8px;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
@@ -980,7 +1079,10 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover {
|
#controls .scene-control.active,
|
||||||
|
#controls .control-tool.active,
|
||||||
|
#controls .scene-control:hover,
|
||||||
|
#controls .control-tool:hover {
|
||||||
background: rgba(72, 46, 28, 1);
|
background: rgba(72, 46, 28, 1);
|
||||||
background-origin: padding-box;
|
background-origin: padding-box;
|
||||||
border-image: url(img/ui/footer-button.png) 10 repeat;
|
border-image: url(img/ui/footer-button.png) 10 repeat;
|
||||||
@@ -1026,7 +1128,8 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#navigation #scene-list .scene.view, #navigation #scene-list .scene.context {
|
#navigation #scene-list .scene.view,
|
||||||
|
#navigation #scene-list .scene.context {
|
||||||
background: rgba(72, 46, 28, 1);
|
background: rgba(72, 46, 28, 1);
|
||||||
background-origin: padding-box;
|
background-origin: padding-box;
|
||||||
border-image: url(img/ui/footer-button.png) 10 repeat;
|
border-image: url(img/ui/footer-button.png) 10 repeat;
|
||||||
@@ -1071,7 +1174,8 @@ ul, li {
|
|||||||
|
|
||||||
|
|
||||||
.tooltip-nobottom {
|
.tooltip-nobottom {
|
||||||
border-bottom: unset; /* If you want dots under the hoverable text */
|
border-bottom: unset;
|
||||||
|
/* If you want dots under the hoverable text */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Show the tooltip text when you mouse over the tooltip container */
|
/* Show the tooltip text when you mouse over the tooltip container */
|
||||||
@@ -1101,6 +1205,7 @@ ul, li {
|
|||||||
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||||
background-color: red;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-card-button:active {
|
.chat-card-button:active {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
@@ -1146,14 +1251,14 @@ ul, li {
|
|||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
#pause
|
#pause {
|
||||||
{
|
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
#pause > h3
|
|
||||||
{
|
#pause>h3 {
|
||||||
color: #CCC
|
color: #CCC
|
||||||
}
|
}
|
||||||
|
|
||||||
#pause>img {
|
#pause>img {
|
||||||
content: url(../images/ui/ecryme_logo_small_01.webp);
|
content: url(../images/ui/ecryme_logo_small_01.webp);
|
||||||
height: 200px;
|
height: 200px;
|
||||||
@@ -1184,23 +1289,28 @@ ul, li {
|
|||||||
.status-small-label {
|
.status-small-label {
|
||||||
font-size: 0.65rem;
|
font-size: 0.65rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-grow {
|
.no-grow {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 32px;
|
max-width: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-col-name {
|
.status-col-name {
|
||||||
max-width: 72px;
|
max-width: 72px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img-no-border {
|
.img-no-border {
|
||||||
max-width: 48px;
|
max-width: 48px;
|
||||||
max-height: 48px;
|
max-height: 48px;
|
||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.items-title-bg {
|
.items-title-bg {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.impact-box {
|
.impact-box {
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
border-color: #000000;
|
border-color: #000000;
|
||||||
@@ -1209,6 +1319,7 @@ ul, li {
|
|||||||
margin: 4px;
|
margin: 4px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.impact-title {
|
.impact-title {
|
||||||
font-size: bold;
|
font-size: bold;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1224,113 +1335,169 @@ ul, li {
|
|||||||
font-family: MailartRubberstamp;
|
font-family: MailartRubberstamp;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lock-icon {
|
.lock-icon {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-sheet-img {
|
.item-sheet-img {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: auto;
|
height: auto;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-img {
|
.item-name-img {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header {
|
.item-name-label-header {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header-long {
|
.item-name-label-header-long {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header-long2 {
|
.item-name-label-header-long2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 24rem;
|
max-width: 24rem;
|
||||||
min-width: 24rem;
|
min-width: 24rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label {
|
.item-name-label {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 10rem;
|
max-width: 10rem;
|
||||||
min-width: 10rem;
|
min-width: 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-long {
|
.item-name-label-long {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-short {
|
.item-name-label-short {
|
||||||
|
margin-top: 4px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
min-width: 4rem;
|
min-width: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-medium {
|
.item-name-label-medium {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 6rem;
|
max-width: 6rem;
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-name-label-medium2 {
|
||||||
|
margin-top: 4px;
|
||||||
|
flex-grow: 0;
|
||||||
|
max-width: 10rem;
|
||||||
|
min-width: 10rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-name-label-free {
|
||||||
|
margin-top: 4px;
|
||||||
|
align-self: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
.item-name-label-long2 {
|
.item-name-label-long2 {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 22rem;
|
max-width: 22rem;
|
||||||
min-width: 22rem;
|
min-width: 22rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-level2 {
|
.item-name-label-level2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 9rem;
|
max-width: 9rem;
|
||||||
min-width: 9rem;
|
min-width: 9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-short {
|
.item-field-label-short {
|
||||||
|
margin-top: 4px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
min-width: 4rem;
|
min-width: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-field-label-short-header {
|
||||||
|
margin-top: 4px;
|
||||||
|
flex-grow: 1;
|
||||||
|
max-width: 2.2rem;
|
||||||
|
min-width: 2.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.item-field-label-medium {
|
.item-field-label-medium {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 6rem;
|
max-width: 6rem;
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-skill {
|
.item-field-skill {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 6.8rem;
|
max-width: 6.8rem;
|
||||||
min-width: 6.8rem;
|
min-width: 6.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-long {
|
.item-field-label-long {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 10rem;
|
max-width: 10rem;
|
||||||
min-width: 10rem;
|
min-width: 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-control-end {
|
.item-control-end {
|
||||||
align-self: flex-end;
|
align-self: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alternate-list {
|
.alternate-list {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-filler {
|
.item-filler {
|
||||||
flex-grow: 6;
|
flex-grow: 6;
|
||||||
flex-shrink: 7;
|
flex-shrink: 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-controls-fixed {
|
.item-controls-fixed {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-controls-fixed-full {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
.attribute-label {
|
.attribute-label {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexrow-no-expand {
|
.flexrow-no-expand {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flexrow-start {
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-content: flex-start;
|
||||||
|
align-self: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
.item-input-small {
|
.item-input-small {
|
||||||
max-width: 16px;
|
max-width: 16px;
|
||||||
max-height: 12px;
|
max-height: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-summary-rollable {
|
.character-summary-rollable {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
@@ -1338,6 +1505,7 @@ ul, li {
|
|||||||
.ecryme-roll-dialog .window-header {
|
.ecryme-roll-dialog .window-header {
|
||||||
border-radius: 10px 10px 0% 0%;
|
border-radius: 10px 10px 0% 0%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ecryme-roll-dialog .window-content {
|
.ecryme-roll-dialog .window-content {
|
||||||
border-radius: 0% 0% 10px 10px;
|
border-radius: 0% 0% 10px 10px;
|
||||||
}
|
}
|
||||||
@@ -1354,16 +1522,19 @@ ul, li {
|
|||||||
.bonus-spec {
|
.bonus-spec {
|
||||||
max-width: 48px;
|
max-width: 48px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-bonus-container {
|
.confront-bonus-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pool-list {
|
.pool-list {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-bonus-centered {
|
.confront-bonus-centered {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -1377,12 +1548,14 @@ ul, li {
|
|||||||
.dice-spec {
|
.dice-spec {
|
||||||
max-width: 64px;
|
max-width: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-dice-container {
|
.confront-dice-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-dice-centered {
|
.confront-dice-centered {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -1392,6 +1565,7 @@ ul, li {
|
|||||||
font-family: MailartRubberstamp;
|
font-family: MailartRubberstamp;
|
||||||
transform: translate(-50%, -55%);
|
transform: translate(-50%, -55%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-area {
|
.confront-area {
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
|
|||||||
@@ -46,13 +46,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
|
.sheet header.sheet-header h1 input,
|
||||||
|
.window-app .window-header,
|
||||||
|
#actors .directory-list,
|
||||||
|
#navigation #scene-list .scene.nav-item {
|
||||||
font-size: 1.0rem;
|
font-size: 1.0rem;
|
||||||
} /* For title, sidebar character and scene */
|
}
|
||||||
|
|
||||||
|
/* For title, sidebar character and scene */
|
||||||
.sheet nav.sheet-tabs {
|
.sheet nav.sheet-tabs {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
} /* For nav and title */
|
}
|
||||||
.window-app input, .fvtt-ecryme .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
|
||||||
|
/* For nav and title */
|
||||||
|
.window-app input,
|
||||||
|
.fvtt-ecryme .item-form,
|
||||||
|
.sheet header.sheet-header .flex-group-center.flex-compteurs,
|
||||||
|
.sheet header.sheet-header .flex-group-center.flex-fatigue,
|
||||||
|
select,
|
||||||
|
button,
|
||||||
|
.item-checkbox,
|
||||||
|
#sidebar,
|
||||||
|
#players,
|
||||||
|
#navigation #nav-toggle {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,15 +80,19 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.strong-text {
|
.strong-text {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover {
|
.tabs .item.active,
|
||||||
|
.blessures-list li ul li:first-child:hover,
|
||||||
|
a:hover {
|
||||||
text-shadow: 1px 0px 0px #ff6600;
|
text-shadow: 1px 0px 0px #ff6600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rollable:hover, .rollable:focus {
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
color: #000;
|
color: #000;
|
||||||
text-shadow: 0 0 10px red;
|
text-shadow: 0 0 10px red;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -86,12 +106,17 @@ input:hover {
|
|||||||
input:disabled {
|
input:disabled {
|
||||||
color: #1c2058;
|
color: #1c2058;
|
||||||
}
|
}
|
||||||
|
|
||||||
select:disabled {
|
select:disabled {
|
||||||
color: #1c2058;
|
color: #1c2058;
|
||||||
}
|
}
|
||||||
table {border: 1px solid #7a7971;}
|
|
||||||
|
|
||||||
.grid, .grid-2col {
|
table {
|
||||||
|
border: 1px solid #7a7971;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid,
|
||||||
|
.grid-2col {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-column: span 2 / span 2;
|
grid-column: span 2 / span 2;
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
@@ -212,6 +237,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
object-position: 50% 0;
|
object-position: 50% 0;
|
||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-img-container {
|
.profile-img-container {
|
||||||
margin-right: 0.2rem;
|
margin-right: 0.2rem;
|
||||||
max-width: 140px;
|
max-width: 140px;
|
||||||
@@ -376,7 +402,8 @@ li.folder > .folder-header h3 {
|
|||||||
/*background: #494e6b;*/
|
/*background: #494e6b;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="text"], select[type="text"] {
|
input[type="text"],
|
||||||
|
select[type="text"] {
|
||||||
background: white;
|
background: white;
|
||||||
color: #494e6b;
|
color: #494e6b;
|
||||||
}
|
}
|
||||||
@@ -385,14 +412,22 @@ select {
|
|||||||
background: white;
|
background: white;
|
||||||
color: #494e6b;
|
color: #494e6b;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
|
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
|
||||||
/*color: rgba(168, 139, 139, 0.5);*/
|
/*color: rgba(168, 139, 139, 0.5);*/
|
||||||
.window-app.sheet .window-content .sheet-header select[type="text"], .window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body select[type="text"] {
|
.window-app.sheet .window-content .sheet-header select[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="number"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="number"],
|
||||||
|
.window-app.sheet .window-content .sheet-body select[type="text"] {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
/*color: #494e6b;*/
|
/*color: #494e6b;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
|
.window-app.sheet .window-content .sheet-header input[type="password"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="date"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="time"] {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
background: url("../images/ui/fond_carnet_01.webp");
|
background: url("../images/ui/fond_carnet_01.webp");
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@@ -400,7 +435,9 @@ select {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] {
|
.window-app.sheet .window-content .sheet-body input[type="password"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="date"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="time"] {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
background: url("../images/ui/fond_carnet_01.webp");
|
background: url("../images/ui/fond_carnet_01.webp");
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@@ -408,7 +445,8 @@ select {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select {
|
.window-app.sheet .window-content .sheet-body select,
|
||||||
|
.window-app.sheet .window-content .sheet-header select {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@@ -416,7 +454,8 @@ select {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
|
.window-app .window-content,
|
||||||
|
.window-app.sheet .window-content .sheet-body {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
/*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/
|
/*background: url("../images/ui/pc_sheet_bg.webp") repeat left top;*/
|
||||||
background: url("../images/ui/fond_carnet_01.webp");
|
background: url("../images/ui/fond_carnet_01.webp");
|
||||||
@@ -425,7 +464,9 @@ select {
|
|||||||
|
|
||||||
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
|
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
|
||||||
|
|
||||||
section.sheet-body{padding: 0.25rem 0.5rem;}
|
section.sheet-body {
|
||||||
|
padding: 0.25rem 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header .profile-img {
|
.sheet header.sheet-header .profile-img {
|
||||||
-o-object-fit: cover;
|
-o-object-fit: cover;
|
||||||
@@ -454,9 +495,11 @@ section.sheet-body{padding: 0.25rem 0.5rem;}
|
|||||||
|
|
||||||
/* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/
|
/* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/
|
||||||
|
|
||||||
|
nav.sheet-tabs a,
|
||||||
nav.sheet-tabs .item {
|
nav.sheet-tabs .item {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 0 0.25rem;
|
padding: 0 0.25rem;
|
||||||
|
color: beige;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav.sheet-tabs .item:after {
|
nav.sheet-tabs .item:after {
|
||||||
@@ -479,8 +522,13 @@ section.sheet-body:after {
|
|||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header .flex-compteurs {text-align: right;}
|
.sheet header.sheet-header .flex-compteurs {
|
||||||
.sheet header.sheet-header .resource-content {width: 2rem;}
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sheet header.sheet-header .resource-content {
|
||||||
|
width: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.select-diff {
|
.select-diff {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -495,7 +543,8 @@ section.sheet-body:after {
|
|||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp {
|
.window-app.sheet .window-content .carac-value,
|
||||||
|
.window-app.sheet .window-content .competence-xp {
|
||||||
margin: 0.05rem;
|
margin: 0.05rem;
|
||||||
flex-basis: 3rem;
|
flex-basis: 3rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -506,15 +555,21 @@ section.sheet-body:after {
|
|||||||
|
|
||||||
/* ======================================== */
|
/* ======================================== */
|
||||||
|
|
||||||
h1, h2, h3, h4 {
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4 {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul, ol {
|
ul,
|
||||||
|
ol {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
ul, li {
|
|
||||||
|
ul,
|
||||||
|
li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -522,6 +577,7 @@ ul, li {
|
|||||||
margin: 0.010rem;
|
margin: 0.010rem;
|
||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-fields li {
|
.header-fields li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -530,9 +586,11 @@ ul, li {
|
|||||||
.alterne-list>.list-item:hover {
|
.alterne-list>.list-item:hover {
|
||||||
background: rgba(100, 100, 50, 0.25);
|
background: rgba(100, 100, 50, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alterne-list>.list-item:nth-child(even) {
|
.alterne-list>.list-item:nth-child(even) {
|
||||||
background: rgba(80, 60, 0, 0.10);
|
background: rgba(80, 60, 0, 0.10);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alterne-list>.list-item:nth-child(odd) {
|
.alterne-list>.list-item:nth-child(odd) {
|
||||||
background: rgb(160, 130, 100, 0.05);
|
background: rgb(160, 130, 100, 0.05);
|
||||||
}
|
}
|
||||||
@@ -555,36 +613,45 @@ ul, li {
|
|||||||
display: flex !important;
|
display: flex !important;
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-shadow {
|
.list-item-shadow {
|
||||||
background: rgba(87, 60, 32, 0.35);
|
background: rgba(87, 60, 32, 0.35);
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-shadow2 {
|
.list-item-shadow2 {
|
||||||
background: rgba(87, 60, 32, 0.25);
|
background: rgba(87, 60, 32, 0.25);
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-display-show {
|
.item-display-show {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-display-hide {
|
.item-display-hide {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-quantite {
|
.item-quantite {
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin1 {
|
.list-item-margin1 {
|
||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin2 {
|
.list-item-margin2 {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin3 {
|
.list-item-margin3 {
|
||||||
margin-left: 3rem;
|
margin-left: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin4 {
|
.list-item-margin4 {
|
||||||
margin-left: 4rem;
|
margin-left: 4rem;
|
||||||
}
|
}
|
||||||
@@ -597,6 +664,7 @@ ul, li {
|
|||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-column {
|
.competence-column {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
@@ -604,6 +672,7 @@ ul, li {
|
|||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 1;
|
flex-basis: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-header {
|
.competence-header {
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
@@ -615,16 +684,20 @@ ul, li {
|
|||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-header-label {
|
.status-header-label {
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roll-dialog-label {
|
.roll-dialog-label {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
min-width: 96px;
|
min-width: 96px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.short-label {
|
.short-label {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.keyword-label {
|
.keyword-label {
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -649,6 +722,7 @@ ul, li {
|
|||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sante-value,
|
.sante-value,
|
||||||
.competence-value {
|
.competence-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
@@ -656,26 +730,32 @@ ul, li {
|
|||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.description-value {
|
.description-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 4rem;
|
flex-basis: 4rem;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-label {
|
.small-label {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.padd-right {
|
.padd-right {
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.padd-left {
|
.padd-left {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stack-left {
|
.stack-left {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packed-left {
|
.packed-left {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
@@ -701,6 +781,7 @@ ul, li {
|
|||||||
flex: 0 !important;
|
flex: 0 !important;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tokenhudext.left {
|
.tokenhudext.left {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -708,6 +789,7 @@ ul, li {
|
|||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
right: 4rem;
|
right: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tokenhudext.right {
|
.tokenhudext.right {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -715,6 +797,7 @@ ul, li {
|
|||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
left: 4rem;
|
left: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-icon.tokenhudicon {
|
.control-icon.tokenhudicon {
|
||||||
width: -moz-fit-content;
|
width: -moz-fit-content;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
@@ -726,12 +809,15 @@ ul, li {
|
|||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
margin: 0.25rem;
|
margin: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-icon.tokenhudicon.right {
|
.control-icon.tokenhudicon.right {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#token-hud .status-effects.active {
|
#token-hud .status-effects.active {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token-sheet .window-content .flexcol .sheet-tabs {
|
.token-sheet .window-content .flexcol .sheet-tabs {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
@@ -755,6 +841,7 @@ ul, li {
|
|||||||
.skill-label {
|
.skill-label {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-good-checkbox {
|
.skill-good-checkbox {
|
||||||
max-height: 10px;
|
max-height: 10px;
|
||||||
max-width: 10px;
|
max-width: 10px;
|
||||||
@@ -782,7 +869,8 @@ ul, li {
|
|||||||
height: 470px !important;
|
height: 470px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-tabs > .collapsed, #chat-controls .chat-control-icon {
|
#sidebar-tabs>.collapsed,
|
||||||
|
#chat-controls .chat-control-icon {
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
||||||
}
|
}
|
||||||
@@ -797,6 +885,7 @@ ul, li {
|
|||||||
background: rgba(0, 0, 0, 0.05);
|
background: rgba(0, 0, 0, 0.05);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message-header {
|
.chat-message-header {
|
||||||
background: rgba(220, 220, 210, 0.5);
|
background: rgba(220, 220, 210, 0.5);
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
@@ -807,9 +896,22 @@ ul, li {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to {
|
.message-chat-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message-h3 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
color: darkred;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-message .message-header .flavor-text,
|
||||||
|
.chat-message .message-header .whisper-to {
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-result-text,
|
.chat-result-text,
|
||||||
.chat-actor-name {
|
.chat-actor-name {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@@ -817,12 +919,15 @@ ul, li {
|
|||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-result-success {
|
.chat-result-success {
|
||||||
color: darkgreen;
|
color: darkgreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-result-failure {
|
.chat-result-failure {
|
||||||
color: darkred;
|
color: darkred;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-img {
|
.chat-img {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
@@ -900,6 +1005,7 @@ ul, li {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-ability-icon {
|
.small-ability-icon {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 2px 2px 2px;
|
padding: 2px 2px 2px 2px;
|
||||||
@@ -908,6 +1014,7 @@ ul, li {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.combat-icon {
|
.combat-icon {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 2px 2px 2px;
|
padding: 2px 2px 2px 2px;
|
||||||
@@ -942,7 +1049,8 @@ ul, li {
|
|||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
/* Control, Tool, hotbar & navigation */
|
/* Control, Tool, hotbar & navigation */
|
||||||
|
|
||||||
#controls .scene-control, #controls .control-tool {
|
#controls .scene-control,
|
||||||
|
#controls .control-tool {
|
||||||
box-shadow: 0 0 3px #000;
|
box-shadow: 0 0 3px #000;
|
||||||
margin: 0 0 8px;
|
margin: 0 0 8px;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
@@ -954,7 +1062,10 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover {
|
#controls .scene-control.active,
|
||||||
|
#controls .control-tool.active,
|
||||||
|
#controls .scene-control:hover,
|
||||||
|
#controls .control-tool:hover {
|
||||||
background: rgba(72, 46, 28, 1);
|
background: rgba(72, 46, 28, 1);
|
||||||
background-origin: padding-box;
|
background-origin: padding-box;
|
||||||
-o-border-image: url(img/ui/footer-button.png) 10 repeat;
|
-o-border-image: url(img/ui/footer-button.png) 10 repeat;
|
||||||
@@ -1004,7 +1115,8 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#navigation #scene-list .scene.view, #navigation #scene-list .scene.context {
|
#navigation #scene-list .scene.view,
|
||||||
|
#navigation #scene-list .scene.context {
|
||||||
background: rgba(72, 46, 28, 1);
|
background: rgba(72, 46, 28, 1);
|
||||||
background-origin: padding-box;
|
background-origin: padding-box;
|
||||||
-o-border-image: url(img/ui/footer-button.png) 10 repeat;
|
-o-border-image: url(img/ui/footer-button.png) 10 repeat;
|
||||||
@@ -1051,7 +1163,8 @@ ul, li {
|
|||||||
|
|
||||||
|
|
||||||
.tooltip-nobottom {
|
.tooltip-nobottom {
|
||||||
border-bottom: unset; /* If you want dots under the hoverable text */
|
border-bottom: unset;
|
||||||
|
/* If you want dots under the hoverable text */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Show the tooltip text when you mouse over the tooltip container */
|
/* Show the tooltip text when you mouse over the tooltip container */
|
||||||
@@ -1081,6 +1194,7 @@ ul, li {
|
|||||||
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||||
background-color: red;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-card-button:active {
|
.chat-card-button:active {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
@@ -1126,14 +1240,14 @@ ul, li {
|
|||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
#pause
|
#pause {
|
||||||
{
|
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
#pause > h3
|
|
||||||
{
|
#pause>h3 {
|
||||||
color: #CCC
|
color: #CCC
|
||||||
}
|
}
|
||||||
|
|
||||||
#pause>img {
|
#pause>img {
|
||||||
content: url(../images/ui/ecryme_logo_small_01.webp);
|
content: url(../images/ui/ecryme_logo_small_01.webp);
|
||||||
height: 200px;
|
height: 200px;
|
||||||
@@ -1164,23 +1278,28 @@ ul, li {
|
|||||||
.status-small-label {
|
.status-small-label {
|
||||||
font-size: 0.65rem;
|
font-size: 0.65rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-grow {
|
.no-grow {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 32px;
|
max-width: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-col-name {
|
.status-col-name {
|
||||||
max-width: 72px;
|
max-width: 72px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img-no-border {
|
.img-no-border {
|
||||||
max-width: 48px;
|
max-width: 48px;
|
||||||
max-height: 48px;
|
max-height: 48px;
|
||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.items-title-bg {
|
.items-title-bg {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
color: rgba(19, 18, 18, 0.95);
|
color: rgba(19, 18, 18, 0.95);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.impact-box {
|
.impact-box {
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
border-color: #000000;
|
border-color: #000000;
|
||||||
@@ -1189,6 +1308,7 @@ ul, li {
|
|||||||
margin: 4px;
|
margin: 4px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.impact-title {
|
.impact-title {
|
||||||
font-size: bold;
|
font-size: bold;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1204,113 +1324,169 @@ ul, li {
|
|||||||
font-family: MailartRubberstamp;
|
font-family: MailartRubberstamp;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lock-icon {
|
.lock-icon {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-sheet-img {
|
.item-sheet-img {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: auto;
|
height: auto;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-img {
|
.item-name-img {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header {
|
.item-name-label-header {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header-long {
|
.item-name-label-header-long {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header-long2 {
|
.item-name-label-header-long2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 24rem;
|
max-width: 24rem;
|
||||||
min-width: 24rem;
|
min-width: 24rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label {
|
.item-name-label {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 10rem;
|
max-width: 10rem;
|
||||||
min-width: 10rem;
|
min-width: 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-long {
|
.item-name-label-long {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-short {
|
.item-name-label-short {
|
||||||
|
margin-top: 4px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
min-width: 4rem;
|
min-width: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-medium {
|
.item-name-label-medium {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 6rem;
|
max-width: 6rem;
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-name-label-medium2 {
|
||||||
|
margin-top: 4px;
|
||||||
|
flex-grow: 0;
|
||||||
|
max-width: 10rem;
|
||||||
|
min-width: 10rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-name-label-free {
|
||||||
|
margin-top: 4px;
|
||||||
|
align-self: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
.item-name-label-long2 {
|
.item-name-label-long2 {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 22rem;
|
max-width: 22rem;
|
||||||
min-width: 22rem;
|
min-width: 22rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-level2 {
|
.item-name-label-level2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 9rem;
|
max-width: 9rem;
|
||||||
min-width: 9rem;
|
min-width: 9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-short {
|
.item-field-label-short {
|
||||||
|
margin-top: 4px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
min-width: 4rem;
|
min-width: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-field-label-short-header {
|
||||||
|
margin-top: 4px;
|
||||||
|
flex-grow: 1;
|
||||||
|
max-width: 2.2rem;
|
||||||
|
min-width: 2.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.item-field-label-medium {
|
.item-field-label-medium {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 6rem;
|
max-width: 6rem;
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-skill {
|
.item-field-skill {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 6.8rem;
|
max-width: 6.8rem;
|
||||||
min-width: 6.8rem;
|
min-width: 6.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-long {
|
.item-field-label-long {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 10rem;
|
max-width: 10rem;
|
||||||
min-width: 10rem;
|
min-width: 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-control-end {
|
.item-control-end {
|
||||||
align-self: flex-end;
|
align-self: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alternate-list {
|
.alternate-list {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-filler {
|
.item-filler {
|
||||||
flex-grow: 6;
|
flex-grow: 6;
|
||||||
flex-shrink: 7;
|
flex-shrink: 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-controls-fixed {
|
.item-controls-fixed {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-controls-fixed-full {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
.attribute-label {
|
.attribute-label {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexrow-no-expand {
|
.flexrow-no-expand {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flexrow-start {
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-content: flex-start;
|
||||||
|
align-self: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
.item-input-small {
|
.item-input-small {
|
||||||
max-width: 16px;
|
max-width: 16px;
|
||||||
max-height: 12px;
|
max-height: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-summary-rollable {
|
.character-summary-rollable {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
@@ -1318,6 +1494,7 @@ ul, li {
|
|||||||
.ecryme-roll-dialog .window-header {
|
.ecryme-roll-dialog .window-header {
|
||||||
border-radius: 10px 10px 0% 0%;
|
border-radius: 10px 10px 0% 0%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ecryme-roll-dialog .window-content {
|
.ecryme-roll-dialog .window-content {
|
||||||
border-radius: 0% 0% 10px 10px;
|
border-radius: 0% 0% 10px 10px;
|
||||||
}
|
}
|
||||||
@@ -1334,16 +1511,19 @@ ul, li {
|
|||||||
.bonus-spec {
|
.bonus-spec {
|
||||||
max-width: 48px;
|
max-width: 48px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-bonus-container {
|
.confront-bonus-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pool-list {
|
.pool-list {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-bonus-centered {
|
.confront-bonus-centered {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -1357,12 +1537,14 @@ ul, li {
|
|||||||
.dice-spec {
|
.dice-spec {
|
||||||
max-width: 64px;
|
max-width: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-dice-container {
|
.confront-dice-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-dice-centered {
|
.confront-dice-centered {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -1372,6 +1554,7 @@ ul, li {
|
|||||||
font-family: MailartRubberstamp;
|
font-family: MailartRubberstamp;
|
||||||
transform: translate(-50%, -55%);
|
transform: translate(-50%, -55%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.confront-area {
|
.confront-area {
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
|
|||||||
51
system.json
@@ -3,8 +3,10 @@
|
|||||||
"esmodules": [
|
"esmodules": [
|
||||||
"modules/ecryme-main.js"
|
"modules/ecryme-main.js"
|
||||||
],
|
],
|
||||||
"gridDistance": 1,
|
"grid": {
|
||||||
"gridUnits": "m",
|
"distance": 2,
|
||||||
|
"units": "m"
|
||||||
|
},
|
||||||
"languages": [
|
"languages": [
|
||||||
{
|
{
|
||||||
"lang": "fr",
|
"lang": "fr",
|
||||||
@@ -62,6 +64,18 @@
|
|||||||
"ASSISTANT": "OWNER"
|
"ASSISTANT": "OWNER"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"label": "Scenes",
|
||||||
|
"type": "Scene",
|
||||||
|
"name": "scenes",
|
||||||
|
"path": "packs/scenes",
|
||||||
|
"system": "fvtt-ecryme",
|
||||||
|
"flags": {},
|
||||||
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "Maneuvers",
|
"label": "Maneuvers",
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
@@ -73,13 +87,25 @@
|
|||||||
"PLAYER": "OBSERVER",
|
"PLAYER": "OBSERVER",
|
||||||
"ASSISTANT": "OWNER"
|
"ASSISTANT": "OWNER"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Help/Aides",
|
||||||
|
"type": "JournalEntry",
|
||||||
|
"name": "help",
|
||||||
|
"path": "packs/help",
|
||||||
|
"system": "fvtt-ecryme",
|
||||||
|
"flags": {},
|
||||||
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "LICENSE.txt",
|
"license": "LICENSE.txt",
|
||||||
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/raw/branch/master/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-ecryme/raw/branch/master/system.json",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "10",
|
"minimum": "13",
|
||||||
"verified": "11"
|
"verified": "13"
|
||||||
},
|
},
|
||||||
"id": "fvtt-ecryme",
|
"id": "fvtt-ecryme",
|
||||||
"primaryTokenAttribute": "secondary.health",
|
"primaryTokenAttribute": "secondary.health",
|
||||||
@@ -88,9 +114,18 @@
|
|||||||
"styles": [
|
"styles": [
|
||||||
"styles/ecryme.css"
|
"styles/ecryme.css"
|
||||||
],
|
],
|
||||||
|
"relationships": {
|
||||||
|
"requires": [
|
||||||
|
{
|
||||||
|
"id": "babele",
|
||||||
|
"type": "module",
|
||||||
|
"compatibility": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"title": "Ecryme, le Jeu de Rôles",
|
"title": "Ecryme, le Jeu de Rôles",
|
||||||
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme",
|
"url": "https://www.uberwald.me/gitea/public/fvtt-ecryme",
|
||||||
"version": "11.0.13",
|
"version": "13.0.3",
|
||||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.13.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v13.0.3.zip",
|
||||||
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
|
"background": "systems/fvtt-ecryme/images/assets/ecryme_extract_panel_01.webp"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"types": [
|
"types": [
|
||||||
"pc"
|
"pc","annency", "npc"
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
@@ -24,31 +24,38 @@
|
|||||||
},
|
},
|
||||||
"core": {
|
"core": {
|
||||||
"subactors": [],
|
"subactors": [],
|
||||||
|
"equipmentfree": "",
|
||||||
"skills": {
|
"skills": {
|
||||||
"physical": {
|
"physical": {
|
||||||
"name": "ECRY.ui.physical",
|
"name": "ECRY.ui.physical",
|
||||||
|
"pnjvalue": 0,
|
||||||
"skilllist": {
|
"skilllist": {
|
||||||
"athletics": {
|
"athletics": {
|
||||||
|
"key": "athletics",
|
||||||
"name": "ECRY.ui.athletics",
|
"name": "ECRY.ui.athletics",
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"driving": {
|
"driving": {
|
||||||
|
"key": "driving",
|
||||||
"name": "ECRY.ui.driving",
|
"name": "ECRY.ui.driving",
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"fencing": {
|
"fencing": {
|
||||||
|
"key": "fencing",
|
||||||
"name": "ECRY.ui.fencing",
|
"name": "ECRY.ui.fencing",
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"brawling": {
|
"brawling": {
|
||||||
|
"key": "brawling",
|
||||||
"name": "ECRY.ui.brawling",
|
"name": "ECRY.ui.brawling",
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"shooting": {
|
"shooting": {
|
||||||
|
"key": "shooting",
|
||||||
"name": "ECRY.ui.shooting",
|
"name": "ECRY.ui.shooting",
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"value": 0
|
"value": 0
|
||||||
@@ -57,28 +64,34 @@
|
|||||||
},
|
},
|
||||||
"mental": {
|
"mental": {
|
||||||
"name": "ECRY.ui.mental",
|
"name": "ECRY.ui.mental",
|
||||||
|
"pnjvalue": 0,
|
||||||
"skilllist": {
|
"skilllist": {
|
||||||
"anthropomecanology": {
|
"anthropomecanology": {
|
||||||
|
"key": "anthropomecanology",
|
||||||
"name": "ECRY.ui.anthropomecanology",
|
"name": "ECRY.ui.anthropomecanology",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"ecrymology": {
|
"ecrymology": {
|
||||||
|
"key": "ecrymology",
|
||||||
"name": "ECRY.ui.ecrymology",
|
"name": "ECRY.ui.ecrymology",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"traumatology": {
|
"traumatology": {
|
||||||
|
"key": "traumatology",
|
||||||
"name": "ECRY.ui.traumatology",
|
"name": "ECRY.ui.traumatology",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"traversology": {
|
"traversology": {
|
||||||
|
"key": "traversology",
|
||||||
"name": "ECRY.ui.traversology",
|
"name": "ECRY.ui.traversology",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"urbatechnology": {
|
"urbatechnology": {
|
||||||
|
"key": "urbatechnology",
|
||||||
"name": "ECRY.ui.urbatechnology",
|
"name": "ECRY.ui.urbatechnology",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
@@ -87,28 +100,34 @@
|
|||||||
},
|
},
|
||||||
"social": {
|
"social": {
|
||||||
"name": "ECRY.ui.social",
|
"name": "ECRY.ui.social",
|
||||||
|
"pnjvalue": 0,
|
||||||
"skilllist": {
|
"skilllist": {
|
||||||
"quibbling": {
|
"quibbling": {
|
||||||
|
"key": "quibbling",
|
||||||
"name": "ECRY.ui.quibbling",
|
"name": "ECRY.ui.quibbling",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"creativity": {
|
"creativity": {
|
||||||
|
"key": "creativity",
|
||||||
"name": "ECRY.ui.creativity",
|
"name": "ECRY.ui.creativity",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"loquacity": {
|
"loquacity": {
|
||||||
|
"key": "loquacity",
|
||||||
"name": "ECRY.ui.loquacity",
|
"name": "ECRY.ui.loquacity",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"guile": {
|
"guile": {
|
||||||
|
"key": "guile",
|
||||||
"name": "ECRY.ui.guile",
|
"name": "ECRY.ui.guile",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
},
|
},
|
||||||
"performance": {
|
"performance": {
|
||||||
|
"key": "performance",
|
||||||
"name": "ECRY.ui.performance",
|
"name": "ECRY.ui.performance",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 10
|
"max": 10
|
||||||
@@ -136,20 +155,6 @@
|
|||||||
"major": 0
|
"major": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"annency": {
|
|
||||||
"iscollective": false,
|
|
||||||
"ismultiple": false,
|
|
||||||
"characters": "",
|
|
||||||
"location": {"1": "", "2": "", "3":"", "4":"", "5":"" },
|
|
||||||
"description": "",
|
|
||||||
"enhancements": "",
|
|
||||||
"boheme": {
|
|
||||||
"name": "",
|
|
||||||
"ideals": "",
|
|
||||||
"politic": "",
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cephaly": {
|
"cephaly": {
|
||||||
"name": "ECRY.ui.cephaly",
|
"name": "ECRY.ui.cephaly",
|
||||||
"skilllist": {
|
"skilllist": {
|
||||||
@@ -187,7 +192,34 @@
|
|||||||
"npccore": {
|
"npccore": {
|
||||||
"npctype": "",
|
"npctype": "",
|
||||||
"description": ""
|
"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": {
|
"pc": {
|
||||||
"templates": [
|
"templates": [
|
||||||
@@ -253,6 +285,7 @@
|
|||||||
"effect": 0
|
"effect": 0
|
||||||
},
|
},
|
||||||
"specialization": {
|
"specialization": {
|
||||||
|
"bonus": 2,
|
||||||
"templates": [
|
"templates": [
|
||||||
"common"
|
"common"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -15,27 +15,40 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow item" data-item-id="{{spleen.id}}">
|
<li class="flexrow item" data-item-id="{{spleen.id}}">
|
||||||
<label class="item-name-label-medium">Spleen :</label>
|
<label class="item-field-label-short">Spleen :</label>
|
||||||
<label class="item-name-label-long">{{spleen.name}}</label>
|
<label class="item-name-label-long">{{spleen.name}}</label>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
{{#if spleen}}
|
{{#if spleen}}
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed-full">
|
||||||
|
<a class="item-control item-add" data-type="trait" title="Create Trait"><i
|
||||||
|
class="fas fa-plus"></i></a>
|
||||||
<a class="item-control item-edit" data-type="trait" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" data-type="trait" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-add" data-type="trait" title="Delete Item"><i class="fas fa-plus"></i></a>
|
<a class="item-control item-add" data-type="trait" title="Delete Item"><i
|
||||||
|
class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow" data-item-id="{{ideal.id}}">
|
<li class="item flexrow" data-item-id="{{ideal.id}}">
|
||||||
<label class="item-name-label-medium">Ideal :</label>
|
<label class="item-field-label-short">Ideal :</label>
|
||||||
<label class="item-name-label-long">{{ideal.name}}</label>
|
<label class="item-name-label-long">{{ideal.name}}</label>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
{{#if ideal}}
|
{{#if ideal}}
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed-full">
|
||||||
|
<a class="item-control item-add" data-type="trait" title="Create Trait"><i
|
||||||
|
class="fas fa-plus"></i></a>
|
||||||
<a class="item-control item-edit" data-type="trait" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" data-type="trait" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-add" data-type="trait" title="Delete Item"><i class="fas fa-plus"></i></a>
|
<a class="item-control item-add" data-type="trait" title="Delete Item"><i
|
||||||
|
class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
|
<li class="item flexrow flexrow-no-expand flexrow-start ">
|
||||||
|
<label class="item-name-label-short">Traits :</label>
|
||||||
|
{{#each traits as |trait key|}}
|
||||||
|
<label class="item-name-label-free"><a data-item-id="{{trait._id}}" class="item-edit">{{trait.name}}</a>, </label>
|
||||||
|
{{/each}}
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -72,10 +85,29 @@
|
|||||||
<ul class="stat-list alternate-list item-list">
|
<ul class="stat-list alternate-list item-list">
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
<span class="item-name-label-header impact-title">
|
<span class="item-name-label-header impact-title">
|
||||||
<h3><label class="items-title-text">{{localize category.name}} ({{valueAtIndex @root.impactsMalus
|
<h3>
|
||||||
categkey}})</label></h3>
|
|
||||||
|
{{#if (eq @root.type "npc")}}
|
||||||
|
<a class="roll-skill-confront" data-category-key="{{categkey}}" data-skill-key="rawnpc">
|
||||||
|
<i class="fa-regular fa-swords"></i>
|
||||||
|
</a>
|
||||||
|
<a class="roll-skill" data-category-key="{{categkey}}" data-skill-key="rawnpc">
|
||||||
|
<i class="fa-solid fa-dice-d6"></i>
|
||||||
|
{{/if}}
|
||||||
|
<label class="items-title-text">{{localize category.name}} ({{valueAtIndex @root.impactsMalus
|
||||||
|
categkey}})</label>
|
||||||
|
{{#if (eq @root.type "npc")}}
|
||||||
|
</a>
|
||||||
|
<select class="item-field-label-short-header" type="text"
|
||||||
|
name="system.skills.{{categkey}}.pnjvalue" value="{{category.pnjvalue}}"
|
||||||
|
data-dtype="Number">
|
||||||
|
{{selectOptions @root.config.skillLevel selected=category.pnjvalue}}
|
||||||
|
</select>
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{{#each category.skilllist as |skill skillkey|}}
|
{{#each category.skilllist as |skill skillkey|}}
|
||||||
<li class="item flexrow list-item">
|
<li class="item flexrow list-item">
|
||||||
<span class="item-name-label-long">
|
<span class="item-name-label-long">
|
||||||
@@ -89,26 +121,23 @@
|
|||||||
<select class="item-field-label-short" type="text"
|
<select class="item-field-label-short" type="text"
|
||||||
name="system.skills.{{categkey}}.skilllist.{{skillkey}}.value" value="{{skill.value}}"
|
name="system.skills.{{categkey}}.skilllist.{{skillkey}}.value" value="{{skill.value}}"
|
||||||
data-dtype="Number">
|
data-dtype="Number">
|
||||||
{{#select skill.value}}
|
{{selectOptions @root.config.skillLevel selected=skill.value}}
|
||||||
{{#each @root.config.skillLevel as |level key| }}
|
|
||||||
<option value="{{level}}">{{level}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow list-item">
|
<li class="item flexrow list-item">
|
||||||
<ul class="ul-level1">
|
<ul class="ul-level1">
|
||||||
{{#each skill.spec as |spec idx|}}
|
{{#each skill.spec as |spec idx|}}
|
||||||
<li class="item flexrow list-item" data-item-id="{{spec._id}}" data-item-type="specialization">
|
<li class="item flexrow list-item" data-item-id="{{spec._id}}" data-item-type="specialization">
|
||||||
<a class="roll-spec" data-spec-id="{{spec._id}}">
|
<a class="roll-spec" data-category-key="{{categkey}}" data-skill-key="{{skillkey}}"
|
||||||
|
data-spec-id="{{spec._id}}">
|
||||||
<i class="fa-solid fa-dice-d6"></i>
|
<i class="fa-solid fa-dice-d6"></i>
|
||||||
{{spec.name}}
|
{{spec.name}}
|
||||||
</a>
|
</a>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-edit" data-type="specialization" title="Edit Item"><i
|
<a class="item-control item-edit" data-type="specialization" title="Edit Item"><i
|
||||||
class="fas fa-edit"></i></a>
|
class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-add" data-type="specialization" title="Delete Item"><i
|
<a class="item-control item-delete" data-type="specialization" title="Delete Item"><i
|
||||||
class="fas fa-plus"></i></a>
|
class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@@ -141,84 +170,27 @@
|
|||||||
</a></span>
|
</a></span>
|
||||||
<select class="item-field-label-short" type="text" name="system.cephaly.skilllist.{{skillkey}}.value"
|
<select class="item-field-label-short" type="text" name="system.cephaly.skilllist.{{skillkey}}.value"
|
||||||
value="{{skill.value}}" data-dtype="Number">
|
value="{{skill.value}}" data-dtype="Number">
|
||||||
{{#select skill.value}}
|
{{selectOptions @root.config.skillLevel selected=skill.value}}
|
||||||
{{#each @root.config.skillLevel as |level key| }}
|
|
||||||
<option value="{{level}}">{{level}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</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>
|
||||||
|
|
||||||
<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">
|
<ul class="stat-list alternate-list item-list">
|
||||||
{{#each system.annency.location as |location index|}}
|
|
||||||
<li class="item flexrow list-item">
|
<li class="item flexrow list-item">
|
||||||
<span class="item-name-label-medium">
|
<span class="item-name-label-long">
|
||||||
{{localize "ECRY.ui.location"}} {{index}}
|
{{annency.system.base.description}}
|
||||||
</span>
|
</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>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -327,57 +299,22 @@
|
|||||||
|
|
||||||
|
|
||||||
{{!-- Equipement Tab --}}
|
{{!-- Equipement Tab --}}
|
||||||
<div class="tab equipment" data-group="primary" data-tab="equipment">
|
<div class="tab equipements" data-group="primary" data-tab="equipements">
|
||||||
|
|
||||||
<span class="item-name-label-header items-title-bg">
|
<span class="item-name-label-header items-title-bg">
|
||||||
<h3><label class="items-title-text">Equipements (saisie libre)</label></h3>
|
<h3><label class="items-title-text">{{localize "ECRY.ui.equipmentfree"}}</label></h3>
|
||||||
</span>
|
</span>
|
||||||
<div class="form-group small-editor">
|
<div class="form-group small-editor">
|
||||||
{{editor equipementlibre target="system.equipementlibre" button=true owner=owner editable=editable}}
|
{{editor equipementlibre target="system.equipmentfree" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
<span class="item-name-label-header">
|
<span class="item-name-label-header">
|
||||||
<h3><label class="items-title-text">Armes</label></h3>
|
<h3><label class="items-title-text">{{localize "ECRY.ui.equipment"}}s</label></h3>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-medium">
|
||||||
<label class="item-field-label-medium">Normaux</label>
|
<label class="item-field-label-medium">{{localize "ECRY.ui.weight"}}</label>
|
||||||
</span>
|
|
||||||
<span class="item-field-label-medium">
|
|
||||||
<label class="item-field-label-medium">Particulier</label>
|
|
||||||
</span>
|
|
||||||
<span class="item-field-label-medium">
|
|
||||||
<label class="item-field-label-medium">Critique</label>
|
|
||||||
</span>
|
|
||||||
<div class="item-controls item-controls-fixed">
|
|
||||||
<a class="item-control item-add" data-type="weapon" title="Create Item"><i class="fas fa-plus"></i></a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{#each armes as |arme key|}}
|
|
||||||
<li class="item flexrow list-item list-item-shadow" data-item-id="{{arme._id}}">
|
|
||||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
|
||||||
src="{{arme.img}}" /></a>
|
|
||||||
<span class="item-name-label">{{arme.name}}</span>
|
|
||||||
<span class="item-field-label-medium"><label>{{arme.system.dommagenormale}}</label></span>
|
|
||||||
<span class="item-field-label-medium"><label>{{arme.system.dommagepart}}</label></span>
|
|
||||||
<span class="item-field-label-medium"><label>{{arme.system.dommagecritique}}</label></span>
|
|
||||||
|
|
||||||
<div class="item-filler"> </div>
|
|
||||||
<div class="item-controls item-controls-fixed">
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul class="item-list alternate-list">
|
|
||||||
<li class="item flexrow list-item items-title-bg">
|
|
||||||
<span class="item-name-label-header">
|
|
||||||
<h3><label class="items-title-text">Equipements (Items)</label></h3>
|
|
||||||
</span>
|
|
||||||
<span class="item-field-label-long">
|
|
||||||
<label class="short-label">Q.</label>
|
|
||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
@@ -385,11 +322,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
{{#each equipements as |equip key|}}
|
{{#each equipments as |equip key|}}
|
||||||
<li class="item list-item flexrow list-item-shadow" data-item-id="{{equip._id}}">
|
<li class="item list-item flexrow list-item-shadow" data-item-id="{{equip._id}}">
|
||||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||||
src="{{equip.img}}" /></a>
|
src="{{equip.img}}" /></a>
|
||||||
<span class="item-name-label">{{equip.name}}</span>
|
<span class="item-name-label">{{equip.name}}</span>
|
||||||
|
<span class="item-field-label-medium">{{equip.system.weight}}</span>
|
||||||
|
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
@@ -399,36 +337,6 @@
|
|||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="item-list alternate-list">
|
|
||||||
<li class="item flexrow list-item items-title-bg">
|
|
||||||
<span class="item-name-label-header">
|
|
||||||
<h3><label class="items-title-text">Sortilèges</label></h3>
|
|
||||||
</span>
|
|
||||||
<span class="item-field-label-medium">
|
|
||||||
<label class="short-label">Seuil</label>
|
|
||||||
</span>
|
|
||||||
<div class="item-filler"> </div>
|
|
||||||
<div class="item-controls item-controls-fixed">
|
|
||||||
<a class="item-control item-add" data-type="equipment" title="Create Item"><i class="fas fa-plus"></i></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
{{#each sorts as |sort key|}}
|
|
||||||
<li class="item list-item flexrow list-item-shadow" data-item-id="{{sort._id}}">
|
|
||||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
|
||||||
src="{{sort.img}}" /></a>
|
|
||||||
<span class="item-name-label">{{sort.name}}</span>
|
|
||||||
<span class="item-field-label-medium">
|
|
||||||
<label class="short-label">{{sort.system.seuil}}</label>
|
|
||||||
</span>
|
|
||||||
<div class="item-filler"> </div>
|
|
||||||
<div class="item-controls item-controls-fixed">
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -440,7 +348,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="item-name-label-medium">Lieu de naissance</label>
|
<label class="item-name-label-medium">{{localize "ECRY.ui.bornplace"}}</label>
|
||||||
<input type="text" class="" name="system.biodata.lieunaissance" value="{{system.biodata.lieunaissance}}"
|
<input type="text" class="" name="system.biodata.lieunaissance" value="{{system.biodata.lieunaissance}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
@@ -449,22 +357,27 @@
|
|||||||
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}"
|
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
|
<li class="item flexrow">
|
||||||
|
<label class="item-name-label-medium">Profession</label>
|
||||||
|
<input type="text" class="" name="system.biodata.profession" value="{{system.biodata.profession}}"
|
||||||
|
data-dtype="String" />
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="item-name-label-medium">Résidence</label>
|
<label class="item-name-label-medium">{{localize "ECRY.ui.residence"}}</label>
|
||||||
<input type="text" class="" name="system.biodata.residence" value="{{system.biodata.residence}}"
|
<input type="text" class="" name="system.biodata.residence" value="{{system.biodata.residence}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="item-name-label-medium">Nationalité</label>
|
<label class="item-name-label-medium">{{localize "ECRY.ui.origin"}}</label>
|
||||||
<input type="text" class="" name="system.biodata.nationalite" value="{{system.biodata.nationalite}}"
|
<input type="text" class="" name="system.biodata.nationalite" value="{{system.biodata.nationalite}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="item-name-label-medium">Enfance</label>
|
<label class="item-name-label-medium">{{localize "ECRY.ui.childhood"}}</label>
|
||||||
<input type="text" class="" name="system.biodata.enfance" value="{{system.biodata.enfance}}"
|
<input type="text" class="" name="system.biodata.enfance" value="{{system.biodata.enfance}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
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>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>{{localize "ECRY.ui.cephaly"}} : {{localize skill.name}}</li>
|
<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)}}
|
{{#if (gt marginExecution 0)}}
|
||||||
<li>{{localize "ECRY.ui.execution"}} {{executionTotal}} vs {{difficulty}} : {{marginExecution}}</li>
|
<li>{{localize "ECRY.ui.execution"}} {{executionTotal}} vs {{difficulty}} : {{marginExecution}}</li>
|
||||||
<li>{{localize cephalySuccess}}</li>
|
<li>{{localize cephalySuccess}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (gt marginPreservation 0)}}
|
{{#if (gt marginPreservation 0)}}
|
||||||
<li>{{localize "ECRY.ui.preservation"}} {{preservationTotal}} vs {{difficulty}} : {{marginPreservation}}</li>
|
<li>{{localize "ECRY.ui.preservation"}} {{preservationTotal}} vs {{difficulty}} : {{marginPreservation}}</li>
|
||||||
<li>{{localize cephalyFailure}}</li>
|
<li>{{localize cephalyFailure}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<li>{{localize skill.name}}: {{skill.value}} </li>
|
<li>{{localize skill.name}}: {{skill.value}} </li>
|
||||||
{{#if spec}}
|
{{#if spec}}
|
||||||
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+2) </li>
|
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+{{spec.system.bonus}}) </li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#each traitsBonus as |trait idx|}}
|
{{#each traitsBonus as |trait idx|}}
|
||||||
@@ -40,7 +40,14 @@
|
|||||||
<li>{{localize "ECRY.chat.bonusmalustraits"}}: {{bonusMalusTraits}} </li>
|
<li>{{localize "ECRY.chat.bonusmalustraits"}}: {{bonusMalusTraits}} </li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (isGM)}}
|
||||||
|
{{else}}
|
||||||
|
<li>{{localize "ECRY.ui.execution"}} : {{executionTotal}}</li>
|
||||||
|
<li>{{localize "ECRY.ui.preservation"}} : {{preservationTotal}}</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{{#if (isGM)}}
|
{{#if (isGM)}}
|
||||||
{{#if (eq mode "cephaly")}}
|
{{#if (eq mode "cephaly")}}
|
||||||
<div>
|
<div>
|
||||||
@@ -55,6 +62,10 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
<button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button>
|
<button class="button-select-confront">{{localize "ECRY.ui.selectconfront"}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<div>
|
||||||
|
{{localize "ECRY.chat.sentogm"}}
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Confrontation : {{rollData1.alias}} vs {{rollData2.alias}}</li>
|
<li><strong>Confrontation</strong> : {{rollData1.alias}} vs {{rollData2.alias}}</li>
|
||||||
<li>{{localize rollData1.skill.name}} ({{rollData1.skill.value}}) vs {{localize rollData2.skill.name}} ({{rollData2.skill.value}}) </li>
|
<li>{{localize rollData1.skill.name}} ({{rollData1.skill.value}}) vs {{localize rollData2.skill.name}} ({{rollData2.skill.value}}) </li>
|
||||||
<li>{{rollData1.executionTotal}} vs {{rollData2.preservationTotal}} : {{marginExecution}}</li>
|
<li>{{rollData1.executionTotal}} vs {{rollData2.preservationTotal}} : {{marginExecution}}</li>
|
||||||
<li>{{rollData1.preservationTotal}} vs {{rollData2.executionTotal}} : {{marginPreservation}}</li>
|
<li>{{rollData1.preservationTotal}} vs {{rollData2.executionTotal}} : {{marginPreservation}}</li>
|
||||||
@@ -32,21 +32,21 @@
|
|||||||
<li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.execution"}} : {{effectExecution}}</li>
|
<li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.execution"}} : {{effectExecution}}</li>
|
||||||
{{#if impactExecution}}
|
{{#if impactExecution}}
|
||||||
<li>Impact {{rollData2.alias}} : 1 {{localize (concat "ECRY.ui." impactExecution)}}</li>
|
<li>Impact {{rollData2.alias}} : 1 {{localize (concat "ECRY.ui." impactExecution)}}</li>
|
||||||
<button class="button-apply-impact" data-actor-id="{{rollData2.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactExecution}}">{{localize "ECRY.ui.applyimpact"}}</button>
|
<button class="button-apply-impact" data-token-id="{{rollData2.tokenId}}" data-actor-id="{{rollData2.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactExecution}}">{{localize "ECRY.ui.applyimpact"}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if bonus2}}
|
{{#if bonus2}}
|
||||||
<li>Bonus {{rollData2.alias}} : {{bonus2}}</li>
|
<li>Bonus {{rollData2.alias}} : {{bonus2}}</li>
|
||||||
<button class="button-apply-bonus" data-actor-id="{{rollData2.actorId}}" data-bonus="{{bonus2}}">{{localize "ECRY.ui.applybonus"}}</button>
|
<button class="button-apply-bonus" data-token-id="{{rollData2.tokenId}}" data-actor-id="{{rollData2.actorId}}" data-bonus="{{bonus2}}">{{localize "ECRY.ui.applybonus"}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.preservation"}} : {{effectPreservation}}</li>
|
<li>{{localize "ECRY.ui.effect"}} {{localize "ECRY.ui.preservation"}} : {{effectPreservation}}</li>
|
||||||
{{#if impactPreservation}}
|
{{#if impactPreservation}}
|
||||||
<li>Impact {{rollData1.alias}} : 1 {{localize (concat "ECRY.ui." impactPreservation)}}</li>
|
<li>Impact {{rollData1.alias}} : 1 {{localize (concat "ECRY.ui." impactPreservation)}}</li>
|
||||||
<button class="button-apply-impact" data-actor-id="{{rollData1.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactPreservation}}">{{localize "ECRY.ui.applyimpact"}}</button>
|
<button class="button-apply-impact" data-token-id="{{rollData1.tokenId}}" data-actor-id="{{rollData1.actorId}}" data-impact-type={{rollData1.skill.categKey}} data-impact="{{impactPreservation}}">{{localize "ECRY.ui.applyimpact"}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if bonus1}}
|
{{#if bonus1}}
|
||||||
<li>Bonus {{rollData1.alias}} : {{bonus1}}</li>
|
<li>Bonus {{rollData1.alias}} : {{bonus1}}</li>
|
||||||
<button class="button-apply-bonus" data-actor-id="{{rollData1.actorId}}" data-bonus="{{bonus1}}">{{localize "ECRY.ui.applybonus"}}</button>
|
<button class="button-apply-bonus" data-token-id="{{rollData1.tokenId}}" data-actor-id="{{rollData1.actorId}}" data-bonus="{{bonus1}}">{{localize "ECRY.ui.applybonus"}}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
{{#if skill}}
|
{{#if skill}}
|
||||||
<li>{{localize skill.name}}: {{skill.value}} </li>
|
<li>{{localize skill.name}}: {{skill.value}} </li>
|
||||||
{{#if spec}}
|
{{#if spec}}
|
||||||
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+2) </li>
|
<li>{{localize "ECRY.chat.specialization"}} {{spec.name}} (+{{spec.system.bonus}}) </li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
|||||||
@@ -55,20 +55,13 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span>
|
||||||
<select class="" id="roll-select-transcendence" data-type="Number">
|
<select class="" id="roll-select-transcendence" data-type="Number">
|
||||||
{{#select skillTranscendence}}
|
{{selectOptions config.skillLevel selected=skillTranscendence}}
|
||||||
{{#for 0 skill.value 1}}
|
|
||||||
<option value="{{this}}">{{this}}</option>
|
|
||||||
{{/for}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.transcendapply"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.transcendapply"}} : </span>
|
||||||
<select class="" id="roll-apply-transcendence" data-type="String">
|
<select class="" id="roll-apply-transcendence" data-type="String">
|
||||||
{{#select applyTranscendence}}
|
{{selectOptions config.transcendanceOptions selected=applyTranscendence localize=true}}
|
||||||
<option value="execution">{{localize "ECRY.ui.execution"}}</option>
|
|
||||||
<option value="preservation">{{localize "ECRY.ui.preservation"}}</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -101,18 +94,28 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if annency}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Bonus/Malus : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.annency"}} : {{annency.name}}</span>
|
||||||
<select id="bonusMalusPerso" name="bonusMalusPerso">
|
<span class="roll-dialog-label">{{annency.system.base.description}}</span>
|
||||||
{{#select bonusMalusPerso}}
|
</div>
|
||||||
<option value="-3">-3</option>
|
<div class="flexrow">
|
||||||
<option value="-2">-2</option>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.annencybonus"}}</span>
|
||||||
<option value="-1">-1</option>
|
<select class="" id="annency-bonus" name="annencyBonus" data-type="String">
|
||||||
<option value="0">0</option>
|
<option value="0">0</option>
|
||||||
<option value="1">+1</option>
|
<option value="1">+1</option>
|
||||||
<option value="2">+2</option>
|
<option value="2">+2</option>
|
||||||
<option value="3">+3</option>
|
<option value="3">+3</option>
|
||||||
{{/select}}
|
<option value="4">+4</option>
|
||||||
|
<option value="5">+5</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">Bonus/Malus : </span>
|
||||||
|
<select id="bonusMalusPerso" name="bonusMalusPerso" type="text" data-dtype="String">
|
||||||
|
{{selectOptions config.bonusMalusPersoOptions selected=bonusMalusPerso labelAttr="label"}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -14,22 +14,25 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.skilltranscendence"}} : </span>
|
||||||
<select class="" id="roll-select-transcendence" data-type="Number">
|
<select class="" id="roll-select-transcendence" data-type="Number">
|
||||||
{{#select skillTranscendence}}
|
{{selectOptions config.skillLevel selected=skillTranscendence}}
|
||||||
{{#for 0 skill.value 1}}
|
|
||||||
<option value="{{this}}">{{this}}</option>
|
|
||||||
{{/for}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if forcedSpec}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
|
||||||
|
<span class="roll-dialog-label">{{forcedSpec.name}} (+{{forcedSpec.system.bonus}})</span>
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
|
<span class="roll-dialog-label">{{localize "ECRY.ui.spec"}} : </span>
|
||||||
<select class="" id="roll-specialization" data-type="String" multiple>
|
<select class="" id="roll-specialization" data-type="String" multiple>
|
||||||
{{#each skill.spec as |spec idx|}}
|
{{#each skill.spec as |spec idx|}}
|
||||||
<option value="{{spec.id}}">{{spec.name}}</option>
|
<option value="{{spec.id}}">{{spec.name}} (+{{spec.system.bonus}})</option>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if spleen}}
|
{{#if spleen}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
@@ -68,16 +71,8 @@
|
|||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Bonus/Malus : </span>
|
<span class="roll-dialog-label">Bonus/Malus : </span>
|
||||||
<select id="bonusMalusPerso" name="bonusMalusPerso">
|
<select type="text" id="bonusMalusPerso" name="bonusMalusPerso" data-dtype="String">
|
||||||
{{#select bonusMalusPerso}}
|
{{selectOptions config.bonusMalusPersoOptions selected=bonusMalusPerso labelAttr="label"}}
|
||||||
<option value="-3">-3</option>
|
|
||||||
<option value="-2">-2</option>
|
|
||||||
<option value="-1">-1</option>
|
|
||||||
<option value="0">0</option>
|
|
||||||
<option value="1">+1</option>
|
|
||||||
<option value="2">+2</option>
|
|
||||||
<option value="3">+3</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -12,13 +12,8 @@
|
|||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Difficulté : </span>
|
<span class="roll-dialog-label">Difficulté : </span>
|
||||||
<select class="" type="text" id="roll-difficulty" value="{{difficulty}}" data-dtype="Number">
|
<select class="" type="text" id="roll-difficulty" data-dtype="String">
|
||||||
{{#select difficulty}}
|
{{selectOptions config.difficulty selected=difficulty localize=true labelAttr="difficulty"}}
|
||||||
{{#each config.difficulty as |diffData value| }}
|
|
||||||
<option value="{{diffData.value}}">{{localize diffData.difficulty}} / {{localize diffData.frequency}}
|
|
||||||
({{diffData.value}})</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -22,22 +22,14 @@
|
|||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-name-label-long">{{localize "ECRY.ui.impactType"}}</label>
|
<label class="item-name-label-long">{{localize "ECRY.ui.impactType"}}</label>
|
||||||
<select class="item-field-label-medium" type="text" name="system.impacttype" value="{{system.impacttype}}" data-dtype="String">
|
<select class="item-field-label-medium" type="text" name="system.impacttype" value="{{system.impacttype}}" data-dtype="String">
|
||||||
{{#select system.impacttype}}
|
{{selectOptions config.impactTypes selected=system.impacttype localize=true }}
|
||||||
{{#each config.impactTypes as |type key| }}
|
|
||||||
<option value="{{key}}">{{localize type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-name-label-long">{{localize "ECRY.ui.impactLevel"}}</label>
|
<label class="item-name-label-long">{{localize "ECRY.ui.impactLevel"}}</label>
|
||||||
<select class="item-field-label-medium" type="text" name="system.impactlevel" value="{{system.impactlevel}}" data-dtype="String">
|
<select class="item-field-label-medium" type="text" name="system.impactlevel" value="{{system.impactlevel}}" data-dtype="String">
|
||||||
{{#select system.impactlevel}}
|
{{selectOptions config.impactLevels selected=system.impactlevel localize=true }}
|
||||||
{{#each config.impactLevels as |level key| }}
|
|
||||||
<option value="{{key}}">{{localize level}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -22,14 +22,15 @@
|
|||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-name-label-long">{{localize "ECRY.ui.skill"}}</label>
|
<label class="item-name-label-long">{{localize "ECRY.ui.skill"}}</label>
|
||||||
<select class="item-field-label-medium" type="text" name="system.skillkey" value="{{system.skillkey}}" data-dtype="String">
|
<select class="item-field-label-medium" type="text" name="system.skillkey" value="{{system.skillkey}}" data-dtype="String">
|
||||||
{{#select system.skillkey}}
|
{{selectOptions config.skills selected=system.skillkey localize=true valueAttr="key" labelAttr="name"}}
|
||||||
{{#each config.skills as |skill key| }}
|
|
||||||
<option value="{{key}}">{{localize skill.name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="flexrow">
|
||||||
|
<label class="item-name-label-long">{{localize "ECRY.ui.bonus"}}</label>
|
||||||
|
<input type="text" class="item-field-label-short" name="system.bonus" value="{{system.bonus}}" data-dtype="Number"/>
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -22,23 +22,14 @@
|
|||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-name-label-long">{{localize "ECRY.ui.traitType"}}</label>
|
<label class="item-name-label-long">{{localize "ECRY.ui.traitType"}}</label>
|
||||||
<select class="item-field-label-medium" type="text" name="system.traitype" value="{{system.traitype}}" data-dtype="String">
|
<select class="item-field-label-medium" type="text" name="system.traitype" value="{{system.traitype}}" data-dtype="String">
|
||||||
{{#select system.traitype}}
|
{{selectOptions config.traitTypes selected=system.traitype}}
|
||||||
{{#each config.traitTypes as |type key| }}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-name-label-long">{{localize "ECRY.ui.niveauTrait"}}</label>
|
<label class="item-name-label-long">{{localize "ECRY.ui.niveauTrait"}}</label>
|
||||||
<select class="item-field-label-medium" type="text" name="system.level" value="{{system.level}}" data-dtype="Number">
|
<select class="item-field-label-medium" type="text" name="system.level" value="{{system.level}}" data-dtype="String">
|
||||||
{{#select system.level}}
|
{{selectOptions config.traitLevel selected=system.level labelAttr="text"}}
|
||||||
{{#each config.traitLevel as |level key| }}
|
|
||||||
<option value="{{level.value}}">{{level.text}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -22,11 +22,7 @@
|
|||||||
<li class="flexrow">
|
<li class="flexrow">
|
||||||
<label class="item-name-label-long">{{localize "ECRY.ui.weapontype"}}</label>
|
<label class="item-name-label-long">{{localize "ECRY.ui.weapontype"}}</label>
|
||||||
<select class="item-field-label-medium" type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String">
|
<select class="item-field-label-medium" type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String">
|
||||||
{{#select system.weapontype}}
|
{{selectOptions config.weaponTypes selected=system.weapontype localize=true}}
|
||||||
{{#each config.weaponTypes as |type key| }}
|
|
||||||
<option value="{{key}}">{{localize type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|||||||
@@ -8,11 +8,7 @@
|
|||||||
<label class="item-field-label-long">{{localize "ECRY.ui.cost"}}</label>
|
<label class="item-field-label-long">{{localize "ECRY.ui.cost"}}</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.cost" value="{{system.cost}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.cost" value="{{system.cost}}" data-dtype="Number" />
|
||||||
<select class="item-field-label-medium" type="text" name="system.costunit" value="{{system.costunit}}" data-dtype="String">
|
<select class="item-field-label-medium" type="text" name="system.costunit" value="{{system.costunit}}" data-dtype="String">
|
||||||
{{#select system.costunit}}
|
{{selectOptions config.costUnits selected=system.costunit localize=true labelAttr="name"}}
|
||||||
{{#each config.costUnits as |unit key| }}
|
|
||||||
<option value="{{key}}">{{localize unit.name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,18 @@
|
|||||||
"label": "Equipement",
|
"label": "Equipement",
|
||||||
"mapping": {
|
"mapping": {
|
||||||
"description": "system.description"
|
"description": "system.description"
|
||||||
|
},
|
||||||
|
"folders": {
|
||||||
|
"Armor": "Armure",
|
||||||
|
"Weapons": "Armes",
|
||||||
|
"Clothing": "Vêtements",
|
||||||
|
"Food": "Nourriture",
|
||||||
|
"Lighting": "Eclairage",
|
||||||
|
"Miscellany" : "Divers",
|
||||||
|
"Musical instruments": "Instruments de musique",
|
||||||
|
"Reading, writing, recording": "Lecture, écriture, enregistrement",
|
||||||
|
"Travel equipment": "Equipement de voyage",
|
||||||
|
"Vehicle": "Véhicule"
|
||||||
},
|
},
|
||||||
"entries": {
|
"entries": {
|
||||||
"Absinthe": {
|
"Absinthe": {
|
||||||
|
|||||||
@@ -2,6 +2,11 @@
|
|||||||
"label": "Spécialisation",
|
"label": "Spécialisation",
|
||||||
"mapping": {
|
"mapping": {
|
||||||
"description": "system.description"
|
"description": "system.description"
|
||||||
|
},
|
||||||
|
"folders": {
|
||||||
|
"Mental": "Mentale",
|
||||||
|
"Physical": "Physique",
|
||||||
|
"Spocial": "Sociale"
|
||||||
},
|
},
|
||||||
"entries": {
|
"entries": {
|
||||||
"Aircraft": {
|
"Aircraft": {
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
"label": "Traits",
|
"label": "Traits",
|
||||||
"mapping": {
|
"mapping": {
|
||||||
"description": "system.description"
|
"description": "system.description"
|
||||||
|
},
|
||||||
|
"folders": {
|
||||||
|
"Maneuvers": "Manoeuvres"
|
||||||
},
|
},
|
||||||
"entries": {
|
"entries": {
|
||||||
"Ability to stay calm": {
|
"Ability to stay calm": {
|
||||||
|
|||||||
42
welcome-message-ecryme.html
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<h3 class="welcome-message-h3">Bonjour à tous !</h3>
|
||||||
|
|
||||||
|
<div class="message-chat-center">
|
||||||
|
👋 Juste un petit message pour vous informer que :
|
||||||
|
<br />
|
||||||
|
<strong
|
||||||
|
>⚠️ Le nouveau financement participatif pour la prochaine extension
|
||||||
|
d'Écryme, LES SECRETS DE L'ÉCRYME ouvre le 21 octobre !</strong
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="message-chat-center">
|
||||||
|
⚠️ Suivez la page de pré-lancement ici pour être sûr de ne pas manquer le
|
||||||
|
lancement : <br /><a href="https://shorturl.at/qDjg7"
|
||||||
|
>https://shorturl.at/qDjg7</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="message-chat-center">
|
||||||
|
Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient
|
||||||
|
participer plus activement à la communauté des jeux d'Open Sesame Games, avec
|
||||||
|
un espace dédié aux écrymiens ! <br />
|
||||||
|
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
|
||||||
|
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
|
||||||
|
directement. Cliquez ici :<br />
|
||||||
|
<a href="https://discord.gg/dUPhNfJdaD">https://discord.gg/dUPhNfJdaD</a
|
||||||
|
><br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="message-chat-center">
|
||||||
|
Ce système vous est proposé par Open Sesame Games.<br />
|
||||||
|
Vous trouverez de l'aide dans
|
||||||
|
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour
|
||||||
|
Ecryme}<br />
|
||||||
|
ainsi que sur le Discord de Foundry FR :<br>
|
||||||
|
<a href="https://discord.gg/pPSDNJk">https://discord.gg/pPSDNJk</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
Merci pour votre attention et à très bientôt pour la suite ! L'équipe Open
|
||||||
|
Sesame Games
|
||||||
|
</div>
|
||||||