Compare commits
10 Commits
6066091d8d
...
13.1.7
| Author | SHA1 | Date | |
|---|---|---|---|
| 038aa37838 | |||
| 25b6e30aa8 | |||
| f445741eda | |||
| d3c24e44d8 | |||
| d2cf0d80b1 | |||
| 47350cb2f1 | |||
| 26e46cf10a | |||
| 4722fdf4d6 | |||
| dc3040df26 | |||
| b1bce86604 |
63
.gitea/workflows/release.yaml
Normal file
63
.gitea/workflows/release.yaml
Normal file
@@ -0,0 +1,63 @@
|
||||
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
|
||||
|
||||
# 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 system.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/${{gitea.repository}}
|
||||
manifest: https://www.uberwald.me/gitea/public/fvtt-les-heritiers/releases/download/latest/system.json
|
||||
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-les-heritiers.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-les-heritiers.zip system.json README.md LICENCE.txt assets/ lang/ modules/ packs/ styles/ templates/
|
||||
|
||||
- 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-les-heritiers.zip
|
||||
system.json
|
||||
api_key: '${{secrets.ALLOW_PUSH_RELEASE}}'
|
||||
|
||||
- name: Publish to Foundry server
|
||||
uses: https://github.com/djlechuck/foundryvtt-publish-package-action@v1
|
||||
with:
|
||||
token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
|
||||
id: 'fvtt-les-heritiers'
|
||||
version: ${{github.event.release.tag_name}}
|
||||
manifest: 'https://www.uberwald.me/gitea/public/fvtt-les-heritiers/releases/download/latest/system.json'
|
||||
notes: 'https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-les-heritiers.zip'
|
||||
compatibility-minimum: '13'
|
||||
compatibility-verified: '13'
|
||||
598
DEVELOPER_INSTRUCTIONS.md
Normal file
598
DEVELOPER_INSTRUCTIONS.md
Normal file
@@ -0,0 +1,598 @@
|
||||
# FoundryVTT Les Héritiers System - Developer Instructions
|
||||
|
||||
## Executive Summary
|
||||
|
||||
**Les Héritiers** is an unofficial FoundryVTT system for the French RPG "Les Héritiers" (published by Titam France/Sombres Projets). The system implements a complete actor and item management framework with support for characters (personnage), NPCs (pnj), and 13 item types. Recent development includes a migration to Foundry v13+ with DataModels and AppV2 architecture.
|
||||
|
||||
**Repository**: https://www.uberwald.me/gitea/public/fvtt-les-heritiers
|
||||
**Current Version**: 13.0.7
|
||||
**Compatibility**: Foundry 13+
|
||||
**Language**: French (single language localization)
|
||||
|
||||
---
|
||||
|
||||
## 1. BUILD & DEVELOPMENT COMMANDS
|
||||
|
||||
### Build System
|
||||
- **Build Tool**: Gulp 4 with LESS compilation
|
||||
- **Package Manager**: npm
|
||||
|
||||
### Scripts (package.json)
|
||||
```json
|
||||
"build": "gulp build" # Compile LESS to CSS (primary task)
|
||||
"watch": "gulp watch" # Watch LESS files and rebuild on changes
|
||||
```
|
||||
|
||||
### Gulp Pipeline (gulpfile.js)
|
||||
The gulpfile defines three main tasks:
|
||||
|
||||
| Task | Source | Output | Features |
|
||||
|------|--------|--------|----------|
|
||||
| `styles` | `less/heritiers.less` | `styles/heritiers.css` | LESS→CSS compilation with source maps |
|
||||
| `watchFiles` | `less/**/*.less` | Watches recursively | Auto-rebuild on LESS file changes |
|
||||
| `build` | - | - | Runs `styles` (default export) |
|
||||
| `watch` | - | - | Runs `build` then `watchFiles` |
|
||||
|
||||
**Development Workflow**:
|
||||
```bash
|
||||
npm install # Install dependencies (gulp, gulp-less, gulp-sourcemaps)
|
||||
npm run build # One-time CSS compilation
|
||||
npm run watch # Development: continuous LESS watching
|
||||
```
|
||||
|
||||
**Key Files**:
|
||||
- `/package.json` - Minimal deps (only gulp toolchain)
|
||||
- `/gulpfile.js` - 36 lines defining LESS tasks
|
||||
- `/less/heritiers.less` - Entry point (imports `simple-converted.less`)
|
||||
- `/styles/heritiers.css` - Generated output + source maps
|
||||
|
||||
---
|
||||
|
||||
## 2. SYSTEM ARCHITECTURE
|
||||
|
||||
### 2.1 System Metadata (system.json)
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| **id** | `fvtt-les-heritiers` |
|
||||
| **title** | Les Héritiers |
|
||||
| **version** | 13.0.7 |
|
||||
| **description** | Les Héritiers pour FoundryVTT (French) |
|
||||
| **authors** | Uberwald/LeRatierBretonnien, Prêtre |
|
||||
| **compatibility** | min: "13", verified: "13" |
|
||||
| **manifest** | Hosted on Uberwald Gitea |
|
||||
| **languages** | French only (fr.json) |
|
||||
| **license** | LICENCE.txt (proprietary) |
|
||||
| **grid** | 5m squares |
|
||||
|
||||
**Key Configuration Flags**:
|
||||
- `hotReload.extensions`: `css`, `html`, `hbs`, `json`
|
||||
- `hotReload.paths`: `styles`, `./`, `templates`, `lang/fr.json`
|
||||
- `primaryTokenAttribute`: `sante.vigueur` (health/vigor)
|
||||
- `secondaryTokenAttribute`: `bonneaventure.actuelle` (current good fortune)
|
||||
- **Socket Support**: Enabled (`socket: true`)
|
||||
|
||||
### 2.2 Data Model (template.json.backup)
|
||||
|
||||
The system defines a complex hierarchical data model with 2 Actor types and 14 Item types:
|
||||
|
||||
#### **Actor Types**
|
||||
|
||||
**1. `personnage` (Player Character)**
|
||||
- Templates: `biodata`, `core`
|
||||
- Key characteristics (8 attributes):
|
||||
- Physical: Agilité (agi), Constitution (con), Force (for), Précision (prec)
|
||||
- Mental: Esprit (esp), Perception (per), Prestance (pres), Sang-Froid (san)
|
||||
- Fields include biodata (name, appearance variants masked/unmasked, age, personality traits), ranks (Tricherie, Féerie, Masque, Héritage with scenario tracking), PV (health), combat skills
|
||||
- Profile-based competences (6 profiles + magic)
|
||||
|
||||
**2. `pnj` (NPC)**
|
||||
- Templates: `biodata`, `core`
|
||||
- Identical structure to `personnage` with simpler NPC-specific metadata
|
||||
|
||||
**Core Actor Data** (template.core):
|
||||
```
|
||||
caracteristiques: {
|
||||
agi, con, for, prec, esp, per, pres, san
|
||||
└─ label, labelnorm, abbrev, kind(physical|mental), value, rang, max
|
||||
}
|
||||
rang: {
|
||||
tricherie, feerie, masque, heritage (with scenarios subfield)
|
||||
}
|
||||
pv: { value, max, mod }
|
||||
competences: { aventurier, combattant, erudit, gentleman, roublard, savant }
|
||||
magie: { pointsame (value, max) }
|
||||
experience: { value, pourtricher }
|
||||
combat: {
|
||||
esquive, parade, resistancephysique, resistancepsychique, protection,
|
||||
effetssecondaires, dissimulation, initiative, corpsacorps, tir
|
||||
}
|
||||
```
|
||||
|
||||
#### **Item Types** (14 total)
|
||||
|
||||
| Item Type | Key Fields | Use Case |
|
||||
|-----------|-----------|----------|
|
||||
| `arme` (Weapon) | degats, precision, cadence, portee, dissimulation, armetype, rarete, prix | Combat equipment |
|
||||
| `protection` | points, malusagilite, protectiontype, effetsecondaire | Armor/shields |
|
||||
| `equipement` | rarete, quantite, prix | General gear |
|
||||
| `accessoire` | lieu (location code) | Small items |
|
||||
| `competence` | categorie, profil, niveau, specialites[], ismagie, nomniveau | Skills (6 profiles) |
|
||||
| `profil` | profiltype (majeur|mineur) | Character archetypes |
|
||||
| `contact` | contacttype (contact, allie, ennemi, interet) | NPC contacts |
|
||||
| `avantage` | description | Advantages (benefits) |
|
||||
| `desavantage` | description | Disadvantages (flaws) |
|
||||
| `capacitenaturelle` | pouvoirtype, activation, effet, portee, resistance, cibles, virulence | Natural abilities |
|
||||
| `pouvoir` | pouvoirtype, masquetype, niveau, istest, feeriemasque, carac, zoneffet, pointsusagecourant | Powers/spells |
|
||||
| `atoutfeerique` | description | Fairy/magical perks |
|
||||
| `fee` | feetype, avantages, desavantages, pouvoirsfeeriques*, atoutsfeeriques, competences, capacitenaturelles | Fairy character sheet |
|
||||
| `sort` (Spell) | niveau, rang, competence (Druidisme), carac1, carac2, duree, portee, ingredients, resistance | Magic spells |
|
||||
|
||||
**Item Templates**:
|
||||
- `base`: description (HTMLField)
|
||||
- `basequip`: rarete, quantite, prix, equipped (for equipable items)
|
||||
|
||||
### 2.3 Directory Structure
|
||||
|
||||
```
|
||||
modules/ # ES6 source code (12,273 LOC total)
|
||||
├── heritiers-main.js # Entry point: init, hook setup, document class config
|
||||
├── heritiers-actor.js # HeritiersActor class with creation hooks
|
||||
├── heritiers-item.js # HeritiersItem class
|
||||
├── heritiers-config.js # HERITIERS_CONFIG object (enums, constants)
|
||||
├── heritiers-commands.js # Chat command system
|
||||
├── heritiers-utility.js # Static utility class (dice, rolls, templates, socket)
|
||||
├── heritiers-combat.js # HeritiersCombat class
|
||||
├── xregexp-all.js # RegExp library
|
||||
├── models/
|
||||
│ ├── index.mjs # Exports all DataModels
|
||||
│ ├── personnage.mjs # PersonnageDataModel (complex, 12K+ lines)
|
||||
│ ├── pnj.mjs # PnjDataModel
|
||||
│ ├── arme.mjs # ArmeDataModel (updated Jan 21)
|
||||
│ ├── competence.mjs # CompetenceDataModel (updated Jan 21)
|
||||
│ ├── capacitenaturelle.mjs # Natural ability model (updated Jan 21)
|
||||
│ ├── pouvoir.mjs # PouvoirDataModel (updated Jan 21)
|
||||
│ ├── protection.mjs # ProtectionDataModel (updated Jan 21)
|
||||
│ ├── [11 more models] # accessoire, atoutfeerique, avantage, contact,
|
||||
│ │ # desavantage, equipement, fee, profil, sort
|
||||
│ └── base-item.mjs # Base item template
|
||||
├── applications/
|
||||
│ ├── sheets/
|
||||
│ │ ├── _module.mjs # Exports all sheet classes
|
||||
│ │ ├── base-actor-sheet.mjs # HeritiersActorSheet (HandlebarsApplicationMixin, AppV2)
|
||||
│ │ ├── base-item-sheet.mjs # HeritiersItemSheet base
|
||||
│ │ ├── personnage-sheet.mjs # Character sheet (specific)
|
||||
│ │ ├── pnj-sheet.mjs # NPC sheet (specific)
|
||||
│ │ └── [11 item sheets] # Type-specific sheets: arme, protection, competence, etc.
|
||||
│ └── heritiers-roll-dialog.mjs # Dialog for roll resolution
|
||||
```
|
||||
|
||||
#### **Key Module Details**:
|
||||
|
||||
**heritiers-main.js** (100+ lines):
|
||||
- Hooks.once("init") - Registers templates, combat, actor/item classes, DataModels
|
||||
- Registers AppV2 sheets for all actor and item types
|
||||
- Creates `game.system.lesheritiers` namespace with utilities, config, models, sheets
|
||||
- Socket message handling
|
||||
|
||||
**heritiers-config.js**:
|
||||
- `HERITIERS_CONFIG` object with ~40 enum dictionaries:
|
||||
- `caracList`: 8 characteristics with labels
|
||||
- `competenceProfil`: 6 profiles (aventurier, roublard, combattant, erudit, savant, gentleman) + magic
|
||||
- `baseTestPouvoir`, `resistancePouvoir`, `typePouvoir`
|
||||
- `seuilsDifficulte`: 30-level difficulty scale (5=Enfantine to 30=Divine)
|
||||
- `attaqueCible`: target localization (body part damage tracking)
|
||||
- Game-specific constants
|
||||
|
||||
**heritiers-utility.js** (60+ custom Handlebars helpers):
|
||||
- `rollDataStore`, `defenderStore` for roll tracking
|
||||
- Handlebars helpers: count, includes, upper, lower, upperFirst, notEmpty, mul, and, or, eq, isTest, etc.
|
||||
- `preloadHandlebarsTemplates()` - loads 27 template files
|
||||
- `chatListeners()` - click handlers for chat
|
||||
- `loadCompendium()` - loads packs dynamically
|
||||
- `onSocketMesssage()` - inter-client communication
|
||||
|
||||
**heritiers-actor.js**:
|
||||
- Custom creation logic: auto-adds useful skills from compendium for personnage type
|
||||
- Extends Foundry Actor class
|
||||
|
||||
**heritiers-item.js**:
|
||||
- Custom Item class with item-type-specific business logic
|
||||
|
||||
### 2.4 Templates Directory (27 Handlebars files)
|
||||
|
||||
Organized by purpose:
|
||||
|
||||
**Actor Sheets** (2 files):
|
||||
- `actor-sheet.hbs` - Personnage character sheet (complex form with tabs)
|
||||
- `actor-pnj-sheet.hbs` - NPC sheet (simplified)
|
||||
|
||||
**Item Sheets** (14 files):
|
||||
- `item-[type]-sheet.hbs` for each item type
|
||||
- E.g., `item-arme-sheet.hbs`, `item-competence-sheet.hbs`, `item-sort-sheet.hbs`
|
||||
|
||||
**Partials** (5 files):
|
||||
- `partial-actor-equipment.hbs` - Equipment list rendering
|
||||
- `partial-item-header.hbs` - Item sheet header (common)
|
||||
- `partial-item-nav.hbs` - Tabbed navigation
|
||||
- `partial-item-description.hbs` - Description editor
|
||||
- `partial-utile-skills.hbs` - Skill list filtering
|
||||
- `post-item.hbs` - Chat card for item description
|
||||
- `editor-notes-gm.hbs` - GM notes editor
|
||||
|
||||
**Chat Results** (3 files):
|
||||
- `chat-generic-result.hbs` - Generic roll result
|
||||
- `chat-cc-result.hbs` - Close combat result
|
||||
- `chat-assommer-result.hbs` - Stun attack result
|
||||
|
||||
**Dialogs** (1 file):
|
||||
- `roll-dialog-generic.hbs` - Roll dialog with modifiers
|
||||
|
||||
**Design Notes**:
|
||||
- Heavy use of Handlebars conditionals ({{#if}}, {{#each}})
|
||||
- Data-action attributes for action routing
|
||||
- Flexbox-based layout (`flexrow`, `flexcol` CSS classes)
|
||||
- Partial templates for reusability
|
||||
|
||||
### 2.5 Localization (lang/fr.json)
|
||||
|
||||
**Minimal localization** - only 24 lines:
|
||||
```json
|
||||
{
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"personnage": "Personnage",
|
||||
"pnj": "PNJ"
|
||||
},
|
||||
"Item": {
|
||||
"accessoire": "Accessoire",
|
||||
"arme": "Arme",
|
||||
[12 more item types...]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Localization Strategy**:
|
||||
- Labels hardcoded in code/templates in French
|
||||
- No string keys for UI text outside TYPES
|
||||
- Template labels defined in DataModel schema (initial values)
|
||||
- Seeded localization keys in heritiers-config.js (no i18n lookup)
|
||||
|
||||
### 2.6 Styles (less/ and styles/)
|
||||
|
||||
**LESS Structure** (2 files):
|
||||
- `heritiers.less` (4 lines) - Entry point, imports converted template
|
||||
- `simple-converted.less` - Full stylesheet (converted from Bootstrap/template.css)
|
||||
|
||||
**Output**:
|
||||
- Compiled to `/styles/heritiers.css` (referenced in system.json)
|
||||
- Source maps generated (`.map` files)
|
||||
|
||||
**Styling Approach**:
|
||||
- Utility classes: `flexrow`, `flexcol`, `padd-right`, `status-small-label`
|
||||
- Color classes: `color-class-common`, etc.
|
||||
- Section classes: `background-sheet-header`
|
||||
- Responsive design via flexbox
|
||||
|
||||
### 2.7 Compendium Packs (packs/)
|
||||
|
||||
11 packs defined in system.json, stored as `.db` (LevelDB format):
|
||||
|
||||
| Pack Name | Type | Label | Folder | Contents |
|
||||
|-----------|------|-------|--------|----------|
|
||||
| `competences` | Item | Compétences | Creation | Skills |
|
||||
| `avantages` | Item | Avantages | Creation | Advantages |
|
||||
| `desavantages` | Item | Désavantages | Creation | Disadvantages |
|
||||
| `capacites` | Item | Capacités Naturelles | Creation | Natural abilities |
|
||||
| `atouts-feeriques` | Item | Atouts Féériques | Creation | Fairy perks |
|
||||
| `magie-sorts` | Item | Sorts | Creation | Spells (5 spell schools) |
|
||||
| `archetypes-fees` | Item | Fées | Creation | Fairy archetypes |
|
||||
| `pouvoirs` | Item | Pouvoirs | Creation | Powers |
|
||||
| `profils` | Item | Profils | Creation | Character profiles |
|
||||
| `armes-et-protection` | Item | Armes et Protections | Equipment | Weapons & armor |
|
||||
| `scenes` | Scene | Scènes | Root | Sample scenes |
|
||||
| `journaux` | JournalEntry | Journaux | Root | Game journal entries |
|
||||
|
||||
**Ownership Model** (PLAYER: OBSERVER, ASSISTANT: OWNER):
|
||||
- Players can observe (read) items in packs
|
||||
- Assistants have full control
|
||||
|
||||
**Source Data** (`srcdata/`):
|
||||
- 5 JSON files for spell normalization:
|
||||
- `sort_druidisme.json`, `sort_faeomancie.json`, `sort_magieduclan.json`, `sort_necromancie.json`, `sort_theurgie.json`
|
||||
- `normalize.py` - Python script to transform spell data to compendium format
|
||||
|
||||
---
|
||||
|
||||
## 3. KEY CONVENTIONS
|
||||
|
||||
### 3.1 Module/Class Structure
|
||||
|
||||
**Pattern**: ES6 Classes extending Foundry base classes
|
||||
- **Naming**: `Heritiers[Type]` (e.g., `HeritiersActor`, `HeritiersItem`, `HeritiersCombat`)
|
||||
- **Exports**: Named exports via `export class`/`export default`
|
||||
|
||||
**Example (heritiers-actor.js)**:
|
||||
```javascript
|
||||
export class HeritiersActor extends Actor {
|
||||
static async create(data, options) { ... }
|
||||
// Custom methods and hooks
|
||||
}
|
||||
```
|
||||
|
||||
**Example (models/personnage.mjs)**:
|
||||
```javascript
|
||||
export default class PersonnageDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
biodata: new fields.SchemaField({ ... }),
|
||||
// nested SchemaFields with detailed field definitions
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Sheet Pattern (AppV2 - Foundry v13+)**:
|
||||
```javascript
|
||||
const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||
export default class HeritiersPersonnageSheet extends HandlebarsApplicationMixin(
|
||||
foundry.applications.sheets.ActorSheetV2
|
||||
) {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||
position: { width: 780, height: 840 },
|
||||
form: { submitOnChange: true, closeOnSubmit: false },
|
||||
actions: {
|
||||
editImage, toggleSheet, editItem, deleteItem,
|
||||
createItem, equipItem, rollCarac, ...
|
||||
}
|
||||
}
|
||||
// Static action handlers (#onEditImage, etc.)
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 Data Model Conventions
|
||||
|
||||
**Field Types** (foundry.data.fields.*):
|
||||
- `StringField` - Text values, default initial values
|
||||
- `HTMLField` - Rich-text fields (description, notes, etc.)
|
||||
- `NumberField` - Integers (integer: true), floats
|
||||
- `BooleanField` - Boolean flags
|
||||
- `ArrayField` - Lists (with element type)
|
||||
- `SchemaField` - Nested objects
|
||||
|
||||
**Naming Conventions**:
|
||||
- Snake_case for internal field names: `biodata`, `caracteristiques`, `pointsame`
|
||||
- Abbreviations for characteristics: `agi`, `con`, `for`, `prec`, `esp`, `per`, `pres`, `san`
|
||||
- French names for labels and UI: "Agilité", "Constitution", etc.
|
||||
|
||||
**Special Fields**:
|
||||
- `labelnorm` - Normalized label for lookups (lowercase, no accents)
|
||||
- `kind` - Classification (physical, mental, magical)
|
||||
- `initial` - Default value in schema definition
|
||||
|
||||
### 3.3 Handlebars Template Conventions
|
||||
|
||||
**File Naming**:
|
||||
- `actor-sheet.hbs` - Main sheet template (not item-specific)
|
||||
- `actor-[type]-sheet.hbs` - Type-specific actor sheet
|
||||
- `item-[type]-sheet.hbs` - Type-specific item sheet
|
||||
- `partial-[purpose].hbs` - Reusable component
|
||||
- `chat-[result-type].hbs` - Chat message template
|
||||
- `editor-[context].hbs` - Editor component
|
||||
|
||||
**Data Binding**:
|
||||
- Actor data: `{{system.field.subfield}}`, `{{actor.name}}`
|
||||
- Item data: `{{system.field}}`
|
||||
- Loops: `{{#each system.array as |item key|}}`
|
||||
- Conditionals: `{{#if condition}}...{{/if}}`
|
||||
|
||||
**Custom Helpers** (60+):
|
||||
- Comparison: `eq`, `ne`, `lt`, `gt`
|
||||
- Array: `includes`, `count`, `notEmpty`
|
||||
- String: `upper`, `lower`, `upperFirst`
|
||||
- Math: `mul`, `add`, `sub`, `and`, `or`
|
||||
- Game: `isTest` (checks test type)
|
||||
|
||||
**CSS Classes**:
|
||||
- Layout: `flexrow`, `flexcol`, `item`, `item-list`
|
||||
- Styling: `status-small-label`, `color-class-common`, `background-sheet-header`
|
||||
- Action: `data-action="actionName"` for click routing
|
||||
|
||||
### 3.4 Localization Key Naming
|
||||
|
||||
**Pattern**: `TYPES.Actor.[type]`, `TYPES.Item.[type]`
|
||||
|
||||
Current localization (lang/fr.json):
|
||||
```json
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"personnage": "Personnage",
|
||||
"pnj": "PNJ"
|
||||
},
|
||||
"Item": {
|
||||
"accessoire": "Accessoire",
|
||||
"arme": "Arme",
|
||||
"atoutfeerique": "Atout féerique",
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Strategy**:
|
||||
- **Type labels**: Centralized in TYPES
|
||||
- **Field labels**: Defined in DataModel schema as `initial` values
|
||||
- **Config labels**: In heritiers-config.js (caracList, competenceProfil, etc.)
|
||||
- **Template text**: Hardcoded in .hbs files (all French)
|
||||
|
||||
**No i18n System**: System is French-only; no game.i18n lookups used in code
|
||||
|
||||
### 3.5 Dice & Roll System
|
||||
|
||||
**Initiative Formula** (heritiers-config.js):
|
||||
```javascript
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "1d10",
|
||||
decimals: 1
|
||||
};
|
||||
```
|
||||
|
||||
**Roll Data Storage** (heritiers-utility.js):
|
||||
- `rollDataStore = {}` - Tracks active rolls by ID
|
||||
- `defenderStore = {}` - Tracks defenders for opposed rolls
|
||||
- Socket-based roll updates for multi-client scenarios
|
||||
|
||||
**Bonus/Malus**:
|
||||
- Range: -6 to +6 (signed integers)
|
||||
- Generated as: `Array.from({ length: 7 }, (v, k) => toString(k - 6))`
|
||||
|
||||
**Dice Mechanics**:
|
||||
- D8, D10, D12 support with face adjacency tables (unused in some contexts)
|
||||
- Example: `__facesAdjacentes` object maps die faces to adjacent faces
|
||||
|
||||
### 3.6 Socket Message Handling
|
||||
|
||||
**Game Socket** (configured in system.json):
|
||||
- Enabled via `"socket": true`
|
||||
- Message channel: `"system.fvtt-les-heritiers"`
|
||||
|
||||
**Message Flow** (heritiers-utility.js):
|
||||
```javascript
|
||||
game.socket.on("system.fvtt-les-heritiers", data => {
|
||||
HeritiersUtility.onSocketMesssage(data)
|
||||
})
|
||||
```
|
||||
|
||||
Used for:
|
||||
- Inter-client roll notifications
|
||||
- Multiplayer combat updates
|
||||
|
||||
### 3.7 Recent Migration Notes (v13.0.7)
|
||||
|
||||
**Latest Changes** (from git log):
|
||||
- Migrated from legacy v1 sheets to **AppV2** (HandlebarsApplicationMixin + ActorSheetV2)
|
||||
- Migrated to **DataModels** (foundry.abstract.TypeDataModel)
|
||||
- All sheets converted to `.mjs` (ES6 modules)
|
||||
- Specification & competence fixes (Jan 21)
|
||||
- Armor (protection) and weapon (arme) model refinements (Jan 21)
|
||||
|
||||
**Key Commit**: `4722fdf - Migration vers DataModels et appv2` (major architecture update)
|
||||
|
||||
---
|
||||
|
||||
## 4. EXISTING AI & DEVELOPER CONFIGURATIONS
|
||||
|
||||
### No Pre-Existing Configs Found
|
||||
|
||||
The following configuration files **do NOT exist** in the repository:
|
||||
- `.github/copilot-instructions.md` ❌
|
||||
- `CLAUDE.md` ❌
|
||||
- `.cursorrules` ❌
|
||||
- `AGENTS.md` ❌
|
||||
- `.windsurfrules` ❌
|
||||
- `CONVENTIONS.md` ❌
|
||||
- `CONTRIBUTING.md` ❌
|
||||
|
||||
Only **README.md** exists (29 lines):
|
||||
- Credits Titam France/Sombres Projets
|
||||
- Lists contributors: LeRatierBretonnien (dev), Prêtre (testing/data entry)
|
||||
- Notes official authorization
|
||||
- Links to books at titam-france.fr
|
||||
|
||||
---
|
||||
|
||||
## 5. DEVELOPMENT WORKFLOW
|
||||
|
||||
### 5.1 Setup
|
||||
|
||||
```bash
|
||||
cd /home/morr/work/foundryvtt/fvtt-les-heritiers
|
||||
npm install
|
||||
npm run watch
|
||||
```
|
||||
|
||||
### 5.2 File Organization When Adding Features
|
||||
|
||||
| Purpose | Location | Pattern |
|
||||
|---------|----------|---------|
|
||||
| New item type logic | `modules/heritiers-item.js` | Extend HeritiersItem |
|
||||
| New item data model | `modules/models/[type].mjs` | Extend TypeDataModel |
|
||||
| New item sheet | `modules/applications/sheets/[type]-sheet.mjs` | Extend HeritiersItemSheet |
|
||||
| New item template | `templates/item-[type]-sheet.hbs` | Handlebars + data-action |
|
||||
| New actor type | `modules/models/[type].mjs` | Extend TypeDataModel |
|
||||
| New actor sheet | `modules/applications/sheets/[type]-sheet.mjs` | Extend HeritiersActorSheet |
|
||||
| New chat message | `templates/chat-[result]-result.hbs` | HTML template |
|
||||
| Style updates | `less/heritiers.less` or new import | LESS → npm run build |
|
||||
| New config constants | `modules/heritiers-config.js` | Add to HERITIERS_CONFIG |
|
||||
| Game mechanics | `modules/heritiers-utility.js` or -commands.js | Static utilities or commands |
|
||||
|
||||
### 5.3 Registration Steps for New Item Type
|
||||
|
||||
1. **Update template.json.backup** - Add schema definition
|
||||
2. **Create DataModel** - `modules/models/[type].mjs`
|
||||
3. **Update heritiers-config.js** - Add enums if needed
|
||||
4. **Create Sheet** - `modules/applications/sheets/[type]-sheet.mjs`
|
||||
5. **Create Template** - `templates/item-[type]-sheet.hbs`
|
||||
6. **Update heritiers-main.js** - Register sheet class
|
||||
7. **Add to models/index.mjs** - Export DataModel
|
||||
8. **Add to applications/sheets/_module.mjs** - Export Sheet class
|
||||
9. **Update localization** - Add type to lang/fr.json TYPES.Item
|
||||
10. **Update system.json** - If exposing in UI
|
||||
|
||||
### 5.4 Debugging
|
||||
|
||||
- Check browser console for JS errors
|
||||
- Use Chrome DevTools on http://localhost:30000 (Foundry dev port)
|
||||
- Hot reload enabled for: `.css`, `.html`, `.hbs`, `.json` files (from system.json flags)
|
||||
- Git history available via `git log` or `git show <commit>`
|
||||
|
||||
---
|
||||
|
||||
## 6. KEY STATISTICS
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| **System ID** | fvtt-les-heritiers |
|
||||
| **Version** | 13.0.7 |
|
||||
| **Total Source LOC** | 12,273 lines |
|
||||
| **Actor Types** | 2 (personnage, pnj) |
|
||||
| **Item Types** | 14 (arme, protection, competence, etc.) |
|
||||
| **Compendium Packs** | 11 |
|
||||
| **Template Files** | 27 (.hbs) |
|
||||
| **Module Files** | 28 (.js/.mjs) |
|
||||
| **Model Files** | 16 (DataModels) |
|
||||
| **Sheet Files** | 14 (+ 1 base) |
|
||||
| **LESS Files** | 2 |
|
||||
| **Localization Files** | 1 (fr.json, 24 lines) |
|
||||
| **Dev Dependencies** | 3 (gulp, gulp-less, gulp-sourcemaps) |
|
||||
| **Characteristics** | 8 (agi, con, for, prec, esp, per, pres, san) |
|
||||
| **Competence Profiles** | 6 + magic (aventurier, roublard, combattant, erudit, savant, gentleman) |
|
||||
| **Difficulty Scale** | 30 levels (-1 to 30) |
|
||||
| **Last Commit** | "Correction sur calcul du rang" (recent) |
|
||||
|
||||
---
|
||||
|
||||
## 7. EXTERNAL RESOURCES
|
||||
|
||||
- **Official Publisher**: [Titam France / Sombres Projets](http://www.titam-france.fr)
|
||||
- **System Repository**: https://www.uberwald.me/gitea/public/fvtt-les-heritiers
|
||||
- **Foundry Documentation**: https://foundryvtt.com/articles/
|
||||
- **Foundry v13 API**: DataModels, AppV2 sheets (major changes in this version)
|
||||
|
||||
---
|
||||
|
||||
## 8. RECOMMENDATIONS FOR DEVELOPERS
|
||||
|
||||
1. **Use AppV2 Sheet API** for all new sheets (do not use legacy v1)
|
||||
2. **Define DataModels** for type data rather than inline templates
|
||||
3. **Keep French localization** in code/templates (minimal i18n setup)
|
||||
4. **Test with `npm run watch`** during development
|
||||
5. **Use socket messages** for multiplayer features
|
||||
6. **Follow naming conventions** (Heritiers[Type], snake_case for fields, French labels)
|
||||
7. **Document dice mechanics** when adding new rolls
|
||||
8. **Keep configuration constants** in heritiers-config.js
|
||||
9. **Use Handlebars helpers** rather than inline logic in templates
|
||||
10. **Register sheets in heritiers-main.js** and export from _module.mjs files
|
||||
|
||||
239
DOCUMENTATION_INDEX.md
Normal file
239
DOCUMENTATION_INDEX.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# Les Héritiers FoundryVTT System - Documentation Index
|
||||
|
||||
## 📖 Available Documentation
|
||||
|
||||
### 1. **QUICK_REFERENCE.md** ⭐ START HERE
|
||||
- **Length**: 250 lines
|
||||
- **Purpose**: Fast lookup and common task guide
|
||||
- **Best for**: Developers new to the system
|
||||
- **Contains**:
|
||||
- Quick start setup commands
|
||||
- System overview & statistics
|
||||
- Project structure diagram
|
||||
- Key classes and exports
|
||||
- Step-by-step: Adding a new item type
|
||||
- Common edits (characteristics, packs, rolls, UI)
|
||||
- Testing and git workflow
|
||||
- Useful commands
|
||||
|
||||
### 2. **DEVELOPER_INSTRUCTIONS.md** 📚 COMPREHENSIVE GUIDE
|
||||
- **Length**: 598 lines
|
||||
- **Purpose**: Complete architectural reference
|
||||
- **Best for**: Deep understanding and long-term development
|
||||
- **Contains**:
|
||||
- Executive summary
|
||||
- Build/dev commands (package.json, gulpfile.js)
|
||||
- System architecture (metadata, data model, directories)
|
||||
- Directory structure with file descriptions
|
||||
- Template organization & conventions
|
||||
- Localization strategy
|
||||
- Styling (LESS, CSS)
|
||||
- Compendium packs reference
|
||||
- Detailed conventions:
|
||||
- Module/class structure
|
||||
- Data model conventions
|
||||
- Handlebars template patterns
|
||||
- Localization key naming
|
||||
- Dice & roll system
|
||||
- Socket message handling
|
||||
- Recent migration notes (v13)
|
||||
- Development workflow (setup, file organization, registration steps)
|
||||
- Debugging tips
|
||||
- Key statistics
|
||||
- External resources
|
||||
- Developer recommendations
|
||||
|
||||
### 3. **README.md** (ORIGINAL)
|
||||
- **Length**: 29 lines
|
||||
- **Purpose**: Project overview and credits
|
||||
- **Contains**:
|
||||
- Project description (English & French)
|
||||
- Copyright & authorization notes
|
||||
- Developer credits
|
||||
|
||||
---
|
||||
|
||||
## 🎯 How to Use This Documentation
|
||||
|
||||
### For First-Time Setup (5-10 minutes)
|
||||
1. Read **QUICK_REFERENCE.md** → "Quick Start" section
|
||||
2. Run `npm install` and `npm run watch`
|
||||
3. Skim the "Project Structure" section
|
||||
|
||||
### For Adding a New Feature (30 minutes)
|
||||
1. Open **QUICK_REFERENCE.md** → "Adding a New Item Type" section
|
||||
2. Follow the numbered steps
|
||||
3. Reference **DEVELOPER_INSTRUCTIONS.md** for deeper understanding of each step
|
||||
4. Test with `npm run watch`
|
||||
|
||||
### For Understanding the System (1-2 hours)
|
||||
1. Start with **DEVELOPER_INSTRUCTIONS.md** → "Executive Summary"
|
||||
2. Read section 2: "System Architecture"
|
||||
3. Read section 3: "Key Conventions"
|
||||
4. Review section 5: "Development Workflow"
|
||||
|
||||
### For Debugging a Bug (varies)
|
||||
1. Check **QUICK_REFERENCE.md** → "Useful Commands" for search/analysis tools
|
||||
2. Reference **DEVELOPER_INSTRUCTIONS.md** → Section 3 for patterns
|
||||
3. Look at git history: `git log --oneline | head -20`
|
||||
4. Check browser console (DevTools) at `http://localhost:30000`
|
||||
|
||||
### For Making Common Edits (5-15 minutes each)
|
||||
Reference **QUICK_REFERENCE.md** → "Common Edits" section:
|
||||
- Adding a new characteristic
|
||||
- Adding a new compendium pack
|
||||
- Adding a new roll type
|
||||
- Changing UI layout
|
||||
|
||||
---
|
||||
|
||||
## 📊 Quick System Overview
|
||||
|
||||
| Aspect | Detail |
|
||||
|--------|--------|
|
||||
| **System ID** | `fvtt-les-heritiers` |
|
||||
| **Version** | 13.0.7 |
|
||||
| **Foundry** | v13+ (AppV2, DataModels) |
|
||||
| **Language** | French (monolingual) |
|
||||
| **Build Tool** | Gulp 4 + LESS |
|
||||
| **Code** | 12,273 LOC total |
|
||||
| **Actor Types** | 2 (personnage, pnj) |
|
||||
| **Item Types** | 14 types |
|
||||
| **Compendium Packs** | 11 LevelDB packs |
|
||||
| **Sheets** | 16 AppV2 sheets |
|
||||
| **Architecture** | ES6 modules, TypeDataModel |
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ Repository Structure
|
||||
|
||||
```
|
||||
fvtt-les-heritiers/
|
||||
├── README.md # Original project readme
|
||||
├── QUICK_REFERENCE.md # ⭐ Start here (250 lines)
|
||||
├── DEVELOPER_INSTRUCTIONS.md # 📚 Deep dive (598 lines)
|
||||
├── DOCUMENTATION_INDEX.md # This file
|
||||
├── package.json # npm config (build commands)
|
||||
├── gulpfile.js # Gulp tasks (LESS → CSS)
|
||||
├── system.json # FoundryVTT manifest
|
||||
├── template.json.backup # Data schema reference
|
||||
├── LICENCE.txt # License
|
||||
├── modules/ # Source code (12,273 LOC)
|
||||
│ ├── heritiers-main.js # Foundry init & registration
|
||||
│ ├── heritiers-actor.js # HeritiersActor class
|
||||
│ ├── heritiers-item.js # HeritiersItem class
|
||||
│ ├── heritiers-config.js # Game constants (HERITIERS_CONFIG)
|
||||
│ ├── heritiers-utility.js # Static utilities & helpers
|
||||
│ ├── heritiers-commands.js # Chat commands
|
||||
│ ├── heritiers-combat.js # Combat handling
|
||||
│ ├── models/ # 16 TypeDataModels
|
||||
│ │ └── personnage.mjs, arme.mjs, competence.mjs, ...
|
||||
│ └── applications/sheets/ # 15 AppV2 Sheet classes
|
||||
│ └── personnage-sheet.mjs, arme-sheet.mjs, ...
|
||||
├── templates/ # 27 Handlebars templates
|
||||
│ ├── actor-sheet.hbs # Character sheet
|
||||
│ ├── actor-pnj-sheet.hbs # NPC sheet
|
||||
│ ├── item-[type]-sheet.hbs # Item sheets (14)
|
||||
│ ├── partial-*.hbs # Reusable components
|
||||
│ ├── chat-*-result.hbs # Chat templates
|
||||
│ └── editor-*.hbs # Editor components
|
||||
├── lang/
|
||||
│ └── fr.json # Localization (24 lines, minimal)
|
||||
├── less/
|
||||
│ ├── heritiers.less # Entry point
|
||||
│ └── simple-converted.less # Imported styles
|
||||
├── styles/
|
||||
│ ├── heritiers.css # Compiled output (generated)
|
||||
│ └── heritiers.css.map # Source map (generated)
|
||||
├── packs/ # 11 Compendium packs (LevelDB)
|
||||
├── srcdata/ # Source data for compilation
|
||||
├── assets/ # UI assets (images, etc.)
|
||||
└── .git/ # Git history available
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Common Tasks Quick Links
|
||||
|
||||
| Task | Guide | Time |
|
||||
|------|-------|------|
|
||||
| Initial setup | QUICK_REFERENCE.md → Quick Start | 5 min |
|
||||
| Add item type | QUICK_REFERENCE.md → Adding a New Item Type | 30 min |
|
||||
| Fix a bug | DEVELOPER_INSTRUCTIONS.md → Section 5 | 15-60 min |
|
||||
| Understand architecture | DEVELOPER_INSTRUCTIONS.md → Section 2 | 30 min |
|
||||
| Change UI layout | QUICK_REFERENCE.md → Change UI layout | 10 min |
|
||||
| Add characteristic | QUICK_REFERENCE.md → Add a new characteristic | 20 min |
|
||||
| Add new roll type | QUICK_REFERENCE.md → Add a new roll type | 25 min |
|
||||
| Debug an issue | QUICK_REFERENCE.md → Testing Changes | 10-30 min |
|
||||
|
||||
---
|
||||
|
||||
## 📝 Documentation Standards
|
||||
|
||||
All documentation follows these principles:
|
||||
|
||||
1. **Clarity**: Written for developers unfamiliar with the system
|
||||
2. **Completeness**: All information needed to perform tasks included
|
||||
3. **Accuracy**: Based on actual code analysis, not assumptions
|
||||
4. **Brevity**: Concise sections with clear headings
|
||||
5. **Examples**: Code snippets and patterns provided
|
||||
6. **Cross-references**: Links between guides for deeper understanding
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Keeping Documentation Updated
|
||||
|
||||
When making significant changes:
|
||||
|
||||
1. **Update QUICK_REFERENCE.md** if:
|
||||
- Adding/removing item types
|
||||
- Changing build commands
|
||||
- Adding/removing features
|
||||
- Changing conventions
|
||||
|
||||
2. **Update DEVELOPER_INSTRUCTIONS.md** if:
|
||||
- Major architecture changes
|
||||
- New development patterns established
|
||||
- New statistics to report
|
||||
- New sections needed
|
||||
|
||||
3. **Update git history** (automatic):
|
||||
- Commit messages explain changes
|
||||
- Reference these in DEVELOPER_INSTRUCTIONS.md
|
||||
|
||||
---
|
||||
|
||||
## 📞 Questions?
|
||||
|
||||
Refer to:
|
||||
- **FoundryVTT Docs**: https://foundryvtt.com/articles/
|
||||
- **Game Rules**: https://titam-france.fr
|
||||
- **Git History**: `git log --oneline` (see recent commits)
|
||||
- **Code Comments**: Most functions have JSDoc-style comments
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: March 16, 2025
|
||||
**Documentation Version**: 1.0
|
||||
**System Version**: 13.0.7
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Learning Path
|
||||
|
||||
**Day 1**: Quick understanding
|
||||
1. Read QUICK_REFERENCE.md (20 min)
|
||||
2. Run setup commands (5 min)
|
||||
3. Explore directory structure (10 min)
|
||||
|
||||
**Week 1**: Basic development
|
||||
1. Read DEVELOPER_INSTRUCTIONS.md sections 1-3 (45 min)
|
||||
2. Add a simple new item type (1-2 hours)
|
||||
3. Fix a small bug (30 min - 1 hour)
|
||||
|
||||
**Week 2+**: Deep expertise
|
||||
1. Read full DEVELOPER_INSTRUCTIONS.md (1-2 hours)
|
||||
2. Add complex feature (3-6 hours)
|
||||
3. Understand DataModels & AppV2 sheets intimately
|
||||
4. Review git history for patterns (1-2 hours)
|
||||
|
||||
250
QUICK_REFERENCE.md
Normal file
250
QUICK_REFERENCE.md
Normal file
@@ -0,0 +1,250 @@
|
||||
# Les Héritiers FoundryVTT System - Quick Reference
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
npm install # Install once
|
||||
npm run watch # Development watch (LESS → CSS)
|
||||
npm run build # Build once (production)
|
||||
```
|
||||
|
||||
## System at a Glance
|
||||
|
||||
| Item | Details |
|
||||
|------|---------|
|
||||
| **ID** | `fvtt-les-heritiers` |
|
||||
| **Version** | 13.0.7 |
|
||||
| **Foundry** | v13+ (AppV2, DataModels) |
|
||||
| **Language** | French only |
|
||||
| **Architecture** | ES6 modules, Foundry TypeDataModel |
|
||||
|
||||
## Core Actors (2 types)
|
||||
|
||||
- **`personnage`** - Player Character (full biodata + core mechanics)
|
||||
- **`pnj`** - NPC (same structure, simplified UI)
|
||||
|
||||
### Actor Data Structure
|
||||
- **Characteristics** (8): agi, con, for, prec, esp, per, pres, san
|
||||
- **Ranks** (4): tricherie, feerie, masque, heritage
|
||||
- **Combat**: esquive, parade, initiative, corpsacorps, tir, resistances
|
||||
- **Profiles** (6): aventurier, roublard, combattant, erudit, savant, gentleman + magic
|
||||
|
||||
## Core Items (14 types)
|
||||
|
||||
**Combat**: arme, protection
|
||||
**Equipment**: equipement, accessoire
|
||||
**Character Building**: competence, profil, contact, avantage, desavantage
|
||||
**Powers**: pouvoir, capacitenaturelle, atoutfeerique, fee
|
||||
**Magic**: sort
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
modules/
|
||||
├─ heritiers-main.js # Foundry init, hook setup
|
||||
├─ heritiers-actor.js # Actor class
|
||||
├─ heritiers-item.js # Item class
|
||||
├─ heritiers-config.js # HERITIERS_CONFIG (enums)
|
||||
├─ heritiers-utility.js # Static utilities, Handlebars helpers
|
||||
├─ heritiers-commands.js # Chat commands
|
||||
├─ heritiers-combat.js # Combat class
|
||||
├─ models/ # DataModels for each type
|
||||
│ └─ personnage.mjs, pnj.mjs, arme.mjs, ...
|
||||
└─ applications/sheets/ # AppV2 Sheets
|
||||
└─ personnage-sheet.mjs, arme-sheet.mjs, ...
|
||||
templates/ # 27 Handlebars templates
|
||||
lang/fr.json # Localization (minimal, type names only)
|
||||
less/heritiers.less # LESS compilation entry
|
||||
styles/heritiers.css # Compiled CSS (generated)
|
||||
packs/ # 11 LevelDB compendium packs
|
||||
system.json # Manifest
|
||||
template.json.backup # Data schema reference
|
||||
```
|
||||
|
||||
## Key Classes & Exports
|
||||
|
||||
### Actor Classes
|
||||
- **`HeritiersActor`** extends `Actor`
|
||||
- Custom creation: auto-adds utility skills for `personnage`
|
||||
- **PersonnageDataModel**, **PnjDataModel** extend `foundry.abstract.TypeDataModel`
|
||||
|
||||
### Item Classes
|
||||
- **`HeritiersItem`** extends `Item`
|
||||
- **14 DataModels**: ArmeDataModel, CompetenceDataModel, etc.
|
||||
|
||||
### Sheets (AppV2 - Foundry v13+)
|
||||
- **`HeritiersPersonnageSheet`**, **`HeritiersPnjSheet`** extend ActorSheetV2
|
||||
- **`HeritiersArmeSheet`**, **`HeritiersCompetenceSheet`**, etc. (14 item sheets)
|
||||
- All use `HandlebarsApplicationMixin`
|
||||
- Registered in `heritiers-main.js` with `foundry.documents.collections.[Actors|Items].registerSheet()`
|
||||
|
||||
## Adding a New Item Type
|
||||
|
||||
1. Add schema to `template.json.backup`
|
||||
2. Create `modules/models/[typename].mjs` (DataModel)
|
||||
3. Create `modules/applications/sheets/[typename]-sheet.mjs` (AppV2 Sheet)
|
||||
4. Create `templates/item-[typename]-sheet.hbs` (Handlebars template)
|
||||
5. Export from `modules/models/index.mjs`
|
||||
6. Export from `modules/applications/sheets/_module.mjs`
|
||||
7. Register in `heritiers-main.js` (+ other registrations)
|
||||
8. Add to `lang/fr.json` TYPES.Item
|
||||
9. Optionally: add config constants to `heritiers-config.js`
|
||||
|
||||
## Key Constants (heritiers-config.js)
|
||||
|
||||
```javascript
|
||||
HERITIERS_CONFIG = {
|
||||
caracList, // 8 characteristics
|
||||
competenceProfil, // 6 profiles + magic
|
||||
seuilsDifficulte, // 30-level difficulty scale
|
||||
baseTestPouvoir, // feerie, masque, autre
|
||||
resistancePouvoir, // physical/psychic active/passive
|
||||
typePouvoir, // actif, passif, metamorphose
|
||||
// ... 30+ more enums
|
||||
}
|
||||
```
|
||||
|
||||
## Handlebars Template Patterns
|
||||
|
||||
**File Naming**:
|
||||
- `actor-sheet.hbs` → Personnage sheet
|
||||
- `actor-pnj-sheet.hbs` → NPC sheet
|
||||
- `item-[type]-sheet.hbs` → Item sheet
|
||||
- `partial-*.hbs` → Reusable components
|
||||
- `chat-*-result.hbs` → Chat results
|
||||
- `editor-*.hbs` → Editor components
|
||||
|
||||
**Data Access**:
|
||||
```handlebars
|
||||
{{actor.name}} <!-- Actor name -->
|
||||
{{system.caracteristiques.agi.value}} <!-- Nested field -->
|
||||
{{#each system.items as |item key|}} <!-- Loops -->
|
||||
{{#if system.magie}} ... {{/if}} <!-- Conditionals -->
|
||||
{{eq kind "physical"}} <!-- Custom helper -->
|
||||
```
|
||||
|
||||
**Custom Helpers** (60+):
|
||||
- Comparison: `eq`, `ne`, `lt`, `gt`, `gte`, `lte`
|
||||
- String: `upper`, `lower`, `upperFirst`
|
||||
- Array: `includes`, `count`, `notEmpty`
|
||||
- Math: `mul`, `add`, `sub`, `and`, `or`
|
||||
|
||||
## Localization
|
||||
|
||||
**Single File**: `lang/fr.json`
|
||||
```json
|
||||
{
|
||||
"TYPES": {
|
||||
"Actor": { "personnage": "Personnage", "pnj": "PNJ" },
|
||||
"Item": { "arme": "Arme", "competence": "Compétence", ... }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Strategy**: Minimal i18n
|
||||
- Type labels in TYPES
|
||||
- Field labels in DataModel schema (French initial values)
|
||||
- Config constants in heritiers-config.js (French)
|
||||
- Template text hardcoded (French)
|
||||
|
||||
**No game.i18n calls** - all text is French-only
|
||||
|
||||
## Dice & Combat
|
||||
|
||||
- **Initiative**: 1d10 (decimal)
|
||||
- **Bonus/Malus**: -6 to +6
|
||||
- **Roll Storage**: `HeritiersUtility.rollDataStore` (socket-aware)
|
||||
- **Defender Tracking**: `HeritiersUtility.defenderStore`
|
||||
|
||||
## Socket Communication
|
||||
|
||||
**Channel**: `"system.fvtt-les-heritiers"`
|
||||
**Handler**: `HeritiersUtility.onSocketMesssage(data)`
|
||||
**Use Cases**: Roll updates, multi-client sync
|
||||
|
||||
## Recent Changes (v13.0.7)
|
||||
|
||||
- ✅ AppV2 sheet migration (from legacy v1)
|
||||
- ✅ DataModels adoption
|
||||
- ✅ ES6 modules (.mjs) throughout
|
||||
- ✅ Jan 21: arme, competence, capacitenaturelle, pouvoir, protection updates
|
||||
- ✅ Rank calculation fixes
|
||||
|
||||
## Common Edits
|
||||
|
||||
### Add a new characteristic?
|
||||
1. Update `template.json.backup` → `caracteristiques`
|
||||
2. Update `PersonnageDataModel` → `caracteristiques` SchemaField
|
||||
3. Update `HERITIERS_CONFIG.caracList`
|
||||
4. Update templates that reference characteristics
|
||||
|
||||
### Add a new compendium pack?
|
||||
1. Add to `system.json` → `packs` array
|
||||
2. Create directory in `packs/[packname]/`
|
||||
3. Add `.db` file via Foundry UI or scripts
|
||||
|
||||
### Add a new roll type?
|
||||
1. Add dialog template: `templates/roll-dialog-*.hbs`
|
||||
2. Add result template: `templates/chat-*-result.hbs`
|
||||
3. Add handler in `heritiers-utility.js` or `heritiers-commands.js`
|
||||
4. Emit via socket if multiplayer: `game.socket.emit("system.fvtt-les-heritiers", data)`
|
||||
|
||||
### Change UI layout?
|
||||
1. Edit `templates/actor-sheet.hbs` or `item-*.hbs`
|
||||
2. Update LESS: edit `less/heritiers.less`
|
||||
3. Run `npm run build` or watch with `npm run watch`
|
||||
4. CSS reloads automatically via hotReload
|
||||
|
||||
## Testing Changes
|
||||
|
||||
```bash
|
||||
npm run watch
|
||||
# Open FoundryVTT on http://localhost:30000
|
||||
# Open system's world
|
||||
# Make edits (files auto-reload)
|
||||
# Check browser console for errors
|
||||
# Test in UI
|
||||
```
|
||||
|
||||
## Git Workflow (Development)
|
||||
|
||||
```bash
|
||||
git status
|
||||
git add -A
|
||||
git commit -m "Description of change"
|
||||
git push
|
||||
# Check recent commits: git log --oneline
|
||||
```
|
||||
|
||||
## Useful Commands
|
||||
|
||||
```bash
|
||||
# Count lines of code
|
||||
wc -l modules/*.js modules/**/*.mjs
|
||||
|
||||
# Search for string in code
|
||||
grep -r "searchterm" modules/
|
||||
|
||||
# List all item types
|
||||
grep '"type":' packs/*/[file].db | head -20
|
||||
|
||||
# Check template syntax
|
||||
npm run build 2>&1 | grep error
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- **DEVELOPER_INSTRUCTIONS.md** - Comprehensive guide (this repo)
|
||||
- **README.md** - Project overview & credits
|
||||
- **system.json** - Manifest (metadata, packs, compatibility)
|
||||
- **template.json.backup** - Data schema reference
|
||||
- [FoundryVTT Docs](https://foundryvtt.com/articles/)
|
||||
- [Les Héritiers Books](https://titam-france.fr) - Game rules
|
||||
|
||||
## Notes
|
||||
|
||||
- All code is French (variable names in French, labels in French)
|
||||
- No English strings in UI
|
||||
- Single language system (French)
|
||||
- Heavy use of camelCase following Foundry conventions
|
||||
- AppV2 is the only supported sheet architecture (v13+)
|
||||
@@ -550,9 +550,9 @@
|
||||
}
|
||||
|
||||
.fvtt-les-heritiers .items-list .item {
|
||||
height: 30px;
|
||||
line-height: 24px;
|
||||
padding: 1px 0;
|
||||
height: 24px;
|
||||
line-height: 20px;
|
||||
padding: 0;
|
||||
border-bottom: 1px solid #BBB;
|
||||
}
|
||||
|
||||
@@ -724,7 +724,7 @@
|
||||
/* AppV2 Actor Sheets - Tabs with scrolling */
|
||||
.fvtt-les-heritiers.actor .tab[data-tab] {
|
||||
display: none;
|
||||
padding: 0.5rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
overflow-y: auto;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
@@ -735,7 +735,7 @@
|
||||
|
||||
/* Redesigned skill category headers */
|
||||
.fvtt-les-heritiers.actor .sheet-box {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.fvtt-les-heritiers.actor .items-title-text {
|
||||
@@ -2336,35 +2336,35 @@
|
||||
}
|
||||
|
||||
.item-field-label-short {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 4rem;
|
||||
min-width: 4rem;
|
||||
}
|
||||
|
||||
.item-field-label-short-num {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 2rem;
|
||||
min-width: 2rem;
|
||||
}
|
||||
|
||||
.item-field-label-medium {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 6rem;
|
||||
min-width: 6rem;
|
||||
}
|
||||
|
||||
.item-field-label-long {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 8rem;
|
||||
min-width: 8rem;
|
||||
}
|
||||
|
||||
.item-field-label-long2 {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 14rem;
|
||||
min-width: 14rem;
|
||||
@@ -2376,7 +2376,7 @@
|
||||
}
|
||||
|
||||
.item-field-label-long3 {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 20rem;
|
||||
min-width: 20rem;
|
||||
|
||||
@@ -186,7 +186,8 @@ export default class HeritiersActorSheet extends HandlebarsApplicationMixin(foun
|
||||
const itemType = li?.dataset.itemType
|
||||
const itemField = event.target.dataset.itemField
|
||||
const dataType = event.target.dataset.dtype
|
||||
const value = event.target.value
|
||||
// Pour les checkboxes, utiliser checked au lieu de value
|
||||
const value = event.target.type === 'checkbox' ? event.target.checked : event.target.value
|
||||
if (itemId && itemType && itemField) {
|
||||
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
||||
}
|
||||
|
||||
@@ -11,8 +11,6 @@ export default class HeritiersCompetenceSheet extends HeritiersItemSheet {
|
||||
actions: {
|
||||
addSpecialite: HeritiersCompetenceSheet.#onAddSpecialite,
|
||||
deleteSpecialite: HeritiersCompetenceSheet.#onDeleteSpecialite,
|
||||
editSpecialite: HeritiersCompetenceSheet.#onEditSpecialite,
|
||||
editSpecialiteDescription: HeritiersCompetenceSheet.#onEditSpecialiteDescription,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,43 +21,55 @@ export default class HeritiersCompetenceSheet extends HeritiersItemSheet {
|
||||
},
|
||||
}
|
||||
|
||||
/** @override */
|
||||
_onRender(context, options) {
|
||||
super._onRender(context, options)
|
||||
|
||||
// Attacher les écouteurs pour l'édition des spécialités
|
||||
this.element.querySelectorAll('.edit-specialite').forEach(input => {
|
||||
input.addEventListener('change', async (event) => {
|
||||
const li = event.target.closest('.specialite-item')
|
||||
const index = Number.parseInt(li?.dataset.specialiteIndex)
|
||||
if (index !== undefined && !Number.isNaN(index)) {
|
||||
const spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
if (spec[index]) {
|
||||
spec[index].name = event.target.value
|
||||
await this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
this.element.querySelectorAll('.edit-specialite-description').forEach(textarea => {
|
||||
textarea.addEventListener('change', async (event) => {
|
||||
const li = event.target.closest('.specialite-item')
|
||||
const index = Number.parseInt(li?.dataset.specialiteIndex)
|
||||
if (index !== undefined && !Number.isNaN(index)) {
|
||||
const spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
if (spec[index]) {
|
||||
spec[index].description = event.target.value
|
||||
await this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Event Handlers */
|
||||
/* -------------------------------------------- */
|
||||
|
||||
static async #onAddSpecialite(event, target) {
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
spec.push({ name: "Nouvelle Spécialité", id: foundry.utils.randomID(16), used: false })
|
||||
spec.push({ name: "Nouvelle Spécialité", description: "", used: false })
|
||||
await this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
|
||||
static async #onDeleteSpecialite(event, target) {
|
||||
const li = target.closest(".specialite-item")
|
||||
let index = parseInt(li.dataset.specialiteIndex)
|
||||
let index = Number.parseInt(li.dataset.specialiteIndex)
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
spec.splice(index, 1)
|
||||
await this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
|
||||
static async #onEditSpecialite(event, target) {
|
||||
const li = target.closest(".specialite-item")
|
||||
let index = parseInt(li.dataset.specialiteIndex)
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
if (spec[index]) {
|
||||
spec[index].name = target.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
await this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
}
|
||||
|
||||
static async #onEditSpecialiteDescription(event, target) {
|
||||
const li = target.closest(".specialite-item")
|
||||
let index = parseInt(li.dataset.specialiteIndex)
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
if (spec[index]) {
|
||||
spec[index].description = target.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
await this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Extend the basic ActorSheet with some very simple modifications
|
||||
* @extends {ActorSheet}
|
||||
*/
|
||||
|
||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||
template: "systems/fvtt-les-heritiers/templates/actor-pnj-sheet.html",
|
||||
width: 780,
|
||||
height: 840,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editScore: false
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,277 +0,0 @@
|
||||
/**
|
||||
* Extend the basic ActorSheet with some very simple modifications
|
||||
* @extends {ActorSheet}
|
||||
*/
|
||||
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HeritiersActorSheet extends foundry.appv1.sheets.ActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
||||
width: 780,
|
||||
height: 840,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editScore: false
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
id: objectData.id,
|
||||
type: objectData.type,
|
||||
img: objectData.img,
|
||||
name: objectData.name,
|
||||
editable: this.isEditable,
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
system: objectData.system,
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
skills: this.actor.getSkills(),
|
||||
utileSkillsMental: this.actor.organizeUtileSkills("mental"),
|
||||
utileSkillsPhysical: this.actor.organizeUtileSkills("physical"),
|
||||
competencesMagie: HeritiersUtility.getCompetencesMagie(),
|
||||
futileSkills: this.actor.organizeFutileSkills(),
|
||||
contacts: this.actor.organizeContacts(),
|
||||
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
||||
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
||||
pouvoirs: foundry.utils.duplicate(this.actor.getPouvoirs()),
|
||||
fee: foundry.utils.duplicate(this.actor.getFee() || {}),
|
||||
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
||||
combat: this.actor.getCombatValues(),
|
||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||
avantages: foundry.utils.duplicate(this.actor.getAvantages()),
|
||||
atouts: foundry.utils.duplicate(this.actor.getAtouts()),
|
||||
capacites: foundry.utils.duplicate(this.actor.getCapacites()),
|
||||
desavantages: foundry.utils.duplicate(this.actor.getDesavantages()),
|
||||
profils: foundry.utils.duplicate(this.actor.getProfils()),
|
||||
pvMalus: this.actor.getPvMalus(),
|
||||
heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
|
||||
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
||||
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, { async: true }),
|
||||
revesetranges: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.revesetranges, { async: true }),
|
||||
secretsdecouverts: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.secretsdecouverts, { async: true }),
|
||||
questions: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.questions, { async: true }),
|
||||
habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, { async: true }),
|
||||
playernotes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.playernotes, { async: true }),
|
||||
magieList: this.actor.prepareMagie(),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
editScore: this.options.editScore,
|
||||
config: game.system.lesheritiers.config,
|
||||
isGM: game.user.isGM,
|
||||
isPNJ: (this.actor.type == "pnj")
|
||||
}
|
||||
this.formData = formData;
|
||||
|
||||
console.log("PC : ", formData, this.object);
|
||||
return formData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
dialogRecupUsage() {
|
||||
new Dialog({
|
||||
title: "Récupération des Points d'Usage",
|
||||
content: "<p>Combien de Points d'Usage souhaitez-vous récupérer ?</p>",
|
||||
buttons: {
|
||||
one: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "1 Point",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(1)
|
||||
}
|
||||
},
|
||||
two: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "2 Points",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(2)
|
||||
}
|
||||
},
|
||||
four: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "4 Points",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(4)
|
||||
}
|
||||
},
|
||||
all: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Tous les Points",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(100)
|
||||
}
|
||||
}
|
||||
}
|
||||
}).render(true)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.options.editable) return;
|
||||
|
||||
// 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");
|
||||
HeritiersUtility.confirmDelete(this, li);
|
||||
})
|
||||
html.find('.edit-item-data').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
let itemId = li.data("item-id")
|
||||
let itemType = li.data("item-type")
|
||||
let itemField = $(ev.currentTarget).data("item-field")
|
||||
let dataType = $(ev.currentTarget).data("dtype")
|
||||
let value = ev.currentTarget.value
|
||||
this.actor.editItemField(itemId, itemType, itemField, dataType, value)
|
||||
})
|
||||
|
||||
html.find('.adversite-modify').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let adv = li.data("adversite")
|
||||
let value = Number($(event.currentTarget).data("adversite-value"))
|
||||
this.actor.incDecAdversite(adv, value)
|
||||
})
|
||||
|
||||
html.find('.quantity-modify').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
const value = Number($(event.currentTarget).data("quantite-value"))
|
||||
this.actor.incDecQuantity(li.data("item-id"), value);
|
||||
})
|
||||
|
||||
html.find('[data-action="quantityIncrease"]').click(event => {
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
this.actor.incDecQuantity(li.data("item-id"), 1);
|
||||
})
|
||||
|
||||
html.find('[data-action="quantityDecrease"]').click(event => {
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
this.actor.incDecQuantity(li.data("item-id"), -1);
|
||||
})
|
||||
|
||||
html.find('.roll-initiative').click((event) => {
|
||||
this.actor.rollInitiative()
|
||||
})
|
||||
|
||||
html.find('.roll-carac').click((event) => {
|
||||
const key = $(event.currentTarget).data("key")
|
||||
this.actor.rollCarac(key, false)
|
||||
})
|
||||
html.find('.roll-rang').click((event) => {
|
||||
const key = $(event.currentTarget).data("rang-key")
|
||||
this.actor.rollRang(key, false)
|
||||
})
|
||||
html.find('.roll-root-competence').click((event) => {
|
||||
const compKey = $(event.currentTarget).data("attr-key")
|
||||
this.actor.rollRootCompetence(compKey)
|
||||
})
|
||||
html.find('.roll-competence').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let compId = li.data("item-id")
|
||||
this.actor.rollCompetence(compId)
|
||||
})
|
||||
html.find('.roll-sort').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let sortId = li.data("item-id")
|
||||
this.actor.rollSort(sortId)
|
||||
})
|
||||
html.find('.roll-attaque-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueArme(armeId)
|
||||
})
|
||||
html.find('.roll-attaque-brutale-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueBrutaleArme(armeId)
|
||||
})
|
||||
html.find('.roll-attaque-charge-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueChargeArme(armeId)
|
||||
})
|
||||
html.find('.roll-assomer-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAssomerArme(armeId)
|
||||
})
|
||||
|
||||
html.find('.roll-pouvoir').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let pouvoirId = li.data("item-id")
|
||||
this.actor.rollPouvoir(pouvoirId)
|
||||
})
|
||||
html.find('.dialog-recup-usage').click((event) => {
|
||||
this.dialogRecupUsage()
|
||||
})
|
||||
|
||||
html.find('.item-add').click((event) => {
|
||||
const itemType = $(event.currentTarget).data("type")
|
||||
if (itemType == "sort") {
|
||||
// Get data-sort-competence
|
||||
let sortCompetence = $(event.currentTarget).data("sort-competence");
|
||||
if (sortCompetence) {
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType} de ${sortCompetence}`, type: itemType, system: { competence: sortCompetence } }], { renderSheet: true })
|
||||
return
|
||||
}
|
||||
}
|
||||
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||
})
|
||||
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.item-equip').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
this.actor.equipItem(li.data("item-id"));
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @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;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/*async _onDropItem(event, dragData) {
|
||||
let data = event.dataTransfer.getData('text/plain')
|
||||
let dataItem = JSON.parse( data)
|
||||
let item = fromUuidSync(dataItem.uuid)
|
||||
if (item.pack) {
|
||||
item = await HeritiersUtility.searchItem(item)
|
||||
}
|
||||
super._onDropItem(event, dragData)
|
||||
}*/
|
||||
|
||||
}
|
||||
@@ -277,7 +277,7 @@ export class HeritiersActor extends Actor {
|
||||
let comp = {}
|
||||
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
||||
if (game.system.lesheritiers.config.competenceProfil[key].kind == kind)
|
||||
comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
|
||||
comp[key] = { skills: [], niveau: this.system.competences[key].niveau, rang: this.system.competences[key].rang }
|
||||
}
|
||||
for (let item of this.items) {
|
||||
if (item.type == "competence") {
|
||||
@@ -394,6 +394,34 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
|
||||
if (this.type == 'personnage') {
|
||||
// Calculate rang for each competence profile
|
||||
let competencesRangs = {
|
||||
aventurier: 0,
|
||||
combattant: 0,
|
||||
erudit: 0,
|
||||
gentleman: 0,
|
||||
roublard: 0,
|
||||
savant: 0
|
||||
}
|
||||
|
||||
// Sum up niveau for each profil
|
||||
for (let item of this.items) {
|
||||
if (item.type == "competence" && item.system.profil && item.system.categorie == "utile") {
|
||||
let profil = item.system.profil.toLowerCase()
|
||||
if (competencesRangs.hasOwnProperty(profil)) {
|
||||
competencesRangs[profil] += item.system.niveau
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate rang (total / 4, rounded down) for each competence
|
||||
for (let profil in competencesRangs) {
|
||||
let total = competencesRangs[profil]
|
||||
let rang = Math.floor(total / 4)
|
||||
if (this.system.competences[profil]) {
|
||||
this.system.competences[profil].rang = rang
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.prepareDerivedData()
|
||||
@@ -431,6 +459,8 @@ export class HeritiersActor extends Actor {
|
||||
if (dataType) {
|
||||
if (dataType.toLowerCase() == "number") {
|
||||
value = Number(value)
|
||||
} else if (dataType.toLowerCase() == "boolean") {
|
||||
value = Boolean(value)
|
||||
} else {
|
||||
value = String(value)
|
||||
}
|
||||
@@ -650,6 +680,14 @@ export class HeritiersActor extends Actor {
|
||||
this.update({ 'system.rang.tricherie': tricherie })
|
||||
return true
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
/* -------------------------------------------- */
|
||||
// Returns the combattant root competence formatted for rollData, used for PNJ attacks
|
||||
_getCombattantCompetence() {
|
||||
const combattant = this.system.competences.combattant
|
||||
return { name: combattant.label, system: { niveau: combattant.niveau } }
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getPireCompetence(compName1, compName2) {
|
||||
let comp1 = this.items.find(it => it.name == compName1)
|
||||
@@ -826,13 +864,15 @@ export class HeritiersActor extends Actor {
|
||||
if (arme) {
|
||||
arme = foundry.utils.duplicate(arme)
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let competenceName = "Tir"
|
||||
let key = "prec"
|
||||
if (arme.system.isMelee) {
|
||||
competenceName = "Mêlée"
|
||||
key = "agi"
|
||||
let key = arme.system.isMelee ? "agi" : "prec"
|
||||
let rollData
|
||||
if (this.type == 'pnj') {
|
||||
rollData = this.getCommonRollData()
|
||||
rollData.competence = this._getCombattantCompetence()
|
||||
} else {
|
||||
let competenceName = arme.system.isMelee ? "Mêlée" : "Tir"
|
||||
rollData = this.getCommonRollData(undefined, competenceName)
|
||||
}
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = arme
|
||||
@@ -852,9 +892,14 @@ export class HeritiersActor extends Actor {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
let key = "for"
|
||||
let competenceName = "Mêlée"
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
let rollData
|
||||
if (this.type == 'pnj') {
|
||||
rollData = this.getCommonRollData()
|
||||
rollData.competence = this._getCombattantCompetence()
|
||||
} else {
|
||||
rollData = this.getCommonRollData(undefined, "Mêlée")
|
||||
}
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = foundry.utils.duplicate(arme)
|
||||
@@ -871,8 +916,14 @@ export class HeritiersActor extends Actor {
|
||||
if (arme) {
|
||||
let key = "agi"
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let rollData
|
||||
if (this.type == 'pnj') {
|
||||
rollData = this.getCommonRollData()
|
||||
rollData.competence = this._getCombattantCompetence()
|
||||
} else {
|
||||
let pireCompetence = this.getPireCompetence("Mêlée", "Mouvement")
|
||||
let rollData = this.getCommonRollData(undefined, pireCompetence.name)
|
||||
rollData = this.getCommonRollData(undefined, pireCompetence.name)
|
||||
}
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = foundry.utils.duplicate(arme)
|
||||
@@ -887,9 +938,13 @@ export class HeritiersActor extends Actor {
|
||||
async rollAssomerArme(armeId) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
let competenceName = "Mêlée"
|
||||
//arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
let rollData
|
||||
if (this.type == 'pnj') {
|
||||
rollData = this.getCommonRollData()
|
||||
rollData.competence = this._getCombattantCompetence()
|
||||
} else {
|
||||
rollData = this.getCommonRollData(undefined, "Mêlée")
|
||||
}
|
||||
rollData.carac = this.system.caracteristiques["agi"]
|
||||
rollData.caracKey = "agi"
|
||||
rollData.arme = foundry.utils.duplicate(arme)
|
||||
|
||||
@@ -1,217 +0,0 @@
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
|
||||
/**
|
||||
* Extend the basic ItemSheet with some very simple modifications
|
||||
* @extends {ItemSheet}
|
||||
*/
|
||||
export class HeritiersItemSheet extends foundry.appv1.sheets.ItemSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "item"],
|
||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||
width: 620,
|
||||
height: 550,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }]
|
||||
});
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_getHeaderButtons() {
|
||||
let buttons = super._getHeaderButtons();
|
||||
// Add "Post to chat" button
|
||||
// We previously restricted this to GM and editable items only. If you ever find this comment because it broke something: eh, sorry!
|
||||
buttons.unshift(
|
||||
{
|
||||
class: "post",
|
||||
icon: "fas fa-comment",
|
||||
onclick: ev => { }
|
||||
})
|
||||
return buttons
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
setPosition(options = {}) {
|
||||
const position = super.setPosition(options);
|
||||
const sheetBody = this.element.find(".sheet-body");
|
||||
const bodyHeight = position.height - 192;
|
||||
sheetBody.css("height", bodyHeight);
|
||||
if (this.item.type.includes('weapon')) {
|
||||
position.width = 640;
|
||||
}
|
||||
return position;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
let formData = {
|
||||
title: this.title,
|
||||
id: this.id,
|
||||
type: objectData.type,
|
||||
img: objectData.img,
|
||||
name: objectData.name,
|
||||
editable: this.isEditable,
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
system: objectData.system,
|
||||
limited: this.object.limited,
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
config: game.system.lesheritiers.config,
|
||||
isArmeMelee: HeritiersUtility.isArmeMelee(this.object),
|
||||
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }),
|
||||
mr: (this.object.type == 'specialisation'),
|
||||
isGM: game.user.isGM,
|
||||
usageMax: -1
|
||||
}
|
||||
|
||||
// Items specific data
|
||||
if (this.object.type == 'pouvoir' && this.document.isOwner && this.actor) {
|
||||
formData.usageMax = this.actor.getPouvoirUsageMax(this.object)
|
||||
if (this.object.system.pointsusagecourant == -1) {
|
||||
this.object.system.pointsusagecourant = formData.usageMax
|
||||
}
|
||||
}
|
||||
if (this.object.type == 'sort') {
|
||||
formData.competencesMagie = HeritiersUtility.getCompetencesMagie()
|
||||
}
|
||||
|
||||
|
||||
//this.options.editable = !(this.object.origin == "embeddedItem");
|
||||
console.log("ITEM DATA", formData, this);
|
||||
return formData;
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_getHeaderButtons() {
|
||||
let buttons = super._getHeaderButtons();
|
||||
buttons.unshift({
|
||||
class: "post",
|
||||
icon: "fas fa-comment",
|
||||
onclick: ev => this.postItem()
|
||||
});
|
||||
return buttons
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
postItem() {
|
||||
let chatData = foundry.utils.duplicate(HeritiersUtility.data(this.item));
|
||||
if (this.actor) {
|
||||
chatData.actor = { id: this.actor.id };
|
||||
}
|
||||
// Don't post any image for the item (which would leave a large gap) if the default image is used
|
||||
if (chatData.img.includes("/blank.png")) {
|
||||
chatData.img = null;
|
||||
}
|
||||
// JSON object for easy creation
|
||||
chatData.jsondata = JSON.stringify(
|
||||
{
|
||||
compendium: "postedItem",
|
||||
payload: chatData,
|
||||
});
|
||||
|
||||
renderTemplate('systems/fvtt-Heritiers-rpg/templates/post-item.html', chatData).then(html => {
|
||||
let chatOptions = HeritiersUtility.chatDataSetup(html);
|
||||
ChatMessage.create(chatOptions)
|
||||
});
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.options.editable) return;
|
||||
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item")
|
||||
const item = this.object.options.actor.getOwnedItem(li.data("item-id"))
|
||||
item.sheet.render(true);
|
||||
});
|
||||
|
||||
html.find('.delete-subitem').click(ev => {
|
||||
this.deleteSubitem(ev);
|
||||
})
|
||||
|
||||
html.find('#add-specialite').click(ev => {
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
spec.push({ name: "Nouvelle Spécialité", id: foundry.utils.randomID(16), used: false })
|
||||
this.item.update({ 'system.specialites': spec })
|
||||
})
|
||||
html.find('.delete-specialite').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||
let index = li.data("specialite-index")
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
spec.splice(index, 1)
|
||||
this.item.update({ 'system.specialites': spec })
|
||||
})
|
||||
html.find('.edit-specialite').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||
let index = li.data("specialite-index")
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
if (spec[index]) {
|
||||
spec[index].name = ev.currentTarget.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
})
|
||||
html.find('.edit-specialite-description').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||
let index = li.data("specialite-index")
|
||||
let spec = foundry.utils.duplicate(this.item.system.specialites) || []
|
||||
if (spec[index]) {
|
||||
spec[index].description = ev.currentTarget.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
this.item.update({ 'system.specialites': spec })
|
||||
}
|
||||
})
|
||||
|
||||
html.find('#add-automation').click(ev => {
|
||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||
autom.push({ eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: foundry.utils.randomID(16) })
|
||||
this.object.update({ 'system.automations': autom })
|
||||
})
|
||||
html.find('.delete-automation').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".automation-item")
|
||||
let index = li.data("automation-index")
|
||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||
autom.splice(index, 1)
|
||||
this.object.update({ 'system.automations': autom })
|
||||
})
|
||||
html.find('.automation-edit-field').change(ev => {
|
||||
let index = $(ev.currentTarget).data("automation-index")
|
||||
let field = $(ev.currentTarget).data("automation-field")
|
||||
let auto = foundry.utils.duplicate(this.object.system.automations)
|
||||
auto[index][field] = ev.currentTarget.value
|
||||
auto[index].id = auto[index].id || foundry.utils.randomID(16)
|
||||
this.object.update({ 'system.automations': auto })
|
||||
})
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id");
|
||||
let itemType = li.data("item-type");
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
get template() {
|
||||
let type = this.item.type;
|
||||
return `systems/fvtt-les-heritiers/templates/item-${type}-sheet.hbs`;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
_updateObject(event, formData) {
|
||||
return this.object.update(formData);
|
||||
}
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
|
||||
export class HeritiersRollDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async create(actor, rollData) {
|
||||
|
||||
let options = { classes: ["HeritiersDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
|
||||
let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-les-heritiers/templates/roll-dialog-generic.html', rollData);
|
||||
|
||||
return new HeritiersRollDialog(actor, rollData, html, options);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(actor, rollData, html, options, close = undefined) {
|
||||
let buttons = {
|
||||
rolld8: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d8",
|
||||
callback: () => { this.roll("d8") }
|
||||
}
|
||||
}
|
||||
let enableD10 = false
|
||||
let enableD12 = false
|
||||
if (rollData.mode == "pouvoir" || rollData.competence?.system.niveau > 0) {
|
||||
enableD10 = true
|
||||
}
|
||||
if (rollData.mode == "pouvoir" || rollData.competence?.system.niveau > 1) {
|
||||
enableD12 = true
|
||||
}
|
||||
if (enableD10) {
|
||||
buttons.rolld10 = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d10",
|
||||
callback: () => { this.roll("d10") }
|
||||
}
|
||||
}
|
||||
if (enableD12) {
|
||||
buttons.rolld12 = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d12",
|
||||
callback: () => { this.roll("d12") }
|
||||
}
|
||||
}
|
||||
|
||||
if (rollData.tricherie) {
|
||||
buttons["rollTricherie"] = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Avec 1 Tricherie",
|
||||
callback: () => { this.roll("tricherie") }
|
||||
}
|
||||
}
|
||||
if (rollData.heritage) {
|
||||
buttons["rollHeritage"] = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Avec 1 Héritage",
|
||||
callback: () => { this.roll("heritage") }
|
||||
}
|
||||
}
|
||||
buttons["Cancel"] = {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: "Annuler",
|
||||
callback: () => { this.close() }
|
||||
}
|
||||
let conf = {
|
||||
title: "Test de Capacité",
|
||||
content: html,
|
||||
buttons: buttons,
|
||||
close: close
|
||||
}
|
||||
// Overwrite in case of carac only -> 1d8
|
||||
if (rollData.mode == "carac") {
|
||||
conf.buttons = {
|
||||
rolld8: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d8",
|
||||
callback: () => { this.roll("d8") }
|
||||
},
|
||||
cancel: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: "Annuler",
|
||||
callback: () => { this.close() }
|
||||
}
|
||||
}
|
||||
}
|
||||
super(conf, options);
|
||||
|
||||
this.actor = actor
|
||||
this.rollData = rollData
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
roll(dice) {
|
||||
if (dice == "heritage") {
|
||||
this.rollData.useHeritage = true
|
||||
}
|
||||
else {
|
||||
if (dice == "tricherie") {
|
||||
this.rollData.useTricherie = true
|
||||
} else {
|
||||
this.rollData.mainDice = dice
|
||||
}
|
||||
}
|
||||
HeritiersUtility.rollHeritiers(this.rollData)
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
function onLoad() {
|
||||
}
|
||||
$(function () { onLoad(); });
|
||||
|
||||
html.find('#sdValue').change(async (event) => {
|
||||
this.rollData.sdValue = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#caracKey').change(async (event) => {
|
||||
//console.log("caracKey", event.currentTarget.value)
|
||||
this.rollData.caracKey = String(event.currentTarget.value)
|
||||
})
|
||||
html.find('#bonus-malus-context').change((event) => {
|
||||
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#bonus-attaque-plusieurs').change((event) => {
|
||||
this.rollData.bonusAttaquePlusieurs = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#useSpecialite').change((event) => {
|
||||
this.rollData.useSpecialite = event.currentTarget.checked
|
||||
})
|
||||
html.find('#pouvoirPointsUsage').change((event) => {
|
||||
this.rollData.pouvoirPointsUsage = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#attaqueDos').change((event) => {
|
||||
this.rollData.attaqueDos = event.currentTarget.checked
|
||||
})
|
||||
html.find('#bonus-attaque-seconde-arme').change((event) => {
|
||||
this.rollData.secondeArme = String(event.currentTarget.value)
|
||||
})
|
||||
html.find('#attaque-cible').change((event) => {
|
||||
this.rollData.attaqueCible = String(event.currentTarget.value)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -200,7 +200,7 @@ export class HeritiersUtility {
|
||||
static async preloadHandlebarsTemplates() {
|
||||
|
||||
const templatePaths = [
|
||||
'systems/fvtt-les-heritiers/templates/editor-notes-gm.html',
|
||||
'systems/fvtt-les-heritiers/templates/editor-notes-gm.hbs',
|
||||
'systems/fvtt-les-heritiers/templates/partial-item-header.hbs',
|
||||
'systems/fvtt-les-heritiers/templates/partial-item-description.hbs',
|
||||
'systems/fvtt-les-heritiers/templates/partial-item-nav.hbs',
|
||||
|
||||
@@ -10,8 +10,8 @@ export default class ArmeDataModel extends foundry.abstract.TypeDataModel {
|
||||
quantite: new fields.NumberField({ initial: 0, integer: true }),
|
||||
prix: new fields.NumberField({ initial: 0, integer: true }),
|
||||
equipped: new fields.BooleanField({ initial: false }),
|
||||
categorie: new fields.StringField({ initial: "" }),
|
||||
armetype: new fields.StringField({ initial: "" }),
|
||||
categorie: new fields.StringField({ initial: "trait" }),
|
||||
armetype: new fields.StringField({ initial: "trait" }),
|
||||
degats: new fields.NumberField({ initial: 0, integer: true }),
|
||||
precision: new fields.NumberField({ initial: 0, integer: true }),
|
||||
cadence: new fields.StringField({ initial: "" }),
|
||||
@@ -19,8 +19,8 @@ export default class ArmeDataModel extends foundry.abstract.TypeDataModel {
|
||||
magasin: new fields.NumberField({ initial: 0, integer: true }),
|
||||
charge: new fields.NumberField({ initial: 0, integer: true }),
|
||||
portee: new fields.StringField({ initial: "" }),
|
||||
legalite: new fields.StringField({ initial: "" }),
|
||||
dissimulation: new fields.StringField({ initial: "" }),
|
||||
legalite: new fields.StringField({ initial: "libre" }),
|
||||
dissimulation: new fields.StringField({ initial: "tresfacile" }),
|
||||
zone: new fields.NumberField({ initial: 0, integer: true }),
|
||||
temps: new fields.StringField({ initial: "" }),
|
||||
allumage: new fields.StringField({ initial: "" }),
|
||||
|
||||
@@ -5,13 +5,13 @@ export default class CapaciteNaturelleDataModel extends foundry.abstract.TypeDat
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
pouvoirtype: new fields.StringField({ initial: "" }),
|
||||
pouvoirtype: new fields.StringField({ initial: "actif" }),
|
||||
activation: new fields.StringField({ initial: "" }),
|
||||
cibles: new fields.StringField({ initial: "" }),
|
||||
effet: new fields.StringField({ initial: "" }),
|
||||
duree: new fields.StringField({ initial: "" }),
|
||||
portee: new fields.StringField({ initial: "" }),
|
||||
resistance: new fields.StringField({ initial: "" }),
|
||||
resistance: new fields.StringField({ initial: "aucune" }),
|
||||
resistanceautre: new fields.StringField({ initial: "" }),
|
||||
isvirulence: new fields.BooleanField({ initial: false }),
|
||||
virulence: new fields.StringField({ initial: "" }),
|
||||
|
||||
@@ -5,8 +5,8 @@ export default class CompetenceDataModel extends foundry.abstract.TypeDataModel
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
categorie: new fields.StringField({ initial: "" }),
|
||||
profil: new fields.StringField({ initial: "" }),
|
||||
categorie: new fields.StringField({ initial: "utile" }),
|
||||
profil: new fields.StringField({ initial: "aventurier" }),
|
||||
niveau: new fields.NumberField({ initial: 0, integer: true }),
|
||||
nomniveau: new fields.SchemaField({
|
||||
1: new fields.StringField({ initial: "" }),
|
||||
|
||||
@@ -5,7 +5,7 @@ export default class FeeDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
feetype: new fields.NumberField({ initial: 0, integer: true }),
|
||||
feetype: new fields.StringField({ initial: "traditionnelle" }),
|
||||
avantages: new fields.StringField({ initial: "" }),
|
||||
desavantages: new fields.StringField({ initial: "" }),
|
||||
pouvoirsfeeriquesmasque: new fields.StringField({ initial: "" }),
|
||||
|
||||
@@ -11,7 +11,7 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel
|
||||
activite: new fields.StringField({ initial: "" }),
|
||||
nomhumain: new fields.StringField({ initial: "" }),
|
||||
activites: new fields.StringField({ initial: "" }),
|
||||
fortune: new fields.NumberField({ initial: 0, integer: true }),
|
||||
fortune: new fields.StringField({ initial: "0" }),
|
||||
traitscaracteres: new fields.StringField({ initial: "" }),
|
||||
tailledemasquee: new fields.StringField({ initial: "" }),
|
||||
taillemasquee: new fields.StringField({ initial: "" }),
|
||||
@@ -23,7 +23,7 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel
|
||||
langues: new fields.StringField({ initial: "" }),
|
||||
factionfeerique: new fields.StringField({ initial: "" }),
|
||||
typetaille: new fields.StringField({ initial: "" }),
|
||||
age: new fields.NumberField({ initial: 0, integer: true }),
|
||||
age: new fields.StringField({ initial: "0" }),
|
||||
poids: new fields.StringField({ initial: "" }),
|
||||
taille: new fields.StringField({ initial: "" }),
|
||||
cheveux: new fields.StringField({ initial: "" }),
|
||||
@@ -135,7 +135,7 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel
|
||||
}),
|
||||
heritage: new fields.SchemaField({
|
||||
label: new fields.StringField({ initial: "Héritage" }),
|
||||
value: new fields.NumberField({ initial: 0, integer: true }),
|
||||
value: new fields.StringField({ initial: "0" }),
|
||||
max: new fields.NumberField({ initial: 0, integer: true }),
|
||||
scenarios: new fields.NumberField({ initial: 0, integer: true })
|
||||
})
|
||||
@@ -190,8 +190,8 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel
|
||||
})
|
||||
}),
|
||||
experience: new fields.SchemaField({
|
||||
value: new fields.NumberField({ initial: 0, integer: true }),
|
||||
pourtricher: new fields.NumberField({ initial: 0, integer: true })
|
||||
value: new fields.StringField({ initial: "0" }),
|
||||
pourtricher: new fields.StringField({ initial: "0" })
|
||||
}),
|
||||
combat: new fields.SchemaField({
|
||||
esquive: new fields.SchemaField({
|
||||
|
||||
@@ -5,9 +5,9 @@ export default class PouvoirDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
pouvoirtype: new fields.StringField({ initial: "" }),
|
||||
masquetype: new fields.StringField({ initial: "" }),
|
||||
niveau: new fields.StringField({ initial: "" }),
|
||||
pouvoirtype: new fields.StringField({ initial: "actif" }),
|
||||
masquetype: new fields.StringField({ initial: "masque" }),
|
||||
niveau: new fields.StringField({ initial: "normal" }),
|
||||
activation: new fields.StringField({ initial: "" }),
|
||||
istest: new fields.BooleanField({ initial: false }),
|
||||
feeriemasque: new fields.StringField({ initial: "feerie" }),
|
||||
@@ -18,7 +18,7 @@ export default class PouvoirDataModel extends foundry.abstract.TypeDataModel {
|
||||
cibles: new fields.StringField({ initial: "" }),
|
||||
effet: new fields.StringField({ initial: "" }),
|
||||
portee: new fields.StringField({ initial: "" }),
|
||||
resistance: new fields.StringField({ initial: "" }),
|
||||
resistance: new fields.StringField({ initial: "aucune" }),
|
||||
resistanceautre: new fields.StringField({ initial: "" }),
|
||||
pointsusagecourant: new fields.NumberField({ initial: -1, integer: true }),
|
||||
isvirulence: new fields.BooleanField({ initial: false }),
|
||||
|
||||
@@ -11,7 +11,7 @@ export default class ProtectionDataModel extends foundry.abstract.TypeDataModel
|
||||
prix: new fields.NumberField({ initial: 0, integer: true }),
|
||||
equipped: new fields.BooleanField({ initial: false }),
|
||||
points: new fields.NumberField({ initial: 0, integer: true }),
|
||||
protectiontype: new fields.StringField({ initial: "" }),
|
||||
protectiontype: new fields.StringField({ initial: "balle" }),
|
||||
effetsecondaire: new fields.StringField({ initial: "" }),
|
||||
malusagilite: new fields.NumberField({ initial: 0, integer: true }),
|
||||
dissimulation: new fields.StringField({ initial: "" })
|
||||
|
||||
@@ -1 +1 @@
|
||||
MANIFEST-000308
|
||||
MANIFEST-000336
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.499762 7fd462ffd6c0 Recovering log #306
|
||||
2026/01/10-17:13:21.510831 7fd462ffd6c0 Delete type=3 #304
|
||||
2026/01/10-17:13:21.511011 7fd462ffd6c0 Delete type=0 #306
|
||||
2026/01/10-22:35:10.944218 7fd4627fc6c0 Level-0 table #311: started
|
||||
2026/01/10-22:35:10.944249 7fd4627fc6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/01/10-22:35:10.950116 7fd4627fc6c0 Delete type=0 #309
|
||||
2026/01/10-22:35:10.963623 7fd4627fc6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.963688 7fd4627fc6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.991086 7f152a3fc6c0 Recovering log #334
|
||||
2026/01/21-10:53:46.000764 7f152a3fc6c0 Delete type=3 #332
|
||||
2026/01/21-10:53:46.000821 7f152a3fc6c0 Delete type=0 #334
|
||||
2026/01/21-10:54:50.937646 7f1529bfb6c0 Level-0 table #339: started
|
||||
2026/01/21-10:54:50.937686 7f1529bfb6c0 Level-0 table #339: 0 bytes OK
|
||||
2026/01/21-10:54:50.968467 7f1529bfb6c0 Delete type=0 #337
|
||||
2026/01/21-10:54:51.044557 7f1529bfb6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.044593 7f1529bfb6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.969467 7fd4637fe6c0 Recovering log #302
|
||||
2026/01/10-16:36:53.980503 7fd4637fe6c0 Delete type=3 #300
|
||||
2026/01/10-16:36:53.980609 7fd4637fe6c0 Delete type=0 #302
|
||||
2026/01/10-17:13:09.472065 7fd4627fc6c0 Level-0 table #307: started
|
||||
2026/01/10-17:13:09.472120 7fd4627fc6c0 Level-0 table #307: 0 bytes OK
|
||||
2026/01/10-17:13:09.478554 7fd4627fc6c0 Delete type=0 #305
|
||||
2026/01/10-17:13:09.492266 7fd4627fc6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.492326 7fd4627fc6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.240377 7f152b3fe6c0 Recovering log #330
|
||||
2026/01/21-10:43:50.250901 7f152b3fe6c0 Delete type=3 #328
|
||||
2026/01/21-10:43:50.250970 7f152b3fe6c0 Delete type=0 #330
|
||||
2026/01/21-10:46:58.350230 7f1529bfb6c0 Level-0 table #335: started
|
||||
2026/01/21-10:46:58.350259 7f1529bfb6c0 Level-0 table #335: 0 bytes OK
|
||||
2026/01/21-10:46:58.357573 7f1529bfb6c0 Delete type=0 #333
|
||||
2026/01/21-10:46:58.364032 7f1529bfb6c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.364070 7f1529bfb6c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000308
|
||||
MANIFEST-000336
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.528896 7fd478fff6c0 Recovering log #306
|
||||
2026/01/10-17:13:21.539812 7fd478fff6c0 Delete type=3 #304
|
||||
2026/01/10-17:13:21.539902 7fd478fff6c0 Delete type=0 #306
|
||||
2026/01/10-22:35:10.963778 7fd4627fc6c0 Level-0 table #311: started
|
||||
2026/01/10-22:35:10.963855 7fd4627fc6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/01/10-22:35:10.969945 7fd4627fc6c0 Delete type=0 #309
|
||||
2026/01/10-22:35:10.989919 7fd4627fc6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.989967 7fd4627fc6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:46.017018 7f152b3fe6c0 Recovering log #334
|
||||
2026/01/21-10:53:46.027168 7f152b3fe6c0 Delete type=3 #332
|
||||
2026/01/21-10:53:46.027239 7f152b3fe6c0 Delete type=0 #334
|
||||
2026/01/21-10:54:51.075256 7f1529bfb6c0 Level-0 table #339: started
|
||||
2026/01/21-10:54:51.075290 7f1529bfb6c0 Level-0 table #339: 0 bytes OK
|
||||
2026/01/21-10:54:51.119572 7f1529bfb6c0 Delete type=0 #337
|
||||
2026/01/21-10:54:51.190089 7f1529bfb6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.190275 7f1529bfb6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:54.002327 7fd462ffd6c0 Recovering log #302
|
||||
2026/01/10-16:36:54.012517 7fd462ffd6c0 Delete type=3 #300
|
||||
2026/01/10-16:36:54.012642 7fd462ffd6c0 Delete type=0 #302
|
||||
2026/01/10-17:13:09.492537 7fd4627fc6c0 Level-0 table #307: started
|
||||
2026/01/10-17:13:09.492568 7fd4627fc6c0 Level-0 table #307: 0 bytes OK
|
||||
2026/01/10-17:13:09.498555 7fd4627fc6c0 Delete type=0 #305
|
||||
2026/01/10-17:13:09.518553 7fd4627fc6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.518642 7fd4627fc6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.267294 7f152abfd6c0 Recovering log #330
|
||||
2026/01/21-10:43:50.276983 7f152abfd6c0 Delete type=3 #328
|
||||
2026/01/21-10:43:50.277035 7f152abfd6c0 Delete type=0 #330
|
||||
2026/01/21-10:46:58.364131 7f1529bfb6c0 Level-0 table #335: started
|
||||
2026/01/21-10:46:58.364205 7f1529bfb6c0 Level-0 table #335: 0 bytes OK
|
||||
2026/01/21-10:46:58.370782 7f1529bfb6c0 Delete type=0 #333
|
||||
2026/01/21-10:46:58.391376 7f1529bfb6c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.391426 7f1529bfb6c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000308
|
||||
MANIFEST-000336
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.469395 7fd4637fe6c0 Recovering log #306
|
||||
2026/01/10-17:13:21.479611 7fd4637fe6c0 Delete type=3 #304
|
||||
2026/01/10-17:13:21.479687 7fd4637fe6c0 Delete type=0 #306
|
||||
2026/01/10-22:35:10.919012 7fd4627fc6c0 Level-0 table #311: started
|
||||
2026/01/10-22:35:10.919040 7fd4627fc6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/01/10-22:35:10.924958 7fd4627fc6c0 Delete type=0 #309
|
||||
2026/01/10-22:35:10.937993 7fd4627fc6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.938027 7fd4627fc6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.963781 7f152abfd6c0 Recovering log #334
|
||||
2026/01/21-10:53:45.974011 7f152abfd6c0 Delete type=3 #332
|
||||
2026/01/21-10:53:45.974068 7f152abfd6c0 Delete type=0 #334
|
||||
2026/01/21-10:54:50.901280 7f1529bfb6c0 Level-0 table #339: started
|
||||
2026/01/21-10:54:50.901351 7f1529bfb6c0 Level-0 table #339: 0 bytes OK
|
||||
2026/01/21-10:54:50.937470 7f1529bfb6c0 Delete type=0 #337
|
||||
2026/01/21-10:54:51.044539 7f1529bfb6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.044584 7f1529bfb6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.937580 7fd463fff6c0 Recovering log #302
|
||||
2026/01/10-16:36:53.948656 7fd463fff6c0 Delete type=3 #300
|
||||
2026/01/10-16:36:53.948746 7fd463fff6c0 Delete type=0 #302
|
||||
2026/01/10-17:13:09.478691 7fd4627fc6c0 Level-0 table #307: started
|
||||
2026/01/10-17:13:09.478722 7fd4627fc6c0 Level-0 table #307: 0 bytes OK
|
||||
2026/01/10-17:13:09.485719 7fd4627fc6c0 Delete type=0 #305
|
||||
2026/01/10-17:13:09.492280 7fd4627fc6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.492336 7fd4627fc6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.215403 7f152a3fc6c0 Recovering log #330
|
||||
2026/01/21-10:43:50.225230 7f152a3fc6c0 Delete type=3 #328
|
||||
2026/01/21-10:43:50.225283 7f152a3fc6c0 Delete type=0 #330
|
||||
2026/01/21-10:46:58.336769 7f1529bfb6c0 Level-0 table #335: started
|
||||
2026/01/21-10:46:58.336818 7f1529bfb6c0 Level-0 table #335: 0 bytes OK
|
||||
2026/01/21-10:46:58.343699 7f1529bfb6c0 Delete type=0 #333
|
||||
2026/01/21-10:46:58.364008 7f1529bfb6c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.364042 7f1529bfb6c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000308
|
||||
MANIFEST-000336
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.429229 7fd463fff6c0 Recovering log #306
|
||||
2026/01/10-17:13:21.439355 7fd463fff6c0 Delete type=3 #304
|
||||
2026/01/10-17:13:21.439437 7fd463fff6c0 Delete type=0 #306
|
||||
2026/01/10-22:35:10.925075 7fd4627fc6c0 Level-0 table #311: started
|
||||
2026/01/10-22:35:10.925115 7fd4627fc6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/01/10-22:35:10.931575 7fd4627fc6c0 Delete type=0 #309
|
||||
2026/01/10-22:35:10.938004 7fd4627fc6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.938039 7fd4627fc6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.925373 7f152bbff6c0 Recovering log #334
|
||||
2026/01/21-10:53:45.935373 7f152bbff6c0 Delete type=3 #332
|
||||
2026/01/21-10:53:45.935424 7f152bbff6c0 Delete type=0 #334
|
||||
2026/01/21-10:54:50.778002 7f1529bfb6c0 Level-0 table #339: started
|
||||
2026/01/21-10:54:50.778030 7f1529bfb6c0 Level-0 table #339: 0 bytes OK
|
||||
2026/01/21-10:54:50.828753 7f1529bfb6c0 Delete type=0 #337
|
||||
2026/01/21-10:54:50.901010 7f1529bfb6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:50.901050 7f1529bfb6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.884816 7fd463fff6c0 Recovering log #302
|
||||
2026/01/10-16:36:53.895475 7fd463fff6c0 Delete type=3 #300
|
||||
2026/01/10-16:36:53.895553 7fd463fff6c0 Delete type=0 #302
|
||||
2026/01/10-17:13:09.459290 7fd4627fc6c0 Level-0 table #307: started
|
||||
2026/01/10-17:13:09.459318 7fd4627fc6c0 Level-0 table #307: 0 bytes OK
|
||||
2026/01/10-17:13:09.465368 7fd4627fc6c0 Delete type=0 #305
|
||||
2026/01/10-17:13:09.465682 7fd4627fc6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.465759 7fd4627fc6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.178287 7f152abfd6c0 Recovering log #330
|
||||
2026/01/21-10:43:50.188475 7f152abfd6c0 Delete type=3 #328
|
||||
2026/01/21-10:43:50.188562 7f152abfd6c0 Delete type=0 #330
|
||||
2026/01/21-10:46:58.315382 7f1529bfb6c0 Level-0 table #335: started
|
||||
2026/01/21-10:46:58.315409 7f1529bfb6c0 Level-0 table #335: 0 bytes OK
|
||||
2026/01/21-10:46:58.323079 7f1529bfb6c0 Delete type=0 #333
|
||||
2026/01/21-10:46:58.336644 7f1529bfb6c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.336671 7f1529bfb6c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000308
|
||||
MANIFEST-000336
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.456371 7fd462ffd6c0 Recovering log #306
|
||||
2026/01/10-17:13:21.466637 7fd462ffd6c0 Delete type=3 #304
|
||||
2026/01/10-17:13:21.466715 7fd462ffd6c0 Delete type=0 #306
|
||||
2026/01/10-22:35:10.912772 7fd4627fc6c0 Level-0 table #311: started
|
||||
2026/01/10-22:35:10.912830 7fd4627fc6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/01/10-22:35:10.918894 7fd4627fc6c0 Delete type=0 #309
|
||||
2026/01/10-22:35:10.937977 7fd4627fc6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.938019 7fd4627fc6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.951417 7f152a3fc6c0 Recovering log #334
|
||||
2026/01/21-10:53:45.961147 7f152a3fc6c0 Delete type=3 #332
|
||||
2026/01/21-10:53:45.961217 7f152a3fc6c0 Delete type=0 #334
|
||||
2026/01/21-10:54:50.828879 7f1529bfb6c0 Level-0 table #339: started
|
||||
2026/01/21-10:54:50.828907 7f1529bfb6c0 Level-0 table #339: 0 bytes OK
|
||||
2026/01/21-10:54:50.862960 7f1529bfb6c0 Delete type=0 #337
|
||||
2026/01/21-10:54:50.901020 7f1529bfb6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:50.901069 7f1529bfb6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.922222 7fd4637fe6c0 Recovering log #302
|
||||
2026/01/10-16:36:53.933241 7fd4637fe6c0 Delete type=3 #300
|
||||
2026/01/10-16:36:53.933388 7fd4637fe6c0 Delete type=0 #302
|
||||
2026/01/10-17:13:09.439054 7fd4627fc6c0 Level-0 table #307: started
|
||||
2026/01/10-17:13:09.439130 7fd4627fc6c0 Level-0 table #307: 0 bytes OK
|
||||
2026/01/10-17:13:09.445231 7fd4627fc6c0 Delete type=0 #305
|
||||
2026/01/10-17:13:09.465606 7fd4627fc6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.465720 7fd4627fc6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.203621 7f152b3fe6c0 Recovering log #330
|
||||
2026/01/21-10:43:50.213118 7f152b3fe6c0 Delete type=3 #328
|
||||
2026/01/21-10:43:50.213182 7f152b3fe6c0 Delete type=0 #330
|
||||
2026/01/21-10:46:58.323189 7f1529bfb6c0 Level-0 table #335: started
|
||||
2026/01/21-10:46:58.323211 7f1529bfb6c0 Level-0 table #335: 0 bytes OK
|
||||
2026/01/21-10:46:58.329442 7f1529bfb6c0 Delete type=0 #333
|
||||
2026/01/21-10:46:58.336652 7f1529bfb6c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.336688 7f1529bfb6c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000314
|
||||
MANIFEST-000342
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.415001 7fd4637fe6c0 Recovering log #312
|
||||
2026/01/10-17:13:21.425375 7fd4637fe6c0 Delete type=3 #310
|
||||
2026/01/10-17:13:21.425467 7fd4637fe6c0 Delete type=0 #312
|
||||
2026/01/10-22:35:10.931688 7fd4627fc6c0 Level-0 table #317: started
|
||||
2026/01/10-22:35:10.931718 7fd4627fc6c0 Level-0 table #317: 0 bytes OK
|
||||
2026/01/10-22:35:10.937843 7fd4627fc6c0 Delete type=0 #315
|
||||
2026/01/10-22:35:10.938011 7fd4627fc6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.938033 7fd4627fc6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.912760 7f152abfd6c0 Recovering log #340
|
||||
2026/01/21-10:53:45.922870 7f152abfd6c0 Delete type=3 #338
|
||||
2026/01/21-10:53:45.922940 7f152abfd6c0 Delete type=0 #340
|
||||
2026/01/21-10:54:50.741159 7f1529bfb6c0 Level-0 table #345: started
|
||||
2026/01/21-10:54:50.741200 7f1529bfb6c0 Level-0 table #345: 0 bytes OK
|
||||
2026/01/21-10:54:50.777875 7f1529bfb6c0 Delete type=0 #343
|
||||
2026/01/21-10:54:50.900993 7f1529bfb6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:50.901062 7f1529bfb6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.866020 7fd4637fe6c0 Recovering log #308
|
||||
2026/01/10-16:36:53.876591 7fd4637fe6c0 Delete type=3 #306
|
||||
2026/01/10-16:36:53.876659 7fd4637fe6c0 Delete type=0 #308
|
||||
2026/01/10-17:13:09.451819 7fd4627fc6c0 Level-0 table #313: started
|
||||
2026/01/10-17:13:09.451873 7fd4627fc6c0 Level-0 table #313: 0 bytes OK
|
||||
2026/01/10-17:13:09.459165 7fd4627fc6c0 Delete type=0 #311
|
||||
2026/01/10-17:13:09.465661 7fd4627fc6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.465741 7fd4627fc6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.165803 7f152b3fe6c0 Recovering log #336
|
||||
2026/01/21-10:43:50.175695 7f152b3fe6c0 Delete type=3 #334
|
||||
2026/01/21-10:43:50.175747 7f152b3fe6c0 Delete type=0 #336
|
||||
2026/01/21-10:46:58.329532 7f1529bfb6c0 Level-0 table #341: started
|
||||
2026/01/21-10:46:58.329569 7f1529bfb6c0 Level-0 table #341: 0 bytes OK
|
||||
2026/01/21-10:46:58.336457 7f1529bfb6c0 Delete type=0 #339
|
||||
2026/01/21-10:46:58.336659 7f1529bfb6c0 Manual compaction at level-0 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.336676 7f1529bfb6c0 Manual compaction at level-1 from '!folders!FBCujRu055QLePB2' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000308
|
||||
MANIFEST-000336
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.442425 7fd478fff6c0 Recovering log #306
|
||||
2026/01/10-17:13:21.453357 7fd478fff6c0 Delete type=3 #304
|
||||
2026/01/10-17:13:21.453438 7fd478fff6c0 Delete type=0 #306
|
||||
2026/01/10-22:35:10.950222 7fd4627fc6c0 Level-0 table #311: started
|
||||
2026/01/10-22:35:10.950248 7fd4627fc6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/01/10-22:35:10.957326 7fd4627fc6c0 Delete type=0 #309
|
||||
2026/01/10-22:35:10.963639 7fd4627fc6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.963675 7fd4627fc6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.937902 7f152b3fe6c0 Recovering log #334
|
||||
2026/01/21-10:53:45.949011 7f152b3fe6c0 Delete type=3 #332
|
||||
2026/01/21-10:53:45.949063 7f152b3fe6c0 Delete type=0 #334
|
||||
2026/01/21-10:54:50.863087 7f1529bfb6c0 Level-0 table #339: started
|
||||
2026/01/21-10:54:50.863116 7f1529bfb6c0 Level-0 table #339: 0 bytes OK
|
||||
2026/01/21-10:54:50.900818 7f1529bfb6c0 Delete type=0 #337
|
||||
2026/01/21-10:54:50.901029 7f1529bfb6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:50.901057 7f1529bfb6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.901069 7fd462ffd6c0 Recovering log #302
|
||||
2026/01/10-16:36:53.911601 7fd462ffd6c0 Delete type=3 #300
|
||||
2026/01/10-16:36:53.911674 7fd462ffd6c0 Delete type=0 #302
|
||||
2026/01/10-17:13:09.445468 7fd4627fc6c0 Level-0 table #307: started
|
||||
2026/01/10-17:13:09.445527 7fd4627fc6c0 Level-0 table #307: 0 bytes OK
|
||||
2026/01/10-17:13:09.451617 7fd4627fc6c0 Delete type=0 #305
|
||||
2026/01/10-17:13:09.465640 7fd4627fc6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.465701 7fd4627fc6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.191071 7f152bbff6c0 Recovering log #330
|
||||
2026/01/21-10:43:50.201148 7f152bbff6c0 Delete type=3 #328
|
||||
2026/01/21-10:43:50.201234 7f152bbff6c0 Delete type=0 #330
|
||||
2026/01/21-10:46:58.308832 7f1529bfb6c0 Level-0 table #335: started
|
||||
2026/01/21-10:46:58.308870 7f1529bfb6c0 Level-0 table #335: 0 bytes OK
|
||||
2026/01/21-10:46:58.315278 7f1529bfb6c0 Delete type=0 #333
|
||||
2026/01/21-10:46:58.336631 7f1529bfb6c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.336665 7f1529bfb6c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000026
|
||||
MANIFEST-000054
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.571878 7fd462ffd6c0 Recovering log #24
|
||||
2026/01/10-17:13:21.582771 7fd462ffd6c0 Delete type=3 #22
|
||||
2026/01/10-17:13:21.582857 7fd462ffd6c0 Delete type=0 #24
|
||||
2026/01/10-22:35:10.976802 7fd4627fc6c0 Level-0 table #29: started
|
||||
2026/01/10-22:35:10.976847 7fd4627fc6c0 Level-0 table #29: 0 bytes OK
|
||||
2026/01/10-22:35:10.983280 7fd4627fc6c0 Delete type=0 #27
|
||||
2026/01/10-22:35:10.989948 7fd4627fc6c0 Manual compaction at level-0 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.989976 7fd4627fc6c0 Manual compaction at level-1 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:46.057066 7f152bbff6c0 Recovering log #52
|
||||
2026/01/21-10:53:46.067412 7f152bbff6c0 Delete type=3 #50
|
||||
2026/01/21-10:53:46.067481 7f152bbff6c0 Delete type=0 #52
|
||||
2026/01/21-10:54:51.154446 7f1529bfb6c0 Level-0 table #57: started
|
||||
2026/01/21-10:54:51.154494 7f1529bfb6c0 Level-0 table #57: 0 bytes OK
|
||||
2026/01/21-10:54:51.189974 7f1529bfb6c0 Delete type=0 #55
|
||||
2026/01/21-10:54:51.190106 7f1529bfb6c0 Manual compaction at level-0 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.190265 7f1529bfb6c0 Manual compaction at level-1 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:54.053637 7fd4637fe6c0 Recovering log #20
|
||||
2026/01/10-16:36:54.063508 7fd4637fe6c0 Delete type=3 #18
|
||||
2026/01/10-16:36:54.063638 7fd4637fe6c0 Delete type=0 #20
|
||||
2026/01/10-17:13:09.505493 7fd4627fc6c0 Level-0 table #25: started
|
||||
2026/01/10-17:13:09.505547 7fd4627fc6c0 Level-0 table #25: 0 bytes OK
|
||||
2026/01/10-17:13:09.512124 7fd4627fc6c0 Delete type=0 #23
|
||||
2026/01/10-17:13:09.518599 7fd4627fc6c0 Manual compaction at level-0 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.518680 7fd4627fc6c0 Manual compaction at level-1 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.312683 7f152b3fe6c0 Recovering log #48
|
||||
2026/01/21-10:43:50.322328 7f152b3fe6c0 Delete type=3 #46
|
||||
2026/01/21-10:43:50.322376 7f152b3fe6c0 Delete type=0 #48
|
||||
2026/01/21-10:46:58.384370 7f1529bfb6c0 Level-0 table #53: started
|
||||
2026/01/21-10:46:58.384393 7f1529bfb6c0 Level-0 table #53: 0 bytes OK
|
||||
2026/01/21-10:46:58.391260 7f1529bfb6c0 Delete type=0 #51
|
||||
2026/01/21-10:46:58.391418 7f1529bfb6c0 Manual compaction at level-0 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.391443 7f1529bfb6c0 Manual compaction at level-1 from '!journal!QZDy8zwSVh7t4meA' @ 72057594037927935 : 1 .. '!journal.pages!QZDy8zwSVh7t4meA.gdXBDBkPlBjfmTy7' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000112
|
||||
MANIFEST-000140
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.484535 7fd478fff6c0 Recovering log #110
|
||||
2026/01/10-17:13:21.495192 7fd478fff6c0 Delete type=3 #108
|
||||
2026/01/10-17:13:21.495268 7fd478fff6c0 Delete type=0 #110
|
||||
2026/01/10-22:35:10.938160 7fd4627fc6c0 Level-0 table #115: started
|
||||
2026/01/10-22:35:10.938192 7fd4627fc6c0 Level-0 table #115: 0 bytes OK
|
||||
2026/01/10-22:35:10.944117 7fd4627fc6c0 Delete type=0 #113
|
||||
2026/01/10-22:35:10.963606 7fd4627fc6c0 Manual compaction at level-0 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.963664 7fd4627fc6c0 Manual compaction at level-1 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:45.976776 7f152b3fe6c0 Recovering log #138
|
||||
2026/01/21-10:53:45.987431 7f152b3fe6c0 Delete type=3 #136
|
||||
2026/01/21-10:53:45.987486 7f152b3fe6c0 Delete type=0 #138
|
||||
2026/01/21-10:54:51.007181 7f1529bfb6c0 Level-0 table #143: started
|
||||
2026/01/21-10:54:51.007212 7f1529bfb6c0 Level-0 table #143: 0 bytes OK
|
||||
2026/01/21-10:54:51.044437 7f1529bfb6c0 Delete type=0 #141
|
||||
2026/01/21-10:54:51.044577 7f1529bfb6c0 Manual compaction at level-0 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.044600 7f1529bfb6c0 Manual compaction at level-1 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.954476 7fd462ffd6c0 Recovering log #105
|
||||
2026/01/10-16:36:53.964579 7fd462ffd6c0 Delete type=3 #103
|
||||
2026/01/10-16:36:53.964711 7fd462ffd6c0 Delete type=0 #105
|
||||
2026/01/10-17:13:09.485886 7fd4627fc6c0 Level-0 table #111: started
|
||||
2026/01/10-17:13:09.485937 7fd4627fc6c0 Level-0 table #111: 0 bytes OK
|
||||
2026/01/10-17:13:09.492028 7fd4627fc6c0 Delete type=0 #109
|
||||
2026/01/10-17:13:09.492315 7fd4627fc6c0 Manual compaction at level-0 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.492345 7fd4627fc6c0 Manual compaction at level-1 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.227772 7f152abfd6c0 Recovering log #134
|
||||
2026/01/21-10:43:50.237335 7f152abfd6c0 Delete type=3 #132
|
||||
2026/01/21-10:43:50.237395 7f152abfd6c0 Delete type=0 #134
|
||||
2026/01/21-10:46:58.343808 7f1529bfb6c0 Level-0 table #139: started
|
||||
2026/01/21-10:46:58.343835 7f1529bfb6c0 Level-0 table #139: 0 bytes OK
|
||||
2026/01/21-10:46:58.350098 7f1529bfb6c0 Delete type=0 #137
|
||||
2026/01/21-10:46:58.364021 7f1529bfb6c0 Manual compaction at level-0 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.364061 7f1529bfb6c0 Manual compaction at level-1 from '!folders!5pCYN0vTiCKOHrXM' @ 72057594037927935 : 1 .. '!items!zbZ88BQkH9ZCYlDK' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000309
|
||||
MANIFEST-000337
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.514326 7fd4637fe6c0 Recovering log #307
|
||||
2026/01/10-17:13:21.524571 7fd4637fe6c0 Delete type=3 #305
|
||||
2026/01/10-17:13:21.524713 7fd4637fe6c0 Delete type=0 #307
|
||||
2026/01/10-22:35:10.957462 7fd4627fc6c0 Level-0 table #312: started
|
||||
2026/01/10-22:35:10.957496 7fd4627fc6c0 Level-0 table #312: 0 bytes OK
|
||||
2026/01/10-22:35:10.963461 7fd4627fc6c0 Delete type=0 #310
|
||||
2026/01/10-22:35:10.963651 7fd4627fc6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.963700 7fd4627fc6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:46.003247 7f152abfd6c0 Recovering log #335
|
||||
2026/01/21-10:53:46.013653 7f152abfd6c0 Delete type=3 #333
|
||||
2026/01/21-10:53:46.013722 7f152abfd6c0 Delete type=0 #335
|
||||
2026/01/21-10:54:50.968627 7f1529bfb6c0 Level-0 table #340: started
|
||||
2026/01/21-10:54:50.968655 7f1529bfb6c0 Level-0 table #340: 0 bytes OK
|
||||
2026/01/21-10:54:51.007062 7f1529bfb6c0 Delete type=0 #338
|
||||
2026/01/21-10:54:51.044568 7f1529bfb6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.044607 7f1529bfb6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:53.985018 7fd463fff6c0 Recovering log #303
|
||||
2026/01/10-16:36:53.995735 7fd463fff6c0 Delete type=3 #301
|
||||
2026/01/10-16:36:53.995805 7fd463fff6c0 Delete type=0 #303
|
||||
2026/01/10-17:13:09.498747 7fd4627fc6c0 Level-0 table #308: started
|
||||
2026/01/10-17:13:09.498805 7fd4627fc6c0 Level-0 table #308: 0 bytes OK
|
||||
2026/01/10-17:13:09.505290 7fd4627fc6c0 Delete type=0 #306
|
||||
2026/01/10-17:13:09.518578 7fd4627fc6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.518661 7fd4627fc6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.253598 7f152a3fc6c0 Recovering log #331
|
||||
2026/01/21-10:43:50.263729 7f152a3fc6c0 Delete type=3 #329
|
||||
2026/01/21-10:43:50.263795 7f152a3fc6c0 Delete type=0 #331
|
||||
2026/01/21-10:46:58.357700 7f1529bfb6c0 Level-0 table #336: started
|
||||
2026/01/21-10:46:58.357727 7f1529bfb6c0 Level-0 table #336: 0 bytes OK
|
||||
2026/01/21-10:46:58.363871 7f1529bfb6c0 Delete type=0 #334
|
||||
2026/01/21-10:46:58.364050 7f1529bfb6c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.364080 7f1529bfb6c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000306
|
||||
MANIFEST-000334
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/01/10-17:13:21.543192 7fd463fff6c0 Recovering log #304
|
||||
2026/01/10-17:13:21.553430 7fd463fff6c0 Delete type=3 #302
|
||||
2026/01/10-17:13:21.553529 7fd463fff6c0 Delete type=0 #304
|
||||
2026/01/10-22:35:10.970109 7fd4627fc6c0 Level-0 table #309: started
|
||||
2026/01/10-22:35:10.970150 7fd4627fc6c0 Level-0 table #309: 0 bytes OK
|
||||
2026/01/10-22:35:10.976638 7fd4627fc6c0 Delete type=0 #307
|
||||
2026/01/10-22:35:10.989936 7fd4627fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:46.029848 7f152a3fc6c0 Recovering log #332
|
||||
2026/01/21-10:53:46.039745 7f152a3fc6c0 Delete type=3 #330
|
||||
2026/01/21-10:53:46.039809 7f152a3fc6c0 Delete type=0 #332
|
||||
2026/01/21-10:54:51.044679 7f1529bfb6c0 Level-0 table #337: started
|
||||
2026/01/21-10:54:51.044730 7f1529bfb6c0 Level-0 table #337: 0 bytes OK
|
||||
2026/01/21-10:54:51.075139 7f1529bfb6c0 Delete type=0 #335
|
||||
2026/01/21-10:54:51.190078 7f1529bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/01/10-16:36:54.016444 7fd4637fe6c0 Recovering log #300
|
||||
2026/01/10-16:36:54.027547 7fd4637fe6c0 Delete type=3 #298
|
||||
2026/01/10-16:36:54.027611 7fd4637fe6c0 Delete type=0 #300
|
||||
2026/01/10-17:13:09.465917 7fd4627fc6c0 Level-0 table #305: started
|
||||
2026/01/10-17:13:09.465950 7fd4627fc6c0 Level-0 table #305: 0 bytes OK
|
||||
2026/01/10-17:13:09.471878 7fd4627fc6c0 Delete type=0 #303
|
||||
2026/01/10-17:13:09.492251 7fd4627fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.279117 7f152b3fe6c0 Recovering log #328
|
||||
2026/01/21-10:43:50.289888 7f152b3fe6c0 Delete type=3 #326
|
||||
2026/01/21-10:43:50.289946 7f152b3fe6c0 Delete type=0 #328
|
||||
2026/01/21-10:46:58.370955 7f1529bfb6c0 Level-0 table #333: started
|
||||
2026/01/21-10:46:58.370994 7f1529bfb6c0 Level-0 table #333: 0 bytes OK
|
||||
2026/01/21-10:46:58.377870 7f1529bfb6c0 Delete type=0 #331
|
||||
2026/01/21-10:46:58.391392 7f1529bfb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000277
|
||||
MANIFEST-000305
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-17:13:21.556875 7fd4637fe6c0 Recovering log #275
|
||||
2026/01/10-17:13:21.568002 7fd4637fe6c0 Delete type=3 #273
|
||||
2026/01/10-17:13:21.568079 7fd4637fe6c0 Delete type=0 #275
|
||||
2026/01/10-22:35:10.983465 7fd4627fc6c0 Level-0 table #280: started
|
||||
2026/01/10-22:35:10.983518 7fd4627fc6c0 Level-0 table #280: 0 bytes OK
|
||||
2026/01/10-22:35:10.989758 7fd4627fc6c0 Delete type=0 #278
|
||||
2026/01/10-22:35:10.989959 7fd4627fc6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-22:35:10.989984 7fd4627fc6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:53:46.042639 7f152abfd6c0 Recovering log #303
|
||||
2026/01/21-10:53:46.053450 7f152abfd6c0 Delete type=3 #301
|
||||
2026/01/21-10:53:46.053514 7f152abfd6c0 Delete type=0 #303
|
||||
2026/01/21-10:54:51.119771 7f1529bfb6c0 Level-0 table #308: started
|
||||
2026/01/21-10:54:51.119820 7f1529bfb6c0 Level-0 table #308: 0 bytes OK
|
||||
2026/01/21-10:54:51.154290 7f1529bfb6c0 Delete type=0 #306
|
||||
2026/01/21-10:54:51.190098 7f1529bfb6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:54:51.190281 7f1529bfb6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/01/10-16:36:54.030870 7fd463fff6c0 Recovering log #271
|
||||
2026/01/10-16:36:54.048804 7fd463fff6c0 Delete type=3 #269
|
||||
2026/01/10-16:36:54.048881 7fd463fff6c0 Delete type=0 #271
|
||||
2026/01/10-17:13:09.512260 7fd4627fc6c0 Level-0 table #276: started
|
||||
2026/01/10-17:13:09.512293 7fd4627fc6c0 Level-0 table #276: 0 bytes OK
|
||||
2026/01/10-17:13:09.518322 7fd4627fc6c0 Delete type=0 #274
|
||||
2026/01/10-17:13:09.518622 7fd4627fc6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2026/01/10-17:13:09.518702 7fd4627fc6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:43:50.292479 7f152a3fc6c0 Recovering log #299
|
||||
2026/01/21-10:43:50.302752 7f152a3fc6c0 Delete type=3 #297
|
||||
2026/01/21-10:43:50.302832 7f152a3fc6c0 Delete type=0 #299
|
||||
2026/01/21-10:46:58.377980 7f1529bfb6c0 Level-0 table #304: started
|
||||
2026/01/21-10:46:58.378008 7f1529bfb6c0 Level-0 table #304: 0 bytes OK
|
||||
2026/01/21-10:46:58.384246 7f1529bfb6c0 Delete type=0 #302
|
||||
2026/01/21-10:46:58.391407 7f1529bfb6c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2026/01/21-10:46:58.391435 7f1529bfb6c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -465,9 +465,9 @@ table {
|
||||
font-weight: bold;
|
||||
}
|
||||
.fvtt-les-heritiers .items-list .item {
|
||||
height: 30px;
|
||||
line-height: 24px;
|
||||
padding: 1px 0;
|
||||
height: 24px;
|
||||
line-height: 20px;
|
||||
padding: 0;
|
||||
border-bottom: 1px solid #BBB;
|
||||
}
|
||||
.fvtt-les-heritiers .items-list .item .item-image {
|
||||
@@ -614,7 +614,7 @@ nav.sheet-tabs .item:after {
|
||||
/* AppV2 Actor Sheets - Tabs with scrolling */
|
||||
.fvtt-les-heritiers.actor .tab[data-tab] {
|
||||
display: none;
|
||||
padding: 0.5rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
overflow-y: auto;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
@@ -623,7 +623,7 @@ nav.sheet-tabs .item:after {
|
||||
}
|
||||
/* Redesigned skill category headers */
|
||||
.fvtt-les-heritiers.actor .sheet-box {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
.fvtt-les-heritiers.actor .items-title-text {
|
||||
font-size: 0.95rem;
|
||||
@@ -2005,31 +2005,31 @@ h4.entry-name.document-name {
|
||||
min-width: 9rem;
|
||||
}
|
||||
.item-field-label-short {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 4rem;
|
||||
min-width: 4rem;
|
||||
}
|
||||
.item-field-label-short-num {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 2rem;
|
||||
min-width: 2rem;
|
||||
}
|
||||
.item-field-label-medium {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 6rem;
|
||||
min-width: 6rem;
|
||||
}
|
||||
.item-field-label-long {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 8rem;
|
||||
min-width: 8rem;
|
||||
}
|
||||
.item-field-label-long2 {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 14rem;
|
||||
min-width: 14rem;
|
||||
@@ -2039,7 +2039,7 @@ h4.entry-name.document-name {
|
||||
min-width: 16rem;
|
||||
}
|
||||
.item-field-label-long3 {
|
||||
padding-top: 6px;
|
||||
padding-top: 2px;
|
||||
flex-grow: 1;
|
||||
max-width: 20rem;
|
||||
min-width: 20rem;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -82,7 +82,7 @@
|
||||
"units": "m"
|
||||
},
|
||||
"license": "LICENSE.txt",
|
||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
|
||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/releases/download/latest/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-13.0.7.zip",
|
||||
"languages": [
|
||||
{
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{actor.img}}" data-action="editImage" title="{{actor.name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name" {{#if isPlayMode}}disabled{{/if}} /></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name" /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
|
||||
@@ -1,547 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
|
||||
{{!-- Sheet Header --}}
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields background-sheet-header">
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{actor.img}}" data-action="editImage" title="{{actor.name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name" {{#if isPlayMode}}disabled{{/if}} /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "physical")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "mental")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<label class="item-field-label-short">PV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{selectOptions config.statutMasque selected=system.statutmasque}}
|
||||
</select>
|
||||
|
||||
<span> </span>
|
||||
<label class="item-field-label-short">Tricherie</label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.tricherie.max" value="{{system.rang.tricherie.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="atouts">Atouts&Matériel</a>
|
||||
<a class="item" data-tab="combat">Combat</a>
|
||||
<a class="item" data-tab="notes">Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{!-- Competence Tab --}}
|
||||
<div class="tab competences" data-group="primary" data-tab="competences">
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="grid-2col">
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.hbs skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.hbs skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-field-label-long2">
|
||||
<h3><label class="items-title-text">Compétences Futiles</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each futileSkills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
|
||||
<select class="item-field-label-short edit-item-data" type="text"
|
||||
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
||||
</select>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<li class="item flexrow " >
|
||||
<h2>Magie</h3>
|
||||
</li>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="item-field-label-short"
|
||||
data-rang-key="feerie">Point d'Ame</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.value"
|
||||
value="{{system.magie.pointsame.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.max"
|
||||
value="{{system.magie.pointsame.max}}" data-dtype="Number" {{#if issGM}} {{else}} disabled {{/if}} />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#each magieList as |magie idx|}}
|
||||
<li class="item flexrow " data-item-id="{{magie.competence._id}}" data-item-type="competence">
|
||||
<h2 class="flexrow"><label class="items-title-text "><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{magie.name}} {{magie.competence.system.niveau}} </a> </label>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</h2>
|
||||
</li>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Nom du sort</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="sort" title="Ajouter un sort"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-medium"><strong>Esquive</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Rés. physique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-long">Rés. psychique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Protection : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Effets secondaires</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||
<label class="item-field-label-long">Dissimulation : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long"><strong>Corps à Corps</strong></label>
|
||||
<label class="item-field-label-medium">Masqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.demasquee" value="{{system.combat.corpsacorps.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long"><strong>A distance</strong></label>
|
||||
<label class="item-field-label-medium">Masqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each armes as |arme key|}}
|
||||
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
|
||||
<img class="item-name-img" src="{{arme.img}}" />
|
||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{arme.system.degats}}
|
||||
</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Equipé">{{#if arme.system.equipped}}<i
|
||||
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Protections</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Protection</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each protections as |protection key|}}
|
||||
<li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
|
||||
<img class="item-name-img" src="{{protection.img}}" />
|
||||
<span class="item-name-label competence-name">{{protection.name}}</span>
|
||||
<span class="item-field-label-short arme-defensif"><label
|
||||
class="arme-defensif">{{protection.system.protection}}</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{!-- atouts Tab --}}
|
||||
<div class="tab atouts" data-group="primary" data-tab="atouts">
|
||||
|
||||
<div class="flexrow">
|
||||
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{fee.img}}" />
|
||||
<span class="item-field-label-long2">{{fee.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup. P. d'Usage</a></label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Avantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each avantages as |avantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{avantage.img}}" />
|
||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Désavantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="desavantage" title="Ajouter un Désavantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each desavantages as |desavantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
|
||||
<img class="item-name-img" src="{{desavantage.img}}" />
|
||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Atouts Féériques</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un Atout féerique"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each atouts as |atout key|}}
|
||||
<li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
|
||||
<img class="item-name-img" src="{{atout.img}}" />
|
||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Pouvoirs</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Masque</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Usage</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each pouvoirs as |pouvoir key|}}
|
||||
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
||||
<img class="item-name-img" src="{{pouvoir.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
|
||||
<span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Capacités Naturelles</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une Capacité naturelle"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
<li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
|
||||
<img class="item-name-img" src="{{capa.img}}" />
|
||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each equipements as |equip key|}}
|
||||
<li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
|
||||
<img class="item-name-img" src="{{equip.img}}" />
|
||||
<span class="item-field-label-long2">{{equip.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
<span>
|
||||
<h3>Historique</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,547 +0,0 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
|
||||
{{!-- Sheet Header --}}
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields background-sheet-header">
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "physical")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "mental")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<label class="item-field-label-short">PV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{selectOptions config.statutMasque selected=system.statutmasque}}
|
||||
</select>
|
||||
|
||||
<span> </span>
|
||||
<label class="item-field-label-short">Tricherie</label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.tricherie.max" value="{{system.rang.tricherie.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="atouts">Atouts&Matériel</a>
|
||||
<a class="item" data-tab="combat">Combat</a>
|
||||
<a class="item" data-tab="notes">Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{!-- Competence Tab --}}
|
||||
<div class="tab competences" data-group="primary" data-tab="competences">
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="grid-2col">
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-field-label-long2">
|
||||
<h3><label class="items-title-text">Compétences Futiles</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each futileSkills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
|
||||
<select class="item-field-label-short edit-item-data" type="text"
|
||||
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
||||
</select>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<li class="item flexrow " >
|
||||
<h2>Magie</h3>
|
||||
</li>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="item-field-label-short"
|
||||
data-rang-key="feerie">Point d'Ame</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.value"
|
||||
value="{{system.magie.pointsame.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.max"
|
||||
value="{{system.magie.pointsame.max}}" data-dtype="Number" {{#if issGM}} {{else}} disabled {{/if}} />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#each magieList as |magie idx|}}
|
||||
<li class="item flexrow " data-item-id="{{magie.competence._id}}" data-item-type="competence">
|
||||
<h2 class="flexrow"><label class="items-title-text "><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{magie.name}} {{magie.competence.system.niveau}} </a> </label>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</h2>
|
||||
</li>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Nom du sort</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="sort" title="Ajouter un sort"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-medium"><strong>Esquive</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Rés. physique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-long">Rés. psychique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Protection : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Effets secondaires</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||
<label class="item-field-label-long">Dissimulation : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long"><strong>Corps à Corps</strong></label>
|
||||
<label class="item-field-label-medium">Masqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.demasquee" value="{{system.combat.corpsacorps.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long"><strong>A distance</strong></label>
|
||||
<label class="item-field-label-medium">Masqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each armes as |arme key|}}
|
||||
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
|
||||
<img class="item-name-img" src="{{arme.img}}" />
|
||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{arme.system.degats}}
|
||||
</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Equipé">{{#if arme.system.equipped}}<i
|
||||
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Protections</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Protection</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each protections as |protection key|}}
|
||||
<li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
|
||||
<img class="item-name-img" src="{{protection.img}}" />
|
||||
<span class="item-name-label competence-name">{{protection.name}}</span>
|
||||
<span class="item-field-label-short arme-defensif"><label
|
||||
class="arme-defensif">{{protection.system.protection}}</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{!-- atouts Tab --}}
|
||||
<div class="tab atouts" data-group="primary" data-tab="atouts">
|
||||
|
||||
<div class="flexrow">
|
||||
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{fee.img}}" />
|
||||
<span class="item-field-label-long2">{{fee.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup. P. d'Usage</a></label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Avantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each avantages as |avantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{avantage.img}}" />
|
||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Désavantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="desavantage" title="Ajouter un Désavantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each desavantages as |desavantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
|
||||
<img class="item-name-img" src="{{desavantage.img}}" />
|
||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Atouts Féériques</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un Atout féerique"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each atouts as |atout key|}}
|
||||
<li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
|
||||
<img class="item-name-img" src="{{atout.img}}" />
|
||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Pouvoirs</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Masque</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Usage</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each pouvoirs as |pouvoir key|}}
|
||||
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
||||
<img class="item-name-img" src="{{pouvoir.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
|
||||
<span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Capacités Naturelles</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une Capacité naturelle"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
<li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
|
||||
<img class="item-name-img" src="{{capa.img}}" />
|
||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each equipements as |equip key|}}
|
||||
<li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
|
||||
<img class="item-name-img" src="{{equip.img}}" />
|
||||
<span class="item-field-label-long2">{{equip.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
<span>
|
||||
<h3>Historique</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{actor.img}}" data-action="editImage" title="{{actor.name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name" {{#if isPlayMode}}disabled{{/if}} /></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name" /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
|
||||
@@ -1,948 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
|
||||
{{!-- Sheet Header --}}
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields background-sheet-header">
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{actor.img}}" data-action="editImage" title="{{actor.name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name" {{#if isPlayMode}}disabled{{/if}} /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "physical")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac"
|
||||
data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" data-tooltip="Valeur actuelle" value="{{carac.value}}"
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" data-tooltip="Rang" value="{{carac.rang}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "mental")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac"
|
||||
data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-tooltip="Valeur actuelle"
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-tooltip="Rang"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<label class="item-field-label-short">PV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}"
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" disabled
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.mod" value="{{system.pv.mod}}"
|
||||
data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque"
|
||||
value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{selectOptions config.statutMasque selected=system.statutmasque}}
|
||||
</select>
|
||||
|
||||
<span> </span>
|
||||
<label class="item-field-label-short">Tricherie</label>
|
||||
<input type="text" class="item-field-label-short-num" name="system.rang.tricherie.value"
|
||||
value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short-num" name="system.rang.tricherie.max"
|
||||
value="{{system.rang.tricherie.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="fee">Fée</a>
|
||||
{{#if system.biodata.magie}}
|
||||
<a class="item" data-tab="magie">Magie</a>
|
||||
{{/if}}
|
||||
<a class="item" data-tab="combat">Combat</a>
|
||||
<a class="item" data-tab="equipement">Equipement</a>
|
||||
<a class="item" data-tab="contact">Contacts</a>
|
||||
<a class="item" data-tab="biodata">Bio</a>
|
||||
<a class="item" data-tab="notes">Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{!-- Competence Tab --}}
|
||||
<div class="tab competences" data-group="primary" data-tab="competences">
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="grid-2col">
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.hbs skillDef=skillDef keyProfil=keyProfil
|
||||
config=config}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.hbs skillDef=skillDef keyProfil=keyProfil
|
||||
config=config}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-field-label-long2">
|
||||
<h3><label class="items-title-text">Compétences Futiles</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="competence" title="Ajouter une compétence futile"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each futileSkills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
|
||||
<select class="item-field-label-short edit-item-data" type="text" data-item-field="niveau"
|
||||
value="{{skill.system.niveau}}" data-dtype="Number">
|
||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
||||
</select>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-medium"><strong>Esquive</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee"
|
||||
value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee"
|
||||
value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee"
|
||||
value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee"
|
||||
value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Rés. physique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value"
|
||||
value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-long">Rés. psychique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value"
|
||||
value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-medium">Protection : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value"
|
||||
value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Effets secondaires</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires"
|
||||
value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-long">Dissimulation : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value"
|
||||
value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each armes as |arme key|}}
|
||||
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
|
||||
<img class="item-name-img" src="{{arme.img}}" />
|
||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{arme.system.degats}}
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-arme button-sheet-roll">Attaque</button>
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-assomer-arme button-sheet-roll">Assommer</button>
|
||||
</span>
|
||||
|
||||
{{#if arme.system.isMelee}}
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-charge-arme button-sheet-roll">Charger</button>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-brutale-arme button-sheet-roll button-sheet-roll-long1">Attaque
|
||||
brutale</button>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Equipé">{{#if arme.system.equipped}}<i
|
||||
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Protections</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Protection</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each protections as |protection key|}}
|
||||
<li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
|
||||
<img class="item-name-img" src="{{protection.img}}" />
|
||||
<span class="item-name-label competence-name">{{protection.name}}</span>
|
||||
<span class="item-field-label-short arme-defensif"><label
|
||||
class="arme-defensif">{{protection.system.protection}}</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{!-- Fee Tab --}}
|
||||
<div class="tab fee" data-group="primary" data-tab="fee">
|
||||
|
||||
<div class="flexrow">
|
||||
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{fee.img}}" />
|
||||
<span class="item-field-label-long2">{{fee.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short"
|
||||
data-rang-key="feerie">Féerie</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value"
|
||||
value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max"
|
||||
value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short"
|
||||
data-rang-key="masque">Masque</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value"
|
||||
value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max"
|
||||
value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup.
|
||||
P. d'Usage</a></label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Avantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each avantages as |avantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{avantage.img}}" />
|
||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Désavantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="desavantage" title="Ajouter un désavantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each desavantages as |desavantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
|
||||
<img class="item-name-img" src="{{desavantage.img}}" />
|
||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Atouts Féériques</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un atout féerique"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each atouts as |atout key|}}
|
||||
<li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
|
||||
<img class="item-name-img" src="{{atout.img}}" />
|
||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Pouvoirs</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Masque</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Usage</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each pouvoirs as |pouvoir key|}}
|
||||
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
||||
<img class="item-name-img" src="{{pouvoir.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
|
||||
<span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Capacités Naturelles</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une capacité naturelle"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
<li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
|
||||
<img class="item-name-img" src="{{capa.img}}" />
|
||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Magie Tab --}}
|
||||
<div class="tab magie" data-group="primary" data-tab="magie">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style">Point d'Ame</label>
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.value"
|
||||
value="{{system.magie.pointsame.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.max"
|
||||
value="{{system.magie.pointsame.max}}" data-dtype="Number" {{#if isGM}} {{else}} disabled {{/if}} />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#each magieList as |magie idx|}}
|
||||
<li class="item flexrow " data-item-id="{{magie.competence._id}}" data-item-type="competence">
|
||||
<h3 class="flexrow"><label class="items-title-text "><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{magie.name}} {{magie.competence.system.niveau}} </a> </label>
|
||||
<!-- <span>Rang : {{magie.rang}}</span> -->
|
||||
<span>{{magie.rangSpecificName}}</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</h3>
|
||||
</li>
|
||||
|
||||
{{#if (eq magie.name "Magie du Clan")}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<h4 class="items-title-text">Souffle de Combat</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts.soufflecombat as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<h4 class="items-title-text">Souffle de Mouvement</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts.soufflemouvement as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
<h4 class="items-title-text">Souffle de l'Esprit</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts.souffleesprit as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab equipement" data-group="primary" data-tab="equipement">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each equipements as |equip key|}}
|
||||
<li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
|
||||
<img class="item-name-img" src="{{equip.img}}" />
|
||||
<span class="item-field-label-long2">{{equip.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{!-- Contact Tab --}}
|
||||
<div class="tab contact" data-group="primary" data-tab="contact">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long3">
|
||||
<h3><label class="items-title-text">Contacts, Allies et Ennemis</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
{{#each contacts as |contactList idx|}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">{{contactList.label}}</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each contactList.list as |contact key|}}
|
||||
<li class="item flexrow " data-item-id="{{contact._id}}" data-item-type="contact">
|
||||
<img class="item-name-img" src="{{contact.img}}" />
|
||||
<span class="item-field-label-long2">{{contact.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Biography Tab --}}
|
||||
<div class="tab biodata" data-group="primary" data-tab="biodata">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Profils</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each profils as |profil key|}}
|
||||
<li class="item flexrow " data-item-id="{{profil._id}}" data-item-type="profil">
|
||||
<img class="item-name-img" src="{{profil.img}}" />
|
||||
<span class="item-field-label-long2">{{profil.name}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst profil.system.profiltype}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div class="grid-2col">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Nom humain</label> <input type="text" class=""
|
||||
name="system.biodata.nomhumain" value="{{system.biodata.nomhumain}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Activités</label> <input type="text" class=""
|
||||
name="system.biodata.activites" value="{{system.biodata.activites}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Apparence masquée</label> <input type="text" class=""
|
||||
name="system.biodata.apparencemasquee" value="{{system.biodata.apparencemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Apparence démasquée</label> <input type="text" class=""
|
||||
name="system.biodata.apparencedemasquee" value="{{system.biodata.apparencedemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Titre et Famille</label> <input type="text" class=""
|
||||
name="system.biodata.titrefamille" value="{{system.biodata.titrefamille}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Factions féériques</label> <input type="text" class=""
|
||||
name="system.biodata.factionfeerique" value="{{system.biodata.factionfeerique}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Traits de caractères dominants</label> <input type="text" class=""
|
||||
name="system.biodata.traitscaracteres" value="{{system.biodata.traitscaracteres}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Langues</label> <input type="text" class=""
|
||||
name="system.biodata.langues" value="{{system.biodata.langues}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-3col">
|
||||
<div>
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Fortune</label>
|
||||
<input type="text" class="" name="system.biodata.fortune" value="{{system.biodata.fortune}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Genre</label>
|
||||
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Age</label>
|
||||
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
{{#if isGM}}
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Fiche de Magie ?</label>
|
||||
<input type="checkbox" class="item-field-label-short edit-item-data" name="system.biodata.magie"
|
||||
{{checked system.biodata.magie}} />
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille Masquée</label>
|
||||
<input type="text" class="" name="system.biodata.taillemasquee" value="{{system.biodata.taillemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille Démasquée</label>
|
||||
<input type="text" class="" name="system.biodata.tailledemasquee"
|
||||
value="{{system.biodata.tailledemasquee}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Type de taille</label>
|
||||
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Points d'héritage</label>
|
||||
<input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Poids Masqué</label>
|
||||
<input type="text" class="" name="system.biodata.poidsmasquee" value="{{system.biodata.poidsmasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Poids Démasqué</label>
|
||||
<input type="text" class="" name="system.biodata.poidsdemasquee"
|
||||
value="{{system.biodata.poidsdemasquee}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP</label>
|
||||
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP pour tricher</label>
|
||||
<input type="text" class="" name="system.experience.pourtricher"
|
||||
value="{{system.experience.pourtricher}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if isGM}}
|
||||
{{#if system.biodata.magie}}
|
||||
<div class="magie-text-helper"><strong>Magie activée : </strong>Glissez/Déplacez la/les compétences de Magie
|
||||
nécessaires
|
||||
depuis le compendium dans l'onglet "Magie", puis faites de même pour les sorts.
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
<span>
|
||||
<h3>Historique</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Notes diverses</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Rêves étranges</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Secrets découverts</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Questions en suspens</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor questions target="system.biodata.questions" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,948 +0,0 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
|
||||
{{!-- Sheet Header --}}
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields background-sheet-header">
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "physical")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac"
|
||||
data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" data-tooltip="Valeur actuelle" value="{{carac.value}}"
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" data-tooltip="Rang" value="{{carac.rang}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "mental")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac"
|
||||
data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-tooltip="Valeur actuelle"
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-tooltip="Rang"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<label class="item-field-label-short">PV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}"
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" disabled
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.mod" value="{{system.pv.mod}}"
|
||||
data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque"
|
||||
value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{selectOptions config.statutMasque selected=system.statutmasque}}
|
||||
</select>
|
||||
|
||||
<span> </span>
|
||||
<label class="item-field-label-short">Tricherie</label>
|
||||
<input type="text" class="item-field-label-short-num" name="system.rang.tricherie.value"
|
||||
value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short-num" name="system.rang.tricherie.max"
|
||||
value="{{system.rang.tricherie.max}}" data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="fee">Fée</a>
|
||||
{{#if system.biodata.magie}}
|
||||
<a class="item" data-tab="magie">Magie</a>
|
||||
{{/if}}
|
||||
<a class="item" data-tab="combat">Combat</a>
|
||||
<a class="item" data-tab="equipement">Equipement</a>
|
||||
<a class="item" data-tab="contact">Contacts</a>
|
||||
<a class="item" data-tab="biodata">Bio</a>
|
||||
<a class="item" data-tab="notes">Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{!-- Competence Tab --}}
|
||||
<div class="tab competences" data-group="primary" data-tab="competences">
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="grid-2col">
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil
|
||||
config=config}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil
|
||||
config=config}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-field-label-long2">
|
||||
<h3><label class="items-title-text">Compétences Futiles</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="competence" title="Ajouter une compétence futile"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each futileSkills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
|
||||
<select class="item-field-label-short edit-item-data" type="text" data-item-field="niveau"
|
||||
value="{{skill.system.niveau}}" data-dtype="Number">
|
||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
||||
</select>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-medium"><strong>Esquive</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee"
|
||||
value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee"
|
||||
value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee"
|
||||
value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee"
|
||||
value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Rés. physique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value"
|
||||
value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-long">Rés. psychique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value"
|
||||
value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-medium">Protection : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value"
|
||||
value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Effets secondaires</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires"
|
||||
value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-long">Dissimulation : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value"
|
||||
value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each armes as |arme key|}}
|
||||
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
|
||||
<img class="item-name-img" src="{{arme.img}}" />
|
||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{arme.system.degats}}
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-arme button-sheet-roll">Attaque</button>
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-assomer-arme button-sheet-roll">Assommer</button>
|
||||
</span>
|
||||
|
||||
{{#if arme.system.isMelee}}
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-charge-arme button-sheet-roll">Charger</button>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-brutale-arme button-sheet-roll button-sheet-roll-long1">Attaque
|
||||
brutale</button>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Equipé">{{#if arme.system.equipped}}<i
|
||||
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Protections</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Protection</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each protections as |protection key|}}
|
||||
<li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
|
||||
<img class="item-name-img" src="{{protection.img}}" />
|
||||
<span class="item-name-label competence-name">{{protection.name}}</span>
|
||||
<span class="item-field-label-short arme-defensif"><label
|
||||
class="arme-defensif">{{protection.system.protection}}</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{!-- Fee Tab --}}
|
||||
<div class="tab fee" data-group="primary" data-tab="fee">
|
||||
|
||||
<div class="flexrow">
|
||||
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{fee.img}}" />
|
||||
<span class="item-field-label-long2">{{fee.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short"
|
||||
data-rang-key="feerie">Féerie</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value"
|
||||
value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max"
|
||||
value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short"
|
||||
data-rang-key="masque">Masque</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value"
|
||||
value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max"
|
||||
value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup.
|
||||
P. d'Usage</a></label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Avantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each avantages as |avantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{avantage.img}}" />
|
||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Désavantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="desavantage" title="Ajouter un désavantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each desavantages as |desavantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
|
||||
<img class="item-name-img" src="{{desavantage.img}}" />
|
||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Atouts Féériques</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un atout féerique"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each atouts as |atout key|}}
|
||||
<li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
|
||||
<img class="item-name-img" src="{{atout.img}}" />
|
||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Pouvoirs</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Masque</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Usage</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each pouvoirs as |pouvoir key|}}
|
||||
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
||||
<img class="item-name-img" src="{{pouvoir.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
|
||||
<span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">Capacités Naturelles</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une capacité naturelle"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
<li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
|
||||
<img class="item-name-img" src="{{capa.img}}" />
|
||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Magie Tab --}}
|
||||
<div class="tab magie" data-group="primary" data-tab="magie">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style">Point d'Ame</label>
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.value"
|
||||
value="{{system.magie.pointsame.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.magie.pointsame.max"
|
||||
value="{{system.magie.pointsame.max}}" data-dtype="Number" {{#if isGM}} {{else}} disabled {{/if}} />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#each magieList as |magie idx|}}
|
||||
<li class="item flexrow " data-item-id="{{magie.competence._id}}" data-item-type="competence">
|
||||
<h3 class="flexrow"><label class="items-title-text "><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{magie.name}} {{magie.competence.system.niveau}} </a> </label>
|
||||
<!-- <span>Rang : {{magie.rang}}</span> -->
|
||||
<span>{{magie.rangSpecificName}}</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</h3>
|
||||
</li>
|
||||
|
||||
{{#if (eq magie.name "Magie du Clan")}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<h4 class="items-title-text">Souffle de Combat</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts.soufflecombat as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<h4 class="items-title-text">Souffle de Mouvement</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts.soufflemouvement as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
<h4 class="items-title-text">Souffle de l'Esprit</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts.souffleesprit as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each sorts as |niveau key|}}
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h4><label class="items-title-text">Niveau {{key}} {{niveau.nomNiveau}}</label></h4>
|
||||
</span>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
{{#if @root.isGM}}
|
||||
<a class="item-control item-add" data-type="sort" data-sort-competence={{magie.name}}
|
||||
title="Ajouter un sort"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{#each niveau.sorts as |sort key|}}
|
||||
<li class="item flexrow " data-item-id="{{sort._id}}" data-item-type="sort">
|
||||
<img class="item-name-img" src="{{sort.img}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-sort">{{sort.name}}</a></span>
|
||||
|
||||
{{#if sort.system.informatif}}
|
||||
<span class="item-field-label-medium">Informatif</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-medium">{{upperFirst sort.system.niveau}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab equipement" data-group="primary" data-tab="equipement">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each equipements as |equip key|}}
|
||||
<li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
|
||||
<img class="item-name-img" src="{{equip.img}}" />
|
||||
<span class="item-field-label-long2">{{equip.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{!-- Contact Tab --}}
|
||||
<div class="tab contact" data-group="primary" data-tab="contact">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long3">
|
||||
<h3><label class="items-title-text">Contacts, Allies et Ennemis</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
{{#each contacts as |contactList idx|}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<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">{{contactList.label}}</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each contactList.list as |contact key|}}
|
||||
<li class="item flexrow " data-item-id="{{contact._id}}" data-item-type="contact">
|
||||
<img class="item-name-img" src="{{contact.img}}" />
|
||||
<span class="item-field-label-long2">{{contact.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Biography Tab --}}
|
||||
<div class="tab biodata" data-group="primary" data-tab="biodata">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Profils</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each profils as |profil key|}}
|
||||
<li class="item flexrow " data-item-id="{{profil._id}}" data-item-type="profil">
|
||||
<img class="item-name-img" src="{{profil.img}}" />
|
||||
<span class="item-field-label-long2">{{profil.name}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst profil.system.profiltype}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div class="grid-2col">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Nom humain</label> <input type="text" class=""
|
||||
name="system.biodata.nomhumain" value="{{system.biodata.nomhumain}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Activités</label> <input type="text" class=""
|
||||
name="system.biodata.activites" value="{{system.biodata.activites}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Apparence masquée</label> <input type="text" class=""
|
||||
name="system.biodata.apparencemasquee" value="{{system.biodata.apparencemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Apparence démasquée</label> <input type="text" class=""
|
||||
name="system.biodata.apparencedemasquee" value="{{system.biodata.apparencedemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Titre et Famille</label> <input type="text" class=""
|
||||
name="system.biodata.titrefamille" value="{{system.biodata.titrefamille}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Factions féériques</label> <input type="text" class=""
|
||||
name="system.biodata.factionfeerique" value="{{system.biodata.factionfeerique}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Traits de caractères dominants</label> <input type="text" class=""
|
||||
name="system.biodata.traitscaracteres" value="{{system.biodata.traitscaracteres}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long2">Langues</label> <input type="text" class=""
|
||||
name="system.biodata.langues" value="{{system.biodata.langues}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-3col">
|
||||
<div>
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Fortune</label>
|
||||
<input type="text" class="" name="system.biodata.fortune" value="{{system.biodata.fortune}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Genre</label>
|
||||
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Age</label>
|
||||
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
{{#if isGM}}
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Fiche de Magie ?</label>
|
||||
<input type="checkbox" class="item-field-label-short edit-item-data" name="system.biodata.magie"
|
||||
{{checked system.biodata.magie}} />
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille Masquée</label>
|
||||
<input type="text" class="" name="system.biodata.taillemasquee" value="{{system.biodata.taillemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille Démasquée</label>
|
||||
<input type="text" class="" name="system.biodata.tailledemasquee"
|
||||
value="{{system.biodata.tailledemasquee}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Type de taille</label>
|
||||
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Points d'héritage</label>
|
||||
<input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Poids Masqué</label>
|
||||
<input type="text" class="" name="system.biodata.poidsmasquee" value="{{system.biodata.poidsmasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Poids Démasqué</label>
|
||||
<input type="text" class="" name="system.biodata.poidsdemasquee"
|
||||
value="{{system.biodata.poidsdemasquee}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP</label>
|
||||
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP pour tricher</label>
|
||||
<input type="text" class="" name="system.experience.pourtricher"
|
||||
value="{{system.experience.pourtricher}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if isGM}}
|
||||
{{#if system.biodata.magie}}
|
||||
<div class="magie-text-helper"><strong>Magie activée : </strong>Glissez/Déplacez la/les compétences de Magie
|
||||
nécessaires
|
||||
depuis le compendium dans l'onglet "Magie", puis faites de même pour les sorts.
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
<span>
|
||||
<h3>Historique</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Notes diverses</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Rêves étranges</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Secrets découverts</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Questions en suspens</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor questions target="system.biodata.questions" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|
||||
@@ -1,30 +0,0 @@
|
||||
<div class="chat-message-header">
|
||||
{{#if actorImg}}
|
||||
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
||||
{{/if}}
|
||||
<h4 class=chat-actor-name>{{alias}}</h4>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if actionImg}}
|
||||
<div>
|
||||
<img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li>Assomer {{defenderName}} en état de : {{etatAssommer}}</li>
|
||||
|
||||
{{#if isSuccess}}
|
||||
<li>Marge : {{marge}}</li>
|
||||
<li>{{defenderName}} est assomé pour {{dureeAssommer}} minutes !</li>
|
||||
{{else}}
|
||||
<li>{{defenderName}} n'a pas été assomé et est conscient la tentative !</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,43 +0,0 @@
|
||||
<div class="chat-message-header">
|
||||
{{#if actorImg}}
|
||||
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
||||
{{/if}}
|
||||
<h4 class=chat-actor-name>{{alias}}</h4>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if actionImg}}
|
||||
<div>
|
||||
<img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li>Défense de {{defenderName}} : {{defenderMode}} ({{defenderValue}})</li>
|
||||
|
||||
{{#if isSuccess}}
|
||||
<li>Marge : {{marge}}</li>
|
||||
<li>Degats de l'arme : {{degatsArme}}</li>
|
||||
|
||||
{{#if (eq attaqueCible "membre")}}
|
||||
<li><strong>Cible un membre : La cible a -2 de malus sur ces actions avec ce membre (mouvement 2 si jambes)</strong>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#if (eq attaqueCible "main")}}
|
||||
<li><strong>Cible une main : La cible ne peut plus utiliser sa main</strong></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if isCriticalSuccess}}
|
||||
<Li>Critique : Aubaine ou +2 aux dégats ci-dessus</li>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<li>Echec face à la {{defenderMode}} !</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,176 +0,0 @@
|
||||
{{!-- Chat Card for Roll Results --}}
|
||||
<div class="heritiers-chat-card">
|
||||
|
||||
{{!-- Header --}}
|
||||
<div class="chat-card-header">
|
||||
{{#if actorImg}}
|
||||
<img class="chat-actor-avatar" src="{{actorImg}}" alt="{{alias}}" />
|
||||
{{/if}}
|
||||
<div class="chat-actor-info">
|
||||
<h4 class="chat-actor-name">{{alias}}</h4>
|
||||
{{#if competence}}
|
||||
<div class="chat-action-name">{{competence.name}}{{#if arme}} - {{arme.name}}{{/if}}</div>
|
||||
{{else if pouvoir}}
|
||||
<div class="chat-action-name">{{pouvoir.name}}</div>
|
||||
{{else if sort}}
|
||||
<div class="chat-action-name">{{sort.name}}</div>
|
||||
{{else if rang}}
|
||||
<div class="chat-action-name">{{rang.label}}</div>
|
||||
{{else}}
|
||||
<div class="chat-action-name">{{carac.label}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if actionImg}}
|
||||
<img class="chat-action-icon" src="{{actionImg}}" alt="{{name}}" />
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{!-- Attack Type Badge --}}
|
||||
{{#if attackType}}
|
||||
<div class="chat-attack-badge">{{attackType}}</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Roll Calculation Grid --}}
|
||||
{{#unless noRoll}}
|
||||
<div class="chat-roll-grid">
|
||||
<div class="chat-roll-item">
|
||||
<span class="chat-roll-label">Carac</span>
|
||||
<span class="chat-roll-value">{{carac.label}} ({{carac.value}})</span>
|
||||
</div>
|
||||
|
||||
{{#if rang}}
|
||||
<div class="chat-roll-item">
|
||||
<span class="chat-roll-label">Rang</span>
|
||||
<span class="chat-roll-value">{{rang.value}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if competence}}
|
||||
<div class="chat-roll-item">
|
||||
<span class="chat-roll-label">Compétence</span>
|
||||
<span class="chat-roll-value">{{competence.system.niveau}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if useSpecialite}}
|
||||
<div class="chat-roll-item">
|
||||
<span class="chat-roll-label">Spécialité</span>
|
||||
<span class="chat-roll-value">+1</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="chat-roll-item">
|
||||
<span class="chat-roll-label">Formule</span>
|
||||
<span class="chat-roll-value">{{diceFormula}}</span>
|
||||
</div>
|
||||
|
||||
<div class="chat-roll-item">
|
||||
<span class="chat-roll-label">Dé</span>
|
||||
<span class="chat-roll-value chat-dice-result">{{diceResult}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
{{!-- Result Display --}}
|
||||
{{#unless noRoll}}
|
||||
<div class="chat-result-box {{#if isSuccess}}success{{else}}{{#if isCriticalFailure}}critical-failure{{else}}failure{{/if}}{{/if}}">
|
||||
<div class="chat-result-total">
|
||||
<span class="chat-result-label">Total</span>
|
||||
<span class="chat-result-number">{{finalResult}}</span>
|
||||
</div>
|
||||
|
||||
{{#if (gt sdValue "-1")}}
|
||||
<div class="chat-result-details">
|
||||
<span>SD: {{sdValue}}</span>
|
||||
<span>Marge: {{marge}}</span>
|
||||
</div>
|
||||
<div class="chat-result-status">
|
||||
{{#if isCriticalSuccess}}
|
||||
<i class="fas fa-star"></i> RÉUSSITE CRITIQUE !
|
||||
{{else if isCriticalFailure}}
|
||||
<i class="fas fa-skull"></i> ÉCHEC CRITIQUE !
|
||||
{{else if isSuccess}}
|
||||
<i class="fas fa-check"></i> Succès
|
||||
{{else}}
|
||||
<i class="fas fa-times"></i> Échec
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isBrelan}}
|
||||
<div class="chat-special-result"><i class="fas fa-dice"></i> Brelan !</div>
|
||||
{{/if}}
|
||||
{{#if isSuite}}
|
||||
<div class="chat-special-result"><i class="fas fa-dice"></i> Suite !</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
{{!-- Tricherie Adjacent Faces --}}
|
||||
{{#if adjacentFaces}}
|
||||
<div class="chat-tricherie-box">
|
||||
<span class="chat-tricherie-label">Faces adjacentes (2 pts Tricherie) :</span>
|
||||
<div class="chat-tricherie-faces">
|
||||
{{#each adjacentFaces as |value key|}}
|
||||
<a class="roll-tricherie-2 chat-tricherie-face" data-dice-value="{{value}}">{{value}}</a>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Details Section (Collapsible) --}}
|
||||
{{#if pouvoir}}
|
||||
<details class="chat-details-section">
|
||||
<summary class="chat-details-summary"><i class="fas fa-magic"></i> Détails du pouvoir</summary>
|
||||
<div class="chat-details-content">
|
||||
<div><strong>Effet :</strong> {{pouvoir.system.effet}}</div>
|
||||
{{#if (ne pouvoir.system.duree "")}}
|
||||
<div><strong>Durée :</strong> {{pouvoir.system.duree}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.portee "")}}
|
||||
<div><strong>Portée :</strong> {{pouvoir.system.portee}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.resistance "")}}
|
||||
<div><strong>Résistance :</strong> {{pouvoir.system.resistance}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.zoneeffet "")}}
|
||||
<div><strong>Zone d'effet :</strong> {{pouvoir.system.zoneeffet}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.cibles "")}}
|
||||
<div><strong>Cibles :</strong> {{pouvoir.system.cibles}}</div>
|
||||
{{/if}}
|
||||
<div><strong>Points d'usage :</strong> {{pouvoirPointsUsage}}</div>
|
||||
</div>
|
||||
</details>
|
||||
{{/if}}
|
||||
|
||||
{{#if sort}}
|
||||
<details class="chat-details-section">
|
||||
<summary class="chat-details-summary"><i class="fas fa-hat-wizard"></i> Détails du sort</summary>
|
||||
<div class="chat-details-content">
|
||||
{{#if (ne sort.system.duree "")}}
|
||||
<div><strong>Durée :</strong> {{sort.system.duree}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.portee "")}}
|
||||
<div><strong>Portée :</strong> {{sort.system.portee}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.ingredients "")}}
|
||||
<div><strong>Ingrédients :</strong> {{sort.system.ingredients}}</div>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.resistance "")}}
|
||||
<div><strong>Résistance :</strong> {{sort.system.resistance}}</div>
|
||||
{{/if}}
|
||||
{{#if spendEsprit}}
|
||||
<div><strong>Points d'Esprit :</strong> 1</div>
|
||||
{{else}}
|
||||
<div><strong>Points d'Âme :</strong> {{sortPointsAme}}</div>
|
||||
{{#if (eq sort.system.competence "Magie du Clan")}}
|
||||
<div><strong>Souffle :</strong> {{sort.system.souffle}}</div>
|
||||
<div><strong>Coût PV :</strong> 2</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</details>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
@@ -1,145 +0,0 @@
|
||||
<div class="chat-message-header">
|
||||
{{#if actorImg}}
|
||||
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
||||
{{/if}}
|
||||
<h4 class=chat-actor-name>{{alias}}</h4>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if actionImg}}
|
||||
<div>
|
||||
<img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li class="heritiers-roll"><strong>Caractéristique :</strong> {{carac.label}} ({{carac.value}})</li>
|
||||
|
||||
{{#if rang}}
|
||||
<li><strong>{{rang.label}} :</strong> {{rang.value}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if competence}}
|
||||
<li><strong>Compétence :</strong> {{competence.name}} ({{competence.system.niveau}})</li>
|
||||
{{#if useSpecialite}}
|
||||
<li>Bonus de spécialité +1</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if arme}}
|
||||
<li><strong>Attaque avec : </strong>{{arme.name}}</li>
|
||||
{{#if (eq mode "assommer")}}
|
||||
<li>Attaque pour assommer</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if pouvoir}}
|
||||
<li><strong>Pouvoir</strong> : {{pouvoir.name}}</li>
|
||||
<li><strong>Effet</strong> : {{pouvoir.system.effet}}</li>
|
||||
{{#if (ne pouvoir.system.duree "")}}
|
||||
<li><strong>Durée :</strong> {{pouvoir.system.duree}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.portee "")}}
|
||||
<li><strong>Portée :</strong> {{pouvoir.system.portee}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.resistance "")}}
|
||||
<li><strong>Résistance :</strong> {{pouvoir.system.resistance}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.resistanceautre "")}}
|
||||
<li><strong>Résistance autre :</strong> {{pouvoir.system.resistanceautre}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.zoneeffet "")}}
|
||||
<li><strong>Zone d'effet :</strong> {{pouvoir.system.zoneeffet}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.cibles "")}}
|
||||
<li><strong>Cibles :</strong> {{pouvoir.system.cibles}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne pouvoir.system.virulence "")}}
|
||||
<li><strong>Virulence :</strong> {{pouvoir.system.virulence}}</li>
|
||||
{{/if}}
|
||||
<li><strong>Points d'usage consommés :</strong> {{pouvoirPointsUsage}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if sort}}
|
||||
<li><strong>Sort :</strong> {{sort.name}}</li>
|
||||
{{#if (ne sort.system.resistance "")}}
|
||||
<li><strong>Résistance :</strong> {{sort.system.resistance}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.concentration "")}}
|
||||
<li><strong>Concentration :</strong> {{sort.system.concentration}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.duree "")}}
|
||||
<li><strong>Durée :</strong> {{sort.system.duree}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.portee "")}}
|
||||
<li><strong>Portée :</strong> {{sort.system.portee}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.ingredients "")}}
|
||||
<li><strong>Ingrédients :</strong> {{sort.system.ingredients}}</li>
|
||||
{{/if}}
|
||||
{{#if (ne sort.system.coutactivation "")}}
|
||||
<li><strong>Coût d'activation :</strong> {{sort.system.coutactivation}}</li>
|
||||
{{/if}}
|
||||
{{#if spendEsprit}}
|
||||
<li><strong>Points d'Esprit dépensé :</strong> 1</li>
|
||||
{{else}}
|
||||
<li><strong>Coût en points d'Âme</strong> : {{sortPointsAme}}</li>
|
||||
{{#if (eq sort.system.competence "Magie du Clan")}}
|
||||
<li><strong>Souffle :</strong> {{sort.system.souffle}}</li>
|
||||
<li><strong>Cout en PV :</strong> 2</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if forcedValue}}
|
||||
<li>Vous dépensez 2 points de Tricherie et utilisez une face adjacente du dé !</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if noRoll}}
|
||||
{{else}}
|
||||
<li><strong>Formule :</strong> {{diceFormula}}</li>
|
||||
<li><strong>Résultat du dé :</strong> {{diceResult}} </li>
|
||||
|
||||
{{#if adjacentFaces}}
|
||||
<li><strong>Faces adjacentes :</strong>
|
||||
{{#each adjacentFaces as |value key|}}
|
||||
<a class="roll-tricherie-2" data-dice-value="{{value}}">{{value}}</a>
|
||||
{{/each}}
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li><strong>Total : {{finalResult}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}</strong></li>
|
||||
|
||||
|
||||
{{#if (gt sdValue "-1")}}
|
||||
<li><strong>Seuil de difficulté :</strong> {{sdValue}}</li>
|
||||
{{#if isSuccess}}
|
||||
<li class="chat-success">Succès...
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="chat-failure">Echec...</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isBrelan}}
|
||||
<li class="chat-success">Brelan sur 3 dés !</li>
|
||||
{{/if}}
|
||||
{{#if isSuite}}
|
||||
<li class="chat-success">Suite sur 3 dés !</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if isCriticalSuccess}}
|
||||
<li class="chat-success">Réussite Critique !!!</li>
|
||||
{{/if}}
|
||||
{{#if isCriticalFailure}}
|
||||
<li class="chat-failure">Echec Critique !!!</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,6 +0,0 @@
|
||||
{{#if data.isGM}}
|
||||
<h3>GM Notes : </h3>
|
||||
<div class="form-group editor">
|
||||
{{editor data.biodata.gmnotes target="system.biodata.gmnotes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -1,40 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
|
||||
|
||||
<div class="tab details" data-group="primary" data-tab="details">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Lieu : </label>
|
||||
<input type="text" class="item-field-label-long" name="system.lieu"
|
||||
value="{{system.lieu}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Prix : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.prix"
|
||||
value="{{system.prix}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Quantité : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.quantite"
|
||||
value="{{system.quantite}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Equipé ? : </label>
|
||||
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.equipped" {{checked system.equipped}}/>
|
||||
</li>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,121 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
|
||||
|
||||
<div class="tab details" data-group="primary" data-tab="details">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long">Catégorie : </label>
|
||||
<select class="item-field-label-long" type="text" name="system.categorie"
|
||||
value="{{system.categorie}}" data-dtype="string">
|
||||
{{selectOptions config.categorieArme selected=system.categorie}}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long">Type : </label>
|
||||
<select class="item-field-label-long" type="text" name="system.armetype"
|
||||
value="{{system.armetype}}" data-dtype="string">
|
||||
{{selectOptions config.typeArme selected=system.armetype}}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-long">Degats : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.degats" value="{{system.degats}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Precision : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.precision"
|
||||
value="{{system.precision}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Cadence : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.cadence"
|
||||
value="{{system.cadence}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Enraiement : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.enraiement"
|
||||
value="{{system.enraiement}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Magasin : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.magasin"
|
||||
value="{{system.magasin}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Charge : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.charge"
|
||||
value="{{system.charge}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Portée : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.portee"
|
||||
value="{{system.portee}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Légalité : </label>
|
||||
<select class="item-field-label-long" type="text" name="system.legalite"
|
||||
value="{{system.legalite}}" data-dtype="string">
|
||||
{{selectOptions config.armeLegalite selected=system.legalite}}
|
||||
</select>
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Dissimulation : </label>
|
||||
<select class="item-field-label-long" type="text" name="system.dissimulation"
|
||||
value="{{system.dissimulation}}" data-dtype="string">
|
||||
{{selectOptions config.armeDissimulation selected=system.dissimulation}}
|
||||
</select>
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Zone : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.zone"
|
||||
value="{{system.zone}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Temps : </label>
|
||||
<input type="text" class="item-field-label-long" name="system.temps"
|
||||
value="{{system.temps}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Allumage : </label>
|
||||
<input type="text" class="item-field-label-long" name="system.allumage"
|
||||
value="{{system.allumage}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Special : </label>
|
||||
<input type="text" class="item-field-label-long" name="system.special"
|
||||
value="{{system.special}}" data-dtype="String" />
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Prix : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.prix"
|
||||
value="{{system.prix}}" data-dtype="Number" />
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Quantité : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.quantite"
|
||||
value="{{system.quantite}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long">Equipé ? : </label>
|
||||
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.equipped" {{checked system.equipped}}/>
|
||||
</li>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,20 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
|
||||
|
||||
|
||||
<div class="tab details" data-group="primary" data-tab="details">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,22 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
|
||||
|
||||
|
||||
<div class="tab details" data-group="primary" data-tab="details">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,81 +0,0 @@
|
||||
<section class="{{cssClass}}" autocomplete="off">
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
|
||||
|
||||
<div class="tab details" data-group="primary" data-tab="details">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Type </label>
|
||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||
name="system.pouvoirtype" value="{{system.pouvoirtype}}" data-dtype="string">
|
||||
{{selectOptions config.typePouvoir selected=system.pouvoirtype}}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Activation </label>
|
||||
<input type="text" class="padd-right color-class-common item-field-label-long3"
|
||||
name="system.activation" value="{{system.activation}}" data-dtype="String" />
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Cibles </label>
|
||||
<input type="text" class="padd-right color-class-common item-field-label-long3"
|
||||
name="system.cibles" value="{{system.cibles}}" data-dtype="String" />
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Effet </label>
|
||||
<textarea rows="6" type="text" class="padd-right color-class-common item-field-label-long3" name="system.effet"
|
||||
data-dtype="String">{{system.effet}}</textarea>
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Portée </label>
|
||||
<input type="text" class="padd-right color-class-common item-field-label-long3"
|
||||
name="system.portee" value="{{system.portee}}" data-dtype="String" />
|
||||
</li>
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Résistance</label>
|
||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||
name="system.resistance" value="{{system.resistance}}" data-dtype="string">
|
||||
{{selectOptions config.resistancePouvoir selected=system.resistance}}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
{{#if (eq system.resistance "autre")}}
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Résistance (Autre) </label>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
|
||||
name="system.resistanceautre" value="{{system.resistanceautre}}" data-dtype="String" />
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Virulence (ie Poison) ? </label>
|
||||
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.isvirulence" {{checked system.isvirulence}}/>
|
||||
</li>
|
||||
|
||||
{{#if system.isvirulence}}
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Virulence </label>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
|
||||
name="system.virulence" value="{{system.virulence}}" data-dtype="String" />
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@@ -17,6 +17,7 @@
|
||||
</select>
|
||||
</li>
|
||||
|
||||
{{#if (eq system.categorie "utile")}}
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Profil </label>
|
||||
<select class="status-small-label color-class-common item-field-label-long" type="text" name="system.profil"
|
||||
@@ -24,6 +25,7 @@
|
||||
{{selectOptions config.competenceProfil selected=system.profil labelAttr="name"}}
|
||||
</select>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label item-field-label-long2">Compétence de Prédilection ? </label>
|
||||
@@ -80,13 +82,13 @@
|
||||
{{#each system.specialites as |specialite key|}}
|
||||
<li class="specialite-item item flexrow" data-specialite-index="{{key}}">
|
||||
<input type="text" class="padd-right color-class-common edit-specialite" value="{{specialite.name}}"
|
||||
data-dtype="String" data-action="editSpecialite" />
|
||||
data-dtype="String" />
|
||||
<a class="item-control delete-specialite" title="Supprimer une specialité" data-action="deleteSpecialite"><i
|
||||
class="fas fa-trash"></i></a>
|
||||
</li>
|
||||
<li class="specialite-item item flexrow" data-specialite-index="{{key}}">
|
||||
<textarea row="4" type="text" class="padd-right color-class-common edit-specialite-description"
|
||||
data-dtype="String" data-action="editSpecialiteDescription">{{specialite.description}}</textarea>
|
||||
data-dtype="String">{{specialite.description}}</textarea>
|
||||
</li>
|
||||
<hr>
|
||||
{{/each}}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user