Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 34b7e32d08 | |||
| 75f79c1c08 | |||
| 188717c925 | |||
| 066e3bbaf5 | |||
| 440755d8a1 | |||
| a9c70c004d | |||
| 5c5ef7b0e4 | |||
| 503ee9395a |
@@ -0,0 +1,65 @@
|
|||||||
|
# Copilot Instructions — fvtt-chroniques-de-l-etrange
|
||||||
|
|
||||||
|
FoundryVTT v13 game system for *Les Chroniques de l'Étrange* (Antre-Monde Éditions). The codebase is entirely in **ES modules** (`"type": "module"`) bundled with esbuild. There are no tests.
|
||||||
|
|
||||||
|
## Build commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build # compile LESS → CSS and bundle src/system.js → dist/system.js
|
||||||
|
npm run build:css # LESS only
|
||||||
|
npm run build:js # esbuild bundle only
|
||||||
|
npm run build:watch # rebuild on file changes
|
||||||
|
npm run build:full # compile compendiums then build
|
||||||
|
|
||||||
|
npm run pack:compile # compile packs-src/ → packs/ (LevelDB)
|
||||||
|
npm run pack:extract # extract packs/ → packs-src/ (YAML source)
|
||||||
|
```
|
||||||
|
|
||||||
|
The built output goes to `dist/system.js` (sourced via the unbuilt `src/system.js` in `system.json` `esmodules`).
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
The entry point is `src/system.js`, which wires up all FoundryVTT hooks (`init`, `ready`, `renderChatLog`, etc.).
|
||||||
|
|
||||||
|
### Layer structure
|
||||||
|
|
||||||
|
| Layer | Path | Purpose |
|
||||||
|
|---|---|---|
|
||||||
|
| **Config** | `src/config/` | Constants, i18n pre-localization, runtime config, settings |
|
||||||
|
| **Data Models** | `src/data/` | `TypeDataModel` subclasses defining actor/item schemas |
|
||||||
|
| **Documents** | `src/documents/` | `CDEActor`, `CDEItem`, `CDEMessage` — thin document class overrides |
|
||||||
|
| **UI / Sheets** | `src/ui/sheets/` | ApplicationV2 sheets for actors and items |
|
||||||
|
| **UI / Apps** | `src/ui/apps/` | Standalone apps: `CDELoksyuApp`, `CDETinjiApp` (singletons) |
|
||||||
|
| **UI / Core** | `src/ui/` | Rolling engine, dice registration, Handlebars helpers, initiative |
|
||||||
|
|
||||||
|
### Key domain concepts
|
||||||
|
|
||||||
|
- **Wu Xing cycle**: Five aspects (metal, water, earth, fire, wood) drive all dice resolution. Each aspect maps to two d10 faces (see `ASPECT_FACES` in `constants.js`). `WU_XING_CYCLE` maps an active aspect to the five result categories: successes / auspicious / noxious / **loksyu** / **tinji**.
|
||||||
|
- **Loksyu / Tin Ji**: Persistent world-level counters stored in game settings (`loksyuData`, `tinjiData`). Managed via `CDELoksyuApp` / `CDETinjiApp` singleton apps; updated from roll results in `ui/apps/singletons.js`.
|
||||||
|
- **Three Treasures** (`threetreasures`): The character's Hei-Yang and Hei-Yin pools plus dice-level branches — used as the primary/secondary token attribute.
|
||||||
|
- **Magics**: Five schools (`internalcinnabar`, `alchemy`, `masteryoftheway`, `exorcism`, `geomancy`), each with five specialities. Fully defined in `MAGICS` constant.
|
||||||
|
|
||||||
|
### Data model pattern
|
||||||
|
|
||||||
|
All data models live in `src/data/` and extend `foundry.abstract.TypeDataModel`. Schema fields are defined with local factory helpers (`numberField`, `stringField`, `boolField`, `htmlField`) — prefer reusing these helpers when adding new fields.
|
||||||
|
|
||||||
|
### Sheet pattern
|
||||||
|
|
||||||
|
Actor and item sheets extend `HandlebarsApplicationMixin(ActorSheetV2)` via `CDEBaseActorSheet` (`src/ui/sheets/actors/base.js`). Key conventions:
|
||||||
|
- `static DEFAULT_OPTIONS` with `form: { submitOnChange: true }` — forms auto-save on every change.
|
||||||
|
- Tab state is manually restored in `_onRender` by iterating `this.tabGroups` and calling `this.changeTab()` (AppV2 does not persist tab state natively).
|
||||||
|
- Sheet actions (create/edit/delete item, editImage) are static private methods registered in `DEFAULT_OPTIONS.actions`.
|
||||||
|
- `_prepareContext()` exposes both `system` and `systemData` (same reference) for template compatibility.
|
||||||
|
|
||||||
|
### Compendium source
|
||||||
|
|
||||||
|
Human-editable compendium content lives in `packs-src/` as YAML. Use `npm run pack:compile` before building when pack content has changed, and `npm run pack:extract` after importing new data in Foundry.
|
||||||
|
|
||||||
|
## Key conventions
|
||||||
|
|
||||||
|
- All user-visible strings go through i18n with the `CDE.` prefix namespace. New labels must be added to `lang/fr-cde.json`.
|
||||||
|
- Handlebars templates live in `templates/` and are referenced by their full system path (`systems/fvtt-chroniques-de-l-etrange/templates/...`). Partials are pre-registered from `TEMPLATE_PARTIALS` in `constants.js`.
|
||||||
|
- The system ID constant (`SYSTEM_ID = "fvtt-chroniques-de-l-etrange"`) is used everywhere — never hardcode the string.
|
||||||
|
- CSS is authored in LESS (`css/cde-theme.less`) and compiled to `css/cde-theme.css`. Do not edit the `.css` file directly.
|
||||||
|
- Global macro access is via `game.cde` (exposes `CDELoksyuApp` and `CDETinjiApp`).
|
||||||
|
- The `dist/` directory is generated — do not commit it manually; it is rebuilt by `npm run build`.
|
||||||
@@ -12,10 +12,11 @@ Vous pouvez retrouver le nom de leurs auteurs respectifs sur ce site.
|
|||||||
version 1.2 ou toute version ultérieure publiée par la Free Software Foundation,
|
version 1.2 ou toute version ultérieure publiée par la Free Software Foundation,
|
||||||
https://commons.wikimedia.org/wiki/File:Hong_Kong_18_Districts_Blank_Map.svg
|
https://commons.wikimedia.org/wiki/File:Hong_Kong_18_Districts_Blank_Map.svg
|
||||||
- 'loksyu_roue_d_initiative.jpg' est une création originale de 'Darkwin'.
|
- 'loksyu_roue_d_initiative.jpg' est une création originale de 'Darkwin'.
|
||||||
- L'organisation du reste des images provient du système produit par MysteryMan (merci à lui)
|
- La version 14.02 contenait des icones produites par David R.D. 'Mystery Man From Outerspace' Bercovici (merci à lui)
|
||||||
|
- Les versions suivantes contiennent des icones produites par LeRatierBretonnien
|
||||||
|
|
||||||
Code Author :
|
Code Author :
|
||||||
- Developed by LeRatierBretonnien
|
- Developed by LeRatierBretonnien / www.uberwald.me
|
||||||
|
|
||||||
Code LICENCE :
|
Code LICENCE :
|
||||||
C BY-NC-SA 4.0
|
C BY-NC-SA 4.0
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ Copyright 2025-2026 Antre Monde Editions All rights reserved
|
|||||||
|
|
||||||
Chroniques de l'ETrange is a game written by Romain d'Huissier and Cédric Lameire. The authors retain their moral rights to this work in both print and digital formats.
|
Chroniques de l'ETrange is a game written by Romain d'Huissier and Cédric Lameire. The authors retain their moral rights to this work in both print and digital formats.
|
||||||
|
|
||||||
This system for FoundryVTT has been approved and authorized by Antre-Monde Edition
|
This system for FoundryVTT has been approved and authorized by Antre-Monde Edition.
|
||||||
|
|
||||||
|
Ce système s'inspire d'un système précédent "chroniquesdeletrange" développé par David R.D. 'Mystery Man From Outerspace' Bercovici et Christophe 'Kristov / Qaw' Laudon. Le code a été intégralément réécrit pour être compatible avec la version 14 de FoundryVTT, et pour intégrer le maximum de mécaniques de jeu des Chroniques de l'Etrange, et n'a donc aucun lien de code avec le système précédent.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -396,17 +396,22 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
.cde-tab-body {
|
.cde-tab-body {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
background: #0d1520;
|
background: #0d1520;
|
||||||
border: 1px solid #1a2436;
|
border: 1px solid #1a2436;
|
||||||
border-top: none;
|
border-top: none;
|
||||||
border-radius: 0 0 8px 8px;
|
border-radius: 0 0 8px 8px;
|
||||||
overflow-y: auto;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.cde-tab-body .tab {
|
.cde-tab-body .tab {
|
||||||
display: none;
|
display: none;
|
||||||
|
flex: 1 1 0;
|
||||||
|
min-height: 0;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
.cde-tab-body .tab.active {
|
.cde-tab-body .tab.active {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -447,12 +452,25 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.cde-notes-editor .editor {
|
.cde-notes-editor .editor {
|
||||||
flex: 1 1 0;
|
flex: 1 1 auto;
|
||||||
min-height: 200px;
|
min-height: 200px;
|
||||||
|
height: 100%;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
border: 1px solid #1a2436;
|
border: 1px solid #1a2436;
|
||||||
background: #101622;
|
background: #101622;
|
||||||
}
|
}
|
||||||
|
.cde-notes-editor .editor .tox {
|
||||||
|
height: 100% !important;
|
||||||
|
min-height: 100% !important;
|
||||||
|
}
|
||||||
|
.cde-notes-editor .editor .tox-editor-container {
|
||||||
|
height: 100% !important;
|
||||||
|
min-height: 100% !important;
|
||||||
|
}
|
||||||
|
.cde-notes-editor .editor iframe {
|
||||||
|
height: 100% !important;
|
||||||
|
min-height: 100% !important;
|
||||||
|
}
|
||||||
.cde-technique-card {
|
.cde-technique-card {
|
||||||
border-left: 3px solid #ff3d5a;
|
border-left: 3px solid #ff3d5a;
|
||||||
background: rgba(16, 22, 34, 0.8);
|
background: rgba(16, 22, 34, 0.8);
|
||||||
@@ -2161,6 +2179,25 @@ section.npc .cde-neon-tabs .item.active {
|
|||||||
.cde-magic-toggle:hover i {
|
.cde-magic-toggle:hover i {
|
||||||
color: #e2e8f4;
|
color: #e2e8f4;
|
||||||
}
|
}
|
||||||
|
.cde-magic-order-btn {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #7d94b8;
|
||||||
|
border-radius: 3px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
}
|
||||||
|
.cde-magic-order-btn i {
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
.cde-magic-order-btn:hover {
|
||||||
|
color: #e2e8f4;
|
||||||
|
background: rgba(38, 56, 83, 0.25);
|
||||||
|
}
|
||||||
.cde-magic-specialities {
|
.cde-magic-specialities {
|
||||||
border-top: 1px solid #1a2436;
|
border-top: 1px solid #1a2436;
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
@@ -3505,6 +3542,12 @@ ol.item-list li.item .item-controls a.item-control:hover {
|
|||||||
color: var(--rr-accent, #e2e8f4);
|
color: var(--rr-accent, #e2e8f4);
|
||||||
text-shadow: 0 0 12px var(--rr-accent, transparent);
|
text-shadow: 0 0 12px var(--rr-accent, transparent);
|
||||||
}
|
}
|
||||||
|
.cde-roll-result .cde-rr-hero .cde-rr-spell-power .cde-rr-spell-power-formula {
|
||||||
|
font-size: 10px;
|
||||||
|
color: #7d94b8;
|
||||||
|
margin: 2px 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
.cde-roll-result .cde-rr-hero .cde-rr-spell-power .cde-rr-spell-power-label {
|
.cde-roll-result .cde-rr-hero .cde-rr-spell-power .cde-rr-spell-power-label {
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|||||||
@@ -381,17 +381,22 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
.cde-tab-body {
|
.cde-tab-body {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
padding: @cde-gap;
|
padding: @cde-gap;
|
||||||
background: @cde-surface2;
|
background: @cde-surface2;
|
||||||
border: 1px solid @cde-border;
|
border: 1px solid @cde-border;
|
||||||
border-top: none;
|
border-top: none;
|
||||||
border-radius: 0 0 @cde-radius @cde-radius;
|
border-radius: 0 0 @cde-radius @cde-radius;
|
||||||
overflow-y: auto;
|
overflow: hidden;
|
||||||
|
|
||||||
.tab {
|
.tab {
|
||||||
display: none;
|
display: none;
|
||||||
|
flex: 1 1 0;
|
||||||
|
min-height: 0;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: @cde-gap;
|
gap: @cde-gap;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.active {
|
.tab.active {
|
||||||
@@ -445,11 +450,26 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.editor {
|
.editor {
|
||||||
flex: 1 1 0;
|
flex: 1 1 auto;
|
||||||
min-height: 200px;
|
min-height: 200px;
|
||||||
|
height: 100%;
|
||||||
border-radius: @cde-radius;
|
border-radius: @cde-radius;
|
||||||
border: 1px solid @cde-border;
|
border: 1px solid @cde-border;
|
||||||
background: @cde-surface;
|
background: @cde-surface;
|
||||||
|
|
||||||
|
// Force TinyMCE to fill the container
|
||||||
|
.tox {
|
||||||
|
height: 100% !important;
|
||||||
|
min-height: 100% !important;
|
||||||
|
}
|
||||||
|
.tox-editor-container {
|
||||||
|
height: 100% !important;
|
||||||
|
min-height: 100% !important;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
height: 100% !important;
|
||||||
|
min-height: 100% !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2233,6 +2253,23 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
|||||||
&:hover i { color: @cde-text; }
|
&:hover i { color: @cde-text; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cde-magic-order-btn {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
color: @cde-muted;
|
||||||
|
border-radius: 3px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
transition: color 0.12s, background 0.12s;
|
||||||
|
|
||||||
|
i { font-size: 9px; }
|
||||||
|
|
||||||
|
&:hover { color: @cde-text; background: fade(@cde-border-hi, 25%); }
|
||||||
|
}
|
||||||
|
|
||||||
// Specialities list
|
// Specialities list
|
||||||
.cde-magic-specialities {
|
.cde-magic-specialities {
|
||||||
border-top: 1px solid @cde-border;
|
border-top: 1px solid @cde-border;
|
||||||
@@ -3562,6 +3599,13 @@ ol.item-list {
|
|||||||
text-shadow: 0 0 12px var(--rr-accent, transparent);
|
text-shadow: 0 0 12px var(--rr-accent, transparent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cde-rr-spell-power-formula {
|
||||||
|
font-size: 10px;
|
||||||
|
color: @cde-muted;
|
||||||
|
margin: 2px 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.cde-rr-spell-power-label {
|
.cde-rr-spell-power-label {
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|||||||
@@ -124,7 +124,6 @@ var TEMPLATE_PARTIALS = [
|
|||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-treasures.html",
|
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-treasures.html",
|
||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-items.html",
|
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-items.html",
|
||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-kungfus.html",
|
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-kungfus.html",
|
||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-spells.html",
|
|
||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-supernaturals.html",
|
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-supernaturals.html",
|
||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-spells.html",
|
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-spells.html",
|
||||||
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-kungfus.html",
|
"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-kungfus.html",
|
||||||
@@ -596,6 +595,20 @@ function registerSettings() {
|
|||||||
water: { yin: 0, yang: 0 }
|
water: { yin: 0, yang: 0 }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
game.settings.register(SYSTEM_ID, "loksyuConsumptionOrder", {
|
||||||
|
name: "CDE.Settings.LoksyuConsumptionOrder",
|
||||||
|
hint: "CDE.Settings.LoksyuConsumptionOrderHint",
|
||||||
|
scope: "world",
|
||||||
|
config: true,
|
||||||
|
type: String,
|
||||||
|
choices: {
|
||||||
|
"yang-first": "CDE.Settings.LoksyuOrderYangFirst",
|
||||||
|
"yin-first": "CDE.Settings.LoksyuOrderYinFirst",
|
||||||
|
"balanced": "CDE.Settings.LoksyuOrderBalanced"
|
||||||
|
},
|
||||||
|
default: "yang-first",
|
||||||
|
onChange: () => Hooks.callAll("cde:loksyuUpdated")
|
||||||
|
});
|
||||||
game.settings.register(SYSTEM_ID, "tinjiData", {
|
game.settings.register(SYSTEM_ID, "tinjiData", {
|
||||||
scope: "world",
|
scope: "world",
|
||||||
config: false,
|
config: false,
|
||||||
@@ -761,9 +774,8 @@ var CharacterDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
typeofthrow: numberField(0),
|
typeofthrow: numberField(0),
|
||||||
aspectskill: numberField(0),
|
aspectskill: numberField(0),
|
||||||
bonusmalusskill: numberField(0),
|
bonusmalusskill: numberField(0),
|
||||||
aspectspeciality: numberField(0),
|
|
||||||
rolldifficulty: numberField(0),
|
rolldifficulty: numberField(0),
|
||||||
bonusmalusspeciality: numberField(0)
|
freepowerlevels: numberField(0)
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
aspect: new fields.SchemaField({
|
aspect: new fields.SchemaField({
|
||||||
@@ -802,6 +814,10 @@ var CharacterDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
nine: componentField(),
|
nine: componentField(),
|
||||||
zero: componentField()
|
zero: componentField()
|
||||||
}),
|
}),
|
||||||
|
magicOrder: new fields.ArrayField(
|
||||||
|
new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
|
{ required: true, initial: [] }
|
||||||
|
),
|
||||||
magics: new fields.SchemaField({
|
magics: new fields.SchemaField({
|
||||||
internalcinnabar: magicField(),
|
internalcinnabar: magicField(),
|
||||||
alchemy: magicField(),
|
alchemy: magicField(),
|
||||||
@@ -826,6 +842,9 @@ var CharacterDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
};
|
};
|
||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
|
prepareDerivedData() {
|
||||||
|
this.anti_initiative = 25 - (this.initiative ?? 0);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/data/actors/npc.js
|
// src/data/actors/npc.js
|
||||||
@@ -871,6 +890,11 @@ var NpcDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
})
|
})
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
prepareDerivedData() {
|
||||||
|
this.anti_initiative = 25 - (this.initiative ?? 0);
|
||||||
|
this.vitality.calcul = (this.aptitudes.physical.value ?? 0) * 4;
|
||||||
|
this.hei.calcul = (this.aptitudes.spiritual.value ?? 0) * 4;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/data/items/item.js
|
// src/data/items/item.js
|
||||||
@@ -910,7 +934,7 @@ var KungfuDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
orientation: stringField("yin"),
|
orientation: stringField("yin"),
|
||||||
// yin | yang | yinyang
|
// yin | yang | yinyang
|
||||||
aspect: stringField("metal"),
|
aspect: stringField("metal"),
|
||||||
// metal | eau | terre | feu | bois
|
// metal | water | earth | fire | wood
|
||||||
skill: stringField("kungfu"),
|
skill: stringField("kungfu"),
|
||||||
// kungfu | rangedcombat
|
// kungfu | rangedcombat
|
||||||
speciality: stringField(""),
|
speciality: stringField(""),
|
||||||
@@ -936,7 +960,7 @@ var SpellDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
description: htmlField(""),
|
description: htmlField(""),
|
||||||
specialityname: stringField(""),
|
specialityname: stringField(""),
|
||||||
associatedelement: stringField("metal"),
|
associatedelement: stringField("metal"),
|
||||||
// metal | eau | terre | feu | bois
|
// metal | water | earth | fire | wood
|
||||||
hei: stringField(""),
|
hei: stringField(""),
|
||||||
realizationtimeritual: stringField(""),
|
realizationtimeritual: stringField(""),
|
||||||
realizationtimeaccelerated: stringField(""),
|
realizationtimeaccelerated: stringField(""),
|
||||||
@@ -978,18 +1002,20 @@ var WeaponDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial });
|
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial });
|
||||||
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true });
|
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true });
|
||||||
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts });
|
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts });
|
||||||
|
const boolField = (initial = false) => new fields.BooleanField({ required: true, initial });
|
||||||
return {
|
return {
|
||||||
reference: stringField(""),
|
reference: stringField(""),
|
||||||
description: htmlField(""),
|
description: htmlField(""),
|
||||||
|
hasSpeciality: boolField(false),
|
||||||
weaponType: stringField("melee"),
|
weaponType: stringField("melee"),
|
||||||
material: stringField(""),
|
material: stringField(""),
|
||||||
damageAspect: stringField("metal"),
|
damageAspect: stringField("metal"),
|
||||||
damageBase: intField(1),
|
damageBase: intField(0),
|
||||||
range: stringField("contact"),
|
range: stringField("contact"),
|
||||||
// contact | courte | mediane | longue | extreme
|
// contact | courte | mediane | longue | extreme
|
||||||
obtainLevel: intField(0, { min: 0, max: 5 }),
|
obtainLevel: intField(0, { min: 0, max: 5 }),
|
||||||
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
||||||
quantity: intField(1),
|
quantity: intField(1, { min: 0 }),
|
||||||
notes: htmlField("")
|
notes: htmlField("")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1009,7 +1035,7 @@ var ArmorDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
domain: stringField(""),
|
domain: stringField(""),
|
||||||
obtainLevel: intField(0, { min: 0, max: 5 }),
|
obtainLevel: intField(0, { min: 0, max: 5 }),
|
||||||
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
||||||
quantity: intField(1),
|
quantity: intField(1, { min: 0 }),
|
||||||
notes: htmlField("")
|
notes: htmlField("")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1055,7 +1081,7 @@ var IngredientDataModel = class extends foundry.abstract.TypeDataModel {
|
|||||||
school: stringField("all"),
|
school: stringField("all"),
|
||||||
obtainLevel: intField(0, { min: 0, max: 5 }),
|
obtainLevel: intField(0, { min: 0, max: 5 }),
|
||||||
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
||||||
quantity: intField(1),
|
quantity: intField(1, { min: 0 }),
|
||||||
notes: htmlField("")
|
notes: htmlField("")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1068,58 +1094,25 @@ var CDEMessage = class extends ChatMessage {
|
|||||||
this.#enrichChatCard(html);
|
this.#enrichChatCard(html);
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
getAssociatedActor() {
|
|
||||||
if (this.speaker.scene && this.speaker.token) {
|
|
||||||
const scene = game.scenes.get(this.speaker.scene);
|
|
||||||
const token = scene?.tokens.get(this.speaker.token);
|
|
||||||
if (token) return token.actor;
|
|
||||||
}
|
|
||||||
return game.actors.get(this.speaker.actor);
|
|
||||||
}
|
|
||||||
#enrichChatCard(html) {
|
#enrichChatCard(html) {
|
||||||
const actor = this.getAssociatedActor();
|
const tokenDoc = this.speaker.scene && this.speaker.token ? game.scenes.get(this.speaker.scene)?.tokens.get(this.speaker.token) : null;
|
||||||
let img;
|
const actor = tokenDoc?.actor ?? game.actors.get(this.speaker.actor) ?? null;
|
||||||
let nameText;
|
const [img, nameText] = this.isContentVisible ? [actor?.img ?? this.author.avatar, this.alias] : [this.author.avatar, this.author.name];
|
||||||
if (this.isContentVisible) {
|
const avatarImg = Object.assign(document.createElement("img"), { src: img, alt: nameText });
|
||||||
img = actor?.img ?? this.author.avatar;
|
const avatar = Object.assign(document.createElement("a"), { className: "avatar" });
|
||||||
nameText = this.alias;
|
|
||||||
} else {
|
|
||||||
img = this.author.avatar;
|
|
||||||
nameText = this.author.name;
|
|
||||||
}
|
|
||||||
const avatar = document.createElement("a");
|
|
||||||
avatar.classList.add("avatar");
|
|
||||||
if (actor) avatar.dataset.uuid = actor.uuid;
|
if (actor) avatar.dataset.uuid = actor.uuid;
|
||||||
const avatarImg = document.createElement("img");
|
|
||||||
Object.assign(avatarImg, { src: img, alt: nameText });
|
|
||||||
avatar.append(avatarImg);
|
avatar.append(avatarImg);
|
||||||
const name = document.createElement("span");
|
const title = Object.assign(document.createElement("span"), { className: "title", textContent: nameText });
|
||||||
name.classList.add("name-stacked");
|
const name = Object.assign(document.createElement("span"), { className: "name-stacked" });
|
||||||
const title = document.createElement("span");
|
|
||||||
title.classList.add("title");
|
|
||||||
title.append(nameText);
|
|
||||||
name.append(title);
|
name.append(title);
|
||||||
const sender = html.querySelector(".message-sender");
|
html.querySelector(".message-sender")?.replaceChildren(avatar, name);
|
||||||
sender?.replaceChildren(avatar, name);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/documents/actor.js
|
// src/documents/actor.js
|
||||||
var CDEActor = class extends Actor {
|
var CDEActor = class extends Actor {
|
||||||
getRollData() {
|
getRollData() {
|
||||||
const data = this.toObject(false).system;
|
return this.toObject(false).system;
|
||||||
return data;
|
|
||||||
}
|
|
||||||
prepareBaseData() {
|
|
||||||
super.prepareBaseData();
|
|
||||||
if (this.type === ACTOR_TYPES.character) {
|
|
||||||
this.system.anti_initiative = 25 - (this.system.initiative ?? 0);
|
|
||||||
}
|
|
||||||
if (this.type === ACTOR_TYPES.npc) {
|
|
||||||
this.system.vitality.calcul = (this.system.aptitudes.physical.value ?? 0) * 4;
|
|
||||||
this.system.hei.calcul = (this.system.aptitudes.spiritual.value ?? 0) * 4;
|
|
||||||
this.system.anti_initiative = 25 - (this.system.initiative ?? 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1196,15 +1189,6 @@ function registerDice() {
|
|||||||
function registerHandlebarsHelpers() {
|
function registerHandlebarsHelpers() {
|
||||||
const { Handlebars } = globalThis;
|
const { Handlebars } = globalThis;
|
||||||
if (!Handlebars) return;
|
if (!Handlebars) return;
|
||||||
Handlebars.registerHelper("select", function(selected, options) {
|
|
||||||
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
|
|
||||||
const rgx = new RegExp(` value=["']${escapedValue}["']`);
|
|
||||||
const html = options.fn(this);
|
|
||||||
return html.replace(rgx, "$& selected");
|
|
||||||
});
|
|
||||||
Handlebars.registerHelper("getMagicBackground", function(magic) {
|
|
||||||
return game.i18n.localize(MAGICS[magic]?.background ?? "");
|
|
||||||
});
|
|
||||||
Handlebars.registerHelper("getMagicLabel", function(magic) {
|
Handlebars.registerHelper("getMagicLabel", function(magic) {
|
||||||
return game.i18n.localize(MAGICS[magic]?.label ?? "");
|
return game.i18n.localize(MAGICS[magic]?.label ?? "");
|
||||||
});
|
});
|
||||||
@@ -1217,9 +1201,6 @@ function registerHandlebarsHelpers() {
|
|||||||
Handlebars.registerHelper("getMagicSpecialityClassIcon", function(magic, speciality) {
|
Handlebars.registerHelper("getMagicSpecialityClassIcon", function(magic, speciality) {
|
||||||
return MAGICS[magic]?.speciality?.[speciality]?.classicon ?? "";
|
return MAGICS[magic]?.speciality?.[speciality]?.classicon ?? "";
|
||||||
});
|
});
|
||||||
Handlebars.registerHelper("getMagicSpecialityIcon", function(magic, speciality) {
|
|
||||||
return MAGICS[magic]?.speciality?.[speciality]?.icon ?? "";
|
|
||||||
});
|
|
||||||
Handlebars.registerHelper("getMagicSpecialityElementIcon", function(magic, speciality) {
|
Handlebars.registerHelper("getMagicSpecialityElementIcon", function(magic, speciality) {
|
||||||
return MAGICS[magic]?.speciality?.[speciality]?.elementicon ?? "";
|
return MAGICS[magic]?.speciality?.[speciality]?.elementicon ?? "";
|
||||||
});
|
});
|
||||||
@@ -1590,20 +1571,16 @@ async function showMagicPrompt(params) {
|
|||||||
aspectskill: Number(params.aspectskill ?? 0),
|
aspectskill: Number(params.aspectskill ?? 0),
|
||||||
bonusmalusskill: params.bonusmalusskill ?? 0,
|
bonusmalusskill: params.bonusmalusskill ?? 0,
|
||||||
bonusauspiciousdice: params.bonusauspiciousdice ?? 0,
|
bonusauspiciousdice: params.bonusauspiciousdice ?? 0,
|
||||||
aspectspeciality: Number(params.aspectspeciality ?? 0),
|
|
||||||
rolldifficulty: params.rolldifficulty ?? 1,
|
rolldifficulty: params.rolldifficulty ?? 1,
|
||||||
bonusmalusspeciality: params.bonusmalusspeciality ?? 0,
|
freepowerlevels: params.freepowerlevels ?? 0,
|
||||||
heispend: params.heispend ?? 0,
|
|
||||||
typeofthrow: Number(params.typeofthrow ?? 0)
|
typeofthrow: Number(params.typeofthrow ?? 0)
|
||||||
},
|
},
|
||||||
fields: [
|
fields: [
|
||||||
"aspectskill",
|
"aspectskill",
|
||||||
"bonusmalusskill",
|
"bonusmalusskill",
|
||||||
"bonusauspiciousdice",
|
"bonusauspiciousdice",
|
||||||
"aspectspeciality",
|
|
||||||
"rolldifficulty",
|
"rolldifficulty",
|
||||||
"bonusmalusspeciality",
|
"freepowerlevels",
|
||||||
"heispend",
|
|
||||||
"typeofthrow"
|
"typeofthrow"
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
@@ -1618,7 +1595,7 @@ async function showWeaponPrompt(params) {
|
|||||||
weaponTypeLabel: params.weaponTypeLabel ?? "CDE.Weapon",
|
weaponTypeLabel: params.weaponTypeLabel ?? "CDE.Weapon",
|
||||||
weaponAspectIcon: params.weaponAspectIcon ?? "",
|
weaponAspectIcon: params.weaponAspectIcon ?? "",
|
||||||
weaponAspectLabel: params.weaponAspectLabel ?? "",
|
weaponAspectLabel: params.weaponAspectLabel ?? "",
|
||||||
damageBase: params.damageBase ?? 1,
|
damageBase: params.damageBase ?? 0,
|
||||||
weaponskill: params.weaponskill ?? "kungfu",
|
weaponskill: params.weaponskill ?? "kungfu",
|
||||||
aspect: Number(params.aspect ?? 0),
|
aspect: Number(params.aspect ?? 0),
|
||||||
effectiverange: params.effectiverange ?? "contact",
|
effectiverange: params.effectiverange ?? "contact",
|
||||||
@@ -1733,7 +1710,9 @@ async function rollForActor(actor, rollKey) {
|
|||||||
const kfSkill = kfItem.system.skill ?? "kungfu";
|
const kfSkill = kfItem.system.skill ?? "kungfu";
|
||||||
numberofdice = sys.skills?.[kfSkill]?.value ?? 0;
|
numberofdice = sys.skills?.[kfSkill]?.value ?? 0;
|
||||||
title = `${kfItem.name} [${game.i18n.localize(sys.skills?.[kfSkill]?.label ?? "CDE.KungFu")}]`;
|
title = `${kfItem.name} [${game.i18n.localize(sys.skills?.[kfSkill]?.label ?? "CDE.KungFu")}]`;
|
||||||
kfDefaultAspect = ASPECT_NAMES.indexOf(kfItem.system.aspect ?? "metal");
|
const kfAspect = kfItem.system.aspect?.toLowerCase() ?? "metal";
|
||||||
|
const ASPECT_NORMALIZE = { eau: "water", terre: "earth", feu: "fire", bois: "wood" };
|
||||||
|
kfDefaultAspect = ASPECT_NAMES.indexOf(ASPECT_NORMALIZE[kfAspect] ?? kfAspect);
|
||||||
if (kfDefaultAspect < 0) kfDefaultAspect = 0;
|
if (kfDefaultAspect < 0) kfDefaultAspect = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1762,7 +1741,7 @@ async function rollForActor(actor, rollKey) {
|
|||||||
weaponTypeLabel: WEAPON_TYPE_LABELS[wpType] ?? "CDE.Weapon",
|
weaponTypeLabel: WEAPON_TYPE_LABELS[wpType] ?? "CDE.Weapon",
|
||||||
weaponAspectIcon: ASPECT_ICONS[ASPECT_NAMES[wpAspectIdx]] ?? "",
|
weaponAspectIcon: ASPECT_ICONS[ASPECT_NAMES[wpAspectIdx]] ?? "",
|
||||||
weaponAspectLabel: game.i18n.localize(ASPECT_LABELS[ASPECT_NAMES[wpAspectIdx]] ?? ""),
|
weaponAspectLabel: game.i18n.localize(ASPECT_LABELS[ASPECT_NAMES[wpAspectIdx]] ?? ""),
|
||||||
damageBase: wpItem.system.damageBase ?? 1,
|
damageBase: wpItem.system.damageBase ?? 0,
|
||||||
weaponskill: wpSkill,
|
weaponskill: wpSkill,
|
||||||
aspect: wpAspectIdx,
|
aspect: wpAspectIdx,
|
||||||
effectiverange: wpRange,
|
effectiverange: wpRange,
|
||||||
@@ -1781,8 +1760,9 @@ async function rollForActor(actor, rollKey) {
|
|||||||
const wpWoundMalus = Number(wParams.woundmalus ?? 0);
|
const wpWoundMalus = Number(wParams.woundmalus ?? 0);
|
||||||
const wpBonusAusp = Number(wParams.bonusauspiciousdice ?? 0);
|
const wpBonusAusp = Number(wParams.bonusauspiciousdice ?? 0);
|
||||||
const wpThrowMode = Number(wParams.typeofthrow ?? 0);
|
const wpThrowMode = Number(wParams.typeofthrow ?? 0);
|
||||||
const wpDamageBase = wpItem.system.damageBase ?? 1;
|
const wpDamageBase = wpItem.system.damageBase ?? 0;
|
||||||
const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus;
|
const wpSpecialtyBonus = wpItem.system.hasSpeciality ? 1 : 0;
|
||||||
|
const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus + wpSpecialtyBonus;
|
||||||
if (wpTotalDice <= 0) {
|
if (wpTotalDice <= 0) {
|
||||||
ui.notifications.warn(game.i18n.localize("CDE.Error0"));
|
ui.notifications.warn(game.i18n.localize("CDE.Error0"));
|
||||||
return;
|
return;
|
||||||
@@ -1798,6 +1778,11 @@ async function rollForActor(actor, rollKey) {
|
|||||||
if (wpBonusMalus !== 0) wpModParts.push(`${wpBonusMalus > 0 ? "+" : ""}${wpBonusMalus} ${game.i18n.localize("CDE.BonusMalus")}`);
|
if (wpBonusMalus !== 0) wpModParts.push(`${wpBonusMalus > 0 ? "+" : ""}${wpBonusMalus} ${game.i18n.localize("CDE.BonusMalus")}`);
|
||||||
if (wpWoundMalus !== 0) wpModParts.push(`-${wpWoundMalus} ${game.i18n.localize("CDE.WoundMalus")}`);
|
if (wpWoundMalus !== 0) wpModParts.push(`-${wpWoundMalus} ${game.i18n.localize("CDE.WoundMalus")}`);
|
||||||
if (wpBonusAusp !== 0) wpModParts.push(`+${wpBonusAusp} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`);
|
if (wpBonusAusp !== 0) wpModParts.push(`+${wpBonusAusp} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`);
|
||||||
|
const wpDamageAspectRaw = wpItem.system.damageAspect ?? "metal";
|
||||||
|
const wpDamageAspectIdx = WEAPON_ASPECT_INDEX[wpDamageAspectRaw] ?? 0;
|
||||||
|
const wpDamageAspectName = ASPECT_NAMES[wpDamageAspectIdx];
|
||||||
|
const wpDamageAspectValue = sys.aspect?.[wpDamageAspectName]?.value ?? 0;
|
||||||
|
const wpDamageAspectLabel = game.i18n.localize(ASPECT_LABELS[wpDamageAspectName] ?? "");
|
||||||
const wpMsg = await sendResultMessage(actor, {
|
const wpMsg = await sendResultMessage(actor, {
|
||||||
rollLabel: `${wpItem.name}`,
|
rollLabel: `${wpItem.name}`,
|
||||||
aspectName: wpAspectName,
|
aspectName: wpAspectName,
|
||||||
@@ -1812,7 +1797,9 @@ async function rollForActor(actor, rollKey) {
|
|||||||
// weapon-specific
|
// weapon-specific
|
||||||
weaponName: wpItem.name,
|
weaponName: wpItem.name,
|
||||||
damageBase: wpDamageBase,
|
damageBase: wpDamageBase,
|
||||||
totalDamage: wpResults.successesdice * wpDamageBase,
|
damageAspectValue: wpDamageAspectValue,
|
||||||
|
damageAspectLabel: wpDamageAspectLabel,
|
||||||
|
totalDamage: wpDamageBase + wpDamageAspectValue,
|
||||||
...wpResults,
|
...wpResults,
|
||||||
aspect: wpAspectName,
|
aspect: wpAspectName,
|
||||||
d1: wpFaces[1],
|
d1: wpFaces[1],
|
||||||
@@ -1827,7 +1814,10 @@ async function rollForActor(actor, rollKey) {
|
|||||||
d0: wpFaces[0]
|
d0: wpFaces[0]
|
||||||
}, wpRoll, ROLL_MODES[wpThrowMode] ?? "roll");
|
}, wpRoll, ROLL_MODES[wpThrowMode] ?? "roll");
|
||||||
if (game.modules.get("dice-so-nice")?.active && wpMsg?.id) {
|
if (game.modules.get("dice-so-nice")?.active && wpMsg?.id) {
|
||||||
await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id);
|
try {
|
||||||
|
await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id);
|
||||||
|
} catch (_e) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((wpResults.loksyudice ?? 0) > 0) await updateLoksyuFromRoll(wpAspectName, wpFaces);
|
if ((wpResults.loksyudice ?? 0) > 0) await updateLoksyuFromRoll(wpAspectName, wpFaces);
|
||||||
if ((wpResults.tinjidice ?? 0) > 0) await updateTinjiFromRoll(wpResults.tinjidice);
|
if ((wpResults.tinjidice ?? 0) > 0) await updateTinjiFromRoll(wpResults.tinjidice);
|
||||||
@@ -1860,14 +1850,6 @@ async function rollForActor(actor, rollKey) {
|
|||||||
if (kfDefaultAspect >= 0) {
|
if (kfDefaultAspect >= 0) {
|
||||||
defaultAspect = kfDefaultAspect;
|
defaultAspect = kfDefaultAspect;
|
||||||
}
|
}
|
||||||
let defaultSpecialAspect = 0;
|
|
||||||
if (isMagicSpecial && specialLibel) {
|
|
||||||
const specialCfg = MAGICS?.[skillLibel]?.speciality?.[specialLibel];
|
|
||||||
const aspectName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelement];
|
|
||||||
if (aspectName) {
|
|
||||||
defaultSpecialAspect = ASPECT_NAMES.indexOf(aspectName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let params;
|
let params;
|
||||||
if (isMagic) {
|
if (isMagic) {
|
||||||
params = await showMagicPrompt({
|
params = await showMagicPrompt({
|
||||||
@@ -1876,10 +1858,8 @@ async function rollForActor(actor, rollKey) {
|
|||||||
aspectskill: defaultAspect,
|
aspectskill: defaultAspect,
|
||||||
bonusmalusskill: 0,
|
bonusmalusskill: 0,
|
||||||
bonusauspiciousdice: 0,
|
bonusauspiciousdice: 0,
|
||||||
aspectspeciality: defaultSpecialAspect,
|
|
||||||
rolldifficulty: 1,
|
rolldifficulty: 1,
|
||||||
bonusmalusspeciality: 0,
|
freepowerlevels: 0,
|
||||||
heispend: 0,
|
|
||||||
typeofthrow: typeOfThrow
|
typeofthrow: typeOfThrow
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -1896,20 +1876,16 @@ async function rollForActor(actor, rollKey) {
|
|||||||
}
|
}
|
||||||
if (!params) return;
|
if (!params) return;
|
||||||
let aspectIndex, bonusMalus, bonusAuspicious, throwMode;
|
let aspectIndex, bonusMalus, bonusAuspicious, throwMode;
|
||||||
let spellAspectIndex = null;
|
|
||||||
let rollDifficulty = 1;
|
let rollDifficulty = 1;
|
||||||
if (isMagic) {
|
if (isMagic) {
|
||||||
const skillAspectIndex = Number(params.aspectskill ?? 0);
|
const skillAspectIndex = Number(params.aspectskill ?? 0);
|
||||||
spellAspectIndex = Number(params.aspectspeciality ?? skillAspectIndex);
|
|
||||||
aspectIndex = skillAspectIndex;
|
aspectIndex = skillAspectIndex;
|
||||||
bonusMalus = Number(params.bonusmalusskill ?? 0);
|
bonusMalus = Number(params.bonusmalusskill ?? 0);
|
||||||
bonusAuspicious = Number(params.bonusauspiciousdice ?? 0);
|
bonusAuspicious = Number(params.bonusauspiciousdice ?? 0);
|
||||||
rollDifficulty = Math.max(1, Number(params.rolldifficulty ?? 1));
|
rollDifficulty = Math.max(1, Number(params.rolldifficulty ?? 1));
|
||||||
throwMode = Number(params.typeofthrow ?? 0);
|
throwMode = Number(params.typeofthrow ?? 0);
|
||||||
const aspectDice = sys.aspect?.[ASPECT_NAMES[aspectIndex]]?.value ?? 0;
|
const aspectDice = sys.aspect?.[ASPECT_NAMES[aspectIndex]]?.value ?? 0;
|
||||||
const bonusSpec = Number(params.bonusmalusspeciality ?? 0);
|
numberofdice = numberofdice + aspectDice + bonusMalus + 1;
|
||||||
const heiDice = Number(params.heispend ?? 0);
|
|
||||||
numberofdice = numberofdice + aspectDice + bonusMalus + 1 + bonusSpec + heiDice;
|
|
||||||
} else {
|
} else {
|
||||||
aspectIndex = Number(params.aspect ?? 0);
|
aspectIndex = Number(params.aspect ?? 0);
|
||||||
bonusMalus = Number(params.bonusmalus ?? 0);
|
bonusMalus = Number(params.bonusmalus ?? 0);
|
||||||
@@ -1927,22 +1903,33 @@ async function rollForActor(actor, rollKey) {
|
|||||||
const roll = new Roll(`${numberofdice}d10`);
|
const roll = new Roll(`${numberofdice}d10`);
|
||||||
await roll.evaluate();
|
await roll.evaluate();
|
||||||
const rollModeKey = ROLL_MODES[throwMode] ?? "roll";
|
const rollModeKey = ROLL_MODES[throwMode] ?? "roll";
|
||||||
const wuXingAspectName = spellAspectIndex !== null ? ASPECT_NAMES[spellAspectIndex] : ASPECT_NAMES[aspectIndex];
|
let spellPower = null;
|
||||||
|
let spellPowerAspectName = null;
|
||||||
|
let spellPowerAspectValue = null;
|
||||||
|
if (isMagic) {
|
||||||
|
if (isMagicSpecial && specialLibel) {
|
||||||
|
const specialCfg = MAGICS?.[skillLibel]?.speciality?.[specialLibel];
|
||||||
|
const elemName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelement];
|
||||||
|
if (elemName) spellPowerAspectName = elemName;
|
||||||
|
}
|
||||||
|
if (!spellPowerAspectName) spellPowerAspectName = ASPECT_NAMES[aspectIndex];
|
||||||
|
spellPowerAspectValue = sys.aspect?.[spellPowerAspectName]?.value ?? 0;
|
||||||
|
const freePowerLevels = Number(params.freepowerlevels ?? 0);
|
||||||
|
spellPower = rollDifficulty * (spellPowerAspectValue + freePowerLevels);
|
||||||
|
}
|
||||||
|
const wuXingAspectName = ASPECT_NAMES[aspectIndex];
|
||||||
const allResults = roll.dice[0]?.results ?? [];
|
const allResults = roll.dice[0]?.results ?? [];
|
||||||
const faces = countFaces(allResults);
|
const faces = countFaces(allResults);
|
||||||
const results = computeWuXingResults(faces, wuXingAspectName, bonusAuspicious);
|
const results = computeWuXingResults(faces, wuXingAspectName, bonusAuspicious);
|
||||||
if (!results) return;
|
if (!results) return;
|
||||||
const spellPower = isMagic ? results.successesdice * rollDifficulty : null;
|
|
||||||
const modParts = [];
|
const modParts = [];
|
||||||
if (isMagic) {
|
if (isMagic) {
|
||||||
const bm = Number(params.bonusmalusskill ?? 0);
|
const bm = Number(params.bonusmalusskill ?? 0);
|
||||||
const bs = Number(params.bonusmalusspeciality ?? 0);
|
|
||||||
const hs = Number(params.heispend ?? 0);
|
|
||||||
const ba = Number(params.bonusauspiciousdice ?? 0);
|
const ba = Number(params.bonusauspiciousdice ?? 0);
|
||||||
|
const fp = Number(params.freepowerlevels ?? 0);
|
||||||
if (bm !== 0) modParts.push(`${bm > 0 ? "+" : ""}${bm} ${game.i18n.localize("CDE.BonusMalus")}`);
|
if (bm !== 0) modParts.push(`${bm > 0 ? "+" : ""}${bm} ${game.i18n.localize("CDE.BonusMalus")}`);
|
||||||
if (bs !== 0) modParts.push(`${bs > 0 ? "+" : ""}${bs} ${game.i18n.localize("CDE.SpellBonus")}`);
|
|
||||||
if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`);
|
if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`);
|
||||||
if (hs !== 0) modParts.push(`${hs} ${game.i18n.localize("CDE.HeiSpend")}`);
|
if (fp !== 0) modParts.push(`+${fp} ${game.i18n.localize("CDE.FreePowerLevels")}`);
|
||||||
if (rollDifficulty !== 1) modParts.push(`\xD7${rollDifficulty} ${game.i18n.localize("CDE.RollDifficulty")}`);
|
if (rollDifficulty !== 1) modParts.push(`\xD7${rollDifficulty} ${game.i18n.localize("CDE.RollDifficulty")}`);
|
||||||
} else {
|
} else {
|
||||||
const bm = Number(params.bonusmalus ?? 0);
|
const bm = Number(params.bonusmalus ?? 0);
|
||||||
@@ -1962,6 +1949,9 @@ async function rollForActor(actor, rollKey) {
|
|||||||
modifiersText: modParts.length ? modParts.join(" \xB7 ") : "",
|
modifiersText: modParts.length ? modParts.join(" \xB7 ") : "",
|
||||||
// Spell power (magic only)
|
// Spell power (magic only)
|
||||||
spellPower,
|
spellPower,
|
||||||
|
spellPowerAspectLabel: spellPowerAspectName ? game.i18n.localize(ASPECT_LABELS[spellPowerAspectName] ?? "") : "",
|
||||||
|
spellPowerAspectValue,
|
||||||
|
spellPowerFreeLevels: isMagic ? Number(params.freepowerlevels ?? 0) : 0,
|
||||||
rollDifficulty: isMagic ? rollDifficulty : null,
|
rollDifficulty: isMagic ? rollDifficulty : null,
|
||||||
// Actor info
|
// Actor info
|
||||||
actorName: actor.name ?? "",
|
actorName: actor.name ?? "",
|
||||||
@@ -1982,7 +1972,10 @@ async function rollForActor(actor, rollKey) {
|
|||||||
d0: faces[0]
|
d0: faces[0]
|
||||||
}, roll, rollModeKey);
|
}, roll, rollModeKey);
|
||||||
if (game.modules.get("dice-so-nice")?.active && msg?.id) {
|
if (game.modules.get("dice-so-nice")?.active && msg?.id) {
|
||||||
await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
|
try {
|
||||||
|
await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
|
||||||
|
} catch (_e) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((results.loksyudice ?? 0) > 0) await updateLoksyuFromRoll(wuXingAspectName, faces);
|
if ((results.loksyudice ?? 0) > 0) await updateLoksyuFromRoll(wuXingAspectName, faces);
|
||||||
if ((results.tinjidice ?? 0) > 0) await updateTinjiFromRoll(results.tinjidice);
|
if ((results.tinjidice ?? 0) > 0) await updateTinjiFromRoll(results.tinjidice);
|
||||||
@@ -2078,9 +2071,13 @@ var CDEBaseActorSheet = class _CDEBaseActorSheet extends HandlebarsApplicationMi
|
|||||||
};
|
};
|
||||||
|
|
||||||
// src/ui/sheets/actors/character.js
|
// src/ui/sheets/actors/character.js
|
||||||
var CDECharacterSheet = class extends CDEBaseActorSheet {
|
var CDECharacterSheet = class _CDECharacterSheet extends CDEBaseActorSheet {
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ["character"]
|
classes: ["character"],
|
||||||
|
actions: {
|
||||||
|
moveMagicUp: _CDECharacterSheet.#onMoveMagicUp,
|
||||||
|
moveMagicDown: _CDECharacterSheet.#onMoveMagicDown
|
||||||
|
}
|
||||||
};
|
};
|
||||||
static PARTS = {
|
static PARTS = {
|
||||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-character-sheet.html" }
|
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-character-sheet.html" }
|
||||||
@@ -2103,25 +2100,35 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
|
|||||||
spellsByDiscipline[disc].push(spell);
|
spellsByDiscipline[disc].push(spell);
|
||||||
}
|
}
|
||||||
const systemMagics = context.systemData.magics ?? {};
|
const systemMagics = context.systemData.magics ?? {};
|
||||||
context.magicsDisplay = Object.fromEntries(
|
const magicEntries = Object.entries(MAGICS).map(([magicKey, magicDef]) => {
|
||||||
Object.entries(MAGICS).map(([magicKey, magicDef]) => {
|
const magicData = systemMagics[magicKey] ?? {};
|
||||||
const magicData = systemMagics[magicKey] ?? {};
|
return [
|
||||||
return [
|
magicKey,
|
||||||
magicKey,
|
{
|
||||||
{
|
value: magicData.value ?? 0,
|
||||||
value: magicData.value ?? 0,
|
visible: magicData.visible ?? false,
|
||||||
visible: magicData.visible ?? false,
|
speciality: Object.fromEntries(
|
||||||
speciality: Object.fromEntries(
|
Object.keys(magicDef.speciality).map((specKey) => [
|
||||||
Object.keys(magicDef.speciality).map((specKey) => [
|
specKey,
|
||||||
specKey,
|
{ check: magicData.speciality?.[specKey]?.check ?? false }
|
||||||
{ check: magicData.speciality?.[specKey]?.check ?? false }
|
])
|
||||||
])
|
),
|
||||||
),
|
grimoire: spellsByDiscipline[magicKey] ?? []
|
||||||
grimoire: spellsByDiscipline[magicKey] ?? []
|
}
|
||||||
}
|
];
|
||||||
];
|
});
|
||||||
})
|
const order = context.systemData.magicOrder ?? [];
|
||||||
);
|
if (order.length > 0) {
|
||||||
|
magicEntries.sort((a, b) => {
|
||||||
|
const ia = order.indexOf(a[0]);
|
||||||
|
const ib = order.indexOf(b[0]);
|
||||||
|
if (ia === -1 && ib === -1) return 0;
|
||||||
|
if (ia === -1) return 1;
|
||||||
|
if (ib === -1) return -1;
|
||||||
|
return ia - ib;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
context.magicsDisplay = Object.fromEntries(magicEntries);
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
_onRender(context, options) {
|
_onRender(context, options) {
|
||||||
@@ -2205,7 +2212,7 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
|
|||||||
cell.addEventListener("click", (event) => {
|
cell.addEventListener("click", (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const rollKey = cell.dataset.libelId;
|
const rollKey = cell.dataset.libelId;
|
||||||
if (rollKey) rollForActor(this.document, rollKey);
|
if (rollKey) rollForActor(this.document, rollKey)?.catch((err) => console.error("Roll failed:", err));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2219,6 +2226,26 @@ var CDECharacterSheet = class extends CDEBaseActorSheet {
|
|||||||
}).render(true);
|
}).render(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
static async #onMoveMagicUp(event, target) {
|
||||||
|
const key = target.dataset.magicKey;
|
||||||
|
let order = this.document.system.magicOrder ?? [];
|
||||||
|
if (!order.length) order = [...Object.keys(MAGICS)];
|
||||||
|
else order = [...order];
|
||||||
|
const idx = order.indexOf(key);
|
||||||
|
if (idx <= 0) return;
|
||||||
|
[order[idx - 1], order[idx]] = [order[idx], order[idx - 1]];
|
||||||
|
await this.document.update({ "system.magicOrder": order });
|
||||||
|
}
|
||||||
|
static async #onMoveMagicDown(event, target) {
|
||||||
|
const key = target.dataset.magicKey;
|
||||||
|
let order = this.document.system.magicOrder ?? [];
|
||||||
|
if (!order.length) order = [...Object.keys(MAGICS)];
|
||||||
|
else order = [...order];
|
||||||
|
const idx = order.indexOf(key);
|
||||||
|
if (idx === -1 || idx >= order.length - 1) return;
|
||||||
|
[order[idx], order[idx + 1]] = [order[idx + 1], order[idx]];
|
||||||
|
await this.document.update({ "system.magicOrder": order });
|
||||||
|
}
|
||||||
#bindComponentRandomize() {
|
#bindComponentRandomize() {
|
||||||
const btn = this.element?.querySelector("[data-action='randomize-component']");
|
const btn = this.element?.querySelector("[data-action='randomize-component']");
|
||||||
if (!btn) return;
|
if (!btn) return;
|
||||||
@@ -2288,7 +2315,7 @@ var CDENpcSheet = class extends CDEBaseActorSheet {
|
|||||||
cell.addEventListener("click", (event) => {
|
cell.addEventListener("click", (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const rollKey = cell.dataset.libelId;
|
const rollKey = cell.dataset.libelId;
|
||||||
if (rollKey) rollForActor(this.document, rollKey);
|
if (rollKey) rollForActor(this.document, rollKey)?.catch((err) => console.error("Roll failed:", err));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2475,11 +2502,11 @@ var CDESanheiSheet = class extends CDEBaseItemSheet {
|
|||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext();
|
const context = await super._prepareContext();
|
||||||
const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? "", { async: true });
|
const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? "", { async: true });
|
||||||
const props = this.document.system.properties;
|
const props = this.document.system.properties ?? {};
|
||||||
context.prop1DescriptionHTML = await enrich(props.prop1.description);
|
context.prop1DescriptionHTML = await enrich(props.prop1?.description);
|
||||||
context.prop2DescriptionHTML = await enrich(props.prop2.description);
|
context.prop2DescriptionHTML = await enrich(props.prop2?.description);
|
||||||
context.prop3DescriptionHTML = await enrich(props.prop3.description);
|
context.prop3DescriptionHTML = await enrich(props.prop3?.description);
|
||||||
context.propFields = this.document.system.schema.fields.properties.fields;
|
context.propFields = this.document.system.schema.fields.properties?.fields;
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -2687,7 +2714,7 @@ var CDETinjiApp = class _CDETinjiApp extends foundry.applications.api.Handlebars
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await setTinjiValue(current - 1);
|
await setTinjiValue(current - 1);
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: `<div class="cde-tinji-spend-msg">
|
content: `<div class="cde-tinji-spend-msg">
|
||||||
<i class="fas fa-star"></i>
|
<i class="fas fa-star"></i>
|
||||||
@@ -2706,7 +2733,7 @@ var CDECombat = class extends Combat {
|
|||||||
* for each selected combatant, then sync the result to the Combatant document.
|
* for each selected combatant, then sync the result to the Combatant document.
|
||||||
*/
|
*/
|
||||||
async rollInitiative(ids, options = {}) {
|
async rollInitiative(ids, options = {}) {
|
||||||
const combatantIds = typeof ids === "string" ? [ids] : ids;
|
const combatantIds = ids ? typeof ids === "string" ? [ids] : ids : this.combatants.map((c) => c.id);
|
||||||
for (const id of combatantIds) {
|
for (const id of combatantIds) {
|
||||||
const combatant = this.combatants.get(id);
|
const combatant = this.combatants.get(id);
|
||||||
if (!combatant) continue;
|
if (!combatant) continue;
|
||||||
@@ -2974,8 +3001,19 @@ async function _drawFromLoksyu(message, aspect, type, aspectLabel) {
|
|||||||
ui.notifications.warn(game.i18n.localize("CDE.LoksyuEmpty"));
|
ui.notifications.warn(game.i18n.localize("CDE.LoksyuEmpty"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (entry.yang > 0) entry.yang--;
|
const order = game.settings.get(SYSTEM_ID, "loksyuConsumptionOrder");
|
||||||
else entry.yin--;
|
if (order === "yin-first") {
|
||||||
|
if (entry.yin > 0) entry.yin--;
|
||||||
|
else entry.yang--;
|
||||||
|
} else if (order === "balanced") {
|
||||||
|
if (entry.yin > entry.yang) entry.yin--;
|
||||||
|
else if (entry.yang > entry.yin) entry.yang--;
|
||||||
|
else if (entry.yang > 0) entry.yang--;
|
||||||
|
else entry.yin--;
|
||||||
|
} else {
|
||||||
|
if (entry.yang > 0) entry.yang--;
|
||||||
|
else entry.yin--;
|
||||||
|
}
|
||||||
data[aspect] = entry;
|
data[aspect] = entry;
|
||||||
await setLoksyuData(data);
|
await setLoksyuData(data);
|
||||||
const flags = message?.flags?.[SYSTEM_ID];
|
const flags = message?.flags?.[SYSTEM_ID];
|
||||||
@@ -2984,7 +3022,7 @@ async function _drawFromLoksyu(message, aspect, type, aspectLabel) {
|
|||||||
if (type === "success") {
|
if (type === "success") {
|
||||||
updated.successesdice = (updated.successesdice ?? 0) + 1;
|
updated.successesdice = (updated.successesdice ?? 0) + 1;
|
||||||
updated.loksyuBonusSuc = (updated.loksyuBonusSuc ?? 0) + 1;
|
updated.loksyuBonusSuc = (updated.loksyuBonusSuc ?? 0) + 1;
|
||||||
if (updated.damageBase) updated.totalDamage = updated.successesdice * updated.damageBase;
|
if (updated.damageBase != null) updated.totalDamage = updated.damageBase + (updated.damageAspectValue ?? 0);
|
||||||
} else {
|
} else {
|
||||||
updated.auspiciousdice = (updated.auspiciousdice ?? 0) + 1;
|
updated.auspiciousdice = (updated.auspiciousdice ?? 0) + 1;
|
||||||
updated.loksyuBonusFaste = (updated.loksyuBonusFaste ?? 0) + 1;
|
updated.loksyuBonusFaste = (updated.loksyuBonusFaste ?? 0) + 1;
|
||||||
@@ -2997,7 +3035,7 @@ async function _drawFromLoksyu(message, aspect, type, aspectLabel) {
|
|||||||
}
|
}
|
||||||
const remain = entry.yin + entry.yang;
|
const remain = entry.yin + entry.yang;
|
||||||
const typeLabel = type === "success" ? game.i18n.localize("CDE.Successes") : game.i18n.localize("CDE.AuspiciousDie");
|
const typeLabel = type === "success" ? game.i18n.localize("CDE.Successes") : game.i18n.localize("CDE.AuspiciousDie");
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: `<div class="cde-loksyu-draw-msg">
|
content: `<div class="cde-loksyu-draw-msg">
|
||||||
<div class="cde-loksyu-draw-header">
|
<div class="cde-loksyu-draw-header">
|
||||||
@@ -3023,7 +3061,7 @@ async function _spendTinjiPostRoll() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await setTinjiValue(current - 1);
|
await setTinjiValue(current - 1);
|
||||||
ChatMessage.create({
|
await ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: `<div class="cde-tinji-spend-msg">
|
content: `<div class="cde-tinji-spend-msg">
|
||||||
<span class="cde-tinji-icon">\u5929</span>
|
<span class="cde-tinji-icon">\u5929</span>
|
||||||
@@ -3089,7 +3127,14 @@ function injectWelcomeActions(_message, html) {
|
|||||||
// src/system.js
|
// src/system.js
|
||||||
Hooks.once("i18nInit", preLocalizeConfig);
|
Hooks.once("i18nInit", preLocalizeConfig);
|
||||||
Hooks.once("init", async () => {
|
Hooks.once("init", async () => {
|
||||||
console.info(`CHRONIQUESDELETRANGE | Initializing ${SYSTEM_ID}`);
|
console.log(
|
||||||
|
"%c\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n%c\u2551 Chroniques de l'\xC9trange \u2014 FoundryVTT \u2551\n%c\u2551 Syst\xE8me de jeu par Antre-Monde \xC9ditions \u2551\n%c\u2551 Made by Uberwald - https://www.ubwerwald.me \u2551\n%c\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D",
|
||||||
|
"color: #d4af37; font-weight: bold;",
|
||||||
|
"color: #e2e8f4;",
|
||||||
|
"color: #7d94b8;",
|
||||||
|
"color: #5a7a9a;",
|
||||||
|
"color: #d4af37; font-weight: bold;"
|
||||||
|
);
|
||||||
registerSettings();
|
registerSettings();
|
||||||
game.system.CONST = { MAGICS, SUBTYPES };
|
game.system.CONST = { MAGICS, SUBTYPES };
|
||||||
game.cde = { CDELoksyuApp, CDETinjiApp, CDEWheelApp };
|
game.cde = { CDELoksyuApp, CDETinjiApp, CDEWheelApp };
|
||||||
|
|||||||
@@ -1,58 +1,30 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="ar-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="ar-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#4ecdc4" stop-opacity="0.3"/>
|
<stop offset="0%" stop-color="#00e5ff" stop-opacity="0.35"/>
|
||||||
<stop offset="100%" stop-color="#4ecdc4" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#00e5ff" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#ar-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#ar-glow)"/>
|
||||||
|
<!-- Plastron style écaille de dragon — rangées d'écailles imbriquées -->
|
||||||
<!-- Bouclier circulaire extérieur -->
|
<!-- Rangée 1 -->
|
||||||
<circle cx="50" cy="50" r="36" fill="#4ecdc4" fill-opacity="0.08" stroke="#4ecdc4" stroke-width="2.5"/>
|
<path d="M42 24 Q50 18 58 24 Q50 32 42 24Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<!-- Anneau décoratif intérieur -->
|
<!-- Rangée 2 -->
|
||||||
<circle cx="50" cy="50" r="30" fill="none" stroke="#4ecdc4" stroke-width="1" opacity="0.5"/>
|
<path d="M30 36 Q38 28 46 36 Q38 44 30 36Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
|
<path d="M54 36 Q62 28 70 36 Q62 44 54 36Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<!-- 8 rivets décoratifs sur le bord extérieur du bouclier -->
|
<!-- Rangée 3 -->
|
||||||
<circle cx="50" cy="15" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<path d="M22 50 Q30 42 38 50 Q30 58 22 50Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<circle cx="75" cy="25" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<path d="M42 50 Q50 42 58 50 Q50 58 42 50Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<circle cx="85" cy="50" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<path d="M62 50 Q70 42 78 50 Q70 58 62 50Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<circle cx="75" cy="75" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<!-- Rangée 4 -->
|
||||||
<circle cx="50" cy="85" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<path d="M30 64 Q38 56 46 64 Q38 72 30 64Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<circle cx="25" cy="75" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<path d="M54 64 Q62 56 70 64 Q62 72 54 64Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
<circle cx="15" cy="50" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<!-- Rangée 5 -->
|
||||||
<circle cx="25" cy="25" r="2" fill="#4ecdc4" opacity="0.8"/>
|
<path d="M42 77 Q50 70 58 77 Q50 84 42 77Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||||
|
<!-- Reflets -->
|
||||||
<!-- Tête de tigre stylisée -->
|
<circle cx="50" cy="24" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||||
<!-- Front / dessus de la tête -->
|
<circle cx="38" cy="36" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||||
<path d="M34 40 Q50 30 66 40 Q68 48 64 54 Q58 62 50 64 Q42 62 36 54 Q32 48 34 40 Z"
|
<circle cx="62" cy="36" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||||
fill="#4ecdc4" fill-opacity="0.15" stroke="#4ecdc4" stroke-width="2"/>
|
<circle cx="50" cy="50" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||||
<!-- Oreilles de tigre -->
|
|
||||||
<path d="M34 40 Q28 30 32 24 Q36 32 40 38" fill="#4ecdc4" fill-opacity="0.2" stroke="#4ecdc4" stroke-width="1.5"/>
|
|
||||||
<path d="M66 40 Q72 30 68 24 Q64 32 60 38" fill="#4ecdc4" fill-opacity="0.2" stroke="#4ecdc4" stroke-width="1.5"/>
|
|
||||||
|
|
||||||
<!-- Yeux du tigre -->
|
|
||||||
<ellipse cx="43" cy="46" rx="5" ry="4" fill="none" stroke="#4ecdc4" stroke-width="1.5"/>
|
|
||||||
<ellipse cx="57" cy="46" rx="5" ry="4" fill="none" stroke="#4ecdc4" stroke-width="1.5"/>
|
|
||||||
<ellipse cx="43" cy="46" rx="2" ry="3" fill="#4ecdc4" fill-opacity="0.5"/>
|
|
||||||
<ellipse cx="57" cy="46" rx="2" ry="3" fill="#4ecdc4" fill-opacity="0.5"/>
|
|
||||||
|
|
||||||
<!-- Nez du tigre -->
|
|
||||||
<path d="M47 52 Q50 50 53 52 Q50 55 47 52 Z" fill="#4ecdc4" fill-opacity="0.6" stroke="#4ecdc4" stroke-width="1"/>
|
|
||||||
<!-- Moustaches -->
|
|
||||||
<line x1="32" y1="53" x2="45" y2="53" stroke="#4ecdc4" stroke-width="1" opacity="0.7"/>
|
|
||||||
<line x1="55" y1="53" x2="68" y2="53" stroke="#4ecdc4" stroke-width="1" opacity="0.7"/>
|
|
||||||
<line x1="33" y1="57" x2="45" y2="55" stroke="#4ecdc4" stroke-width="1" opacity="0.7"/>
|
|
||||||
<line x1="55" y1="55" x2="67" y2="57" stroke="#4ecdc4" stroke-width="1" opacity="0.7"/>
|
|
||||||
|
|
||||||
<!-- Rayures de tigre sur le front -->
|
|
||||||
<path d="M46 36 Q48 40 47 44" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
|
||||||
<path d="M50 34 Q50 38 50 42" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
|
||||||
<path d="M54 36 Q52 40 53 44" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
|
||||||
|
|
||||||
<!-- Crocs en bas -->
|
|
||||||
<path d="M46 60 L44 68 L46 64 L48 70 L50 63 L52 70 L54 64 L56 68 L54 60"
|
|
||||||
fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linejoin="round" opacity="0.8"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -1,53 +1,26 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="ig-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="ig-glow" cx="50%" cy="60%" r="50%">
|
||||||
<stop offset="0%" stop-color="#98c379" stop-opacity="0.3"/>
|
<stop offset="0%" stop-color="#39ff14" stop-opacity="0.35"/>
|
||||||
<stop offset="100%" stop-color="#98c379" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#39ff14" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#ig-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#ig-glow)"/>
|
||||||
|
<!-- Mortier de pharmacopée chinoise -->
|
||||||
<!-- Pilon (pestle) — en haut à droite -->
|
<path d="M28 62 Q28 76 50 76 Q72 76 72 62 L68 48 Q68 44 50 44 Q32 44 32 48 Z"
|
||||||
<line x1="62" y1="20" x2="52" y2="40" stroke="#98c379" stroke-width="3.5" stroke-linecap="round"/>
|
fill="#39ff14" fill-opacity="0.15" stroke="#39ff14" stroke-width="2"/>
|
||||||
<!-- Tête du pilon (plus épaisse) -->
|
<!-- Pilon -->
|
||||||
<ellipse cx="63" cy="19" rx="4" ry="3" fill="#98c379" fill-opacity="0.4" stroke="#98c379" stroke-width="1.5" transform="rotate(-30 63 19)"/>
|
<line x1="50" y1="22" x2="50" y2="54" stroke="#39ff14" stroke-width="3" stroke-linecap="round"/>
|
||||||
|
<ellipse cx="50" cy="54" rx="7" ry="4" fill="#39ff14" fill-opacity="0.3" stroke="#39ff14" stroke-width="1.8"/>
|
||||||
<!-- Mortier (bol) -->
|
<!-- Vapeur montante -->
|
||||||
<!-- Corps extérieur du mortier -->
|
<path d="M38 42 Q34 36 38 30 Q42 24 38 18" fill="none" stroke="#39ff14" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
<path d="M22 54 Q22 76 50 80 Q78 76 78 54 Z"
|
<path d="M50 40 Q46 34 50 28 Q54 22 50 16" fill="none" stroke="#39ff14" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
fill="#98c379" fill-opacity="0.12" stroke="#98c379" stroke-width="2.5"/>
|
<path d="M62 42 Q58 36 62 30 Q66 24 62 18" fill="none" stroke="#39ff14" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
<!-- Bord supérieur du mortier (ellipse) -->
|
<!-- Petits cristaux/herbes dans le mortier -->
|
||||||
<ellipse cx="50" cy="54" rx="28" ry="8" fill="#98c379" fill-opacity="0.1" stroke="#98c379" stroke-width="2"/>
|
<circle cx="44" cy="58" r="2" fill="#39ff14" opacity="0.7"/>
|
||||||
<!-- Contenu / intérieur sombre -->
|
<circle cx="52" cy="60" r="1.5" fill="#39ff14" opacity="0.7"/>
|
||||||
<ellipse cx="50" cy="56" rx="22" ry="6" fill="#101622" fill-opacity="0.6"/>
|
<circle cx="59" cy="57" r="2" fill="#39ff14" opacity="0.7"/>
|
||||||
<!-- Surface du contenu (herbes) -->
|
<!-- Bande décorative -->
|
||||||
<ellipse cx="50" cy="55" rx="18" ry="4" fill="#98c379" fill-opacity="0.2" stroke="#98c379" stroke-width="0.8" opacity="0.6"/>
|
<path d="M32 48 Q50 52 68 48" fill="none" stroke="#39ff14" stroke-width="1" opacity="0.5"/>
|
||||||
|
|
||||||
<!-- Ornements du mortier (gravures) -->
|
|
||||||
<!-- Motif vague (eau) sur le corps du mortier -->
|
|
||||||
<path d="M26 64 Q32 60 38 64 Q44 68 50 64 Q56 60 62 64 Q68 68 74 64"
|
|
||||||
fill="none" stroke="#98c379" stroke-width="1" opacity="0.5"/>
|
|
||||||
|
|
||||||
<!-- Fleur de lotus au-dessus du mortier -->
|
|
||||||
<!-- Pétales (6) -->
|
|
||||||
<path d="M50 44 Q46 36 42 30 Q46 34 50 32 Q54 34 58 30 Q54 36 50 44"
|
|
||||||
fill="#98c379" fill-opacity="0.2" stroke="#98c379" stroke-width="1.5"/>
|
|
||||||
<path d="M38 48 Q30 44 26 38 Q32 40 36 36 Q40 32 40 38 Q40 44 38 48"
|
|
||||||
fill="#98c379" fill-opacity="0.2" stroke="#98c379" stroke-width="1.5"/>
|
|
||||||
<path d="M62 48 Q70 44 74 38 Q68 40 64 36 Q60 32 60 38 Q60 44 62 48"
|
|
||||||
fill="#98c379" fill-opacity="0.2" stroke="#98c379" stroke-width="1.5"/>
|
|
||||||
<!-- Coeur du lotus -->
|
|
||||||
<circle cx="50" cy="46" r="4" fill="#98c379" fill-opacity="0.4" stroke="#98c379" stroke-width="1.5"/>
|
|
||||||
<circle cx="50" cy="46" r="1.5" fill="#98c379"/>
|
|
||||||
|
|
||||||
<!-- Vapeurs alchimiques -->
|
|
||||||
<path d="M36 52 Q32 46 36 40 Q34 44 38 46 Q36 48 38 52"
|
|
||||||
fill="none" stroke="#98c379" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
|
||||||
<path d="M50 52 Q48 44 52 38 Q50 44 54 46 Q52 48 52 52"
|
|
||||||
fill="none" stroke="#98c379" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
|
||||||
<path d="M64 52 Q68 46 64 40 Q66 44 62 46 Q64 48 62 52"
|
|
||||||
fill="none" stroke="#98c379" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -1,59 +1,27 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="it-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="it-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#00d4d4" stop-opacity="0.3"/>
|
<stop offset="0%" stop-color="#ffd700" stop-opacity="0.4"/>
|
||||||
<stop offset="100%" stop-color="#00d4d4" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ffd700" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#it-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#it-glow)"/>
|
||||||
|
<!-- Disque de jade bi (圓璧) — cercle avec trou central -->
|
||||||
<!-- Coffret laqué (corps) -->
|
<circle cx="50" cy="50" r="32" fill="#ffd700" fill-opacity="0.12" stroke="#ffd700" stroke-width="2.5"/>
|
||||||
<!-- Couvercle -->
|
<circle cx="50" cy="50" r="22" fill="#101622" stroke="#ffd700" stroke-width="1.5"/>
|
||||||
<rect x="20" y="26" width="60" height="20" rx="3" fill="#00d4d4" fill-opacity="0.12" stroke="#00d4d4" stroke-width="2.5"/>
|
<circle cx="50" cy="50" r="14" fill="#ffd700" fill-opacity="0.08" stroke="#ffd700" stroke-width="1" opacity="0.6"/>
|
||||||
<!-- Corps du coffret -->
|
<!-- Motifs décoratifs — 8 trigrammes stylisés sur le pourtour -->
|
||||||
<rect x="18" y="46" width="64" height="32" rx="3" fill="#00d4d4" fill-opacity="0.08" stroke="#00d4d4" stroke-width="2.5"/>
|
<circle cx="50" cy="50" r="27" fill="none" stroke="#ffd700" stroke-width="0.8" stroke-dasharray="3 4.2" opacity="0.5"/>
|
||||||
|
<!-- Encoches décoratives aux 8 directions -->
|
||||||
<!-- Ligne de séparation couvercle/corps -->
|
<line x1="50" y1="18" x2="50" y2="23" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="18" y1="46" x2="82" y2="46" stroke="#00d4d4" stroke-width="1.5" opacity="0.7"/>
|
<line x1="50" y1="77" x2="50" y2="82" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
|
<line x1="18" y1="50" x2="23" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<!-- Ornements du couvercle -->
|
<line x1="77" y1="50" x2="82" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<!-- Motif de losanges (style laque chinoise) -->
|
<line x1="27.6" y1="27.6" x2="31.1" y2="31.1" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<path d="M36 36 L50 28 L64 36 L50 44 Z" fill="none" stroke="#00d4d4" stroke-width="1" opacity="0.5"/>
|
<line x1="68.9" y1="68.9" x2="72.4" y2="72.4" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<!-- Lignes décoratives côtés couvercle -->
|
<line x1="72.4" y1="27.6" x2="68.9" y2="31.1" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="22" y1="30" x2="22" y2="42" stroke="#00d4d4" stroke-width="1" opacity="0.4"/>
|
<line x1="27.6" y1="72.4" x2="31.1" y2="68.9" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="78" y1="30" x2="78" y2="42" stroke="#00d4d4" stroke-width="1" opacity="0.4"/>
|
<!-- Reflet jade -->
|
||||||
|
<path d="M36 30 Q42 28 46 32" fill="none" stroke="#ffd700" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
<!-- Serrure yin-yang au centre du corps du coffret -->
|
|
||||||
<!-- Cercle de la serrure -->
|
|
||||||
<circle cx="50" cy="60" r="9" fill="#101622" stroke="#00d4d4" stroke-width="2"/>
|
|
||||||
<!-- Yin-yang simplifié dans la serrure -->
|
|
||||||
<!-- Moitié yang (gauche, claire) -->
|
|
||||||
<path d="M50 51 A9 9 0 0 0 50 69 A4.5 4.5 0 0 0 50 60 A4.5 4.5 0 0 1 50 51"
|
|
||||||
fill="#00d4d4" fill-opacity="0.4"/>
|
|
||||||
<!-- Petits cercles du yin-yang -->
|
|
||||||
<circle cx="50" cy="55.5" r="2" fill="#101622"/>
|
|
||||||
<circle cx="50" cy="64.5" r="2" fill="#00d4d4" fill-opacity="0.6"/>
|
|
||||||
|
|
||||||
<!-- Anneau de la serrure (trou de clé) -->
|
|
||||||
<rect x="48" y="66" width="4" height="5" rx="1" fill="#00d4d4" fill-opacity="0.5"/>
|
|
||||||
|
|
||||||
<!-- Ferrures du coffret (coins) -->
|
|
||||||
<!-- Coins du corps -->
|
|
||||||
<path d="M18 46 L18 54 L24 54" fill="none" stroke="#00d4d4" stroke-width="1.5" stroke-linecap="round"/>
|
|
||||||
<path d="M82 46 L82 54 L76 54" fill="none" stroke="#00d4d4" stroke-width="1.5" stroke-linecap="round"/>
|
|
||||||
<path d="M18 78 L18 70 L24 70" fill="none" stroke="#00d4d4" stroke-width="1.5" stroke-linecap="round"/>
|
|
||||||
<path d="M82 78 L82 70 L76 70" fill="none" stroke="#00d4d4" stroke-width="1.5" stroke-linecap="round"/>
|
|
||||||
|
|
||||||
<!-- Charnières du coffret (sur le côté droit) -->
|
|
||||||
<rect x="76" y="40" width="8" height="5" rx="2" fill="#00d4d4" fill-opacity="0.3" stroke="#00d4d4" stroke-width="1"/>
|
|
||||||
<rect x="76" y="50" width="8" height="5" rx="2" fill="#00d4d4" fill-opacity="0.3" stroke="#00d4d4" stroke-width="1"/>
|
|
||||||
|
|
||||||
<!-- Motif décoratif sur le bas du coffret -->
|
|
||||||
<path d="M26 72 Q50 68 74 72" fill="none" stroke="#00d4d4" stroke-width="1" stroke-dasharray="3 2" opacity="0.4"/>
|
|
||||||
<!-- Petits ornements latéraux sur le corps -->
|
|
||||||
<line x1="22" y1="56" x2="22" y2="68" stroke="#00d4d4" stroke-width="1" stroke-dasharray="2 2" opacity="0.4"/>
|
|
||||||
<line x1="78" y1="56" x2="78" y2="68" stroke="#00d4d4" stroke-width="1" stroke-dasharray="2 2" opacity="0.4"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -1,38 +1,29 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<!-- Fond circulaire -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#kg-glow)" fill-opacity="0.12"/>
|
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="kg-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="kf-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#ff3d5a" stop-opacity="0.4"/>
|
<stop offset="0%" stop-color="#ff2244" stop-opacity="0.4"/>
|
||||||
<stop offset="100%" stop-color="#ff3d5a" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ff2244" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<!-- Poing stylisé (vue de face, doigts repliés) -->
|
<circle cx="50" cy="50" r="48" fill="url(#kf-glow)"/>
|
||||||
<!-- Paume / base -->
|
<!-- Silhouette grue — posture sur une jambe, ailes déployées -->
|
||||||
<rect x="32" y="52" width="36" height="20" rx="4" fill="#ff3d5a" fill-opacity="0.18" stroke="#ff3d5a" stroke-width="2"/>
|
<!-- Tête -->
|
||||||
<!-- Doigts repliés — 4 rangées -->
|
<circle cx="50" cy="18" r="5" fill="#ff2244" fill-opacity="0.2" stroke="#ff2244" stroke-width="2"/>
|
||||||
<rect x="33" y="38" width="8" height="16" rx="3" fill="#ff3d5a" fill-opacity="0.18" stroke="#ff3d5a" stroke-width="2"/>
|
<!-- Corps -->
|
||||||
<rect x="43" y="35" width="8" height="19" rx="3" fill="#ff3d5a" fill-opacity="0.18" stroke="#ff3d5a" stroke-width="2"/>
|
<line x1="50" y1="23" x2="50" y2="52" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<rect x="53" y="36" width="8" height="18" rx="3" fill="#ff3d5a" fill-opacity="0.18" stroke="#ff3d5a" stroke-width="2"/>
|
<!-- Bras gauche déployé vers le haut -->
|
||||||
<rect x="63" y="40" width="6" height="14" rx="3" fill="#ff3d5a" fill-opacity="0.18" stroke="#ff3d5a" stroke-width="2"/>
|
<path d="M50 33 Q38 26 24 28" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<!-- Pouce -->
|
<!-- Bras droit vers le bas en attaque -->
|
||||||
<path d="M32 62 Q24 60 25 54 Q26 50 32 52" fill="#ff3d5a" fill-opacity="0.18" stroke="#ff3d5a" stroke-width="2" stroke-linejoin="round"/>
|
<path d="M50 33 Q62 36 72 30" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
|
<!-- Jambe d'appui -->
|
||||||
<!-- Éclairs de qi (3 rayons) -->
|
<line x1="50" y1="52" x2="50" y2="78" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<!-- Éclair gauche-haut -->
|
<path d="M50 78 Q45 82 40 80" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<polyline points="24,28 19,20 25,22 20,13" fill="none" stroke="#ff3d5a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" opacity="0.9"/>
|
<!-- Jambe levée -->
|
||||||
<!-- Éclair centre-haut -->
|
<path d="M50 52 Q60 58 66 52 Q70 46 72 50" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<polyline points="50,30 47,20 52,23 49,13" fill="none" stroke="#ff3d5a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" opacity="0.9"/>
|
<!-- Énergie chi — spirales autour du personnage -->
|
||||||
<!-- Éclair droite-haut -->
|
<path d="M20 45 Q18 38 24 34 Q30 30 28 24" fill="none" stroke="#ff2244" stroke-width="1.2" stroke-linecap="round" opacity="0.5"/>
|
||||||
<polyline points="74,32 80,22 74,24 79,14" fill="none" stroke="#ff3d5a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" opacity="0.9"/>
|
<path d="M78 40 Q82 46 78 52 Q74 58 78 64" fill="none" stroke="#ff2244" stroke-width="1.2" stroke-linecap="round" opacity="0.5"/>
|
||||||
|
<circle cx="24" cy="28" r="2" fill="#ff2244" opacity="0.8"/>
|
||||||
<!-- Petites étincelles -->
|
<circle cx="72" cy="30" r="2" fill="#ff2244" opacity="0.8"/>
|
||||||
<circle cx="22" cy="35" r="1.5" fill="#ff3d5a" opacity="0.8"/>
|
|
||||||
<circle cx="78" cy="37" r="1.5" fill="#ff3d5a" opacity="0.8"/>
|
|
||||||
<circle cx="50" cy="26" r="1.5" fill="#ff3d5a" opacity="0.8"/>
|
|
||||||
|
|
||||||
<!-- Ligne de force sous le poing -->
|
|
||||||
<path d="M28 73 Q50 80 72 73" fill="none" stroke="#ff3d5a" stroke-width="1.5" stroke-dasharray="3 2" opacity="0.5"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,43 +1,34 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="dm-glow" cx="50%" cy="45%" r="50%">
|
<radialGradient id="dm-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#cc2222" stop-opacity="0.5"/>
|
<stop offset="0%" stop-color="#cc0000" stop-opacity="0.45"/>
|
||||||
<stop offset="100%" stop-color="#cc2222" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#cc0000" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#dm-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#dm-glow)"/>
|
||||||
|
<!-- Masque d'opéra cantonais — démon -->
|
||||||
<!-- Flammes infernales en arrière-plan -->
|
<!-- Visage -->
|
||||||
<path d="M30 78 Q28 65 34 56 Q30 62 32 52 Q36 42 42 48 Q38 36 46 28 Q48 42 44 50 Q50 38 54 30 Q56 44 50 54 Q56 46 62 40 Q62 54 56 62 Q62 56 68 52 Q66 64 62 72 Q56 66 54 72 Q50 80 48 72 Q44 64 40 72 Q36 80 30 78 Z"
|
<ellipse cx="50" cy="50" rx="26" ry="30" fill="#cc0000" fill-opacity="0.18" stroke="#cc0000" stroke-width="2"/>
|
||||||
fill="#cc2222" fill-opacity="0.18" stroke="#cc2222" stroke-width="1" stroke-linejoin="round" opacity="0.7"/>
|
<!-- Motif front — marques tribales -->
|
||||||
|
<path d="M36 36 Q42 30 50 32 Q58 30 64 36" fill="none" stroke="#cc0000" stroke-width="2" stroke-linecap="round"/>
|
||||||
<!-- Visage de démon - contour de tête -->
|
<line x1="50" y1="22" x2="50" y2="32" stroke="#cc0000" stroke-width="2" stroke-linecap="round"/>
|
||||||
<ellipse cx="50" cy="52" rx="20" ry="22" fill="#cc2222" fill-opacity="0.12" stroke="#cc2222" stroke-width="2"/>
|
<!-- Cornes -->
|
||||||
|
<path d="M36 28 Q30 16 26 12" fill="none" stroke="#cc0000" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<!-- Deux cornes -->
|
<path d="M64 28 Q70 16 74 12" fill="none" stroke="#cc0000" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<path d="M36 35 Q32 20 38 16 Q40 24 38 30" fill="#cc2222" fill-opacity="0.7" stroke="#cc2222" stroke-width="1.5" stroke-linejoin="round"/>
|
<!-- Yeux en amande — regard furieux -->
|
||||||
<path d="M64 35 Q68 20 62 16 Q60 24 62 30" fill="#cc2222" fill-opacity="0.7" stroke="#cc2222" stroke-width="1.5" stroke-linejoin="round"/>
|
<path d="M34 46 Q38 42 42 46 Q38 50 34 46Z" fill="#cc0000" fill-opacity="0.5" stroke="#cc0000" stroke-width="1.5"/>
|
||||||
|
<path d="M58 46 Q62 42 66 46 Q62 50 58 46Z" fill="#cc0000" fill-opacity="0.5" stroke="#cc0000" stroke-width="1.5"/>
|
||||||
<!-- Yeux (forme de flamme) -->
|
<circle cx="38" cy="46" r="1.5" fill="#cc0000"/>
|
||||||
<path d="M40 50 Q44 44 48 50 Q44 56 40 50 Z" fill="#cc2222" opacity="0.9"/>
|
<circle cx="62" cy="46" r="1.5" fill="#cc0000"/>
|
||||||
<path d="M52 50 Q56 44 60 50 Q56 56 52 50 Z" fill="#cc2222" opacity="0.9"/>
|
<!-- Nez -->
|
||||||
<!-- Pupilles -->
|
<path d="M46 52 Q50 56 54 52" fill="none" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<ellipse cx="44" cy="50" rx="1.5" ry="2.5" fill="#101622"/>
|
|
||||||
<ellipse cx="56" cy="50" rx="1.5" ry="2.5" fill="#101622"/>
|
|
||||||
|
|
||||||
<!-- Nez aplati (démon) -->
|
|
||||||
<path d="M47 58 Q50 60 53 58" fill="none" stroke="#cc2222" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
|
||||||
|
|
||||||
<!-- Bouche avec crocs -->
|
<!-- Bouche avec crocs -->
|
||||||
<path d="M38 66 Q50 74 62 66" fill="none" stroke="#cc2222" stroke-width="2" stroke-linecap="round" opacity="0.8"/>
|
<path d="M34 62 Q42 70 50 68 Q58 70 66 62" fill="none" stroke="#cc0000" stroke-width="2" stroke-linecap="round"/>
|
||||||
<!-- Crocs -->
|
<line x1="44" y1="65" x2="44" y2="72" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<path d="M43 67 L42 73 L45 68" fill="#cc2222" opacity="0.7"/>
|
<line x1="50" y1="68" x2="50" y2="75" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<path d="M57 67 L58 73 L55 68" fill="#cc2222" opacity="0.7"/>
|
<line x1="56" y1="65" x2="56" y2="72" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
|
<!-- Moustaches -->
|
||||||
<!-- Sourcils menaçants -->
|
<path d="M36 56 Q28 52 22 54" fill="none" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
<path d="M38 44 Q44 40 48 43" fill="none" stroke="#cc2222" stroke-width="2.5" stroke-linecap="round" opacity="0.8"/>
|
<path d="M64 56 Q72 52 78 54" fill="none" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
<path d="M52 43 Q56 40 62 44" fill="none" stroke="#cc2222" stroke-width="2.5" stroke-linecap="round" opacity="0.8"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
@@ -1,44 +1,37 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="dv-glow" cx="50%" cy="40%" r="55%">
|
<radialGradient id="dieu-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#ddaa00" stop-opacity="0.5"/>
|
<stop offset="0%" stop-color="#ffd700" stop-opacity="0.5"/>
|
||||||
<stop offset="100%" stop-color="#ddaa00" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ffd700" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#dv-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#dieu-glow)"/>
|
||||||
|
<!-- Soleil impérial céleste -->
|
||||||
<!-- Rayons célestes (halo) -->
|
<!-- Rayons -->
|
||||||
<line x1="50" y1="10" x2="50" y2="18" stroke="#ddaa00" stroke-width="2" opacity="0.6"/>
|
<line x1="50" y1="14" x2="50" y2="24" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="68" y1="15" x2="64" y2="22" stroke="#ddaa00" stroke-width="2" opacity="0.6"/>
|
<line x1="50" y1="76" x2="50" y2="86" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="80" y1="28" x2="74" y2="32" stroke="#ddaa00" stroke-width="2" opacity="0.6"/>
|
<line x1="14" y1="50" x2="24" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="32" y1="15" x2="36" y2="22" stroke="#ddaa00" stroke-width="2" opacity="0.6"/>
|
<line x1="76" y1="50" x2="86" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="20" y1="28" x2="26" y2="32" stroke="#ddaa00" stroke-width="2" opacity="0.6"/>
|
<line x1="24.8" y1="24.8" x2="31.9" y2="31.9" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="86" y1="44" x2="80" y2="46" stroke="#ddaa00" stroke-width="1.5" opacity="0.5"/>
|
<line x1="68.1" y1="68.1" x2="75.2" y2="75.2" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="14" y1="44" x2="20" y2="46" stroke="#ddaa00" stroke-width="1.5" opacity="0.5"/>
|
<line x1="75.2" y1="24.8" x2="68.1" y2="31.9" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
|
<line x1="24.8" y1="75.2" x2="31.9" y2="68.1" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||||
<!-- Halo circulaire doré -->
|
<!-- Rayons diagonaux secondaires -->
|
||||||
<circle cx="50" cy="36" r="14" fill="none" stroke="#ddaa00" stroke-width="2.5" opacity="0.8"/>
|
<line x1="29.6" y1="18.8" x2="33.8" y2="26.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<circle cx="50" cy="36" r="16" fill="none" stroke="#ddaa00" stroke-width="0.8" opacity="0.4" stroke-dasharray="3,4"/>
|
<line x1="70.4" y1="18.8" x2="66.2" y2="26.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
|
<line x1="18.8" y1="29.6" x2="26.8" y2="33.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<!-- Lotus (5 pétales) -->
|
<line x1="81.2" y1="29.6" x2="73.2" y2="33.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<ellipse cx="50" cy="72" rx="8" ry="4" fill="#ddaa00" fill-opacity="0.6" transform="rotate(0,50,72)"/>
|
<line x1="18.8" y1="70.4" x2="26.8" y2="66.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<ellipse cx="50" cy="72" rx="8" ry="4" fill="#ddaa00" fill-opacity="0.4" transform="rotate(36,50,72)"/>
|
<line x1="81.2" y1="70.4" x2="73.2" y2="66.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<ellipse cx="50" cy="72" rx="8" ry="4" fill="#ddaa00" fill-opacity="0.4" transform="rotate(72,50,72)"/>
|
<line x1="29.6" y1="81.2" x2="33.8" y2="73.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<ellipse cx="50" cy="72" rx="8" ry="4" fill="#ddaa00" fill-opacity="0.4" transform="rotate(108,50,72)"/>
|
<line x1="70.4" y1="81.2" x2="66.2" y2="73.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<ellipse cx="50" cy="72" rx="8" ry="4" fill="#ddaa00" fill-opacity="0.4" transform="rotate(144,50,72)"/>
|
<!-- Cercle central solaire -->
|
||||||
<!-- Cœur du lotus -->
|
<circle cx="50" cy="50" r="16" fill="#ffd700" fill-opacity="0.2" stroke="#ffd700" stroke-width="2.5"/>
|
||||||
<circle cx="50" cy="72" r="4" fill="#ddaa00" fill-opacity="0.8"/>
|
<!-- Nuages célestes stylisés en dessous -->
|
||||||
|
<path d="M32 58 Q36 52 42 56 Q46 50 50 54 Q54 50 58 56 Q64 52 68 58" fill="none" stroke="#ffd700" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
<!-- Silhouette divine — corps lumineux -->
|
<!-- Idéogramme stylisé au centre (天) -->
|
||||||
<ellipse cx="50" cy="36" rx="8" ry="10" fill="#ddaa00" fill-opacity="0.25"/>
|
<line x1="44" y1="45" x2="56" y2="45" stroke="#ffd700" stroke-width="1.8" stroke-linecap="round"/>
|
||||||
<!-- Corps stylisé (robe longue) -->
|
<line x1="50" y1="42" x2="50" y2="58" stroke="#ffd700" stroke-width="1.8" stroke-linecap="round"/>
|
||||||
<path d="M44 44 Q40 58 42 72 Q50 68 58 72 Q60 58 56 44 Z"
|
<line x1="42" y1="58" x2="58" y2="58" stroke="#ffd700" stroke-width="1.8" stroke-linecap="round"/>
|
||||||
fill="#ddaa00" fill-opacity="0.18" stroke="#ddaa00" stroke-width="1.5"/>
|
|
||||||
|
|
||||||
<!-- Mains en prière -->
|
|
||||||
<path d="M44 54 Q38 52 36 56 Q38 60 44 58" fill="#ddaa00" fill-opacity="0.3" stroke="#ddaa00" stroke-width="1.2"/>
|
|
||||||
<path d="M56 54 Q62 52 64 56 Q62 60 56 58" fill="#ddaa00" fill-opacity="0.3" stroke="#ddaa00" stroke-width="1.2"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -1,41 +1,36 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="ea-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="ea-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#e8a030" stop-opacity="0.4"/>
|
<stop offset="0%" stop-color="#ff8c00" stop-opacity="0.4"/>
|
||||||
<stop offset="100%" stop-color="#e8a030" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ff8c00" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#ea-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#ea-glow)"/>
|
||||||
|
<!-- Tête de renard (esprit renard — huli jing) -->
|
||||||
<!-- Anneau extérieur -->
|
<!-- Museau triangulaire -->
|
||||||
<circle cx="50" cy="50" r="42" fill="none" stroke="#e8a030" stroke-width="1.2" opacity="0.4"/>
|
<path d="M28 68 Q50 30 72 68 Q62 80 50 78 Q38 80 28 68Z"
|
||||||
|
fill="#ff8c00" fill-opacity="0.18" stroke="#ff8c00" stroke-width="2"/>
|
||||||
<!-- Yin-Yang stylisé (transformation) -->
|
<!-- Oreilles pointues -->
|
||||||
<!-- Demi-cercle yang (clair) -->
|
<path d="M28 68 Q22 48 30 30 Q36 44 40 52Z" fill="#ff8c00" fill-opacity="0.25" stroke="#ff8c00" stroke-width="2"/>
|
||||||
<path d="M50 18 A32 32 0 0 1 50 82 A16 16 0 0 0 50 50 A16 16 0 0 1 50 18 Z"
|
<path d="M72 68 Q78 48 70 30 Q64 44 60 52Z" fill="#ff8c00" fill-opacity="0.25" stroke="#ff8c00" stroke-width="2"/>
|
||||||
fill="#e8a030" fill-opacity="0.25" stroke="#e8a030" stroke-width="1.5"/>
|
<!-- Intérieur oreilles -->
|
||||||
<!-- Demi-cercle yin (sombre) -->
|
<path d="M30 62 Q27 50 33 36 Q36 46 39 52Z" fill="#ff8c00" fill-opacity="0.4" stroke="none"/>
|
||||||
<path d="M50 18 A32 32 0 0 0 50 82 A16 16 0 0 1 50 50 A16 16 0 0 0 50 18 Z"
|
<path d="M70 62 Q73 50 67 36 Q64 46 61 52Z" fill="#ff8c00" fill-opacity="0.4" stroke="none"/>
|
||||||
fill="#e8a030" fill-opacity="0.05" stroke="#e8a030" stroke-width="1.5"/>
|
<!-- Yeux en amande -->
|
||||||
<!-- Petits cercles yin-yang -->
|
<path d="M36 58 Q42 52 46 58 Q42 62 36 58Z" fill="#ff8c00" fill-opacity="0.6" stroke="#ff8c00" stroke-width="1.5"/>
|
||||||
<circle cx="50" cy="34" r="6" fill="#e8a030" fill-opacity="0.6"/>
|
<path d="M54 58 Q58 52 64 58 Q58 62 54 58Z" fill="#ff8c00" fill-opacity="0.6" stroke="#ff8c00" stroke-width="1.5"/>
|
||||||
<circle cx="50" cy="66" r="6" fill="#e8a030" fill-opacity="0.15" stroke="#e8a030" stroke-width="1.2"/>
|
<circle cx="41" cy="57" r="1.5" fill="#ff8c00"/>
|
||||||
|
<circle cx="59" cy="57" r="1.5" fill="#ff8c00"/>
|
||||||
<!-- Patte d'animal (5 coussinets) -->
|
<!-- Nez -->
|
||||||
<!-- Coussinet principal (paume) -->
|
<path d="M46 66 Q50 70 54 66 Q50 64 46 66Z" fill="#ff8c00" opacity="0.7"/>
|
||||||
<ellipse cx="50" cy="55" rx="9" ry="7" fill="#e8a030" fill-opacity="0.7"/>
|
<!-- Moustaches -->
|
||||||
<!-- 4 orteils -->
|
<line x1="50" y1="67" x2="50" y2="74" stroke="#ff8c00" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
<ellipse cx="40" cy="44" rx="4" ry="3.5" fill="#e8a030" fill-opacity="0.7" transform="rotate(-15,40,44)"/>
|
<line x1="34" y1="68" x2="46" y2="68" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||||
<ellipse cx="45" cy="41" rx="4" ry="3.5" fill="#e8a030" fill-opacity="0.7" transform="rotate(-5,45,41)"/>
|
<line x1="54" y1="68" x2="66" y2="68" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||||
<ellipse cx="55" cy="41" rx="4" ry="3.5" fill="#e8a030" fill-opacity="0.7" transform="rotate(5,55,41)"/>
|
<line x1="32" y1="72" x2="46" y2="70" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||||
<ellipse cx="60" cy="44" rx="4" ry="3.5" fill="#e8a030" fill-opacity="0.7" transform="rotate(15,60,44)"/>
|
<line x1="54" y1="70" x2="68" y2="72" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||||
|
<!-- Marques spirituelles sur le front -->
|
||||||
<!-- Griffes stylisées -->
|
<circle cx="50" cy="46" r="3" fill="none" stroke="#ff8c00" stroke-width="1.5" opacity="0.7"/>
|
||||||
<path d="M38 42 Q35 38 34 34" fill="none" stroke="#e8a030" stroke-width="1.8" stroke-linecap="round" opacity="0.8"/>
|
<line x1="50" y1="34" x2="50" y2="43" stroke="#ff8c00" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
<path d="M43 39 Q42 35 42 31" fill="none" stroke="#e8a030" stroke-width="1.8" stroke-linecap="round" opacity="0.8"/>
|
|
||||||
<path d="M57 39 Q58 35 58 31" fill="none" stroke="#e8a030" stroke-width="1.8" stroke-linecap="round" opacity="0.8"/>
|
|
||||||
<path d="M62 42 Q65 38 66 34" fill="none" stroke="#e8a030" stroke-width="1.8" stroke-linecap="round" opacity="0.8"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.4 KiB |
@@ -1,41 +1,33 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="gh-glow" cx="50%" cy="40%" r="55%">
|
<radialGradient id="fa-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#88ccee" stop-opacity="0.45"/>
|
<stop offset="0%" stop-color="#88aaff" stop-opacity="0.4"/>
|
||||||
<stop offset="100%" stop-color="#88ccee" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#88aaff" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#gh-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#fa-glow)"/>
|
||||||
|
<!-- Lanterne en papier avec visage fantôme -->
|
||||||
<!-- Silhouette fantôme — tête arrondie -->
|
<!-- Corde du haut -->
|
||||||
<path d="M34 44 Q34 24 50 22 Q66 24 66 44 L66 68 Q62 64 58 68 Q55 72 52 68 Q49 64 50 68 Q47 72 44 68 Q40 64 36 68 Q34 64 34 68 Z"
|
<line x1="50" y1="14" x2="50" y2="22" stroke="#88aaff" stroke-width="1.8" stroke-linecap="round"/>
|
||||||
fill="#88ccee" fill-opacity="0.15" stroke="#88ccee" stroke-width="2" stroke-linejoin="round"/>
|
<line x1="44" y1="22" x2="56" y2="22" stroke="#88aaff" stroke-width="1.8" stroke-linecap="round"/>
|
||||||
|
<!-- Corps de la lanterne -->
|
||||||
<!-- Yeux fantôme — vides, inquiétants -->
|
<path d="M36 22 Q24 38 24 54 Q24 70 36 76 Q50 84 64 76 Q76 70 76 54 Q76 38 64 22 Z"
|
||||||
<ellipse cx="43" cy="42" rx="4" ry="5" fill="#101622" stroke="#88ccee" stroke-width="1.5" opacity="0.9"/>
|
fill="#88aaff" fill-opacity="0.12" stroke="#88aaff" stroke-width="2"/>
|
||||||
<ellipse cx="57" cy="42" rx="4" ry="5" fill="#101622" stroke="#88ccee" stroke-width="1.5" opacity="0.9"/>
|
<!-- Côtes de lanterne -->
|
||||||
<!-- Lueurs dans les yeux -->
|
<path d="M26 36 Q50 32 74 36" fill="none" stroke="#88aaff" stroke-width="1" opacity="0.5"/>
|
||||||
<ellipse cx="43" cy="42" rx="1.5" ry="2" fill="#88ccee" opacity="0.5"/>
|
<path d="M24 50 Q50 46 76 50" fill="none" stroke="#88aaff" stroke-width="1" opacity="0.5"/>
|
||||||
<ellipse cx="57" cy="42" rx="1.5" ry="2" fill="#88ccee" opacity="0.5"/>
|
<path d="M26 64 Q50 60 74 64" fill="none" stroke="#88aaff" stroke-width="1" opacity="0.5"/>
|
||||||
|
<!-- Visage fantomatique -->
|
||||||
<!-- Kanji 鬼 stylisé en filigrane (simplifié) -->
|
<!-- Yeux creux -->
|
||||||
<!-- Traits horizontaux et verticaux évoquant le caractère -->
|
<ellipse cx="40" cy="48" rx="5" ry="6" fill="#88aaff" fill-opacity="0.35" stroke="#88aaff" stroke-width="1.5"/>
|
||||||
<line x1="40" y1="53" x2="60" y2="53" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
<ellipse cx="60" cy="48" rx="5" ry="6" fill="#88aaff" fill-opacity="0.35" stroke="#88aaff" stroke-width="1.5"/>
|
||||||
<line x1="50" y1="53" x2="50" y2="62" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
<!-- Bouche tordue -->
|
||||||
<path d="M42 58 Q50 55 58 58" fill="none" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
<path d="M36 60 Q42 66 50 62 Q58 66 64 60" fill="none" stroke="#88aaff" stroke-width="2" stroke-linecap="round"/>
|
||||||
|
<!-- Franges du bas de la lanterne -->
|
||||||
<!-- Traînée vaporeuse en bas -->
|
<line x1="40" y1="76" x2="38" y2="86" stroke="#88aaff" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
<path d="M38 68 Q36 75 38 82 Q40 88 44 84 Q46 78 48 84 Q50 88 52 84 Q54 78 56 84 Q58 88 62 82 Q64 75 62 68"
|
<line x1="50" y1="78" x2="50" y2="88" stroke="#88aaff" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
fill="#88ccee" fill-opacity="0.08" stroke="#88ccee" stroke-width="1.2" stroke-dasharray="3,3" opacity="0.6"/>
|
<line x1="60" y1="76" x2="62" y2="86" stroke="#88aaff" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||||
|
<!-- Lueur intérieure -->
|
||||||
<!-- Chaînes (lien au monde des vivants) — deux petits maillons -->
|
<ellipse cx="50" cy="52" rx="12" ry="14" fill="#88aaff" fill-opacity="0.08"/>
|
||||||
<circle cx="32" cy="52" r="3" fill="none" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
|
||||||
<circle cx="32" cy="58" r="3" fill="none" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
|
||||||
<line x1="32" y1="49" x2="32" y2="55" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
|
||||||
<circle cx="68" cy="52" r="3" fill="none" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
|
||||||
<circle cx="68" cy="58" r="3" fill="none" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
|
||||||
<line x1="68" y1="49" x2="68" y2="55" stroke="#88ccee" stroke-width="1.5" opacity="0.5"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -1,47 +1,38 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="jg-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="jg-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#22cc88" stop-opacity="0.4"/>
|
<stop offset="0%" stop-color="#cc44ff" stop-opacity="0.45"/>
|
||||||
<stop offset="100%" stop-color="#22cc88" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#cc44ff" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#jg-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#jg-glow)"/>
|
||||||
|
<!-- Jiugwaai — créature de rue à multiples yeux -->
|
||||||
<!-- Cercle de transformation mystique -->
|
<!-- Silhouette bossue -->
|
||||||
<circle cx="50" cy="50" r="38" fill="none" stroke="#22cc88" stroke-width="1.2" opacity="0.35" stroke-dasharray="4,3"/>
|
<path d="M24 72 Q22 56 28 44 Q34 32 50 28 Q66 32 72 44 Q78 56 76 72 Q66 78 50 80 Q34 78 24 72Z"
|
||||||
|
fill="#cc44ff" fill-opacity="0.12" stroke="#cc44ff" stroke-width="2"/>
|
||||||
<!-- Silhouette multi-forme (créature hybride) -->
|
<!-- Multiples yeux disposés irrégulièrement -->
|
||||||
<!-- Corps central — humanoïde -->
|
<ellipse cx="36" cy="42" rx="5" ry="4" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||||
<ellipse cx="50" cy="52" rx="12" ry="15" fill="#22cc88" fill-opacity="0.15" stroke="#22cc88" stroke-width="1.8"/>
|
<circle cx="36" cy="42" r="2" fill="#cc44ff"/>
|
||||||
|
<ellipse cx="52" cy="36" rx="4" ry="5" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||||
<!-- Tête avec cornes/oreilles animales -->
|
<circle cx="52" cy="36" r="2" fill="#cc44ff"/>
|
||||||
<circle cx="50" cy="35" r="9" fill="#22cc88" fill-opacity="0.15" stroke="#22cc88" stroke-width="1.8"/>
|
<ellipse cx="65" cy="44" rx="5" ry="4" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||||
<!-- Oreilles pointues (animal) -->
|
<circle cx="65" cy="44" r="2" fill="#cc44ff"/>
|
||||||
<path d="M41 30 L38 20 L45 28" fill="#22cc88" fill-opacity="0.5" stroke="#22cc88" stroke-width="1.5" stroke-linejoin="round"/>
|
<ellipse cx="42" cy="56" rx="4" ry="4" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||||
<path d="M59 30 L62 20 L55 28" fill="#22cc88" fill-opacity="0.5" stroke="#22cc88" stroke-width="1.5" stroke-linejoin="round"/>
|
<circle cx="42" cy="56" r="2" fill="#cc44ff"/>
|
||||||
|
<ellipse cx="60" cy="54" rx="4" ry="5" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||||
<!-- Yeux (regard surnaturel) -->
|
<circle cx="60" cy="54" r="2" fill="#cc44ff"/>
|
||||||
<ellipse cx="46" cy="35" rx="3" ry="2" fill="#22cc88" opacity="0.8"/>
|
<!-- Petit oeil supplémentaire -->
|
||||||
<ellipse cx="54" cy="35" rx="3" ry="2" fill="#22cc88" opacity="0.8"/>
|
<circle cx="50" cy="48" r="3" fill="#cc44ff" fill-opacity="0.3" stroke="#cc44ff" stroke-width="1.2"/>
|
||||||
|
<circle cx="50" cy="48" r="1.5" fill="#cc44ff" opacity="0.8"/>
|
||||||
<!-- Queue spiralée -->
|
<!-- Membres difformes -->
|
||||||
<path d="M62 60 Q72 58 74 65 Q76 72 68 74 Q62 74 62 68"
|
<path d="M24 72 Q16 68 12 78" fill="none" stroke="#cc44ff" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
||||||
fill="none" stroke="#22cc88" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
<path d="M76 72 Q84 68 88 78" fill="none" stroke="#cc44ff" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
<path d="M30 46 Q18 44 14 50" fill="none" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
<!-- Tentacule / membre supplémentaire gauche -->
|
<path d="M70 46 Q82 44 86 50" fill="none" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||||
<path d="M38 55 Q26 52 22 60 Q20 68 28 66"
|
<!-- Bouche dentée -->
|
||||||
fill="none" stroke="#22cc88" stroke-width="2" stroke-linecap="round" opacity="0.6"/>
|
<path d="M36 66 Q44 72 50 70 Q56 72 64 66" fill="none" stroke="#cc44ff" stroke-width="2" stroke-linecap="round"/>
|
||||||
|
<line x1="42" y1="68" x2="40" y2="74" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<!-- Écailles / motif sur le corps -->
|
<line x1="50" y1="70" x2="50" y2="76" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
<path d="M44 46 Q50 42 56 46 Q52 50 50 48 Q48 50 44 46 Z"
|
<line x1="58" y1="68" x2="60" y2="74" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round"/>
|
||||||
fill="#22cc88" fill-opacity="0.3" stroke="#22cc88" stroke-width="1"/>
|
|
||||||
<path d="M44 52 Q50 48 56 52 Q52 56 50 54 Q48 56 44 52 Z"
|
|
||||||
fill="#22cc88" fill-opacity="0.3" stroke="#22cc88" stroke-width="1"/>
|
|
||||||
|
|
||||||
<!-- Kanji 怪 (étrange) stylisé — simplifié -->
|
|
||||||
<text x="50" y="81" text-anchor="middle" font-size="11" font-family="serif"
|
|
||||||
fill="#22cc88" opacity="0.55">怪</text>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -1,41 +1,36 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="mt-glow" cx="50%" cy="40%" r="50%">
|
<radialGradient id="mo-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#6688aa" stop-opacity="0.35"/>
|
<stop offset="0%" stop-color="#4ecdc4" stop-opacity="0.35"/>
|
||||||
<stop offset="100%" stop-color="#6688aa" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#4ecdc4" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#mt-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#mo-glow)"/>
|
||||||
|
<!-- Silhouette homme en trench-coat — style triades HK -->
|
||||||
<!-- Anneau ésotérique (cercle de protection) -->
|
|
||||||
<circle cx="50" cy="50" r="40" fill="none" stroke="#6688aa" stroke-width="1.2" opacity="0.4"/>
|
|
||||||
<circle cx="50" cy="50" r="38" fill="none" stroke="#6688aa" stroke-width="0.6" opacity="0.25" stroke-dasharray="5,4"/>
|
|
||||||
|
|
||||||
<!-- Silhouette humaine -->
|
|
||||||
<!-- Tête -->
|
<!-- Tête -->
|
||||||
<circle cx="50" cy="30" r="9" fill="#6688aa" fill-opacity="0.25" stroke="#6688aa" stroke-width="1.8"/>
|
<circle cx="50" cy="22" r="8" fill="#4ecdc4" fill-opacity="0.2" stroke="#4ecdc4" stroke-width="2"/>
|
||||||
<!-- Corps -->
|
<!-- Cou -->
|
||||||
<path d="M40 42 L36 66 L42 66 L45 56 L50 60 L55 56 L58 66 L64 66 L60 42 Z"
|
<line x1="50" y1="30" x2="50" y2="36" stroke="#4ecdc4" stroke-width="3" stroke-linecap="round"/>
|
||||||
fill="#6688aa" fill-opacity="0.2" stroke="#6688aa" stroke-width="1.8" stroke-linejoin="round"/>
|
<!-- Corps trench-coat -->
|
||||||
<!-- Bras gauche -->
|
<path d="M32 36 Q32 54 34 68 Q42 72 50 72 Q58 72 66 68 Q68 54 68 36 Q60 32 50 32 Q40 32 32 36Z"
|
||||||
<path d="M40 44 Q30 52 28 60" fill="none" stroke="#6688aa" stroke-width="2" stroke-linecap="round"/>
|
fill="#4ecdc4" fill-opacity="0.12" stroke="#4ecdc4" stroke-width="2"/>
|
||||||
<!-- Bras droit (levé, tenant un talisman) -->
|
<!-- Col relevé -->
|
||||||
<path d="M60 44 Q70 48 72 42" fill="none" stroke="#6688aa" stroke-width="2" stroke-linecap="round"/>
|
<path d="M36 36 Q42 30 50 32 Q58 30 64 36" fill="none" stroke="#4ecdc4" stroke-width="2" stroke-linecap="round"/>
|
||||||
|
<!-- Revers du manteau -->
|
||||||
<!-- Talisman / ofuda (papier de prière) -->
|
<path d="M36 36 Q44 44 48 68" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
<rect x="68" y="32" width="10" height="14" rx="1"
|
<path d="M64 36 Q56 44 52 68" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
fill="#6688aa" fill-opacity="0.2" stroke="#6688aa" stroke-width="1.5"/>
|
<!-- Bras gauche — main dans la poche -->
|
||||||
<!-- Lignes du talisman -->
|
<path d="M32 36 Q22 44 22 56 Q24 60 28 58" fill="none" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<line x1="70" y1="36" x2="76" y2="36" stroke="#6688aa" stroke-width="1" opacity="0.7"/>
|
<!-- Bras droit — bras le long du corps -->
|
||||||
<line x1="70" y1="39" x2="76" y2="39" stroke="#6688aa" stroke-width="1" opacity="0.7"/>
|
<path d="M68 36 Q78 44 78 56 Q76 60 72 58" fill="none" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<line x1="70" y1="42" x2="76" y2="42" stroke="#6688aa" stroke-width="1" opacity="0.7"/>
|
<!-- Jambes -->
|
||||||
|
<line x1="44" y1="72" x2="42" y2="88" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<!-- Symbole occulte sur la poitrine (trigramme Pa Kua simplifié) -->
|
<line x1="56" y1="72" x2="58" y2="88" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||||
<line x1="45" y1="46" x2="55" y2="46" stroke="#6688aa" stroke-width="1.5" opacity="0.6"/>
|
<!-- Chaussures -->
|
||||||
<line x1="45" y1="49" x2="55" y2="49" stroke="#6688aa" stroke-width="1.5" opacity="0.6"/>
|
<path d="M42 88 Q38 90 34 88" fill="none" stroke="#4ecdc4" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="45" y1="52" x2="50" y2="52" stroke="#6688aa" stroke-width="1.5" opacity="0.6"/>
|
<path d="M58 88 Q62 90 66 88" fill="none" stroke="#4ecdc4" stroke-width="2" stroke-linecap="round"/>
|
||||||
<line x1="52" y1="52" x2="55" y2="52" stroke="#6688aa" stroke-width="1.5" opacity="0.6"/>
|
<!-- Cigarette à la bouche -->
|
||||||
|
<line x1="52" y1="21" x2="58" y2="19" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
<circle cx="59" cy="18" r="1.5" fill="#4ecdc4" opacity="0.8"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.3 KiB |
@@ -1,58 +1,31 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="sh-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="sh-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#cc44ff" stop-opacity="0.35"/>
|
<stop offset="0%" stop-color="#00ff9f" stop-opacity="0.45"/>
|
||||||
<stop offset="100%" stop-color="#cc44ff" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#00ff9f" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#sh-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#sh-glow)"/>
|
||||||
|
<!-- Trois souffles (三氣) — trois spirales en trinity -->
|
||||||
<!-- Disque Bi (玉璧) — anneau de jade -->
|
<!-- Spirale 1 — haut gauche -->
|
||||||
<!-- Anneau extérieur -->
|
<path d="M36 38 Q28 30 30 22 Q34 14 42 18 Q50 22 48 30 Q46 36 38 38 Q32 38 30 34"
|
||||||
<circle cx="50" cy="50" r="32" fill="#cc44ff" fill-opacity="0.12" stroke="#cc44ff" stroke-width="2.5"/>
|
fill="none" stroke="#00ff9f" stroke-width="2.2" stroke-linecap="round"/>
|
||||||
<!-- Trou central du bi -->
|
<circle cx="30" cy="34" r="2.5" fill="#00ff9f" opacity="0.8"/>
|
||||||
<circle cx="50" cy="50" r="14" fill="#101622" stroke="#cc44ff" stroke-width="2"/>
|
<!-- Spirale 2 — haut droite -->
|
||||||
|
<path d="M64 38 Q72 30 70 22 Q66 14 58 18 Q50 22 52 30 Q54 36 62 38 Q68 38 70 34"
|
||||||
<!-- Gravures décoratives sur le disque (surface du bi) -->
|
fill="none" stroke="#00ff9f" stroke-width="2.2" stroke-linecap="round"/>
|
||||||
<!-- Spirales de grain (yun wen) — motif traditionnel des bi -->
|
<circle cx="70" cy="34" r="2.5" fill="#00ff9f" opacity="0.8"/>
|
||||||
<circle cx="50" cy="50" r="23" fill="none" stroke="#cc44ff" stroke-width="0.8" stroke-dasharray="2.5 2" opacity="0.5"/>
|
<!-- Spirale 3 — bas centre -->
|
||||||
<circle cx="50" cy="50" r="19" fill="none" stroke="#cc44ff" stroke-width="0.8" stroke-dasharray="1.5 3" opacity="0.4"/>
|
<path d="M50 72 Q42 76 36 72 Q30 64 36 58 Q42 52 50 56 Q58 60 58 68 Q56 76 50 78"
|
||||||
|
fill="none" stroke="#00ff9f" stroke-width="2.2" stroke-linecap="round"/>
|
||||||
<!-- Petits motifs en spirale sur la surface du bi (8 grains) -->
|
<circle cx="50" cy="78" r="2.5" fill="#00ff9f" opacity="0.8"/>
|
||||||
<path d="M50 22 Q52 20 54 22 Q52 24 50 22" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<!-- Connexions entre les trois spirales -->
|
||||||
<path d="M68 32 Q70 30 72 32 Q70 34 68 32" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<line x1="36" y1="38" x2="42" y2="48" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||||
<path d="M78 50 Q80 48 82 50 Q80 52 78 50" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<line x1="64" y1="38" x2="58" y2="48" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||||
<path d="M68 68 Q70 66 72 68 Q70 70 68 68" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<line x1="42" y1="48" x2="58" y2="48" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||||
<path d="M50 78 Q52 76 54 78 Q52 80 50 78" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<line x1="50" y1="48" x2="50" y2="56" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||||
<path d="M28 68 Q30 66 32 68 Q30 70 28 68" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<!-- Centre lumineux -->
|
||||||
<path d="M18 50 Q20 48 22 50 Q20 52 18 50" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<circle cx="50" cy="48" r="5" fill="#00ff9f" fill-opacity="0.25" stroke="#00ff9f" stroke-width="1.5"/>
|
||||||
<path d="M28 32 Q30 30 32 32 Q30 34 28 32" fill="none" stroke="#cc44ff" stroke-width="1" opacity="0.7"/>
|
<circle cx="50" cy="48" r="2" fill="#00ff9f" opacity="0.9"/>
|
||||||
|
|
||||||
<!-- 3 Perles (San = 3 en cantonais) flottant autour du bi -->
|
|
||||||
<!-- Perle 1 — haut -->
|
|
||||||
<circle cx="50" cy="10" r="5" fill="#cc44ff" fill-opacity="0.25" stroke="#cc44ff" stroke-width="1.8"/>
|
|
||||||
<circle cx="48" cy="8" r="1.5" fill="#cc44ff" fill-opacity="0.6"/>
|
|
||||||
<!-- Fil de perle haut -->
|
|
||||||
<line x1="50" y1="15" x2="50" y2="18" stroke="#cc44ff" stroke-width="1" stroke-dasharray="2 1" opacity="0.6"/>
|
|
||||||
|
|
||||||
<!-- Perle 2 — bas-gauche -->
|
|
||||||
<circle cx="26" cy="84" r="5" fill="#cc44ff" fill-opacity="0.25" stroke="#cc44ff" stroke-width="1.8"/>
|
|
||||||
<circle cx="24" cy="82" r="1.5" fill="#cc44ff" fill-opacity="0.6"/>
|
|
||||||
<!-- Fil perle bas-gauche -->
|
|
||||||
<line x1="30" y1="80" x2="34" y2="76" stroke="#cc44ff" stroke-width="1" stroke-dasharray="2 1" opacity="0.6"/>
|
|
||||||
|
|
||||||
<!-- Perle 3 — bas-droit -->
|
|
||||||
<circle cx="74" cy="84" r="5" fill="#cc44ff" fill-opacity="0.25" stroke="#cc44ff" stroke-width="1.8"/>
|
|
||||||
<circle cx="72" cy="82" r="1.5" fill="#cc44ff" fill-opacity="0.6"/>
|
|
||||||
<!-- Fil perle bas-droit -->
|
|
||||||
<line x1="70" y1="80" x2="66" y2="76" stroke="#cc44ff" stroke-width="1" stroke-dasharray="2 1" opacity="0.6"/>
|
|
||||||
|
|
||||||
<!-- Runes dans le trou central -->
|
|
||||||
<!-- Symbole 三 (3 traits) -->
|
|
||||||
<line x1="44" y1="46" x2="56" y2="46" stroke="#cc44ff" stroke-width="1.5" opacity="0.8"/>
|
|
||||||
<line x1="43" y1="50" x2="57" y2="50" stroke="#cc44ff" stroke-width="1.5" opacity="0.8"/>
|
|
||||||
<line x1="44" y1="54" x2="56" y2="54" stroke="#cc44ff" stroke-width="1.5" opacity="0.8"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -1,62 +1,32 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="sp-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="sp-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#4a9eff" stop-opacity="0.35"/>
|
<stop offset="0%" stop-color="#ffe033" stop-opacity="0.45"/>
|
||||||
<stop offset="100%" stop-color="#4a9eff" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ffe033" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#sp-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#sp-glow)"/>
|
||||||
|
<!-- Papier talisman (符) qui vole -->
|
||||||
<!-- Octogone extérieur (bagua) -->
|
<!-- Papier incliné -->
|
||||||
<polygon points="50,18 68,24 79,40 79,60 68,76 50,82 32,76 21,60 21,40 32,24"
|
<rect x="30" y="20" width="40" height="58" rx="3" ry="3"
|
||||||
fill="none" stroke="#4a9eff" stroke-width="1.8" opacity="0.7"/>
|
fill="#ffe033" fill-opacity="0.12" stroke="#ffe033" stroke-width="2"
|
||||||
|
transform="rotate(-12 50 50)"/>
|
||||||
<!-- 8 trigrammes sur les côtés (petites lignes stylisées) -->
|
<!-- Lignes d'écriture de talisman -->
|
||||||
<!-- Chaque trigramme = 3 lignes, positionnées sur les 8 côtés de l'octogone -->
|
<line x1="36" y1="30" x2="62" y2="26" stroke="#ffe033" stroke-width="1.8" stroke-linecap="round" opacity="0.8" transform="rotate(-12 50 50)"/>
|
||||||
<!-- Nord -->
|
<line x1="34" y1="38" x2="64" y2="34" stroke="#ffe033" stroke-width="1.4" stroke-linecap="round" opacity="0.6" transform="rotate(-12 50 50)"/>
|
||||||
<line x1="46" y1="13" x2="54" y2="13" stroke="#4a9eff" stroke-width="1.5"/>
|
<line x1="33" y1="46" x2="63" y2="42" stroke="#ffe033" stroke-width="1.4" stroke-linecap="round" opacity="0.6" transform="rotate(-12 50 50)"/>
|
||||||
<line x1="46" y1="16" x2="54" y2="16" stroke="#4a9eff" stroke-width="1.5"/>
|
<!-- Grand caractère fu (符) au centre -->
|
||||||
<line x1="46" y1="19" x2="54" y2="19" stroke="#4a9eff" stroke-width="1.5"/>
|
<text x="50" y="58" text-anchor="middle" font-size="26" font-family="serif"
|
||||||
<!-- Nord-Est -->
|
fill="#ffe033" fill-opacity="0.7" transform="rotate(-12 50 50)">符</text>
|
||||||
<line x1="66" y1="18" x2="72" y2="22" stroke="#4a9eff" stroke-width="1.5"/>
|
<!-- Lignes de sceau en bas -->
|
||||||
<line x1="64" y1="21" x2="70" y2="25" stroke="#4a9eff" stroke-width="1.5"/>
|
<line x1="34" y1="66" x2="64" y2="62" stroke="#ffe033" stroke-width="1.8" stroke-linecap="round" opacity="0.8" transform="rotate(-12 50 50)"/>
|
||||||
<line x1="62" y1="24" x2="66" y2="27" stroke="#4a9eff" stroke-width="1.5"/>
|
<!-- Énergie qui s'échappe du papier -->
|
||||||
<!-- Est -->
|
<path d="M72 22 Q80 16 82 22 Q76 26 72 22Z" fill="#ffe033" fill-opacity="0.5"/>
|
||||||
<line x1="81" y1="46" x2="87" y2="46" stroke="#4a9eff" stroke-width="1.5"/>
|
<path d="M76 32 Q84 28 86 34 Q80 36 76 32Z" fill="#ffe033" fill-opacity="0.4"/>
|
||||||
<line x1="81" y1="50" x2="87" y2="50" stroke="#4a9eff" stroke-width="1.5"/>
|
<path d="M22 60 Q14 56 14 62 Q20 64 22 60Z" fill="#ffe033" fill-opacity="0.4"/>
|
||||||
<line x1="83" y1="54" x2="87" y2="54" stroke="#4a9eff" stroke-width="1.5"/>
|
<!-- Petites étincelles -->
|
||||||
<!-- Sud-Est -->
|
<circle cx="80" cy="26" r="1.5" fill="#ffe033" opacity="0.9"/>
|
||||||
<line x1="66" y1="78" x2="72" y2="74" stroke="#4a9eff" stroke-width="1.5"/>
|
<circle cx="18" cy="62" r="1.5" fill="#ffe033" opacity="0.9"/>
|
||||||
<line x1="64" y1="75" x2="70" y2="71" stroke="#4a9eff" stroke-width="1.5"/>
|
<circle cx="74" cy="40" r="1" fill="#ffe033" opacity="0.7"/>
|
||||||
<line x1="62" y1="72" x2="68" y2="69" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<!-- Sud -->
|
|
||||||
<line x1="46" y1="87" x2="54" y2="87" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="46" y1="84" x2="54" y2="84" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="46" y1="81" x2="54" y2="81" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<!-- Sud-Ouest -->
|
|
||||||
<line x1="34" y1="78" x2="28" y2="74" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="36" y1="75" x2="30" y2="71" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="38" y1="72" x2="32" y2="69" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<!-- Ouest -->
|
|
||||||
<line x1="19" y1="46" x2="13" y2="46" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="19" y1="50" x2="13" y2="50" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="17" y1="54" x2="13" y2="54" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<!-- Nord-Ouest -->
|
|
||||||
<line x1="34" y1="18" x2="28" y2="22" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="36" y1="21" x2="30" y2="25" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<line x1="38" y1="24" x2="34" y2="27" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
|
|
||||||
<!-- Cercle intérieur -->
|
|
||||||
<circle cx="50" cy="50" r="22" fill="none" stroke="#4a9eff" stroke-width="1.5" opacity="0.6"/>
|
|
||||||
|
|
||||||
<!-- Spirale de cinnabre (qi) — double spirale -->
|
|
||||||
<path d="M50 50 Q54 42 50 38 Q44 34 40 40 Q36 48 42 54 Q50 62 60 56 Q68 48 62 38 Q54 28 42 32"
|
|
||||||
fill="none" stroke="#4a9eff" stroke-width="2" stroke-linecap="round" opacity="0.9"/>
|
|
||||||
|
|
||||||
<!-- Point central (cinnabre) -->
|
|
||||||
<circle cx="50" cy="50" r="4" fill="#4a9eff" fill-opacity="0.5" stroke="#4a9eff" stroke-width="1.5"/>
|
|
||||||
<circle cx="50" cy="50" r="1.5" fill="#4a9eff"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -1,49 +1,29 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="sn-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="sn-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#cc44ff" stop-opacity="0.4"/>
|
<stop offset="0%" stop-color="#ff44cc" stop-opacity="0.5"/>
|
||||||
<stop offset="100%" stop-color="#cc44ff" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ff44cc" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#sn-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#sn-glow)"/>
|
||||||
|
<!-- Vortex de qi — spirale d'énergie -->
|
||||||
<!-- Flammes surnaturelles (gauche) -->
|
<!-- Spirale externe -->
|
||||||
<path d="M22 72 Q20 60 26 52 Q22 56 24 46 Q28 38 32 42 Q28 32 36 26 Q38 38 34 44 Q40 36 42 28 Q46 40 40 50 Q46 44 48 36 Q52 48 46 56 Q50 50 54 44 Q56 56 50 64 Q54 58 58 52 Q60 62 56 70 Q52 68 50 72"
|
<path d="M50 16 Q72 18 80 36 Q88 54 74 68 Q60 82 42 78 Q24 74 18 58 Q12 42 24 28 Q36 14 52 16"
|
||||||
fill="#cc44ff" fill-opacity="0.2" stroke="#cc44ff" stroke-width="1.5" stroke-linejoin="round" opacity="0.8"/>
|
fill="none" stroke="#ff44cc" stroke-width="2.2" stroke-linecap="round"/>
|
||||||
|
<!-- Spirale intermédiaire -->
|
||||||
<!-- Contour de l'œil (grand) -->
|
<path d="M50 26 Q64 28 70 42 Q76 56 66 66 Q56 76 42 70 Q28 64 28 50 Q28 36 40 30 Q52 24 62 28"
|
||||||
<path d="M20 50 Q35 30 50 30 Q65 30 80 50 Q65 70 50 70 Q35 70 20 50 Z"
|
fill="none" stroke="#ff44cc" stroke-width="2" stroke-linecap="round" opacity="0.75"/>
|
||||||
fill="none" stroke="#cc44ff" stroke-width="2" opacity="0.9"/>
|
<!-- Spirale interne -->
|
||||||
<!-- Remplissage doux de l'œil -->
|
<path d="M50 36 Q58 36 62 44 Q66 52 60 60 Q54 66 46 62 Q38 58 38 50 Q38 42 44 38 Q50 34 56 38"
|
||||||
<path d="M25 50 Q38 36 50 36 Q62 36 75 50 Q62 64 50 64 Q38 64 25 50 Z"
|
fill="none" stroke="#ff44cc" stroke-width="1.8" stroke-linecap="round" opacity="0.6"/>
|
||||||
fill="#cc44ff" fill-opacity="0.08"/>
|
<!-- Noyau central -->
|
||||||
|
<circle cx="50" cy="50" r="8" fill="#ff44cc" fill-opacity="0.2" stroke="#ff44cc" stroke-width="2"/>
|
||||||
<!-- Iris de l'œil -->
|
<circle cx="50" cy="50" r="3" fill="#ff44cc" opacity="0.9"/>
|
||||||
<circle cx="50" cy="50" r="10" fill="none" stroke="#cc44ff" stroke-width="2" opacity="0.8"/>
|
<!-- Particules d'énergie en orbite -->
|
||||||
<!-- Pupille verticale (reptilienne / surnaturelle) -->
|
<circle cx="50" cy="16" r="2.5" fill="#ff44cc" opacity="0.8"/>
|
||||||
<ellipse cx="50" cy="50" rx="3" ry="8" fill="#cc44ff" fill-opacity="0.6"/>
|
<circle cx="80" cy="36" r="2" fill="#ff44cc" opacity="0.7"/>
|
||||||
<!-- Reflet -->
|
<circle cx="74" cy="68" r="2.5" fill="#ff44cc" opacity="0.8"/>
|
||||||
<circle cx="47" cy="46" r="2" fill="#cc44ff" fill-opacity="0.5"/>
|
<circle cx="18" cy="58" r="2" fill="#ff44cc" opacity="0.7"/>
|
||||||
|
<circle cx="24" cy="28" r="2" fill="#ff44cc" opacity="0.7"/>
|
||||||
<!-- Flammes supérieures (au-dessus de l'œil) -->
|
|
||||||
<path d="M38 30 Q36 22 42 18 Q40 26 46 22 Q44 28 50 24 Q48 30 54 26 Q52 32 58 28 Q56 34 62 30"
|
|
||||||
fill="none" stroke="#cc44ff" stroke-width="1.8" stroke-linecap="round" opacity="0.9"/>
|
|
||||||
|
|
||||||
<!-- Lignes de rayonnement autour de l'œil -->
|
|
||||||
<line x1="50" y1="24" x2="50" y2="18" stroke="#cc44ff" stroke-width="1.5" opacity="0.6"/>
|
|
||||||
<line x1="50" y1="76" x2="50" y2="82" stroke="#cc44ff" stroke-width="1.5" opacity="0.6"/>
|
|
||||||
<line x1="14" y1="50" x2="8" y2="50" stroke="#cc44ff" stroke-width="1.5" opacity="0.6"/>
|
|
||||||
<line x1="86" y1="50" x2="92" y2="50" stroke="#cc44ff" stroke-width="1.5" opacity="0.6"/>
|
|
||||||
<!-- Diagonaux -->
|
|
||||||
<line x1="27" y1="27" x2="22" y2="22" stroke="#cc44ff" stroke-width="1.2" opacity="0.5"/>
|
|
||||||
<line x1="73" y1="27" x2="78" y2="22" stroke="#cc44ff" stroke-width="1.2" opacity="0.5"/>
|
|
||||||
<line x1="27" y1="73" x2="22" y2="78" stroke="#cc44ff" stroke-width="1.2" opacity="0.5"/>
|
|
||||||
<line x1="73" y1="73" x2="78" y2="78" stroke="#cc44ff" stroke-width="1.2" opacity="0.5"/>
|
|
||||||
|
|
||||||
<!-- Spirales surnaturelles aux coins -->
|
|
||||||
<path d="M16 22 Q20 16 26 20 Q22 24 18 22" fill="none" stroke="#cc44ff" stroke-width="1.2" opacity="0.6"/>
|
|
||||||
<path d="M84 22 Q80 16 74 20 Q78 24 82 22" fill="none" stroke="#cc44ff" stroke-width="1.2" opacity="0.6"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -1,46 +1,36 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient id="wp-glow" cx="50%" cy="50%" r="50%">
|
<radialGradient id="wp-glow" cx="50%" cy="50%" r="50%">
|
||||||
<stop offset="0%" stop-color="#ff6b35" stop-opacity="0.3"/>
|
<stop offset="0%" stop-color="#ff6b35" stop-opacity="0.4"/>
|
||||||
<stop offset="100%" stop-color="#ff6b35" stop-opacity="0"/>
|
<stop offset="100%" stop-color="#ff6b35" stop-opacity="0"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Fond -->
|
|
||||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||||
<circle cx="50" cy="50" r="48" fill="url(#wp-glow)"/>
|
<circle cx="50" cy="50" r="48" fill="url(#wp-glow)"/>
|
||||||
|
<!-- Deux couteaux papillon (wing chun) croisés -->
|
||||||
<!-- Dao (sabre courbé) — de bas-gauche à haut-droit -->
|
<!-- Couteau 1 — orientation ↗ -->
|
||||||
<!-- Lame du dao (légèrement courbée) -->
|
<!-- Lame gauche -->
|
||||||
<path d="M22 78 Q30 60 45 45 Q58 32 72 22"
|
<path d="M24 72 Q28 60 36 50 Q44 40 56 28 L58 32 Q48 44 40 54 Q32 64 28 76 Z"
|
||||||
fill="none" stroke="#ff6b35" stroke-width="3.5" stroke-linecap="round"/>
|
fill="#ff6b35" fill-opacity="0.25" stroke="#ff6b35" stroke-width="1.8"/>
|
||||||
<!-- Dos de la lame (trait intérieur plus fin) -->
|
<!-- Garde en D couteau 1 -->
|
||||||
<path d="M25 76 Q33 58 47 44 Q59 33 72 24"
|
<path d="M36 50 Q32 46 28 48 Q26 52 30 54 Q34 56 36 50Z"
|
||||||
fill="none" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
fill="#ff6b35" fill-opacity="0.4" stroke="#ff6b35" stroke-width="1.5"/>
|
||||||
<!-- Brillance de la lame -->
|
<!-- Manche couteau 1 -->
|
||||||
<path d="M28 73 Q38 56 52 42"
|
<line x1="28" y1="76" x2="20" y2="84" stroke="#ff6b35" stroke-width="3.5" stroke-linecap="round"/>
|
||||||
fill="none" stroke="#ff6b35" stroke-width="0.8" stroke-linecap="round" opacity="0.8" stroke-dasharray="2 3"/>
|
<!-- Couteau 2 — orientation ↖ croisé -->
|
||||||
<!-- Garde du dao (petite croix ornementée) -->
|
<!-- Lame droite -->
|
||||||
<path d="M36 66 Q38 60 46 56 Q50 54 56 58 Q50 62 44 68 Z"
|
<path d="M76 72 Q72 60 64 50 Q56 40 44 28 L42 32 Q52 44 60 54 Q68 64 72 76 Z"
|
||||||
fill="#ff6b35" fill-opacity="0.3" stroke="#ff6b35" stroke-width="1.5"/>
|
fill="#ff6b35" fill-opacity="0.25" stroke="#ff6b35" stroke-width="1.8"/>
|
||||||
<!-- Poignée du dao -->
|
<!-- Garde en D couteau 2 -->
|
||||||
<line x1="22" y1="78" x2="15" y2="86" stroke="#ff6b35" stroke-width="4" stroke-linecap="round" opacity="0.7"/>
|
<path d="M64 50 Q68 46 72 48 Q74 52 70 54 Q66 56 64 50Z"
|
||||||
<rect x="13" y="84" width="6" height="4" rx="2" fill="#ff6b35" fill-opacity="0.5" stroke="#ff6b35" stroke-width="1" transform="rotate(-45 16 86)"/>
|
fill="#ff6b35" fill-opacity="0.4" stroke="#ff6b35" stroke-width="1.5"/>
|
||||||
|
<!-- Manche couteau 2 -->
|
||||||
<!-- Lance — de bas-droit à haut-gauche -->
|
<line x1="72" y1="76" x2="80" y2="84" stroke="#ff6b35" stroke-width="3.5" stroke-linecap="round"/>
|
||||||
<!-- Hampe de la lance -->
|
<!-- Reflets sur les lames -->
|
||||||
<line x1="78" y1="78" x2="22" y2="22" stroke="#ff6b35" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
<line x1="42" y1="44" x2="46" y2="40" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.7"/>
|
||||||
<!-- Pointe de la lance (haut-gauche) -->
|
<line x1="58" y1="44" x2="54" y2="40" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.7"/>
|
||||||
<path d="M22 22 L16 14 L20 20 L14 18 Z" fill="#ff6b35" stroke="#ff6b35" stroke-width="1" stroke-linejoin="round"/>
|
<!-- Étincelle au croisement -->
|
||||||
<!-- Ornement milieu de hampe -->
|
<circle cx="50" cy="50" r="3" fill="#ff6b35" opacity="0.9"/>
|
||||||
<path d="M44 44 Q48 40 52 44 Q48 48 44 44 Z" fill="#ff6b35" fill-opacity="0.4" stroke="#ff6b35" stroke-width="1"/>
|
<line x1="50" y1="44" x2="50" y2="56" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.6"/>
|
||||||
<!-- Embout de la lance (bas-droit) -->
|
<line x1="44" y1="50" x2="56" y2="50" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.6"/>
|
||||||
<path d="M78 78 L84 85 L80 80 L86 82 Z" fill="#ff6b35" stroke="#ff6b35" stroke-width="1" stroke-linejoin="round" opacity="0.7"/>
|
|
||||||
|
|
||||||
<!-- Petites étincelles au croisement -->
|
|
||||||
<circle cx="50" cy="50" r="3" fill="#ff6b35" fill-opacity="0.3" stroke="#ff6b35" stroke-width="1.5"/>
|
|
||||||
<line x1="50" y1="44" x2="50" y2="40" stroke="#ff6b35" stroke-width="1" opacity="0.7"/>
|
|
||||||
<line x1="56" y1="50" x2="60" y2="50" stroke="#ff6b35" stroke-width="1" opacity="0.7"/>
|
|
||||||
<line x1="44" y1="50" x2="40" y2="50" stroke="#ff6b35" stroke-width="1" opacity="0.7"/>
|
|
||||||
<line x1="50" y1="56" x2="50" y2="60" stroke="#ff6b35" stroke-width="1" opacity="0.7"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -34,6 +34,7 @@
|
|||||||
"CDE.HeiSpend": "Dépense HEI",
|
"CDE.HeiSpend": "Dépense HEI",
|
||||||
"CDE.SpellBonus": "Bonus Sort",
|
"CDE.SpellBonus": "Bonus Sort",
|
||||||
"CDE.SpellPower": "Puissance du Sort",
|
"CDE.SpellPower": "Puissance du Sort",
|
||||||
|
"CDE.BonusMalus": "Bonus/Malus",
|
||||||
"CDE.Boss": "Boss",
|
"CDE.Boss": "Boss",
|
||||||
"CDE.Cancel": "Annuler",
|
"CDE.Cancel": "Annuler",
|
||||||
"CDE.CancelChanges": "Annuler les modifications",
|
"CDE.CancelChanges": "Annuler les modifications",
|
||||||
@@ -81,6 +82,7 @@
|
|||||||
"CDE.EarthlyPrayer": "Prière Terrestre",
|
"CDE.EarthlyPrayer": "Prière Terrestre",
|
||||||
"CDE.Effects": "Effets",
|
"CDE.Effects": "Effets",
|
||||||
"CDE.Elixirs": "Élixirs",
|
"CDE.Elixirs": "Élixirs",
|
||||||
|
"CDE.EnablePrompt": "Toujours demander avant de lancer",
|
||||||
"CDE.Error0": "Impossible de poursuivre : le nombre total de vos dés à lancer est inférieur à 1.",
|
"CDE.Error0": "Impossible de poursuivre : le nombre total de vos dés à lancer est inférieur à 1.",
|
||||||
"CDE.Error1": "Impossible de poursuivre : vous ne possédez pas cette Compétence.",
|
"CDE.Error1": "Impossible de poursuivre : vous ne possédez pas cette Compétence.",
|
||||||
"CDE.Error10": "Impossible de poursuivre : vous avez 0 ou moins dans cet Aspect.",
|
"CDE.Error10": "Impossible de poursuivre : vous avez 0 ou moins dans cet Aspect.",
|
||||||
@@ -199,6 +201,7 @@
|
|||||||
"CDE.MartialArts": "Arts Martiaux",
|
"CDE.MartialArts": "Arts Martiaux",
|
||||||
"CDE.Masterized": "Vous maîtrisez cette Technique",
|
"CDE.Masterized": "Vous maîtrisez cette Technique",
|
||||||
"CDE.MasteryOfTheWay": "Maîtrise de la Voie",
|
"CDE.MasteryOfTheWay": "Maîtrise de la Voie",
|
||||||
|
"CDE.Material": "Matériau",
|
||||||
"CDE.Max": "Max",
|
"CDE.Max": "Max",
|
||||||
"CDE.Max-Present-Malus-Present-Max": "Max ● Actuel ● Malus ● Actuel ● Max",
|
"CDE.Max-Present-Malus-Present-Max": "Max ● Actuel ● Malus ● Actuel ● Max",
|
||||||
"CDE.Max-Present-Present-Max": "Max ● Actuel ● Actuel ● Max",
|
"CDE.Max-Present-Present-Max": "Max ● Actuel ● Actuel ● Max",
|
||||||
@@ -217,8 +220,11 @@
|
|||||||
"CDE.MsgMagic2": "s'élève à ",
|
"CDE.MsgMagic2": "s'élève à ",
|
||||||
"CDE.MsgMagic3": ". La puissance à invoquer est de ",
|
"CDE.MsgMagic3": ". La puissance à invoquer est de ",
|
||||||
"CDE.MsgMagic4": ", si toutefois le sort est lancé avec succès.",
|
"CDE.MsgMagic4": ", si toutefois le sort est lancé avec succès.",
|
||||||
|
"CDE.MoveUp": "Monter",
|
||||||
|
"CDE.MoveDown": "Descendre",
|
||||||
"CDE.NPCName": "Nom du PNJ",
|
"CDE.NPCName": "Nom du PNJ",
|
||||||
"CDE.FatSi": "Fat Si",
|
"CDE.FatSi": "Fat Si",
|
||||||
|
"CDE.FreePowerLevels": "Niveaux de puissance gratuits",
|
||||||
"CDE.PNJ": "PNJ",
|
"CDE.PNJ": "PNJ",
|
||||||
"CDE.Name": "Nom",
|
"CDE.Name": "Nom",
|
||||||
"CDE.Necromancy": "Nécromancie",
|
"CDE.Necromancy": "Nécromancie",
|
||||||
@@ -280,6 +286,7 @@
|
|||||||
"CDE.ResourceValue": "Valeur",
|
"CDE.ResourceValue": "Valeur",
|
||||||
"CDE.Resources": "Ressources",
|
"CDE.Resources": "Ressources",
|
||||||
"CDE.Results": "Résultats :",
|
"CDE.Results": "Résultats :",
|
||||||
|
"CDE.Roll": "Jet",
|
||||||
"CDE.RollDifficulty": "Difficulté du Jet",
|
"CDE.RollDifficulty": "Difficulté du Jet",
|
||||||
"CDE.SAN-ZING": "SAN ● ZING",
|
"CDE.SAN-ZING": "SAN ● ZING",
|
||||||
"CDE.Sanhei": "Sanhei",
|
"CDE.Sanhei": "Sanhei",
|
||||||
@@ -321,12 +328,18 @@
|
|||||||
"CDE.Technique": "Technique",
|
"CDE.Technique": "Technique",
|
||||||
"CDE.Technologies": "Technologies",
|
"CDE.Technologies": "Technologies",
|
||||||
"CDE.Threat": "Niveau de Menace",
|
"CDE.Threat": "Niveau de Menace",
|
||||||
|
"CDE.ThrowType": "Type de jet",
|
||||||
"CDE.TinJi": "Tin Ji :",
|
"CDE.TinJi": "Tin Ji :",
|
||||||
"CDE.TinJi2": "Tin Ji",
|
"CDE.TinJi2": "Tin Ji",
|
||||||
"CDE.TinJiName": "Nom de la Tin Ji",
|
"CDE.TinJiName": "Nom de la Tin Ji",
|
||||||
"CDE.TinjiNotFound": "Aucun acteur Tin Ji trouvé. Le Maître du Jeu doit en créer un.",
|
"CDE.TinjiNotFound": "Aucun acteur Tin Ji trouvé. Le Maître du Jeu doit en créer un.",
|
||||||
"CDE.TinjiEmpty": "Il n'y a plus de dés de Tin Ji disponibles.",
|
"CDE.TinjiEmpty": "Il n'y a plus de dés de Tin Ji disponibles.",
|
||||||
"CDE.TinjiSpent": "{name} dépense 1 dé de Tin Ji.",
|
"CDE.TinjiSpent": "{name} dépense 1 dé de Tin Ji.",
|
||||||
|
"CDE.Settings.LoksyuConsumptionOrder": "Ordre de consommation du Loksyu",
|
||||||
|
"CDE.Settings.LoksyuConsumptionOrderHint": "Définit quelle polarité (Yin ou Yang) est consommée en priorité lorsqu'un dé est puisé dans la réserve de Loksyu.",
|
||||||
|
"CDE.Settings.LoksyuOrderYangFirst": "Yang d'abord",
|
||||||
|
"CDE.Settings.LoksyuOrderYinFirst": "Yin d'abord",
|
||||||
|
"CDE.Settings.LoksyuOrderBalanced": "Équilibré (consomme la polarité la plus fournie)",
|
||||||
"CDE.PostRollActions": "Puiser dans le Loksyu / Dépenser Tin Ji",
|
"CDE.PostRollActions": "Puiser dans le Loksyu / Dépenser Tin Ji",
|
||||||
"CDE.LoksyuDrawsA": "pioche",
|
"CDE.LoksyuDrawsA": "pioche",
|
||||||
"CDE.LoksyuFromAspect": "du",
|
"CDE.LoksyuFromAspect": "du",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000035
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:32:13.366106 7fe44efef6c0 Recovering log #33
|
2026/06/10-16:26:13.211312 7f2fceffd6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.376874 7fe44efef6c0 Delete type=3 #31
|
2026/06/10-16:26:13.220902 7f2fceffd6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.376974 7fe44efef6c0 Delete type=0 #33
|
2026/06/10-16:26:13.220927 7f2fceffd6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.617629 7fe44cfeb6c0 Level-0 table #38: started
|
2026/06/10-16:29:53.729923 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.617668 7fe44cfeb6c0 Level-0 table #38: 0 bytes OK
|
2026/06/10-16:29:53.729930 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.624147 7fe44cfeb6c0 Delete type=0 #36
|
2026/06/10-16:29:53.735552 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.643567 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.741380 7f2fce7fc6c0 Manual compaction at level-0 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
2026/06/10-16:17:31.579029 7f301cbff6c0 Recovering log #34
|
||||||
|
2026/06/10-16:17:31.588884 7f301cbff6c0 Delete type=3 #32
|
||||||
|
2026/06/10-16:17:31.588903 7f301cbff6c0 Delete type=0 #34
|
||||||
|
2026/06/10-16:19:32.836492 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
|
2026/06/10-16:19:32.836504 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
|
2026/06/10-16:19:32.843139 7f2fce7fc6c0 Delete type=0 #37
|
||||||
|
2026/06/10-16:19:32.855656 7f2fce7fc6c0 Manual compaction at level-0 from '!items!3aig6MWvZCRoWXPW' @ 72057594037927935 : 1 .. '!items!cXaQG1TBE0jzrbNt' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000023
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
2026/05/06-22:32:13.427495 7fe44efef6c0 Recovering log #21
|
2026/06/10-16:26:13.276120 7f301cbff6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.437731 7fe44efef6c0 Delete type=3 #19
|
2026/06/10-16:26:13.285508 7f301cbff6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.437796 7fe44efef6c0 Delete type=0 #21
|
2026/06/10-16:26:13.285526 7f301cbff6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.643733 7fe44cfeb6c0 Level-0 table #26: started
|
2026/06/10-16:29:53.772491 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.643771 7fe44cfeb6c0 Level-0 table #26: 0 bytes OK
|
2026/06/10-16:29:53.772502 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.650510 7fe44cfeb6c0 Delete type=0 #24
|
2026/06/10-16:29:53.778096 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.669664 7fe44cfeb6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.x83SZpLrbEi96PVQ' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.791678 7f2fce7fc6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at (end)
|
||||||
2026/05/06-22:37:23.669706 7fe44cfeb6c0 Manual compaction at level-1 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.x83SZpLrbEi96PVQ' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
2026/05/06-22:24:45.849795 7fe44efef6c0 Recovering log #17
|
2026/06/10-16:17:31.644676 7f2fcf7fe6c0 Recovering log #34
|
||||||
2026/05/06-22:24:45.867206 7fe44efef6c0 Delete type=3 #15
|
2026/06/10-16:17:31.653678 7f2fcf7fe6c0 Delete type=3 #32
|
||||||
2026/05/06-22:24:45.867306 7fe44efef6c0 Delete type=0 #17
|
2026/06/10-16:17:31.653697 7f2fcf7fe6c0 Delete type=0 #34
|
||||||
2026/05/06-22:30:22.773890 7fe44cfeb6c0 Level-0 table #22: started
|
2026/06/10-16:19:32.867823 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
2026/05/06-22:30:22.773918 7fe44cfeb6c0 Level-0 table #22: 0 bytes OK
|
2026/06/10-16:19:32.867836 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
2026/05/06-22:30:22.780047 7fe44cfeb6c0 Delete type=0 #20
|
2026/06/10-16:19:32.874859 7f2fce7fc6c0 Delete type=0 #37
|
||||||
2026/05/06-22:30:22.798899 7fe44cfeb6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.x83SZpLrbEi96PVQ' @ 0 : 0; will stop at (end)
|
2026/06/10-16:19:32.874953 7f2fce7fc6c0 Manual compaction at level-0 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.wgqIHHVlO9miegn1' @ 0 : 0; will stop at (end)
|
||||||
2026/05/06-22:30:22.798944 7fe44cfeb6c0 Manual compaction at level-1 from '!journal!CDEGuideMain0001' @ 72057594037927935 : 1 .. '!journal.pages!CDEGuideMain0001.x83SZpLrbEi96PVQ' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000035
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:32:13.390543 7fe44efef6c0 Recovering log #33
|
2026/06/10-16:26:13.232087 7f2fcf7fe6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.400800 7fe44efef6c0 Delete type=3 #31
|
2026/06/10-16:26:13.242712 7f2fcf7fe6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.400881 7fe44efef6c0 Delete type=0 #33
|
2026/06/10-16:26:13.242732 7f2fcf7fe6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.636590 7fe44cfeb6c0 Level-0 table #38: started
|
2026/06/10-16:29:53.748487 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.636613 7fe44cfeb6c0 Level-0 table #38: 0 bytes OK
|
2026/06/10-16:29:53.748497 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.643393 7fe44cfeb6c0 Delete type=0 #36
|
2026/06/10-16:29:53.754350 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.643628 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.766297 7f2fce7fc6c0 Manual compaction at level-0 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:24:45.793005 7fe44efef6c0 Recovering log #29
|
2026/06/10-16:17:31.600066 7f2fcf7fe6c0 Recovering log #34
|
||||||
2026/05/06-22:24:45.808875 7fe44efef6c0 Delete type=3 #27
|
2026/06/10-16:17:31.609869 7f2fcf7fe6c0 Delete type=3 #32
|
||||||
2026/05/06-22:24:45.808947 7fe44efef6c0 Delete type=0 #29
|
2026/06/10-16:17:31.609890 7f2fcf7fe6c0 Delete type=0 #34
|
||||||
2026/05/06-22:30:22.754997 7fe44cfeb6c0 Level-0 table #34: started
|
2026/06/10-16:19:32.843204 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
2026/05/06-22:30:22.755020 7fe44cfeb6c0 Level-0 table #34: 0 bytes OK
|
2026/06/10-16:19:32.843219 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
2026/05/06-22:30:22.760743 7fe44cfeb6c0 Delete type=0 #32
|
2026/06/10-16:19:32.849235 7f2fce7fc6c0 Delete type=0 #37
|
||||||
2026/05/06-22:30:22.773745 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:19:32.855663 7f2fce7fc6c0 Manual compaction at level-0 from '!items!0NDBw1YB54q3hLH0' @ 72057594037927935 : 1 .. '!items!ykekdZlirabRobEF' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000035
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:32:13.402637 7fe44e7ee6c0 Recovering log #33
|
2026/06/10-16:26:13.243837 7f2fcffff6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.413187 7fe44e7ee6c0 Delete type=3 #31
|
2026/06/10-16:26:13.253357 7f2fcffff6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.413261 7fe44e7ee6c0 Delete type=0 #33
|
2026/06/10-16:26:13.253373 7f2fcffff6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.630418 7fe44cfeb6c0 Level-0 table #38: started
|
2026/06/10-16:29:53.754405 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.630444 7fe44cfeb6c0 Level-0 table #38: 0 bytes OK
|
2026/06/10-16:29:53.754415 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.636504 7fe44cfeb6c0 Delete type=0 #36
|
2026/06/10-16:29:53.760076 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.643610 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.766302 7f2fce7fc6c0 Manual compaction at level-0 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:24:45.812009 7fe44dfed6c0 Recovering log #29
|
2026/06/10-16:17:31.611312 7f2fceffd6c0 Recovering log #34
|
||||||
2026/05/06-22:24:45.827425 7fe44dfed6c0 Delete type=3 #27
|
2026/06/10-16:17:31.621229 7f2fceffd6c0 Delete type=3 #32
|
||||||
2026/05/06-22:24:45.827509 7fe44dfed6c0 Delete type=0 #29
|
2026/06/10-16:17:31.621250 7f2fceffd6c0 Delete type=0 #34
|
||||||
2026/05/06-22:30:22.760828 7fe44cfeb6c0 Level-0 table #34: started
|
2026/06/10-16:19:32.849323 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
2026/05/06-22:30:22.760852 7fe44cfeb6c0 Level-0 table #34: 0 bytes OK
|
2026/06/10-16:19:32.849339 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
2026/05/06-22:30:22.766828 7fe44cfeb6c0 Delete type=0 #32
|
2026/06/10-16:19:32.855577 7f2fce7fc6c0 Delete type=0 #37
|
||||||
2026/05/06-22:30:22.773753 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:19:32.874930 7f2fce7fc6c0 Manual compaction at level-0 from '!items!HKq5ANSGiBIdcnki' @ 72057594037927935 : 1 .. '!items!HKq5ANSGiBIdcnki' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000035
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:32:13.317725 7fe44efef6c0 Recovering log #33
|
2026/06/10-16:26:13.102940 7f2fcffff6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.328138 7fe44efef6c0 Delete type=3 #31
|
2026/06/10-16:26:13.157514 7f2fcffff6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.328231 7fe44efef6c0 Delete type=0 #33
|
2026/06/10-16:26:13.157538 7f2fcffff6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.590888 7fe44cfeb6c0 Level-0 table #38: started
|
2026/06/10-16:29:53.716605 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.590952 7fe44cfeb6c0 Level-0 table #38: 0 bytes OK
|
2026/06/10-16:29:53.716618 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.597751 7fe44cfeb6c0 Delete type=0 #36
|
2026/06/10-16:29:53.723647 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.617391 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.735595 7f2fce7fc6c0 Manual compaction at level-0 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:24:45.678133 7fe44d7ec6c0 Recovering log #29
|
2026/06/10-16:17:31.536886 7f301cbff6c0 Recovering log #34
|
||||||
2026/05/06-22:24:45.699614 7fe44d7ec6c0 Delete type=3 #27
|
2026/06/10-16:17:31.546178 7f301cbff6c0 Delete type=3 #32
|
||||||
2026/05/06-22:24:45.699668 7fe44d7ec6c0 Delete type=0 #29
|
2026/06/10-16:17:31.546208 7f301cbff6c0 Delete type=0 #34
|
||||||
2026/05/06-22:30:22.729240 7fe44cfeb6c0 Level-0 table #34: started
|
2026/06/10-16:19:32.817770 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
2026/05/06-22:30:22.729273 7fe44cfeb6c0 Level-0 table #34: 0 bytes OK
|
2026/06/10-16:19:32.817789 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
2026/05/06-22:30:22.735324 7fe44cfeb6c0 Delete type=0 #32
|
2026/06/10-16:19:32.823980 7f2fce7fc6c0 Delete type=0 #37
|
||||||
2026/05/06-22:30:22.748747 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:19:32.830698 7f2fce7fc6c0 Manual compaction at level-0 from '!items!2nKXEHLG0fXtSOdy' @ 72057594037927935 : 1 .. '!items!tlIc1bmIAbQeUwj7' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000038
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:32:13.415167 7fe44efef6c0 Recovering log #36
|
2026/06/10-16:26:13.254219 7f2fceffd6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.424997 7fe44efef6c0 Delete type=3 #34
|
2026/06/10-16:26:13.263234 7f2fceffd6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.425065 7fe44efef6c0 Delete type=0 #36
|
2026/06/10-16:26:13.263255 7f2fceffd6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.794167 7fe44cfeb6c0 Level-0 table #41: started
|
2026/06/10-16:29:53.760191 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.794211 7fe44cfeb6c0 Level-0 table #41: 0 bytes OK
|
2026/06/10-16:29:53.760201 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.800534 7fe44cfeb6c0 Delete type=0 #39
|
2026/06/10-16:29:53.766249 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.800731 7fe44cfeb6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.772486 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:24:45.830634 7fe44efef6c0 Recovering log #32
|
2026/06/10-16:17:31.622266 7f2fcf7fe6c0 Recovering log #34
|
||||||
2026/05/06-22:24:45.846170 7fe44efef6c0 Delete type=3 #30
|
2026/06/10-16:17:31.631460 7f2fcf7fe6c0 Delete type=3 #32
|
||||||
2026/05/06-22:24:45.846232 7fe44efef6c0 Delete type=0 #32
|
2026/06/10-16:17:31.631480 7f2fcf7fe6c0 Delete type=0 #34
|
||||||
2026/05/06-22:30:22.780170 7fe44cfeb6c0 Level-0 table #37: started
|
2026/06/10-16:19:32.855722 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
2026/05/06-22:30:22.780198 7fe44cfeb6c0 Level-0 table #37: 0 bytes OK
|
2026/06/10-16:19:32.855734 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
2026/05/06-22:30:22.786085 7fe44cfeb6c0 Delete type=0 #35
|
2026/06/10-16:19:32.861808 7f2fce7fc6c0 Delete type=0 #37
|
||||||
2026/05/06-22:30:22.798917 7fe44cfeb6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
|
2026/06/10-16:19:32.874938 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!4ZjFZ1HoJV9mJStt' @ 72057594037927935 : 1 .. '!actors!zVpmacwoWEG8YTCQ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000018
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
2026/06/10-16:26:13.264620 7f2fceffd6c0 Recovering log #16
|
||||||
|
2026/06/10-16:26:13.274036 7f2fceffd6c0 Delete type=3 #14
|
||||||
|
2026/06/10-16:26:13.274051 7f2fceffd6c0 Delete type=0 #16
|
||||||
|
2026/06/10-16:29:53.766305 7f2fce7fc6c0 Level-0 table #21: started
|
||||||
|
2026/06/10-16:29:53.766315 7f2fce7fc6c0 Level-0 table #21: 0 bytes OK
|
||||||
|
2026/06/10-16:29:53.772397 7f2fce7fc6c0 Delete type=0 #19
|
||||||
|
2026/06/10-16:29:53.791671 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
|
||||||
|
2026/06/10-16:29:53.814542 7f2fce7fc6c0 Manual compaction at level-1 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
2026/06/10-16:17:31.632628 7f2fcf7fe6c0 Recovering log #12
|
||||||
|
2026/06/10-16:17:31.642483 7f2fcf7fe6c0 Delete type=3 #10
|
||||||
|
2026/06/10-16:17:31.642501 7f2fcf7fe6c0 Delete type=0 #12
|
||||||
|
2026/06/10-16:19:32.861885 7f2fce7fc6c0 Level-0 table #17: started
|
||||||
|
2026/06/10-16:19:32.861895 7f2fce7fc6c0 Level-0 table #17: 0 bytes OK
|
||||||
|
2026/06/10-16:19:32.867739 7f2fce7fc6c0 Delete type=0 #15
|
||||||
|
2026/06/10-16:19:32.874946 7f2fce7fc6c0 Manual compaction at level-0 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
|
||||||
|
2026/06/10-16:19:32.874957 7f2fce7fc6c0 Manual compaction at level-1 from '!actors!5OGW1fRUn12aNMMV' @ 72057594037927935 : 1 .. '!actors.items!zSWwOmFiFjN4YxC9.w8LXSYQ1eIygtlKV' @ 0 : 0; will stop at (end)
|
||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000035
|
MANIFEST-000040
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:32:13.378942 7fe44dfed6c0 Recovering log #33
|
2026/06/10-16:26:13.222183 7f2fcffff6c0 Recovering log #38
|
||||||
2026/05/06-22:32:13.388592 7fe44dfed6c0 Delete type=3 #31
|
2026/06/10-16:26:13.231094 7f2fcffff6c0 Delete type=3 #36
|
||||||
2026/05/06-22:32:13.388647 7fe44dfed6c0 Delete type=0 #33
|
2026/06/10-16:26:13.231111 7f2fcffff6c0 Delete type=0 #38
|
||||||
2026/05/06-22:37:23.624309 7fe44cfeb6c0 Level-0 table #38: started
|
2026/06/10-16:29:53.735658 7f2fce7fc6c0 Level-0 table #43: started
|
||||||
2026/05/06-22:37:23.624349 7fe44cfeb6c0 Level-0 table #38: 0 bytes OK
|
2026/06/10-16:29:53.735668 7f2fce7fc6c0 Level-0 table #43: 0 bytes OK
|
||||||
2026/05/06-22:37:23.630330 7fe44cfeb6c0 Delete type=0 #36
|
2026/06/10-16:29:53.741314 7f2fce7fc6c0 Delete type=0 #41
|
||||||
2026/05/06-22:37:23.643593 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.754398 7f2fce7fc6c0 Manual compaction at level-0 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/05/06-22:24:45.774814 7fe44e7ee6c0 Recovering log #29
|
2026/06/10-16:17:31.589862 7f2fcffff6c0 Recovering log #34
|
||||||
2026/05/06-22:24:45.790576 7fe44e7ee6c0 Delete type=3 #27
|
2026/06/10-16:17:31.599011 7f2fcffff6c0 Delete type=3 #32
|
||||||
2026/05/06-22:24:45.790660 7fe44e7ee6c0 Delete type=0 #29
|
2026/06/10-16:17:31.599029 7f2fcffff6c0 Delete type=0 #34
|
||||||
2026/05/06-22:30:22.748887 7fe44cfeb6c0 Level-0 table #34: started
|
2026/06/10-16:19:32.811842 7f2fce7fc6c0 Level-0 table #39: started
|
||||||
2026/05/06-22:30:22.748914 7fe44cfeb6c0 Level-0 table #34: 0 bytes OK
|
2026/06/10-16:19:32.811862 7f2fce7fc6c0 Level-0 table #39: 0 bytes OK
|
||||||
2026/05/06-22:30:22.754926 7fe44cfeb6c0 Delete type=0 #32
|
2026/06/10-16:19:32.817688 7f2fce7fc6c0 Delete type=0 #37
|
||||||
2026/05/06-22:30:22.773735 7fe44cfeb6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/06/10-16:19:32.830692 7f2fce7fc6c0 Manual compaction at level-0 from '!items!DC2kimCi9sWxqhXG' @ 72057594037927935 : 1 .. '!items!qzfAEhmvVxEMzm0k' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
MANIFEST-000010
|
MANIFEST-000059
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
2026/05/06-22:32:13.440388 7fe44dfed6c0 Recovering log #8
|
2026/06/10-16:26:13.286742 7f2fcf7fe6c0 Recovering log #57
|
||||||
2026/05/06-22:32:13.451363 7fe44dfed6c0 Delete type=3 #6
|
2026/06/10-16:26:13.296421 7f2fcf7fe6c0 Delete type=3 #55
|
||||||
2026/05/06-22:32:13.451431 7fe44dfed6c0 Delete type=0 #8
|
2026/06/10-16:26:13.296441 7f2fcf7fe6c0 Delete type=0 #57
|
||||||
2026/05/06-22:37:23.650643 7fe44cfeb6c0 Level-0 table #13: started
|
2026/06/10-16:29:53.778131 7f2fce7fc6c0 Level-0 table #62: started
|
||||||
2026/05/06-22:37:23.650683 7fe44cfeb6c0 Level-0 table #13: 0 bytes OK
|
2026/06/10-16:29:53.778141 7f2fce7fc6c0 Level-0 table #62: 0 bytes OK
|
||||||
2026/05/06-22:37:23.656717 7fe44cfeb6c0 Delete type=0 #11
|
2026/06/10-16:29:53.783939 7f2fce7fc6c0 Delete type=0 #60
|
||||||
2026/05/06-22:37:23.669680 7fe44cfeb6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
|
2026/06/10-16:29:53.791683 7f2fce7fc6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||||
2026/05/06-22:37:23.669713 7fe44cfeb6c0 Manual compaction at level-1 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
2026/06/10-16:17:31.655147 7f2fceffd6c0 Recovering log #53
|
||||||
|
2026/06/10-16:17:31.664989 7f2fceffd6c0 Delete type=3 #51
|
||||||
|
2026/06/10-16:17:31.665009 7f2fceffd6c0 Delete type=0 #53
|
||||||
|
2026/06/10-16:19:32.875008 7f2fce7fc6c0 Level-0 table #58: started
|
||||||
|
2026/06/10-16:19:32.875020 7f2fce7fc6c0 Level-0 table #58: 0 bytes OK
|
||||||
|
2026/06/10-16:19:32.880947 7f2fce7fc6c0 Delete type=0 #56
|
||||||
|
2026/06/10-16:19:32.903220 7f2fce7fc6c0 Manual compaction at level-0 from '!scenes!2C6gyZpvPxWlsVZi' @ 72057594037927935 : 1 .. '!scenes.levels!olYe9bhuXwRWQ8j7.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||