Compare commits
43 Commits
fvtt-ecrym
...
master
Author | SHA1 | Date | |
---|---|---|---|
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 | |||
61a1a4a904 |
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
|
31
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",
|
||||||
@ -145,7 +151,24 @@
|
|||||||
"psyche": "Psyche",
|
"psyche": "Psyche",
|
||||||
"scoria": "Scoria",
|
"scoria": "Scoria",
|
||||||
"cephalydifficulty": "Set Cephaly difficulty",
|
"cephalydifficulty": "Set Cephaly difficulty",
|
||||||
"maneuvers": "Maneuvers"
|
"maneuvers": "Maneuvers",
|
||||||
|
"annency": "Annency",
|
||||||
|
"iscollective": "Collective",
|
||||||
|
"ismultiple": "Multiple",
|
||||||
|
"description": "Description",
|
||||||
|
"location": "Location",
|
||||||
|
"characters": "Characters",
|
||||||
|
"enhancements": "Enhancements",
|
||||||
|
"oniricform": "Oniric shape (Boheme)",
|
||||||
|
"ideals": "Ideals",
|
||||||
|
"politic": "Political ideal",
|
||||||
|
"boheme": "Boheme",
|
||||||
|
"annencybonus": "Annency bonus",
|
||||||
|
"bornplace": "Born place",
|
||||||
|
"residence": "Residence",
|
||||||
|
"origin": "Origin",
|
||||||
|
"childhood": "Childhood",
|
||||||
|
"bonus": "Bonus"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
39
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",
|
||||||
@ -146,7 +152,24 @@
|
|||||||
"psyche": "Psyché",
|
"psyche": "Psyché",
|
||||||
"scoria": "Scorie",
|
"scoria": "Scorie",
|
||||||
"cephalydifficulty": "Difficulté de la Céphalie",
|
"cephalydifficulty": "Difficulté de la Céphalie",
|
||||||
"maneuvers": "Manoeuvres"
|
"maneuvers": "Manoeuvres",
|
||||||
|
"annency": "Anence",
|
||||||
|
"iscollective": "Collective",
|
||||||
|
"ismultiple": "Multiple",
|
||||||
|
"description": "Description",
|
||||||
|
"location": "Lieu",
|
||||||
|
"characters": "Personnages",
|
||||||
|
"enhancements": "Améliorations",
|
||||||
|
"oniricform": "Forme Onorique (Bohême)",
|
||||||
|
"ideals": "Idéaux",
|
||||||
|
"politic": "Idéaux politiques",
|
||||||
|
"boheme": "Bohême",
|
||||||
|
"annencybonus": "Bonus d'Anence",
|
||||||
|
"bornplace": "Lieu de naissance",
|
||||||
|
"residence": "Résidence",
|
||||||
|
"origin": "Origine",
|
||||||
|
"childhood": "Enfance",
|
||||||
|
"bonus": "Bonus"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,7 +11,7 @@ export class EcrymeActorSheet extends 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,18 +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(),
|
||||||
|
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 TextEditor.enrichHTML(this.object.system.biodata.description, { async: true }),
|
||||||
equipementlibre: await TextEditor.enrichHTML(this.object.system.equipementlibre, { async: true }),
|
notes: await TextEditor.enrichHTML(this.object.system.biodata.notes, { async: true }),
|
||||||
|
equipementlibre: await TextEditor.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,
|
||||||
@ -77,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);
|
||||||
});
|
});
|
||||||
@ -120,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()
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
}
|
||||||
|
|
||||||
skill = duplicate(skill)
|
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 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"}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -109,14 +110,24 @@ export class EcrymeUtility {
|
|||||||
let level = game.settings.get("fvtt-ecryme", "ecryme-game-level")
|
let level = game.settings.get("fvtt-ecryme", "ecryme-game-level")
|
||||||
return level != "level_e"
|
return level != "level_e"
|
||||||
}
|
}
|
||||||
|
/*-------------------------------------------- */
|
||||||
|
static hasBoheme() {
|
||||||
|
let level = game.settings.get("fvtt-ecryme", "ecryme-game-level")
|
||||||
|
return level == "level_b" || level == "level_a"
|
||||||
|
}
|
||||||
|
/*-------------------------------------------- */
|
||||||
|
static hasAmertume() {
|
||||||
|
let level = game.settings.get("fvtt-ecryme", "ecryme-game-level")
|
||||||
|
return level == "level_a"
|
||||||
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static buildSkillConfig() {
|
static buildSkillConfig() {
|
||||||
game.system.ecryme.config.skills = {}
|
game.system.ecryme.config.skills = {}
|
||||||
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
|
||||||
}
|
}
|
||||||
@ -205,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
|
||||||
@ -265,7 +276,7 @@ export class EcrymeUtility {
|
|||||||
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) {
|
if (rollData.skill && rollData.skill.value >= i && !rollData.transcendUsed && rollData.spec) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
@ -290,6 +301,7 @@ export class EcrymeUtility {
|
|||||||
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 => {
|
||||||
@ -393,16 +405,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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -482,7 +499,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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -506,7 +523,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) {
|
||||||
@ -515,7 +532,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) {
|
||||||
@ -523,12 +540,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
|
||||||
}
|
}
|
||||||
@ -538,7 +558,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)
|
||||||
@ -546,9 +566,9 @@ 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
|
||||||
|
|
||||||
@ -557,7 +577,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)
|
||||||
console.log("Rolldata result", rollData)
|
console.log("Rolldata result", rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,7 +594,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -618,12 +638,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 });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -643,18 +661,14 @@ export class EcrymeUtility {
|
|||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async createChatMessage(name, rollMode, chatOptions) {
|
static async createChatMessage(name, rollMode, chatOptions) {
|
||||||
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;
|
||||||
@ -669,19 +683,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
|
||||||
|
@ -6,7 +6,7 @@ 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
|
||||||
@ -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)
|
||||||
}
|
}
|
||||||
@ -82,13 +83,24 @@ export class EcrymeConfrontDialog extends Dialog {
|
|||||||
let button = this.buttonDisabled
|
let button = this.buttonDisabled
|
||||||
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)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -50,15 +50,15 @@ export class EcrymeConfrontStartDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@ export class EcrymeRollDialog extends Dialog {
|
|||||||
$(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) => {
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
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";
|
||||||
@ -58,15 +59,15 @@ Hooks.once("init", async function () {
|
|||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
Actors.unregisterSheet("core", ActorSheet);
|
||||||
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
|
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
|
||||||
//Actors.registerSheet("fvtt-ecryme", EcrymeNPCSheet, { types: ["pnj"], makeDefault: false });
|
Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["npc"], makeDefault: true });
|
||||||
|
Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: false });
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
Items.unregisterSheet("core", ItemSheet);
|
||||||
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
|
Items.registerSheet("fvtt-ecryme", EcrymeItemSheet, { makeDefault: true });
|
||||||
|
|
||||||
EcrymeUtility.init()
|
EcrymeUtility.init()
|
||||||
|
|
||||||
console.log("Babele INIT!")
|
Babele.get().setSystemTranslationsDir("translated")
|
||||||
Babele.get().setSystemTranslationsDir("translated");
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -82,28 +83,13 @@ function welcomeMessage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// 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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,6 +98,9 @@ function registerUsageCount(registerKey) {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
Hooks.once("ready", function () {
|
Hooks.once("ready", function () {
|
||||||
|
|
||||||
|
// Load trranslations
|
||||||
|
Babele.get().setSystemTranslationsDir("translated")
|
||||||
|
|
||||||
// User warning
|
// User warning
|
||||||
if (!game.user.isGM && game.user.character == undefined) {
|
if (!game.user.isGM && game.user.character == undefined) {
|
||||||
ui.notifications.info("Attention ! Aucun personnage relié au joueur !");
|
ui.notifications.info("Attention ! Aucun personnage relié au joueur !");
|
||||||
@ -121,10 +110,17 @@ 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();
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ export class EcrymeItemSheet extends 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,8 +56,8 @@ 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,
|
||||||
@ -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/000171.ldb
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000010
|
MANIFEST-000184
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
2023/07/29-09:40:52.194999 7f95c2bff6c0 Recovering log #7
|
2025/03/11-23:44:54.691022 7f24c57fa6c0 Recovering log #182
|
||||||
2023/07/29-09:40:52.214284 7f95c2bff6c0 Delete type=3 #4
|
2025/03/11-23:44:54.761305 7f24c57fa6c0 Delete type=3 #180
|
||||||
2023/07/29-09:40:52.214320 7f95c2bff6c0 Delete type=0 #7
|
2025/03/11-23:44:54.761368 7f24c57fa6c0 Delete type=0 #182
|
||||||
|
2025/03/11-23:45:54.472551 7f24c4bff6c0 Level-0 table #187: started
|
||||||
|
2025/03/11-23:45:54.472575 7f24c4bff6c0 Level-0 table #187: 0 bytes OK
|
||||||
|
2025/03/11-23:45:54.479092 7f24c4bff6c0 Delete type=0 #185
|
||||||
|
2025/03/11-23:45:54.491718 7f24c4bff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,7 @@
|
|||||||
2023/07/29-09:21:50.805512 7f95c13fc6c0 Recovering log #3
|
2025/03/11-23:33:32.501703 7f24c5ffb6c0 Recovering log #178
|
||||||
2023/07/29-09:21:50.805734 7f95c13fc6c0 Level-0 table #5: started
|
2025/03/11-23:33:32.511734 7f24c5ffb6c0 Delete type=3 #176
|
||||||
2023/07/29-09:21:50.827401 7f95c13fc6c0 Level-0 table #5: 26243 bytes OK
|
2025/03/11-23:33:32.511785 7f24c5ffb6c0 Delete type=0 #178
|
||||||
2023/07/29-09:21:50.938004 7f95c13fc6c0 Delete type=0 #3
|
2025/03/11-23:44:47.591299 7f24c4bff6c0 Level-0 table #183: started
|
||||||
2023/07/29-09:21:50.938074 7f95c13fc6c0 Delete type=3 #2
|
2025/03/11-23:44:47.591363 7f24c4bff6c0 Level-0 table #183: 0 bytes OK
|
||||||
2023/07/29-09:40:48.262273 7f95c0bfb6c0 Level-0 table #8: started
|
2025/03/11-23:44:47.624590 7f24c4bff6c0 Delete type=0 #181
|
||||||
2023/07/29-09:40:48.262287 7f95c0bfb6c0 Level-0 table #8: 0 bytes OK
|
2025/03/11-23:44:47.748676 7f24c4bff6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||||
2023/07/29-09:40:48.269214 7f95c0bfb6c0 Delete type=0 #6
|
|
||||||
2023/07/29-09:40:48.279470 7f95c0bfb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at '!items!zs7krgXhDRndtqbl' @ 127 : 1
|
|
||||||
2023/07/29-09:40:48.279481 7f95c0bfb6c0 Compacting 1@0 + 0@1 files
|
|
||||||
2023/07/29-09:40:48.283626 7f95c0bfb6c0 Generated table #9@0: 174 keys, 26243 bytes
|
|
||||||
2023/07/29-09:40:48.283652 7f95c0bfb6c0 Compacted 1@0 + 0@1 files => 26243 bytes
|
|
||||||
2023/07/29-09:40:48.289868 7f95c0bfb6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
|
||||||
2023/07/29-09:40:48.289934 7f95c0bfb6c0 Delete type=2 #5
|
|
||||||
2023/07/29-09:40:48.296265 7f95c0bfb6c0 Manual compaction at level-0 from '!items!zs7krgXhDRndtqbl' @ 127 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/equipment/MANIFEST-000184
Normal file
BIN
packs/help/000108.ldb
Normal file
1
packs/help/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000121
|
8
packs/help/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2025/03/11-23:44:54.948819 7f24c67fc6c0 Recovering log #119
|
||||||
|
2025/03/11-23:44:55.014909 7f24c67fc6c0 Delete type=3 #117
|
||||||
|
2025/03/11-23:44:55.015006 7f24c67fc6c0 Delete type=0 #119
|
||||||
|
2025/03/11-23:45:54.515413 7f24c4bff6c0 Level-0 table #124: started
|
||||||
|
2025/03/11-23:45:54.515443 7f24c4bff6c0 Level-0 table #124: 0 bytes OK
|
||||||
|
2025/03/11-23:45:54.522097 7f24c4bff6c0 Delete type=0 #122
|
||||||
|
2025/03/11-23:45:54.522287 7f24c4bff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
|
2025/03/11-23:45:54.522303 7f24c4bff6c0 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/03/11-23:33:32.552584 7f24c6ffd6c0 Recovering log #115
|
||||||
|
2025/03/11-23:33:32.563351 7f24c6ffd6c0 Delete type=3 #113
|
||||||
|
2025/03/11-23:33:32.563398 7f24c6ffd6c0 Delete type=0 #115
|
||||||
|
2025/03/11-23:44:47.842166 7f24c4bff6c0 Level-0 table #120: started
|
||||||
|
2025/03/11-23:44:47.842227 7f24c4bff6c0 Level-0 table #120: 0 bytes OK
|
||||||
|
2025/03/11-23:44:47.879285 7f24c4bff6c0 Delete type=0 #118
|
||||||
|
2025/03/11-23:44:47.922462 7f24c4bff6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||||
|
2025/03/11-23:44:47.974424 7f24c4bff6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
BIN
packs/help/MANIFEST-000121
Normal file
BIN
packs/maneuvers/000171.ldb
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000010
|
MANIFEST-000184
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
2023/07/29-09:40:52.216200 7f95c2bff6c0 Recovering log #7
|
2025/03/11-23:44:54.883993 7f24c5ffb6c0 Recovering log #182
|
||||||
2023/07/29-09:40:52.237129 7f95c2bff6c0 Delete type=3 #4
|
2025/03/11-23:44:54.946077 7f24c5ffb6c0 Delete type=3 #180
|
||||||
2023/07/29-09:40:52.237181 7f95c2bff6c0 Delete type=0 #7
|
2025/03/11-23:44:54.946154 7f24c5ffb6c0 Delete type=0 #182
|
||||||
|
2025/03/11-23:45:54.498184 7f24c4bff6c0 Level-0 table #187: started
|
||||||
|
2025/03/11-23:45:54.498223 7f24c4bff6c0 Level-0 table #187: 0 bytes OK
|
||||||
|
2025/03/11-23:45:54.505537 7f24c4bff6c0 Delete type=0 #185
|
||||||
|
2025/03/11-23:45:54.522269 7f24c4bff6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,7 @@
|
|||||||
2023/07/29-09:21:50.959485 7f95c2bff6c0 Recovering log #3
|
2025/03/11-23:33:32.540154 7f24c67fc6c0 Recovering log #178
|
||||||
2023/07/29-09:21:50.959571 7f95c2bff6c0 Level-0 table #5: started
|
2025/03/11-23:33:32.549680 7f24c67fc6c0 Delete type=3 #176
|
||||||
2023/07/29-09:21:50.995185 7f95c2bff6c0 Level-0 table #5: 9793 bytes OK
|
2025/03/11-23:33:32.549720 7f24c67fc6c0 Delete type=0 #178
|
||||||
2023/07/29-09:21:51.096415 7f95c2bff6c0 Delete type=0 #3
|
2025/03/11-23:44:47.624705 7f24c4bff6c0 Level-0 table #183: started
|
||||||
2023/07/29-09:21:51.096494 7f95c2bff6c0 Delete type=3 #2
|
2025/03/11-23:44:47.624728 7f24c4bff6c0 Level-0 table #183: 0 bytes OK
|
||||||
2023/07/29-09:40:48.296275 7f95c0bfb6c0 Level-0 table #8: started
|
2025/03/11-23:44:47.667991 7f24c4bff6c0 Delete type=0 #181
|
||||||
2023/07/29-09:40:48.296293 7f95c0bfb6c0 Level-0 table #8: 0 bytes OK
|
2025/03/11-23:44:47.748692 7f24c4bff6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||||
2023/07/29-09:40:48.302965 7f95c0bfb6c0 Delete type=0 #6
|
|
||||||
2023/07/29-09:40:48.312703 7f95c0bfb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at '!items!oSutlbe9wyBZccmf' @ 15 : 1
|
|
||||||
2023/07/29-09:40:48.312718 7f95c0bfb6c0 Compacting 1@0 + 0@1 files
|
|
||||||
2023/07/29-09:40:48.316507 7f95c0bfb6c0 Generated table #9@0: 15 keys, 6584 bytes
|
|
||||||
2023/07/29-09:40:48.316535 7f95c0bfb6c0 Compacted 1@0 + 0@1 files => 6584 bytes
|
|
||||||
2023/07/29-09:40:48.323224 7f95c0bfb6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
|
||||||
2023/07/29-09:40:48.323333 7f95c0bfb6c0 Delete type=2 #5
|
|
||||||
2023/07/29-09:40:48.323429 7f95c0bfb6c0 Manual compaction at level-0 from '!items!oSutlbe9wyBZccmf' @ 15 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/maneuvers/MANIFEST-000184
Normal file
BIN
packs/scenes/000055.ldb
Normal file
0
packs/scenes/000070.log
Normal file
1
packs/scenes/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000068
|
0
packs/scenes/LOCK
Normal file
8
packs/scenes/LOG
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2025/03/11-23:44:54.826302 7f24c67fc6c0 Recovering log #66
|
||||||
|
2025/03/11-23:44:54.878873 7f24c67fc6c0 Delete type=3 #64
|
||||||
|
2025/03/11-23:44:54.879033 7f24c67fc6c0 Delete type=0 #66
|
||||||
|
2025/03/11-23:45:54.479218 7f24c4bff6c0 Level-0 table #71: started
|
||||||
|
2025/03/11-23:45:54.479246 7f24c4bff6c0 Level-0 table #71: 0 bytes OK
|
||||||
|
2025/03/11-23:45:54.485312 7f24c4bff6c0 Delete type=0 #69
|
||||||
|
2025/03/11-23:45:54.491727 7f24c4bff6c0 Manual compaction at level-0 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)
|
||||||
|
2025/03/11-23:45:54.491756 7f24c4bff6c0 Manual compaction at level-1 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)
|
8
packs/scenes/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2025/03/11-23:33:32.527497 7f24c6ffd6c0 Recovering log #62
|
||||||
|
2025/03/11-23:33:32.537450 7f24c6ffd6c0 Delete type=3 #60
|
||||||
|
2025/03/11-23:33:32.537513 7f24c6ffd6c0 Delete type=0 #62
|
||||||
|
2025/03/11-23:44:47.879398 7f24c4bff6c0 Level-0 table #67: started
|
||||||
|
2025/03/11-23:44:47.879423 7f24c4bff6c0 Level-0 table #67: 0 bytes OK
|
||||||
|
2025/03/11-23:44:47.922234 7f24c4bff6c0 Delete type=0 #65
|
||||||
|
2025/03/11-23:44:47.922483 7f24c4bff6c0 Manual compaction at level-0 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)
|
||||||
|
2025/03/11-23:44:47.974443 7f24c4bff6c0 Manual compaction at level-1 from '!scenes!YYBr138LR7ntGFdo' @ 72057594037927935 : 1 .. '!scenes!wJJTdzEVyJpkUXaM' @ 0 : 0; will stop at (end)
|
BIN
packs/scenes/MANIFEST-000068
Normal file
BIN
packs/specialisation/000171.ldb
Normal file
0
packs/specialisation/000186.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000010
|
MANIFEST-000184
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
2023/07/29-09:40:52.194936 7f95c1bfd6c0 Recovering log #7
|
2025/03/11-23:44:54.615643 7f24c6ffd6c0 Recovering log #182
|
||||||
2023/07/29-09:40:52.211393 7f95c1bfd6c0 Delete type=3 #4
|
2025/03/11-23:44:54.688425 7f24c6ffd6c0 Delete type=3 #180
|
||||||
2023/07/29-09:40:52.211511 7f95c1bfd6c0 Delete type=0 #7
|
2025/03/11-23:44:54.688509 7f24c6ffd6c0 Delete type=0 #182
|
||||||
|
2025/03/11-23:45:54.466489 7f24c4bff6c0 Level-0 table #187: started
|
||||||
|
2025/03/11-23:45:54.466525 7f24c4bff6c0 Level-0 table #187: 0 bytes OK
|
||||||
|
2025/03/11-23:45:54.472451 7f24c4bff6c0 Delete type=0 #185
|
||||||
|
2025/03/11-23:45:54.491700 7f24c4bff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,7 @@
|
|||||||
2023/07/29-09:21:50.805563 7f95c2bff6c0 Recovering log #3
|
2025/03/11-23:33:32.488591 7f24c57fa6c0 Recovering log #178
|
||||||
2023/07/29-09:21:50.805808 7f95c2bff6c0 Level-0 table #5: started
|
2025/03/11-23:33:32.499216 7f24c57fa6c0 Delete type=3 #176
|
||||||
2023/07/29-09:21:50.843484 7f95c2bff6c0 Level-0 table #5: 14920 bytes OK
|
2025/03/11-23:33:32.499268 7f24c57fa6c0 Delete type=0 #178
|
||||||
2023/07/29-09:21:50.957433 7f95c2bff6c0 Delete type=0 #3
|
2025/03/11-23:44:47.713953 7f24c4bff6c0 Level-0 table #183: started
|
||||||
2023/07/29-09:21:50.957497 7f95c2bff6c0 Delete type=3 #2
|
2025/03/11-23:44:47.713983 7f24c4bff6c0 Level-0 table #183: 0 bytes OK
|
||||||
2023/07/29-09:40:48.256475 7f95c0bfb6c0 Level-0 table #8: started
|
2025/03/11-23:44:47.748547 7f24c4bff6c0 Delete type=0 #181
|
||||||
2023/07/29-09:40:48.256500 7f95c0bfb6c0 Level-0 table #8: 0 bytes OK
|
2025/03/11-23:44:47.748713 7f24c4bff6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||||
2023/07/29-09:40:48.262226 7f95c0bfb6c0 Delete type=0 #6
|
|
||||||
2023/07/29-09:40:48.269398 7f95c0bfb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at '!items!yozTUjNuc2rEGjFK' @ 55 : 1
|
|
||||||
2023/07/29-09:40:48.269412 7f95c0bfb6c0 Compacting 1@0 + 0@1 files
|
|
||||||
2023/07/29-09:40:48.273371 7f95c0bfb6c0 Generated table #9@0: 113 keys, 14920 bytes
|
|
||||||
2023/07/29-09:40:48.273390 7f95c0bfb6c0 Compacted 1@0 + 0@1 files => 14920 bytes
|
|
||||||
2023/07/29-09:40:48.279249 7f95c0bfb6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
|
||||||
2023/07/29-09:40:48.279362 7f95c0bfb6c0 Delete type=2 #5
|
|
||||||
2023/07/29-09:40:48.296255 7f95c0bfb6c0 Manual compaction at level-0 from '!items!yozTUjNuc2rEGjFK' @ 55 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/specialisation/MANIFEST-000184
Normal file
BIN
packs/traits/000171.ldb
Normal file
0
packs/traits/000186.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000010
|
MANIFEST-000184
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
2023/07/29-09:40:52.213843 7f95c1bfd6c0 Recovering log #7
|
2025/03/11-23:44:54.764214 7f24c5ffb6c0 Recovering log #182
|
||||||
2023/07/29-09:40:52.233833 7f95c1bfd6c0 Delete type=3 #4
|
2025/03/11-23:44:54.823309 7f24c5ffb6c0 Delete type=3 #180
|
||||||
2023/07/29-09:40:52.234058 7f95c1bfd6c0 Delete type=0 #7
|
2025/03/11-23:44:54.823390 7f24c5ffb6c0 Delete type=0 #182
|
||||||
|
2025/03/11-23:45:54.485457 7f24c4bff6c0 Level-0 table #187: started
|
||||||
|
2025/03/11-23:45:54.485489 7f24c4bff6c0 Level-0 table #187: 0 bytes OK
|
||||||
|
2025/03/11-23:45:54.491568 7f24c4bff6c0 Delete type=0 #185
|
||||||
|
2025/03/11-23:45:54.491736 7f24c4bff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,15 +1,7 @@
|
|||||||
2023/07/29-09:21:50.940886 7f95c13fc6c0 Recovering log #3
|
2025/03/11-23:33:32.514118 7f24c67fc6c0 Recovering log #178
|
||||||
2023/07/29-09:21:50.940981 7f95c13fc6c0 Level-0 table #5: started
|
2025/03/11-23:33:32.524830 7f24c67fc6c0 Delete type=3 #176
|
||||||
2023/07/29-09:21:50.975963 7f95c13fc6c0 Level-0 table #5: 7833 bytes OK
|
2025/03/11-23:33:32.525025 7f24c67fc6c0 Delete type=0 #178
|
||||||
2023/07/29-09:21:51.079915 7f95c13fc6c0 Delete type=0 #3
|
2025/03/11-23:44:47.668164 7f24c4bff6c0 Level-0 table #183: started
|
||||||
2023/07/29-09:21:51.079983 7f95c13fc6c0 Delete type=3 #2
|
2025/03/11-23:44:47.668203 7f24c4bff6c0 Level-0 table #183: 0 bytes OK
|
||||||
2023/07/29-09:40:48.290005 7f95c0bfb6c0 Level-0 table #8: started
|
2025/03/11-23:44:47.713809 7f24c4bff6c0 Delete type=0 #181
|
||||||
2023/07/29-09:40:48.290023 7f95c0bfb6c0 Level-0 table #8: 0 bytes OK
|
2025/03/11-23:44:47.748703 7f24c4bff6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||||
2023/07/29-09:40:48.296185 7f95c0bfb6c0 Delete type=0 #6
|
|
||||||
2023/07/29-09:40:48.303065 7f95c0bfb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at '!items!zgNI2haxhBxBDBdl' @ 24 : 1
|
|
||||||
2023/07/29-09:40:48.303074 7f95c0bfb6c0 Compacting 1@0 + 0@1 files
|
|
||||||
2023/07/29-09:40:48.306318 7f95c0bfb6c0 Generated table #9@0: 25 keys, 3580 bytes
|
|
||||||
2023/07/29-09:40:48.306337 7f95c0bfb6c0 Compacted 1@0 + 0@1 files => 3580 bytes
|
|
||||||
2023/07/29-09:40:48.312428 7f95c0bfb6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
|
||||||
2023/07/29-09:40:48.312551 7f95c0bfb6c0 Delete type=2 #5
|
|
||||||
2023/07/29-09:40:48.323419 7f95c0bfb6c0 Manual compaction at level-0 from '!items!zgNI2haxhBxBDBdl' @ 24 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/traits/MANIFEST-000184
Normal file
@ -1265,6 +1265,7 @@ ul, li {
|
|||||||
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;
|
||||||
@ -1275,6 +1276,16 @@ ul, li {
|
|||||||
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;
|
||||||
@ -1287,10 +1298,17 @@ ul, li {
|
|||||||
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;
|
||||||
@ -1321,12 +1339,21 @@ ul, li {
|
|||||||
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;
|
||||||
|
@ -1245,6 +1245,7 @@ ul, li {
|
|||||||
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;
|
||||||
@ -1255,6 +1256,16 @@ ul, li {
|
|||||||
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;
|
||||||
@ -1267,10 +1278,17 @@ ul, li {
|
|||||||
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;
|
||||||
@ -1301,12 +1319,21 @@ ul, li {
|
|||||||
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;
|
||||||
|
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": "12",
|
||||||
"verified": "11"
|
"verified": "12"
|
||||||
},
|
},
|
||||||
"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.9",
|
"version": "12.0.3",
|
||||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-ecryme/archive/fvtt-ecryme-v11.0.9.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-ecryme/archive/fvtt-ecryme-v12.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
|
||||||
@ -173,8 +192,35 @@
|
|||||||
"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": [
|
||||||
"biodata",
|
"biodata",
|
||||||
@ -188,9 +234,6 @@
|
|||||||
"trait",
|
"trait",
|
||||||
"weapon",
|
"weapon",
|
||||||
"specialization",
|
"specialization",
|
||||||
"annency",
|
|
||||||
"boheme",
|
|
||||||
"contact",
|
|
||||||
"maneuver"
|
"maneuver"
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
@ -242,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}}
|
||||||
@ -125,8 +154,12 @@
|
|||||||
{{#if hasCephaly}}
|
{{#if hasCephaly}}
|
||||||
{{!-- Cephaly Tab --}}
|
{{!-- Cephaly Tab --}}
|
||||||
<div class="tab cephaly" data-group="primary" data-tab="cephaly">
|
<div class="tab cephaly" data-group="primary" data-tab="cephaly">
|
||||||
|
|
||||||
|
<div class="grid grid-2col">
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
|
<h3>{{localize "ECRY.ui.cephaly"}}</h3>
|
||||||
<ul class="stat-list alternate-list item-list">
|
<ul class="stat-list alternate-list item-list">
|
||||||
{{#each cephalySkills as |skill skillkey|}}
|
{{#each cephalySkills as |skill skillkey|}}
|
||||||
<li class="item flexrow list-item">
|
<li class="item flexrow list-item">
|
||||||
@ -135,19 +168,33 @@
|
|||||||
<i class="fa-solid fa-dice-d6"></i>
|
<i class="fa-solid fa-dice-d6"></i>
|
||||||
{{localize skill.name}}
|
{{localize skill.name}}
|
||||||
</a></span>
|
</a></span>
|
||||||
<select class="item-field-label-short" type="text"
|
<select class="item-field-label-short" type="text" name="system.cephaly.skilllist.{{skillkey}}.value"
|
||||||
name="system.cephaly.skilllist.{{skillkey}}.value" value="{{skill.value}}"
|
value="{{skill.value}}" data-dtype="Number">
|
||||||
data-dtype="Number">
|
{{selectOptions @root.config.skillLevel selected=skill.value}}
|
||||||
{{#select skill.value}}
|
|
||||||
{{#each @root.config.skillLevel as |level key| }}
|
|
||||||
<option value="{{level}}">{{level}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{#if annency}}
|
||||||
|
<h3>{{localize "ECRY.ui.annency"}} : <a class="open-annency"
|
||||||
|
data-annency-id="{{annency.id}}">{{annency.name}}<i class="fas fa-edit"></i></a></h3>
|
||||||
|
<ul class="stat-list alternate-list item-list">
|
||||||
|
<li class="item flexrow list-item">
|
||||||
|
<span class="item-name-label-long">
|
||||||
|
{{annency.system.base.description}}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
@ -237,7 +284,7 @@
|
|||||||
<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="{{maneuver.img}}" /></a>
|
src="{{maneuver.img}}" /></a>
|
||||||
<span class="item-name-label-long2">
|
<span class="item-name-label-long2">
|
||||||
{{maneuver.name}}
|
{{maneuver.name}}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
@ -252,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">
|
||||||
@ -310,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">
|
||||||
@ -324,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>
|
||||||
@ -365,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>
|
||||||
@ -374,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>
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
|
||||||
@ -100,19 +93,29 @@
|
|||||||
{{/each}}
|
{{/each}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if annency}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">{{localize "ECRY.ui.annency"}} : {{annency.name}}</span>
|
||||||
|
<span class="roll-dialog-label">{{annency.system.base.description}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">{{localize "ECRY.ui.annencybonus"}}</span>
|
||||||
|
<select class="" id="annency-bonus" name="annencyBonus" data-type="String">
|
||||||
|
<option value="0">0</option>
|
||||||
|
<option value="1">+1</option>
|
||||||
|
<option value="2">+2</option>
|
||||||
|
<option value="3">+3</option>
|
||||||
|
<option value="4">+4</option>
|
||||||
|
<option value="5">+5</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<div class="flexrow">
|
<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 id="bonusMalusPerso" name="bonusMalusPerso" type="text" 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>
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -1,20 +1,35 @@
|
|||||||
{
|
{
|
||||||
"label": "Equipement",
|
"label": "Equipement",
|
||||||
|
"mapping": {
|
||||||
|
"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": {
|
||||||
"name": "Absinthe",
|
"name": "Absinthe",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
||||||
},
|
},
|
||||||
"Accordion": {
|
"Accordion": {
|
||||||
"name": "Accordion",
|
"name": "Accordéon",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Airship": {
|
"Airship": {
|
||||||
"name": "Airship",
|
"name": "Dirigeable",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Animal skin parchment": {
|
"Animal skin parchment": {
|
||||||
"name": "Animal skin parchment",
|
"name": "Parchemin de peau",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Automobile": {
|
"Automobile": {
|
||||||
@ -22,75 +37,75 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Axe": {
|
"Axe": {
|
||||||
"name": "Axe",
|
"name": "Hache",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bag": {
|
"Bag": {
|
||||||
"name": "Bag",
|
"name": "Sac",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Ball of string": {
|
"Ball of string": {
|
||||||
"name": "Ball of string",
|
"name": "Pelote de ficelle",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bar of base metal (1 kg)": {
|
"Bar of base metal (1 kg)": {
|
||||||
"name": "Bar of base metal (1 kg)",
|
"name": "Lingot de vil métal (1 kg)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bare hand": {
|
"Bare hand": {
|
||||||
"name": "Bare hand",
|
"name": "Mains nues",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Barrel organ": {
|
"Barrel organ": {
|
||||||
"name": "Barrel organ",
|
"name": "Orgue",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Battleaxe": {
|
"Battleaxe": {
|
||||||
"name": "Battleaxe",
|
"name": "Hache de bataille",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Beer (1 glass)": {
|
"Beer (1 glass)": {
|
||||||
"name": "Beer (1 glass)",
|
"name": "Bière (1 verre)",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
||||||
},
|
},
|
||||||
"Beet stein": {
|
"Beet stein": {
|
||||||
"name": "Beet stein",
|
"name": "Chope (étain)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bicycle": {
|
"Bicycle": {
|
||||||
"name": "Bicycle",
|
"name": "Vélo",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Blacksmith's toolkit": {
|
"Blacksmith's toolkit": {
|
||||||
"name": "Blacksmith's toolkit",
|
"name": "Outils de forgeron",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Blanket": {
|
"Blanket": {
|
||||||
"name": "Blanket",
|
"name": "Couverture",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Blowpipe": {
|
"Blowpipe": {
|
||||||
"name": "Blowpipe",
|
"name": "Sarbacane",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Blunderbuss": {
|
"Blunderbuss": {
|
||||||
"name": "Blunderbuss",
|
"name": "Tromblon",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Book (printed)": {
|
"Book (printed)": {
|
||||||
"name": "Book (printed)",
|
"name": "Livre (imprimé)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bow": {
|
"Bow": {
|
||||||
"name": "Bow",
|
"name": "Arc",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bower hat": {
|
"Bower hat": {
|
||||||
"name": "Bower hat",
|
"name": "Chapeau melon",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Box camera": {
|
"Box camera": {
|
||||||
"name": "Box camera",
|
"name": "Appareil photographique (boîtier)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Bracelet": {
|
"Bracelet": {
|
||||||
@ -102,27 +117,27 @@
|
|||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
||||||
},
|
},
|
||||||
"Brooch": {
|
"Brooch": {
|
||||||
"name": "Brooch",
|
"name": "Broche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Butter": {
|
"Butter": {
|
||||||
"name": "Butter",
|
"name": "Beurre",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Butterfly net": {
|
"Butterfly net": {
|
||||||
"name": "Butterfly net",
|
"name": "Filet à papillons",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Cake": {
|
"Cake": {
|
||||||
"name": "Cake",
|
"name": "Gâteau",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Candle": {
|
"Candle": {
|
||||||
"name": "Candle",
|
"name": "Bougie",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Cane": {
|
"Cane": {
|
||||||
"name": "Cane",
|
"name": "Canne",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Cape": {
|
"Cape": {
|
||||||
@ -130,23 +145,23 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Carriage": {
|
"Carriage": {
|
||||||
"name": "Carriage",
|
"name": "Carriole",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Cestus": {
|
"Cestus": {
|
||||||
"name": "Cestus",
|
"name": "Ceste",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Chain": {
|
"Chain": {
|
||||||
"name": "Chain",
|
"name": "Chaîne",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Chain mail": {
|
"Chain mail": {
|
||||||
"name": "Chain mail",
|
"name": "Chemise de maille",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Chestpplate": {
|
"Chestpplate": {
|
||||||
"name": "Chestpplate",
|
"name": "Cuirasse",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Cigarettes": {
|
"Cigarettes": {
|
||||||
@ -154,11 +169,11 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Coffee, tea": {
|
"Coffee, tea": {
|
||||||
"name": "Coffee, tea",
|
"name": "Café, thé",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Compass": {
|
"Compass": {
|
||||||
"name": "Compass",
|
"name": "Boussole",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Corset": {
|
"Corset": {
|
||||||
@ -166,155 +181,155 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Crowbar": {
|
"Crowbar": {
|
||||||
"name": "Crowbar",
|
"name": "Pied de biche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Crude oil (1 l)": {
|
"Crude oil (1 l)": {
|
||||||
"name": "Crude oil (1 l)",
|
"name": "Huile lourde (1 l)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Cudgel": {
|
"Cudgel": {
|
||||||
"name": "Cudgel",
|
"name": "Gourdin",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Dagger": {
|
"Dagger": {
|
||||||
"name": "Dagger",
|
"name": "Dague",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Dirk": {
|
"Dirk": {
|
||||||
"name": "Dirk",
|
"name": "Poignard",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Disk": {
|
"Disk": {
|
||||||
"name": "Disk",
|
"name": "Disque",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Dissection kit": {
|
"Dissection kit": {
|
||||||
"name": "Dissection kit",
|
"name": "Nécessaire de dissection ",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Dress, skirt": {
|
"Dress, skirt": {
|
||||||
"name": "Dress, skirt",
|
"name": "Robe, jupe",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Drum": {
|
"Drum": {
|
||||||
"name": "Drum",
|
"name": "Tambour",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Earrings (pair)": {
|
"Earrings (pair)": {
|
||||||
"name": "Earrings (pair)",
|
"name": "Boucles d'oreille (paire)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Egg": {
|
"Egg": {
|
||||||
"name": "Egg",
|
"name": "Oeuf",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Evening dress": {
|
"Evening dress": {
|
||||||
"name": "Evening dress",
|
"name": "Robe de soirée",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Evening shirt": {
|
"Evening shirt": {
|
||||||
"name": "Evening shirt",
|
"name": "Chemise de soirée",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Film": {
|
"Film": {
|
||||||
"name": "Film",
|
"name": "Pellicule, développement et tirage",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Flail": {
|
"Flail": {
|
||||||
"name": "Flail",
|
"name": "Fléau",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Flat cap": {
|
"Flat cap": {
|
||||||
"name": "Flat cap",
|
"name": "Casquette gavroche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Glasses": {
|
"Glasses": {
|
||||||
"name": "Glasses",
|
"name": "Lunettes",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Grappling hook": {
|
"Grappling hook": {
|
||||||
"name": "Grappling hook",
|
"name": "Grapin",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Halberd": {
|
"Halberd": {
|
||||||
"name": "Halberd",
|
"name": "Hallebarde",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Hammer and chisel": {
|
"Hammer and chisel": {
|
||||||
"name": "Hammer and chisel",
|
"name": "Marteau et burin",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Handbag": {
|
"Handbag": {
|
||||||
"name": "Handbag",
|
"name": "Sac à main",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Handheld crossbow": {
|
"Handheld crossbow": {
|
||||||
"name": "Handheld crossbow",
|
"name": "Arbalète de poing",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Handheld lamp": {
|
"Handheld lamp": {
|
||||||
"name": "Handheld lamp",
|
"name": "Lampe tempête",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Harpsichord": {
|
"Harpsichord": {
|
||||||
"name": "Harpsichord",
|
"name": "Clavecin",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"High heels shoes": {
|
"High heels shoes": {
|
||||||
"name": "High heels shoes",
|
"name": "Escarpins",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Horse-drawn cart": {
|
"Horse-drawn cart": {
|
||||||
"name": "Horse-drawn cart",
|
"name": "Chariot",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Hot air balloon": {
|
"Hot air balloon": {
|
||||||
"name": "Hot air balloon",
|
"name": "Ballon",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Illustrated manuscript (cheap)": {
|
"Illustrated manuscript (cheap)": {
|
||||||
"name": "Illustrated manuscript (cheap)",
|
"name": "Manuscrit enluminé (bon marché) ",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Illustrated manuscript (rich)": {
|
"Illustrated manuscript (rich)": {
|
||||||
"name": "Illustrated manuscript (rich)",
|
"name": "Manuscrit enluminé (cher)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Improvised weapon": {
|
"Improvised weapon": {
|
||||||
"name": "Improvised weapon",
|
"name": "Armes improvisées",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Inkpot": {
|
"Inkpot": {
|
||||||
"name": "Inkpot",
|
"name": "Encrier",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Iron flask": {
|
"Iron flask": {
|
||||||
"name": "Iron flask",
|
"name": "Flasque de fer",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Jar (glass)": {
|
"Jar (glass)": {
|
||||||
"name": "Jar (glass)",
|
"name": "Conserve (verre)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Jaw harp": {
|
"Jaw harp": {
|
||||||
"name": "Jaw harp",
|
"name": "Guimbarde",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Kettle": {
|
"Kettle": {
|
||||||
"name": "Kettle",
|
"name": "Bouilloire",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Knife": {
|
"Knife": {
|
||||||
"name": "Knife",
|
"name": "Couteau",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Lamp oil": {
|
"Lamp oil": {
|
||||||
"name": "Lamp oil",
|
"name": "Huile (lamp)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Lantern": {
|
"Lantern": {
|
||||||
"name": "Lantern",
|
"name": "Lanterne",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Leather boots (pair)": {
|
"Leather boots (pair)": {
|
||||||
@ -322,27 +337,27 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Leather chest piece": {
|
"Leather chest piece": {
|
||||||
"name": "Leather chest piece",
|
"name": "Gilet de cuir",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Leather overcoat": {
|
"Leather overcoat": {
|
||||||
"name": "Leather overcoat",
|
"name": "Manteau de conduite en cuir ",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Lighter": {
|
"Lighter": {
|
||||||
"name": "Lighter",
|
"name": "Briquet",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Loaf of bread": {
|
"Loaf of bread": {
|
||||||
"name": "Loaf of bread",
|
"name": "Miche de pain",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Log": {
|
"Log": {
|
||||||
"name": "Log",
|
"name": "Bûche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Lute": {
|
"Lute": {
|
||||||
"name": "Lute",
|
"name": "Luth",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Lyre": {
|
"Lyre": {
|
||||||
@ -350,179 +365,179 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Mace": {
|
"Mace": {
|
||||||
"name": "Mace",
|
"name": "Masse d'armes",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Magnifying glass": {
|
"Magnifying glass": {
|
||||||
"name": "Magnifying glass",
|
"name": "Lunette, télescope",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Mander parchment": {
|
"Mander parchment": {
|
||||||
"name": "Mander parchment",
|
"name": "Parchemin de mandre",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Mandolin": {
|
"Mandolin": {
|
||||||
"name": "Mandolin",
|
"name": "Mandoline",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Meat (beef, horse, chicken)": {
|
"Meat (beef, horse, chicken)": {
|
||||||
"name": "Meat (beef, horse, chicken)",
|
"name": "Viande (boeuf, cheval, poulet)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Meat (fullige, snake, pigeon) (Copy)": {
|
"Meat (fullige, snake, pigeon) (Copy)": {
|
||||||
"name": "Meat (fullige, snake, pigeon) (Copy)",
|
"name": "Viande (fulige, serpent, pigeon)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Meat (rat)": {
|
"Meat (rat)": {
|
||||||
"name": "Meat (rat)",
|
"name": "Viande (rat)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Messenger bag": {
|
"Messenger bag": {
|
||||||
"name": "Messenger bag",
|
"name": "Besace",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Metal crossbow": {
|
"Metal crossbow": {
|
||||||
"name": "Metal crossbow",
|
"name": "Arbalète métallique",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Metal cutlery": {
|
"Metal cutlery": {
|
||||||
"name": "Metal cutlery",
|
"name": "Couverts en métal",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Metal plaque": {
|
"Metal plaque": {
|
||||||
"name": "Metal plaque",
|
"name": "Plaque de métal",
|
||||||
"description": "<p>+8 coins as deposit</p>"
|
"description": "<p>(+8 de caution)</p>"
|
||||||
},
|
},
|
||||||
"Mushroom bread": {
|
"Mushroom bread": {
|
||||||
"name": "Mushroom bread",
|
"name": "Pain de champignons",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Mushroom spirit": {
|
"Mushroom spirit": {
|
||||||
"name": "Mushroom spirit",
|
"name": "Eau-de-vie de champignons",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>Les bouteilles vides sont consignées, 5 sous par bouteille</p>"
|
||||||
},
|
},
|
||||||
"Musical saw": {
|
"Musical saw": {
|
||||||
"name": "Musical saw",
|
"name": "Scie musicale",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Musket": {
|
"Musket": {
|
||||||
"name": "Musket",
|
"name": "Mousquet",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Necklace": {
|
"Necklace": {
|
||||||
"name": "Necklace",
|
"name": "Collier",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Organ": {
|
"Organ": {
|
||||||
"name": "Organ",
|
"name": "Orgue",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Overcoat": {
|
"Overcoat": {
|
||||||
"name": "Overcoat",
|
"name": "Manteau",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Pack of cards": {
|
"Pack of cards": {
|
||||||
"name": "Pack of cards",
|
"name": "Jeu de cartes",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Petticoat": {
|
"Petticoat": {
|
||||||
"name": "Petticoat",
|
"name": "Jupon",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Phonographic recorder": {
|
"Phonographic recorder": {
|
||||||
"name": "Phonographic recorder",
|
"name": "phonoéditeur",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Pike": {
|
"Pike": {
|
||||||
"name": "Pike",
|
"name": "Pique",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Pistol": {
|
"Pistol": {
|
||||||
"name": "Pistol",
|
"name": "Pistolet",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Pocket watch": {
|
"Pocket watch": {
|
||||||
"name": "Pocket watch",
|
"name": "Montre à gousset",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Poor quality stilts": {
|
"Poor quality stilts": {
|
||||||
"name": "Poor quality stilts",
|
"name": "Chaussures à talons-aiguille de basse qualité",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Port, wine": {
|
"Port, wine": {
|
||||||
"name": "Port, wine",
|
"name": "Porto, vin",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>Les bouteilles vides sont consignées, 5 sous par bouteille</p>"
|
||||||
},
|
},
|
||||||
"Portable first aid kit": {
|
"Portable first aid kit": {
|
||||||
"name": "Portable first aid kit",
|
"name": "Trousse médicale de voyage ",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Portable phonographic recorder": {
|
"Portable phonographic recorder": {
|
||||||
"name": "Portable phonographic recorder",
|
"name": "Phonoenregistreur de voyage",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Portable stove": {
|
"Portable stove": {
|
||||||
"name": "Portable stove",
|
"name": "Réchaud à alcool",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Pot of jam": {
|
"Pot of jam": {
|
||||||
"name": "Pot of jam",
|
"name": "Pot de confiture",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Quill": {
|
"Quill": {
|
||||||
"name": "Quill",
|
"name": "Plume",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Rapier": {
|
"Rapier": {
|
||||||
"name": "Rapier",
|
"name": "Rapière",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Razor blade": {
|
"Razor blade": {
|
||||||
"name": "Razor blade",
|
"name": "Lame de rasoir",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Recorder": {
|
"Recorder": {
|
||||||
"name": "Recorder",
|
"name": "Flûte à bec",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Revolver": {
|
"Revolver": {
|
||||||
"name": "Revolver",
|
"name": "Révolver",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Riding boots (pair)": {
|
"Riding boots (pair)": {
|
||||||
"name": "Riding boots (pair)",
|
"name": "Botte de cavalier (paire)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Ring": {
|
"Ring": {
|
||||||
"name": "Ring",
|
"name": "Anneau",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Rope (hemp)": {
|
"Rope (hemp)": {
|
||||||
"name": "Rope (hemp)",
|
"name": "Corde (chanvre)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Rum": {
|
"Rum": {
|
||||||
"name": "Rum",
|
"name": "Rhum",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>Les bouteilles vides sont consignées, 5 sous par bouteille</p>"
|
||||||
},
|
},
|
||||||
"Scarf, shawl": {
|
"Scarf, shawl": {
|
||||||
"name": "Scarf, shawl",
|
"name": "Echarpe, châle",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Shoes": {
|
"Shoes": {
|
||||||
"name": "Shoes",
|
"name": "Chaussures",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Sighted rifle": {
|
"Sighted rifle": {
|
||||||
"name": "Sighted rifle",
|
"name": "Fusil à lunette",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Silk stockings": {
|
"Silk stockings": {
|
||||||
"name": "Silk stockings",
|
"name": "Bas de soie",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Silver bar": {
|
"Silver bar": {
|
||||||
"name": "Silver bar",
|
"name": "Lingot d’argent ",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Skis": {
|
"Skis": {
|
||||||
@ -530,59 +545,59 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Sleeping bag": {
|
"Sleeping bag": {
|
||||||
"name": "Sleeping bag",
|
"name": "Sac de couchage",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Sling": {
|
"Sling": {
|
||||||
"name": "Sling",
|
"name": "Fronde",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Soft brimmed hat": {
|
"Soft brimmed hat": {
|
||||||
"name": "Soft brimmed hat",
|
"name": "Chapeau mou",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Spear": {
|
"Spear": {
|
||||||
"name": "Spear",
|
"name": "Lance",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Spirit": {
|
"Spirit": {
|
||||||
"name": "Spirit",
|
"name": "Liqueur",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>Les bouteilles vides sont consignées, 5 sous par bouteille</p>"
|
||||||
},
|
},
|
||||||
"Staff": {
|
"Staff": {
|
||||||
"name": "Staff",
|
"name": "Bâton",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Stylus for wax plaque": {
|
"Stylus for wax plaque": {
|
||||||
"name": "Stylus for wax plaque",
|
"name": "Stylet pour plaque de cire",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Sword": {
|
"Sword": {
|
||||||
"name": "Sword",
|
"name": "Epée",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Tambourine": {
|
"Tambourine": {
|
||||||
"name": "Tambourine",
|
"name": "Tambourin",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Telescope": {
|
"Telescope": {
|
||||||
"name": "Telescope",
|
"name": "Télescope",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Telescopic stilts": {
|
"Telescopic stilts": {
|
||||||
"name": "Telescopic stilts",
|
"name": "Échasses télescopiques",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Thief's toolkit": {
|
"Thief's toolkit": {
|
||||||
"name": "Thief's toolkit",
|
"name": "Outils de voleur",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Top hat": {
|
"Top hat": {
|
||||||
"name": "Top hat",
|
"name": "Haut-de-forme",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Torch": {
|
"Torch": {
|
||||||
"name": "Torch",
|
"name": "Torche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Train (locomotive)": {
|
"Train (locomotive)": {
|
||||||
@ -594,67 +609,67 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Trumpet": {
|
"Trumpet": {
|
||||||
"name": "Trumpet",
|
"name": "Trompette",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Truncheon": {
|
"Truncheon": {
|
||||||
"name": "Truncheon",
|
"name": "Matraque",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Underwear": {
|
"Underwear": {
|
||||||
"name": "Underwear",
|
"name": "Sous-vêtements",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Uniform": {
|
"Uniform": {
|
||||||
"name": "Uniform",
|
"name": "Uniforme",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Viol": {
|
"Viol": {
|
||||||
"name": "Viol",
|
"name": "Viole",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Violin": {
|
"Violin": {
|
||||||
"name": "Violin",
|
"name": "Violon",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Walking stick": {
|
"Walking stick": {
|
||||||
"name": "Walking stick",
|
"name": "Bâton de marche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Watch": {
|
"Watch": {
|
||||||
"name": "Watch",
|
"name": "Montre",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Wax plaque": {
|
"Wax plaque": {
|
||||||
"name": "Wax plaque",
|
"name": "Plaque de cire",
|
||||||
"description": "<p>+3 coins as deposit</p>"
|
"description": "<p>+3 de caution</p>"
|
||||||
},
|
},
|
||||||
"Whiskey": {
|
"Whiskey": {
|
||||||
"name": "Whiskey",
|
"name": "Whisky",
|
||||||
"description": "<p>A 5 pence deposit is paid for bottles. This sum is paid back if the empty bottle is returned.</p>"
|
"description": "<p>Les bouteilles vides sont consignées, 5 sous par bouteille</p>"
|
||||||
},
|
},
|
||||||
"Whistle": {
|
"Whistle": {
|
||||||
"name": "Whistle",
|
"name": "Sifflet",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"White shirt": {
|
"White shirt": {
|
||||||
"name": "White shirt",
|
"name": "Chemise blanche",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Wooden crossbow": {
|
"Wooden crossbow": {
|
||||||
"name": "Wooden crossbow",
|
"name": "Arbalète en bois",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Wooden sedan chair": {
|
"Wooden sedan chair": {
|
||||||
"name": "Wooden sedan chair",
|
"name": "Chaise à porteurs (bois)",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Wooden trunk": {
|
"Wooden trunk": {
|
||||||
"name": "Wooden trunk",
|
"name": "Malle de bois",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"Writing material": {
|
"Writing material": {
|
||||||
"name": "Writing material",
|
"name": "Matériel d’écriture",
|
||||||
"description": ""
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,65 +1,68 @@
|
|||||||
{
|
{
|
||||||
"label": "Manoeuvres",
|
"label": "Manoeuvres",
|
||||||
|
"mapping": {
|
||||||
|
"description": "system.description"
|
||||||
|
},
|
||||||
"entries": {
|
"entries": {
|
||||||
"Coup de Jarnac": {
|
"Coup de Jarnac": {
|
||||||
"name": "Coup de Jarnac",
|
"name": "Coup de Jarnac",
|
||||||
"description": "<p>Execution Margin of 4</p>\n<p>This is a violent, treacherous, and wicked blow made famous by Guy Chabot de Jarnac, who used it for the first time in a judiciary duel in Aeolus in 954. It involves wounding the opponent’s leg or Achilles tendon, which prevents them from being able to move normally. As well as the Impact, the victim also receives the Trait: <em>Lame -1</em>.</p>"
|
"description": "<p>Marge de 4 en Accomplissement </p>\n<p>Ce coup violent, déloyal et pernicieux, a été rendu célèbre par Guy Chabot de Jarnac, qui l’a porté pour la première fois lors d’un duel judiciaire, à Éole, en 954. Il consiste à blesser la jambe ou le tendon d’Achille de l’adversaire, l’empêchant de se déplacer normalement. En plus de l’Impact, la victime se voit affublée du Trait <em>Estropié -1</em>.</p>"
|
||||||
},
|
},
|
||||||
"Doesn’t even hurt": {
|
"Doesn’t even hurt": {
|
||||||
"name": "Doesn’t even hurt",
|
"name": "Même pas mal",
|
||||||
"description": "<p>Through breathing control and unshakable willpower, the combatant learns to ignore their injuries. Not only do they not receive any penalty from Impacts inflicted upon them, but even better, those Impacts allow them to unlock their inner strength and become bonuses. Therefore, instead of suffering from a penalty of -4 for a major Impact, the character receives a bonus of +4. they may surpass the Margin limit set by their Skill level.</p>"
|
"description": "<p>Par le contrôle de sa respiration et une volonté inébranlable, le combattant apprend à faire fi de ses blessures. Non seulement il ne souffre d’aucun malus dû aux Impacts subis mais, mieux encore, ces derniers lui permettent de se surpasser et deviennent des bonus proportionnels. Ainsi, au lieu de subir un malus de -4 pour un Impact majeur, le personnage bénéficiera d’un bonus de +4. Il peut dépasser la Marge autorisée par sa Compétence.</p>"
|
||||||
},
|
},
|
||||||
"Double impact": {
|
"Double impact": {
|
||||||
"name": "Double impact",
|
"name": "Double impact",
|
||||||
"description": "<p>Aggressive</p>\n<p>Two weapons needed</p>\n<p>This technique requires extreme speed on the user’s part, increasing the number of attacks they can deliver. In a single exchange of blows, they can inflict an Impact twice (two serious Impacts rather than one for example). However, this can turn against them and be very dangerous, since due to their excessive aggressiveness, the character exposes themself. They also suffer from double Impacts.</p>"
|
"description": "<p>Aggressif</p>\n<p>deux armes sont nécessaires</p>\n<p>Cette botte demande une extrême célérité au maître d’armes qui augmente sa cadence de frappe. Durant un même échange de coups, il est ainsi capable d’infliger son Impact deux fois (deux Impacts graves au lieu d’un par exemple). Le retour de flamme est cependant périlleux, car, par son agressivité, le maître d’armes se découvre. Lui aussi subit des Impacts doublés.</p>"
|
||||||
},
|
},
|
||||||
"It's the winning, not the taking part that counts": {
|
"It's the winning, not the taking part that counts": {
|
||||||
"name": "It's the winning, not the taking part that counts",
|
"name": "L’important n’est pas de participer mais de gagner",
|
||||||
"description": "<p>Impossible to use this technique in a duel</p>\n<p>The sword fighter has learned to take advantage of all situations, by prioritizing efficiency over style. They use whatever they have at hand to gain an advantage. Any improvised weapon they use has an Effect of +3, but breaks after use.</p>"
|
"description": "<p>impossibilité d’utiliser cette botte en duel</p>\n<p>L’escrimeur a appris à tirer profit de toutes les occasions, privilégiant l’efficacité au style. Il se sert de tout ce qui lui tombe sous la main pour en tirer avantage. Entre ses mains, un élément improvisé utilisé pour se battre est doté d’une Incidence de +3, mais il se brise après usage.</p>"
|
||||||
},
|
},
|
||||||
"Perforation": {
|
"Perforation": {
|
||||||
"name": "Perforation",
|
"name": "Perforation",
|
||||||
"description": "<p>This maneuver is particularly favored on stitch estates where it is still common to wear armor. The sword fighter uses a precise blow to target the weak point of their opponent’s protection and runs through it, discarding any bonus granted by the armor.</p>"
|
"description": "<p>Cette manœuvre est particulièrement usitée au sein des seigneuries traversières, où les armures demeurent courantes. D’un coup précis, le maître d’armes cible le point faible de la protection de son opposant et s’y engouffre, faisant fi du bonus de cette dernière.</p>"
|
||||||
},
|
},
|
||||||
"Point blank": {
|
"Point blank": {
|
||||||
"name": "Point blank",
|
"name": "À bout portant",
|
||||||
"description": "<p>Requires <em>Musket</em> Specialization</p>\n<p>The combatant is a martial artist able to use their musket in close range combat. In a single exchange of blows, they can deliver a bayonet blow (Effect of a dagger) and fire with the musket (Effect of a firearm).</p>"
|
"description": "<p>nécessite Spécialization <em>Mousquet</em></p>\n<p>Le maître d’armes est un artiste martial, capable de faire feu avec son mousquet lors d’un combat au corps à corps. Durant un même échange de coups, il peut porter un coup de baïonnette (Incidence du poignard) et faire feu avec le mousquet (Incidence d’arme à feu).</p>"
|
||||||
},
|
},
|
||||||
"Ribbon Dance": {
|
"Ribbon Dance": {
|
||||||
"name": "Ribbon Dance",
|
"name": "Danse des rubans",
|
||||||
"description": "<p>Aggressive</p>\n<p>Requires a Specialization with a non rigid weapon (whip, chain, flail, ribbons lined with lead or metal blades), succeeding one’s Preservation test, and enough space to fight–By spinning around with long, skilled movements, the combatant creates a deadly rotating sphere around themself. they can then add their Preservation Margin to their Execution Margin 2 points at a time. The Execution Margin then causes many superficial injuries (1 for each Margin of 2).</p>"
|
"description": "<p>Agressif</p>\n<p>Par tranche de 2, nécessite une Spécialisation en arme articulée (fouet, chaînes, fléaux, rubans lestés de plomb ou lames métalliques), de réussir son test de Préservation et d’avoir suffisamment de place pour se battre – En effectuant de longues et complexes arabesques, le maître d’armes produit une sphère mortelle tournoyante autour de lui. Il peut alors ajouter sa Marge de Préservation, par tranche de 2, à sa Marge d’Accomplissement. La Marge d’Accomplissement produit alors de nombreuses blessures superficielles (1 par Marge de 2).</p>"
|
||||||
},
|
},
|
||||||
"The Chimeric Defense": {
|
"The Chimeric Defense": {
|
||||||
"name": "The Chimeric Defense",
|
"name": "Défense chimérique",
|
||||||
"description": "<p>“Defensive moves only”–by blocks of 2–</p>\n<p>To successfully carry out this maneuver, the character must obtain a Margin of at least 4 in both Execution and Preservation. If it succeeds, it allows the character to add all or part of their Preservation Margin to their Execution Margin in blocks of 2. while dodging or parrying the defender simultaneously lands a blow with a limb, an improvised weapon, or a shield etc. This requires tactical thinking, because using this technique weakens Preservation. The combattant may exceed the normal Margin limit set by Skill level.</p>"
|
"description": "<p>“Défensif uniquement ”–par tranches de 2–</p>\n<p>Pour réussir cette manœuvre, le personnage doit obtenir une Marge d’au moins 4 en Accomplissement ET en Préservation. En cas de réussite, elle permet d’ajouter tout ou partie de sa Marge de Préservation, par tranches de 2, à sa Marge d’Accomplissement. Alors qu’il esquive ou pare, le défenseur en profite pour porter un coup à l’aide d’un membre, d’un élément improvisé, d’un bouclier, etc. Cela demande une réflexion tactique, car augmenter son Accomplissement en recourant à cette botte affaiblit sa Préservation. Le combattant peut dépasser la Marge autorisée par sa Compétence.</p>"
|
||||||
},
|
},
|
||||||
"The Dead man’s Hold": {
|
"The Dead man’s Hold": {
|
||||||
"name": "The Dead man’s Hold",
|
"name": "L’étreinte de l’homme mort",
|
||||||
"description": "<p>The sword fighter allows themself to take attacks by opting for a low Preservation score. By accepting these Impacts, they can take advantage of their opponent’s lowered guard to inflict identical damage on them, in addition to normal damage inflicted during that turn, for a total which can surpass the normal Margin limit set by their Skill level.</p>"
|
"description": "<p>L’escrimeur choisit de subir des blessures en optant pour un score de Préservation bas. En acceptant ces Impacts, il est en retour capable de déjouer la garde de son adversaire et lui fait subir en retour des dégâts identiques, en plus de ceux qu’il a infligés normalement durant cette passe d’armes, pour un total pouvant dépasser sa Marge autorisée de Compétence.</p>"
|
||||||
},
|
},
|
||||||
"The jeering master": {
|
"The jeering master": {
|
||||||
"name": "The jeering master",
|
"name": "Maître persifleur",
|
||||||
"description": "<p>This technique can be used to provoke the opponent, and even humiliate them, before finishing them off. Using mockery, the combattant forces the opponent to use their highest score in Execution, which greatly reduces their Preservation (for minor characters, it becomes +4/-4 by default).</p>"
|
"description": "<p>Cette technique permet de provoquer son adversaire, voire de l’humilier, avant de l’achever. Par ses piques et ses railleries, le maître d’armes impose à son adversaire de placer son plus haut score possible en Accomplissement, ce qui dégarnit grandement sa Préservation (pour les seconds rôles, faites +4/-4 par défaut). </p>"
|
||||||
},
|
},
|
||||||
"The Madman’s step": {
|
"The Madman’s step": {
|
||||||
"name": "The Madman’s step",
|
"name": "Le pas de l’homme fou",
|
||||||
"description": "<p>Rojo style is not taught in judi-duelist schools, but in traverser caravans. The sword fighter employs a style made up of erratic and unpredictable movements that disorient the opponent and make the user difficult to touch. The swordfighter adds +4 to their Preservation and can surpass the normal Margin limit set by their Skill level.</p>"
|
"description": "<p>Le style Rojo n’est pas enseigné par dans les écoles d’avocats-duellistes, mais dans les caravanes traversières. L’escrimeur adopte un style fait de mouvements erratiques et imprévisibles, désorientant son adversaire et le rendant plus difficile à toucher. Le bretteur ajoute +4 à sa Préservation et peut dépasser la Marge autorisée par sa Compétence.</p>"
|
||||||
},
|
},
|
||||||
"The Nevers Attack": {
|
"The Nevers Attack": {
|
||||||
"name": "The Nevers Attack",
|
"name": "La botte de Nevers",
|
||||||
"description": "<p>Execution Margin of 4 and the opponent’s head must be unprotected</p>\n<p>Invented by Parisian swordfighter Philippe de Nevers, this attack requires extreme precision but is absolutely devastating. If it succeeds, the user eliminates their opponent instantly by inflicting an injury between their eyes (equivalent to a major Impact).</p>"
|
"description": "<p>Marge de 4 en Accomplissement et l’adversaire ne doit pas posséder de protection à la tête</p>\n<p>Inventée par Philippe de Nevers, un sabreur parisien, cette botte exige une extrême précision mais se révèle dévastatrice. En cas de réussite, l’épéiste élimine son adversaire sur le coup en lui infligeant une blessure entre les deux yeux (équivalent d’un Impact majeur).</p>"
|
||||||
},
|
},
|
||||||
"The partner switch": {
|
"The partner switch": {
|
||||||
"name": "The partner switch",
|
"name": "Changement de partenaire",
|
||||||
"description": "<p>This technique can be used by a sword fighter facing multiple opponents. The attacker can include an extra target at the last second (before Effects are calculated). They may ask the storyteller to direct the attack on a character within range of their blade or choose the opponent with the highest or lowest Preservation score. The swordfighter’s own Preservation score applies to both of the targeted opponents.</p>"
|
"description": "<p>Cette botte peut être employée par un escrimeur confronté à plusieurs adversaires. Ce dernier a la possibilité d’engager une cible supplémentaire au dernier moment (avant le calcul des Incidences). Il peut demander au conteur de l’orienter vers un personnage à portée de fleuret ou de désigner son opposant avec le plus faible ou le plus fort score en Préservation. Le score de Préservation de l’escrimeur s’applique aux deux adversaires désignés.</p>"
|
||||||
},
|
},
|
||||||
"The Scarlet Dance": {
|
"The Scarlet Dance": {
|
||||||
"name": "The Scarlet Dance",
|
"name": "La danse écarlate",
|
||||||
"description": "<p>This move was invented by the duelist Bramon of Aeolus. The nemesis of Marcel Rubempré, and fencing instructor for the old nobility before they were chased out onto the traverses, Bramon’s technique became legendary during the industrial revolution. It is a combination of dance steps, thrusts, and slashes. The swordfighter lets themself be taken away by their own inner music, and enters into a trance like state which allows them to add their <em>Athletics </em>score to the Effect. They can exceed the normal Margin limit set by their Skill level.</p>"
|
"description": "<p>Cette botte est l’invention de la duelliste Bramon d’Éole. Véritable némésis de Marcel Rubempré, maître d’armes des anciens nobles avant qu’ils ne soient chassés sur les traverses, sa technique entra dans la légende lors de la révolution industrielle. Elle combine un mélange de pas de danse et de coups d’estoc et de taille. Se laissant aller au rythme de sa musique intérieure, l’épéiste finit dans un état de transe lui permettant d’ajouter son score d’Athlétisme à son Incidence. Il peut dépasser la Marge autorisée par sa Compétence.</p>"
|
||||||
},
|
},
|
||||||
"Two-handed attack": {
|
"Two-handed attack": {
|
||||||
"name": "Two-handed attack",
|
"name": "À deux mains",
|
||||||
"description": "<p>Blow delivered with both hands grasping the sword's hilt, Execution score higher than one’s Preservation score required–The combatant strikes with all their strength to break through the opponent’s defense. This move allows characters to replace the Effect with their <em>Athletics</em> score.</p>"
|
"description": "<p>Porter le coup avec les deux mains sur le pommeau de l’arme, avoir un score d’Accomplissement supérieur à celui de Préservation – Le combattant frappe de toutes ses forces afin de percer la défense de son adversaire. Il peut remplacer l’Incidence de son arme par son score en <em>Athlétisme</em>.</p>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
393
translated/fr/fvtt-ecryme.specialisation.json
Normal file
@ -0,0 +1,393 @@
|
|||||||
|
{
|
||||||
|
"label": "Spécialisation",
|
||||||
|
"mapping": {
|
||||||
|
"description": "system.description"
|
||||||
|
},
|
||||||
|
"folders": {
|
||||||
|
"Mental": "Mentale",
|
||||||
|
"Physical": "Physique",
|
||||||
|
"Spocial": "Sociale"
|
||||||
|
},
|
||||||
|
"entries": {
|
||||||
|
"Aircraft": {
|
||||||
|
"name": "brûleur d’aérostat",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Airplane": {
|
||||||
|
"name": "Aéroplane",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Airship": {
|
||||||
|
"name": "Dirigeable",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Amputation": {
|
||||||
|
"name": "Amputation",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Architecture": {
|
||||||
|
"name": "Architecture",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Armlock": {
|
||||||
|
"name": "Clef de bras",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Automobile": {
|
||||||
|
"name": "Automobile",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Axe": {
|
||||||
|
"name": "Hache",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Bartering": {
|
||||||
|
"name": "Marchander",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Blowpipe": {
|
||||||
|
"name": "Sarbacane",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Bow": {
|
||||||
|
"name": "Arc",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Boxing": {
|
||||||
|
"name": "Boxe",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Camouflage": {
|
||||||
|
"name": "Camouflage",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Carriage": {
|
||||||
|
"name": "Calèche",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Carrying": {
|
||||||
|
"name": "Porter",
|
||||||
|
"description": "<p>Le personnage a la force et l'habitude de porter des charges lourdes.</p>"
|
||||||
|
},
|
||||||
|
"Cavalry saber": {
|
||||||
|
"name": "Sabre de cavalerie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Charm": {
|
||||||
|
"name": "Charmer",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Chemystry": {
|
||||||
|
"name": "Chimie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Clarinet": {
|
||||||
|
"name": "Clarinette",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Climbing": {
|
||||||
|
"name": "Escalader",
|
||||||
|
"description": "<p>Le personnage a appris à escalader différents types de surfaces.</p>"
|
||||||
|
},
|
||||||
|
"Clocks": {
|
||||||
|
"name": "Horloges",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Collecting gossip": {
|
||||||
|
"name": "Collecter des ragots",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Communication": {
|
||||||
|
"name": "Communication",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Dagger": {
|
||||||
|
"name": "Dague",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Decoction": {
|
||||||
|
"name": "Décoction",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Dosage of medicine": {
|
||||||
|
"name": "Posologie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Electric": {
|
||||||
|
"name": "Electric",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Environment (Alley)": {
|
||||||
|
"name": "Environnement (ruelle)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Environment (traverse)": {
|
||||||
|
"name": "Environnement (traverse)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Escape": {
|
||||||
|
"name": "Filer",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Foil": {
|
||||||
|
"name": "Fleuret",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Giving commands": {
|
||||||
|
"name": "Commander",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Glider": {
|
||||||
|
"name": "Cerf-volant",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Halberd": {
|
||||||
|
"name": "Hallebarde",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Herbalism": {
|
||||||
|
"name": "Herbalisme",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"History": {
|
||||||
|
"name": "Histoire",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Horse": {
|
||||||
|
"name": "Cheval",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Hot air balloon": {
|
||||||
|
"name": "Ballon",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Hydrocryme production": {
|
||||||
|
"name": "Production d'hydrocryme",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Hydropower": {
|
||||||
|
"name": "Hydraulique",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Impressing people": {
|
||||||
|
"name": "Impressionner",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Improvised combat": {
|
||||||
|
"name": "Combat improvisé",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Interrogation": {
|
||||||
|
"name": "Interrogation",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Intervention": {
|
||||||
|
"name": "Intervention",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Intimidation": {
|
||||||
|
"name": "Intimidation",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Investigation": {
|
||||||
|
"name": "Investigation",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Iron work": {
|
||||||
|
"name": "Ferronnerie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Jumping": {
|
||||||
|
"name": "sauter",
|
||||||
|
"description": "<p>Le personnage a la dextérité et la coordination pour sauter loin, haut, et atterrir sur ses pieds.</p>"
|
||||||
|
},
|
||||||
|
"Kickboxing": {
|
||||||
|
"name": "Savate",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Lock picking": {
|
||||||
|
"name": "Crocheter",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Lock systems": {
|
||||||
|
"name": "Serrures",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Locomotive": {
|
||||||
|
"name": "Locomotive",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Locomotives": {
|
||||||
|
"name": "Locomotives",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Lying": {
|
||||||
|
"name": "Mentir",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Making a good impression": {
|
||||||
|
"name": "Faire une bonne impression",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Making mushroom paper": {
|
||||||
|
"name": "Fabriquer du papier à base de champignons",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Milieu knowledge": {
|
||||||
|
"name": "Connaissance du milieu (...)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Music": {
|
||||||
|
"name": "Musique",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Musical composition": {
|
||||||
|
"name": "Composition musicale",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Musket": {
|
||||||
|
"name": "Mousquet",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Neighborhood knowledge": {
|
||||||
|
"name": "Connaissance du quartier",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Opera": {
|
||||||
|
"name": "Opéra",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Organ": {
|
||||||
|
"name": "Orgue",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Painting": {
|
||||||
|
"name": "Peinture",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Pharmacology": {
|
||||||
|
"name": "Pharmacologie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Playwriting": {
|
||||||
|
"name": "Ecriture théâtrale",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Pottery": {
|
||||||
|
"name": "Poterie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Rapier": {
|
||||||
|
"name": "Rapière",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Religion": {
|
||||||
|
"name": "Religion",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Rhetoric": {
|
||||||
|
"name": "Rhétorique",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Running": {
|
||||||
|
"name": "Courir",
|
||||||
|
"description": "<p>Le personnage peut courir vite et longtemps.</p>"
|
||||||
|
},
|
||||||
|
"Sculpture": {
|
||||||
|
"name": "Sculpture",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Sleight of hand": {
|
||||||
|
"name": "Escamoter",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Sling": {
|
||||||
|
"name": "Fronde",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Spear": {
|
||||||
|
"name": "Lance",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Spreading false information": {
|
||||||
|
"name": "Propager de fausses informations",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Strangling": {
|
||||||
|
"name": "Etrangler",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Streetcar": {
|
||||||
|
"name": "Tramway",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Surgery": {
|
||||||
|
"name": "Chirurgie",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Swordstick": {
|
||||||
|
"name": "Canne-épée",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Theater": {
|
||||||
|
"name": "Théâtre",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Thermal": {
|
||||||
|
"name": "Thermique",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Threatening": {
|
||||||
|
"name": "Menacer",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Throwing knife": {
|
||||||
|
"name": "Couteau de lancer",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverse architecture": {
|
||||||
|
"name": "Architecture des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverse geography": {
|
||||||
|
"name": "Géographie des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverse History": {
|
||||||
|
"name": "Histoire des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverse mapmaking": {
|
||||||
|
"name": "Cartographie des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverse mythology": {
|
||||||
|
"name": "Mythologie des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverse sociology": {
|
||||||
|
"name": "Socilogie des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Traverser flute": {
|
||||||
|
"name": "Flute des traverses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Tripping": {
|
||||||
|
"name": "Croc-en-jambe",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Wind power": {
|
||||||
|
"name": "Eolien",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Wrestling": {
|
||||||
|
"name": "Lutte",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Writing": {
|
||||||
|
"name": "Ecriture",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
107
translated/fr/fvtt-ecryme.traits.json
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"label": "Traits",
|
||||||
|
"mapping": {
|
||||||
|
"description": "system.description"
|
||||||
|
},
|
||||||
|
"folders": {
|
||||||
|
"Maneuvers": "Manoeuvres"
|
||||||
|
},
|
||||||
|
"entries": {
|
||||||
|
"Ability to stay calm": {
|
||||||
|
"name": "Facilité à rester calme",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Comfortable on airships": {
|
||||||
|
"name": "A l'aise en dirigeable",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Comfortable using a mapmaker's helmet": {
|
||||||
|
"name": "Virtuose du casque de cartographe",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Comfortable walking on stilts": {
|
||||||
|
"name": "A l'aise en échasses",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Cultured": {
|
||||||
|
"name": "Cultivé",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Deaf": {
|
||||||
|
"name": "Sourd",
|
||||||
|
"description": "<p>Le personnage a grandi dans une usine, et le vacarme permanent des machines l'a rendu sourd. (-3).</p>"
|
||||||
|
},
|
||||||
|
"Disregard for death": {
|
||||||
|
"name": "Ne craint pas la mort",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Excellent glider pilot": {
|
||||||
|
"name": "Excellent pilote de cerf-volant",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Extremely good eyesight": {
|
||||||
|
"name": "Excellente vue",
|
||||||
|
"description": "<p>La vue de ce personnage est si développée qu'elle lui permet de “lire” les disques </p>"
|
||||||
|
},
|
||||||
|
"Famous with (...)": {
|
||||||
|
"name": "Connu dans le milieu des (...)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Foremimes language": {
|
||||||
|
"name": "Connait le langage des contremimes",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Guild member": {
|
||||||
|
"name": "Membre de la guilde (...)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Guild member (high rank)": {
|
||||||
|
"name": "Membre de haut rang de la guilde (...)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Intuitively feels the damage on their vehicle": {
|
||||||
|
"name": "Sent intuitivement les dommages sur son véhicule",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Keen intellect": {
|
||||||
|
"name": "Intellect affûté",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Knowledge of upper classes of their city": {
|
||||||
|
"name": "Connaissance des classes huppées de la ville (...)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Knows how to encircle a target": {
|
||||||
|
"name": "Sait encercler une cible",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Lipreading": {
|
||||||
|
"name": "Lit sur les lèvres",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Preacher": {
|
||||||
|
"name": "Prêcheur",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Preacher (great)": {
|
||||||
|
"name": "Prêcheur (excellent)",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Rational mind": {
|
||||||
|
"name": "Rationnel",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Rich": {
|
||||||
|
"name": "Riche",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"Sharpshooter": {
|
||||||
|
"name": "Tireur d'élite",
|
||||||
|
"description": "<p>Le personnage sait tirer partie d'un fusil à lunette.</p>"
|
||||||
|
},
|
||||||
|
"Skilled with explosives": {
|
||||||
|
"name": "Manieur d'explosifs",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|