Ajout de la fenêtre de thème astral

Accessible par macro/depuis les fenêtres d'astrologie
This commit is contained in:
Vincent Vandemeulebrouck 2023-03-07 02:28:10 +01:00
parent a810e20eca
commit 80579032ea
13 changed files with 290 additions and 48 deletions

View File

@ -1,3 +1,4 @@
import { ThemeAstral } from "./sommeil/theme-astral.js";
/**
* Extend the base Dialog entity by defining a custom window to perform roll.
@ -7,16 +8,17 @@ export class RdDAstrologieEditeur extends Dialog {
/* -------------------------------------------- */
constructor(html, calendrier, calendrierData) {
let myButtons = {
resetButton: { label: "Re-tirer les nombres astraux", callback: html => this.resetNombreAstraux() },
saveButton: { label: "Fermer", callback: html => {} }
let dialogConf = {
title: "Editeur d'Astrologie",
content: html,
default: "fermer",
buttons: {
fermer: { label: "Fermer", callback: html => { } }
}
};
// Common conf
let dialogConf = { content: html, title: "Editeur d'Astrologie", buttons: myButtons, default: "saveButton" };
let dialogOptions = {
classes: ["rdd-roll-dialog"], width: 600,
classes: ["rdd-roll-dialog"],
width: 600,
height: 'fit-content',
'max-height': 800,
'z-index': 99999
@ -30,6 +32,8 @@ export class RdDAstrologieEditeur extends Dialog {
activateListeners(html) {
super.activateListeners(html);
this.html = html;
this.html.find('[name="theme-astral"]').click(event => ThemeAstral.create());
this.html.find('[name="reset-nombres-astraux"]').click(event => this.resetNombreAstraux());
}
@ -39,6 +43,7 @@ export class RdDAstrologieEditeur extends Dialog {
await game.system.rdd.calendrier.rebuildListeNombreAstral();
game.system.rdd.calendrier.showAstrologieEditor();
this.close()
}
/* -------------------------------------------- */

View File

@ -1,6 +1,7 @@
import { RdDItemCompetence } from "./item-competence.js";
import { Misc } from "./misc.js";
import { SYSTEM_SOCKET_ID } from "./constants.js";
import { ThemeAstral } from "./sommeil/theme-astral.js";
/**
@ -49,9 +50,12 @@ export class RdDAstrologieJoueur extends Dialog {
this.html.find("[name='diffConditions']").val(0);
this.html.find('[name="jet-astrologie"]').click((event) => {
this.html.find('[name="jet-astrologie"]').click(event => {
this.requestJetAstrologie();
});
this.html.find('[name="theme-astral"]').click(event => {
ThemeAstral.create();
});
}
/* -------------------------------------------- */

View File

@ -257,6 +257,7 @@ export class RdDCalendrier extends Application {
}
this.listeNombreAstral = newList;
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", newList);
game.actors.forEach(actor => actor.deleteEmbeddedDocuments("Item", actor.listItems('nombreastral').map(it => it.id)));
}
}
@ -301,7 +302,7 @@ export class RdDCalendrier extends Application {
async positionnerHeure(heure) {
const indexDate = this.timestamp.indexDate;
const addDay = this.timestamp.heure < heure ? 0 : 1;
const newTimestamp = new RdDTimestamp({ indexDate: indexDate + addDay}).addHeures(heure);
const newTimestamp = new RdDTimestamp({ indexDate: indexDate + addDay }).addHeures(heure);
await this.setNewTimestamp(newTimestamp)
}
@ -370,10 +371,6 @@ export class RdDCalendrier extends Application {
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.listeNombreAstral);
}
static ecartHeureChance(heureNaissance, nombreAstral, heure) {
return (heureNaissance + nombreAstral - heure) % RDD_HEURES_PAR_JOUR;
}
/* -------------------------------------------- */
getAjustementAstrologique(heureNaissance, name = undefined) {
let defHeure = RdDTimestamp.findHeure(heureNaissance);
@ -399,6 +396,10 @@ export class RdDCalendrier extends Application {
return 0;
}
static ecartHeureChance(heureNaissance, nombreAstral, heure) {
return ((heureNaissance + nombreAstral - heure) % RDD_HEURES_PAR_JOUR + RDD_HEURES_PAR_JOUR) % RDD_HEURES_PAR_JOUR;
}
/* -------------------------------------------- */
getData() {
let formData = super.getData();

View File

@ -55,6 +55,7 @@ import { RdDFauneItemSheet } from "./item/sheet-faune.js";
import { RdDConteneurItemSheet } from "./item/sheet-conteneur.js";
import { RdDSigneDraconiqueItemSheet } from "./item/sheet-signedraconique.js";
import { RdDItemInventaireSheet } from "./item/sheet-base-inventaire.js";
import { ThemeAstral } from "./sommeil/theme-astral.js";
/**
* RdD system
@ -96,6 +97,8 @@ export class SystemReveDeDragon {
/* -------------------------------------------- */
async onInit() {
game.system.rdd = this;
this.ThemeAstral = ThemeAstral;
console.log(`Initializing Reve de Dragon System`);

View File

@ -195,17 +195,6 @@ export class RdDResolutionTable {
return Math.max(Math.floor(carac * (diff + 10) / 2), 1);
}
/* -------------------------------------------- */
static isAjustementAstrologique(rollData) {
if (rollData.selectedCarac?.label.toLowerCase().includes('chance')) {
return true;
}
if (rollData.selectedSort?.system.isrituel) {
return true;
}
return false;
}
/* -------------------------------------------- */
static isEchec(rollData) {
switch (rollData.surprise) {

View File

@ -48,8 +48,12 @@ const FORMULES_PERIODE = [
export class RdDTimestamp {
static hh(heure) {
return heure < 9 ? `0${heure + 1}` : `${heure + 1}`;
}
static iconeHeure(heure) {
return `systems/foundryvtt-reve-de-dragon/icons/heures/hd${heure < 9 ? '0' : ''}${heure + 1}.svg`;
return `systems/foundryvtt-reve-de-dragon/icons/heures/hd${RdDTimestamp.hh(heure)}.svg`;
}
static init() {
@ -63,6 +67,7 @@ export class RdDTimestamp {
for (let i = 0; i < DEFINITION_HEURES.length; i++) {
DEFINITION_HEURES[i].heure = i;
DEFINITION_HEURES[i].hh = RdDTimestamp.hh(i);
DEFINITION_HEURES[i].icon = RdDTimestamp.iconeHeure(i);
DEFINITION_HEURES[i].webp = DEFINITION_HEURES[i].icon.replace(".svg", ".webp");
}
@ -86,6 +91,9 @@ export class RdDTimestamp {
return definition
}
static definitions() {
return DEFINITION_HEURES
}
static formulesDuree() {
return FORMULES_DUREE
}

View File

@ -0,0 +1,58 @@
import { Misc } from "../misc.js";
import { RdDCalendrier } from "../rdd-calendrier.js";
import { RdDTimestamp } from "../rdd-timestamp.js";
export class ThemeAstral extends Application {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/sommeil/theme-astral.hbs",
title: "Thème astral",
width: 'fit-content',
height: 'fit-content',
popOut: true,
resizable: false
});
}
static async create() {
new ThemeAstral().render(true);
}
constructor() {
super({});
}
activateListeners(html) {
super.activateListeners(html);
this.html = html;
this.html.find('select[name="signe-astral"]').change(event => {
this.onCalculThemeAstral();
})
this.html.find('select[name="signe-naissance"]').change(event => {
this.onCalculThemeAstral();
})
this.onCalculThemeAstral();
}
onCalculThemeAstral() {
const signeAstral = RdDTimestamp.definition(this.html.find('select[name="signe-astral"]').val())
const chiffreAstral = signeAstral.heure + 1;
const signeNaissance = RdDTimestamp.definition(this.html.find('select[name="signe-naissance"]').val())
const heureNaissance = signeNaissance.heure + 1;
const heureChance = (chiffreAstral + heureNaissance) % 12 + 1
RdDTimestamp.definitions().forEach(dh => {
const ajustement = RdDCalendrier.ajustementAstrologiqueHeure(heureNaissance, chiffreAstral, dh.heure + 1);
const txtAjustement = ajustement == 0 ? '' : Misc.toSignedString(ajustement);
this.html.find(`div.astro-ajustement.ajustement-${dh.hh}`).text(txtAjustement)
});
const angle = (heureChance * 30 + 330) % 360;
const rotation = `rotate(${angle}deg)`;
this.html.find(`div.astro-roue div.astro-disque img`).css({
'transform': rotation,
'-ms-transform': rotation,
'-moz-transform': rotation,
'-webkit-transform': rotation,
'-o-transform': rotation
});
}
}

View File

@ -8,5 +8,6 @@
{"name":"Encaissement","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/svg/bones.svg","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.encaisser();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671234017623,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"WD6T8AdRbX2Ylxqe"}
{"name":"Jet quelconque","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/sundries/gaming/dice-runed-tan.webp","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.roll();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671233500655,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"bnJnbKDHpbqY8Pr9"}
{"name":"Recherche et tirage","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/tools/scribal/magnifying-glass.webp","command":"game.system.rdd.commands.tirage()","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.ZFWPNdQBjQs9z0YW"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.5.4","coreVersion":"10.291","createdTime":1673472449426,"modifiedTime":1673655461651,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"iVZnxOxhCMpkvYh3"}
{"name":"Thème astral","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/magic/nature/symbol-moon-stars-white.webp","command":"game.system.rdd.ThemeAstral.create();","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.oA0HPFeFK6YMspAX"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.19","coreVersion":"10.291","createdTime":1678127868791,"modifiedTime":1678150559112,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"koqhiDJSGP4gQ4vf"}
{"name":"Jet d'éthylisme","type":"script","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"icons/consumables/drinks/alcohol-beer-stein-wooden-metal-brown.webp","command":"const selected = game.system.rdd.RdDUtility.getSelectedActor();\nif (selected) {\n selected.jetEthylisme();\n}\nelse {\n ui.notifications.info('Pas de personnage sélectionné');\n}","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.XHNbjnGKXaCiCadq"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1671220038331,"modifiedTime":1671233646086,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"mvub1dRHNFmWjRr7"}
{"name":"Tirer le tarot","type":"chat","scope":"global","author":"Hp9ImM4o9YRTSdfu","img":"systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp","command":"/tirer tarot","ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3},"flags":{"core":{"sourceId":"Macro.HBZSKR9OHCQbLcTC"}},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.3.15","coreVersion":"10.291","createdTime":1669469547231,"modifiedTime":1671237401618,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"folder":null,"sort":0,"_id":"vTfJTFYYiRu8X5LM"}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="402.74" height="402.74" version="1.1" viewBox="0 0 106.56 106.56" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-52.554 -94.887)" fill="none">
<path d="m54.72 134.47 64.823 64.757" opacity=".8" stroke="#4a0" stroke-width=".53382"/>
<path d="m143.17 111.06-88.517 23.669" opacity=".8" stroke="#4a0" stroke-width=".53382"/>
<g stroke="#c83737" stroke-width=".52917">
<path d="m54.72 134.47 102.23 27.392" opacity=".8"/>
<path d="m119.53 97.053-64.809 37.418" opacity=".8"/>
<path d="m92.137 199.28-37.418-64.809" opacity=".8"/>
</g>
<circle transform="rotate(15)" cx="140.58" cy="115.73" r="52.917" opacity=".5" stroke="#aa00d4" stroke-linecap="round" stroke-width=".7"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -77,6 +77,16 @@
--gradient-violet: linear-gradient(150deg, rgba(100, 45, 124, 0.6), rgba(216, 157, 192, 0.3), rgba(177, 157, 216, 0.5), rgba(107, 62, 121, 0.3), rgba(100, 45, 124, 0.6));
--gradient-purple-black: linear-gradient(150deg, rgba(0, 0, 0, 0.7), rgba(100, 45, 124, 0.4), rgba(82, 17, 131, 0.3),rgba(100, 45, 124, 0.4), rgba(0, 0, 0, 0.7));
--gradient-silver-light: linear-gradient(30deg, rgba(61, 55, 93, 0.2), rgba(178, 179, 196, 0.1), rgba(59, 62, 63, 0.2), rgba(206, 204, 199, 0.1), rgba(61, 46, 49, 0.2));
--gradient-daylight: conic-gradient(
from 315deg,
hsla(50, 20%, 30%, 0.1) ,
hsla(50, 30%, 60%, 0.7) 25%,
hsla(50, 20%, 30%, 0.1) 50%,
hsla(250, 20%, 30%, 0.1) 50%,
hsla(250, 30%, 60%, 0.7) 75%,
hsla(250, 20%, 30%, 0.1)
);
--gradient-daylight2: radial-gradient(210deg, hsla(50, 30%, 60%, 0.6), hsla(50, 20%, 30%, 0.1) 50%, hsla(250, 20%, 30%, 0.1) 50%, hsla(250, 30%, 60%, 0.6));
--background-custom-button: linear-gradient(to bottom, rgba(33, 55, 74, 0.988) 5%, rgba(21, 40, 51, 0.671) 100%);
--background-custom-button-hover: linear-gradient(to bottom, rgb(128, 0, 0) 5%, rgb(62, 1, 1) 100%);
@ -860,12 +870,88 @@ form.rdddialogchrono input[type=datetime-local] {
color: var(--color-text-dark-primary);
border-radius: 3px;
}
form.dialog-astro {
width: 17rem;
}
form.dialog-astro div.astro-roue {
position: relative;
left: 2rem;
width: 13rem;
height: 13rem;
}
div.astro-roue div.astro-heure {
position: absolute;
width: 2rem;
height: 2rem;
}
div.astro-roue div.astro-cercle1 {
position: absolute;
background: var(--gradient-daylight);
border: 0.2rem solid rgba(100, 45, 124, 0.6);
border-radius: calc(6.1rem);
top: calc(50% - 6.1rem);
left: calc(50% - 6.1rem);
width: calc(100% - 0.8rem);
height: calc(100% - 0.8rem);
}
div.astro-roue div.astro-disque {
position: absolute;
border: none;
top: calc(50% - 4rem);
left: calc(50% - 4rem);
width: calc(100% - 5rem);
height: calc(100% - 5rem);
}
div.astro-roue div.astro-disque img { border: none; }
div.astro-roue div.astro-heure img.astro-heure-img {
width: 2rem;
height: 2rem;
flex-grow: 0;
padding: 0.1rem;
border: 0;
opacity: 0.9;
border: none;
}
div.astro-roue div.astro-heure.heure-12 { top: calc(50% - 1rem - 1.3rem); left: calc(50% - 1rem - 4.8rem); }
div.astro-roue div.astro-heure.heure-01 { top: calc(50% - 1rem - 3.5rem); left: calc(50% - 1rem - 3.5rem); }
div.astro-roue div.astro-heure.heure-02 { top: calc(50% - 1rem - 4.8rem); left: calc(50% - 1rem - 1.3rem); }
div.astro-roue div.astro-heure.heure-03 { top: calc(50% - 1rem - 4.8rem); left: calc(50% - 1rem + 1.3rem); }
div.astro-roue div.astro-heure.heure-04 { top: calc(50% - 1rem - 3.5rem); left: calc(50% - 1rem + 3.5rem); }
div.astro-roue div.astro-heure.heure-05 { top: calc(50% - 1rem - 1.3rem); left: calc(50% - 1rem + 4.8rem); }
div.astro-roue div.astro-heure.heure-06 { top: calc(50% - 1rem + 1.3rem); left: calc(50% - 1rem + 4.8rem); }
div.astro-roue div.astro-heure.heure-07 { top: calc(50% - 1rem + 3.5rem); left: calc(50% - 1rem + 3.5rem); }
div.astro-roue div.astro-heure.heure-08 { top: calc(50% - 1rem + 4.8rem); left: calc(50% - 1rem + 1.3rem); }
div.astro-roue div.astro-heure.heure-09 { top: calc(50% - 1rem + 4.8rem); left: calc(50% - 1rem - 1.3rem); }
div.astro-roue div.astro-heure.heure-10 { top: calc(50% - 1rem + 3.5rem); left: calc(50% - 1rem - 3.5rem); }
div.astro-roue div.astro-heure.heure-11 { top: calc(50% - 1rem + 1.3rem); left: calc(50% - 1rem - 4.8rem); }
div.astro-roue div.astro-ajustement {
position: absolute;
width: 1rem;
height: 1rem;
}
div.astro-roue div.astro-ajustement.ajustement-12 { top: calc(50% - 0.5rem - 0.8rem); left: calc(50% - 0.5rem - 2.9rem); }
div.astro-roue div.astro-ajustement.ajustement-01 { top: calc(50% - 0.5rem - 2.1rem); left: calc(50% - 0.5rem - 2.1rem); }
div.astro-roue div.astro-ajustement.ajustement-02 { top: calc(50% - 0.5rem - 2.9rem); left: calc(50% - 0.5rem - 0.8rem); }
div.astro-roue div.astro-ajustement.ajustement-03 { top: calc(50% - 0.5rem - 2.9rem); left: calc(50% - 0.5rem + 0.8rem); }
div.astro-roue div.astro-ajustement.ajustement-04 { top: calc(50% - 0.5rem - 2.1rem); left: calc(50% - 0.5rem + 2.1rem); }
div.astro-roue div.astro-ajustement.ajustement-05 { top: calc(50% - 0.5rem - 0.8rem); left: calc(50% - 0.5rem + 2.9rem); }
div.astro-roue div.astro-ajustement.ajustement-06 { top: calc(50% - 0.5rem + 0.8rem); left: calc(50% - 0.5rem + 2.9rem); }
div.astro-roue div.astro-ajustement.ajustement-07 { top: calc(50% - 0.5rem + 2.1rem); left: calc(50% - 0.5rem + 2.1rem); }
div.astro-roue div.astro-ajustement.ajustement-08 { top: calc(50% - 0.5rem + 2.9rem); left: calc(50% - 0.5rem + 0.8rem); }
div.astro-roue div.astro-ajustement.ajustement-09 { top: calc(50% - 0.5rem + 2.9rem); left: calc(50% - 0.5rem - 0.8rem); }
div.astro-roue div.astro-ajustement.ajustement-10 { top: calc(50% - 0.5rem + 2.1rem); left: calc(50% - 0.5rem - 2.1rem); }
div.astro-roue div.astro-ajustement.ajustement-11 { top: calc(50% - 0.5rem + 0.8rem); left: calc(50% - 0.5rem - 2.9rem); }
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
background: rgb(245,245,240) url(img/bg_left.webp) no-repeat left top;
}
section.sheet-body{padding: 0.25rem 0.5rem;}
section.sheet-body {
padding: 0.25rem 0.5rem;
}
.sheet header.sheet-header :is(.profile-img, .profile-img-token) {
object-fit: scale-down;

View File

@ -3,6 +3,10 @@
<div class="header-fields">
<h1 class="charname">Horoscope</h1>
</div>
<div class="header-fields">
<a class="chat-card-button" name="theme-astral">Thème astral</a>
<a class="chat-card-button" name="reset-nombres-astraux">Réinitialiser les nombres astraux</a>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
@ -43,7 +47,7 @@
<tr>
<td>
<img class="img-signe-heure" src="{{actor.img}}" title="{{actor.name}}" />
{{actor.name}}
{{actor.name}} {{timestamp-imgSigneHeure actor.system.heure}}
</td>
{{#each ajustementActeur.ajustements as |ajustement|}}
<td>{{#if (ne ajustement.ajustement 0)}}

View File

@ -5,7 +5,11 @@
</div>
</header>
<label>&nbsp;&nbsp;Conditions</label>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div>
<label>Conditions</label>
<select name="diffConditions" data-dtype="Number">
{{#select diffConditions}}
{{#each ajustementsConditions as |key|}}
@ -21,11 +25,16 @@
{{/each}}
{{/select}}
</select>
<label>Etat Général: {{etat}}</label>
<label>&nbsp;&nbsp;<a name="jet-astrologie">Faire un jet d'Astrologie</a></label>
<label>
&nbsp;&nbsp;Etat Général: {{etat}}
</label>
</div>
<div class="form-group">
<a class="chat-card-button" name="jet-astrologie">Lire les étoiles</a>
<a class="chat-card-button" name="theme-astral">Thème astral</a>
</div>
{{!-- Sheet Body --}}
<section class="sheet-body">
<div class="form-group">
<label for="astralList">Nombres Astraux</label>
<table class='table-nombres-astraux'>

View File

@ -0,0 +1,52 @@
<form class="dialog-astro">
<div class="form-group">
<label for="signe-astral">Chiffre Astral</label>
<select name="signe-astral" class="calendar-signe-heure" data-dtype="String">
{{#select "vaisseau"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
</div>
<div class="form-group">
<label for="signe-naissance">Heure</label>
<select name="signe-naissance" class="calendar-signe-heure" data-dtype="String">
{{#select "vaisseau"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}}
</select>
</div>
<hr>
<div><label>Heures de chance et malchance</label></div>
<div class="astro-roue">
<div class="astro-cercle1"></div>
<div class="astro-disque">
<img src="systems/foundryvtt-reve-de-dragon/styles/img/ui/astro-disque.svg" alt="">
</div>
<div class="astro-heure heure-01"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd01.webp" alt=""></div>
<div class="astro-heure heure-02"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd02.webp" alt=""></div>
<div class="astro-heure heure-03"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd03.webp" alt=""></div>
<div class="astro-heure heure-04"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd04.webp" alt=""></div>
<div class="astro-heure heure-05"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd05.webp" alt=""></div>
<div class="astro-heure heure-06"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.webp" alt=""></div>
<div class="astro-heure heure-07"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd07.webp" alt=""></div>
<div class="astro-heure heure-08"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd08.webp" alt=""></div>
<div class="astro-heure heure-09"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd09.webp" alt=""></div>
<div class="astro-heure heure-10"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd10.webp" alt=""></div>
<div class="astro-heure heure-11"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd11.webp" alt=""></div>
<div class="astro-heure heure-12"><img class="astro-heure-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd12.webp" alt=""></div>
<div class="astro-ajustement ajustement-01"></div>
<div class="astro-ajustement ajustement-02"></div>
<div class="astro-ajustement ajustement-03">-2</div>
<div class="astro-ajustement ajustement-04">+2</div>
<div class="astro-ajustement ajustement-05"></div>
<div class="astro-ajustement ajustement-06">-4</div>
<div class="astro-ajustement ajustement-07"></div>
<div class="astro-ajustement ajustement-08">+2</div>
<div class="astro-ajustement ajustement-09">-2</div>
<div class="astro-ajustement ajustement-10"></div>
<div class="astro-ajustement ajustement-11"></div>
<div class="astro-ajustement ajustement-12">+4</div>
</div>
</form>