Compare commits
	
		
			27 Commits
		
	
	
		
			d91bee0f42
			...
			12.0.22
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f0e02e2205 | |||
| 7d9ccfaf28 | |||
| 830cd1c200 | |||
| b9458c717e | |||
| 22f25b45ce | |||
| dca9505925 | |||
| 45e9e94646 | |||
| a0c7b87996 | |||
| a214256d69 | |||
| d2de8aa972 | |||
| 00ec86632f | |||
| 010234e001 | |||
| 39604afa32 | |||
| aad256bfee | |||
| 6ebd2ee576 | |||
| ac6e8b4689 | |||
| 387713e6f8 | |||
| c69cb3c13a | |||
| bda2e39e35 | |||
| cb2d462cfe | |||
| 5f8b5b104d | |||
| 9fe265165b | |||
| b92003ac1f | |||
| a1e4bfb529 | |||
| b4f0be5d64 | |||
| 5ff31d462f | |||
| be1d109def | 
							
								
								
									
										63
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| name: Release Creation | ||||
|  | ||||
| on:  | ||||
|   release: | ||||
|     types: [published] | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner." | ||||
|      | ||||
|     #- uses: actions/checkout@v3 | ||||
|     - uses: RouxAntoine/checkout@v3.5.4 | ||||
|  | ||||
|     # get part of the tag after the `v` | ||||
|     - name: Extract tag version number | ||||
|       id: get_version | ||||
|       uses: battila7/get-version-action@v2 | ||||
|  | ||||
|     # Substitute the Manifest and Download URLs in the module.json | ||||
|     - name: Substitute Manifest and Download Links For Versioned Ones | ||||
|       id: sub_manifest_link_version | ||||
|       uses: microsoft/variable-substitution@v1 | ||||
|       with: | ||||
|         files: 'system.json' | ||||
|       env: | ||||
|         version: ${{steps.get_version.outputs.version-without-v}} | ||||
|         url: https://www.uberwald.me/gitea/${{gitea.repository}} | ||||
|         manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download//${{github.event.release.tag_name}}/system.json | ||||
|         download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/foundryvtt-reve-de-dragon-${{github.event.release.tag_name}}.zip | ||||
|      | ||||
|     - name: Set up Node.js | ||||
|       uses: actions/setup-node@v2 | ||||
|       with: | ||||
|         node-version: '18'  # Use the node version your project requires | ||||
|  | ||||
|     - name: Install dependencies | ||||
|       run: npm install | ||||
|        | ||||
|     - name: Build the compendiums | ||||
|       run: node ./tools/packCompendiumsToDist.mjs | ||||
|  | ||||
|     # Create a zip file with all files required by the module to add to the release | ||||
|     - run: | | ||||
|          apt update -y | ||||
|          apt install -y zip | ||||
|  | ||||
|     - run: zip -r ./foundryvtt-reve-de-dragon-${{github.event.release.tag_name}}.zip system.json template.json README.md LICENSE.txt assets/ fonts/ icons lang/ module/ packs/ pic/ sounds/ styles/ templates/  | ||||
|      | ||||
|     - name: setup go | ||||
|       uses: actions/setup-go@v3 | ||||
|       with: | ||||
|         go-version: '>=1.20.1' | ||||
|      | ||||
|     - name: Use Go Action   | ||||
|       id: use-go-action | ||||
|       uses: https://gitea.com/actions/release-action@main | ||||
|       with: | ||||
|         files: |- | ||||
|           ./foundryvtt-reve-de-dragon-${{github.event.release.tag_name}}.zip   | ||||
|           system.json | ||||
|         api_key: '${{secrets.ALLOW_PUSH_RELEASE}}' | ||||
							
								
								
									
										
											BIN
										
									
								
								assets/scenes/YSpVuLeMCX9tAmgn-thumb.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/scenes/YSpVuLeMCX9tAmgn-thumb.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 7.3 KiB | 
							
								
								
									
										13
									
								
								changelog.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								changelog.md
									
									
									
									
									
								
							| @@ -1,4 +1,17 @@ | ||||
| # 12.0 | ||||
| ## 12.0.21 - La nomination d'Astrobazzarh | ||||
| - Les noms pour les messages dans le tchat sont maintenant ceux des tokens plutôt que ceux des acteurs | ||||
| - Fix: le choix des effets dans les options s'affiche correctement | ||||
|  | ||||
| ## 12.0.20 - Le tableau d'Astrobazzarh | ||||
| - Ecran d'accueil officiel Scriptarium | ||||
|  | ||||
| ## 12.0.19 - La témérité d'Astrobazzarh | ||||
| - Fix | ||||
|   - les défenses des créatures sont correctement filtrées | ||||
|   - le lancer d'initiative pour tous les personnages/PNJs fonctionne correctement | ||||
|   - les lieux et commerces n'ont pas d'initiative | ||||
|  | ||||
| ## 12.0.18 - A la barbe d'Astrobazzarh | ||||
| - Améliorations sur la feuille de PNJ simplifiée | ||||
|   - Ajout du portrait | ||||
|   | ||||
| @@ -36,6 +36,8 @@ import { ITEM_TYPES } from "./item.js"; | ||||
| import { RdDBaseActorSang } from "./actor/base-actor-sang.js"; | ||||
| import { RdDCoeur } from "./coeur/rdd-coeur.js"; | ||||
| import { DialogChoixXpCarac } from "./dialog-choix-xp-carac.js"; | ||||
| import { RdDItemArme } from "./item-arme.js"; | ||||
| import { RdDCombatManager } from "./rdd-combat.js"; | ||||
|  | ||||
| export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre'] | ||||
|  | ||||
| @@ -130,6 +132,23 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|       .reduce(Misc.sum(), 0); | ||||
|   } | ||||
|  | ||||
|   listActionsCombat() { | ||||
|     // Recupération des armes | ||||
|     const actions = RdDCombatManager.listActionsArmes( | ||||
|       this.itemTypes[ITEM_TYPES.arme] | ||||
|         .filter(it => RdDItemArme.isAttaque(it)) | ||||
|         .concat(RdDItemArme.empoignade(this)) | ||||
|         .concat(RdDItemArme.mainsNues(this)) | ||||
|       , | ||||
|       this.itemTypes[ITEM_TYPES.competence], | ||||
|       this.system.carac) | ||||
|  | ||||
|     if (this.system.attributs.hautrevant.value) { | ||||
|       actions.push({ name: "Draconic", action: 'haut-reve', system: { initOnly: true, competence: "Draconic" } }); | ||||
|     } | ||||
|     return actions | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   getTache(id) { return this.findItemLike(id, 'tache') } | ||||
|   getMeditation(id) { return this.findItemLike(id, 'meditation') } | ||||
| @@ -162,7 +181,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|         whisper: ChatUtility.getOwners(this), | ||||
|         content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, { | ||||
|           pr: nouveauReve, | ||||
|           alias: this.name, | ||||
|           alias: this.getAlias(), | ||||
|           potionName: it.name, | ||||
|           potionImg: it.img | ||||
|         }) | ||||
| @@ -1322,7 +1341,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|     const etat = this.getEtatGeneral({ ethylisme: true }); | ||||
|     const nbDoses = Number(this.system.compteurs.ethylisme.nb_doses || 0); | ||||
|     const ethylismeData = { | ||||
|       alias: this.name, | ||||
|       alias: this.getAlias(), | ||||
|       actor: this, | ||||
|       vie: this.system.sante.vie.max, | ||||
|       alcool: alcool, | ||||
| @@ -1407,7 +1426,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|     const perteDissolution = Math.max(0, Math.min(dissolution, conversion)); | ||||
|  | ||||
|     let stressRollData = { | ||||
|       alias: this.name, | ||||
|       alias: this.getAlias(), | ||||
|       selectedCarac: this.system.carac.reve, | ||||
|       rolled: stressRoll, | ||||
|       stress: fromStress, | ||||
| @@ -1498,7 +1517,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|         carac.value = niveauSuivant; | ||||
|  | ||||
|         let checkXp = { | ||||
|           alias: this.name, | ||||
|           alias: this.getAlias(), | ||||
|           carac: caracName, | ||||
|           value: niveauSuivant, | ||||
|           xp: carac.xp | ||||
| @@ -1528,7 +1547,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|         newCompData.system.niveau += 1; | ||||
|         newCompData.system.xp = newXP; | ||||
|         let checkXp = { | ||||
|           alias: this.name, | ||||
|           alias: this.getAlias(), | ||||
|           competence: newCompData.name, | ||||
|           niveau: newCompData.system.niveau, | ||||
|           xp: newCompData.system.xp, | ||||
| @@ -1548,7 +1567,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   async appliquerAjoutExperience(rollData, hideChatMessage = 'show') { | ||||
|     if (!Misc.isFirstConnectedGM()){ | ||||
|     if (!Misc.isFirstConnectedGM()) { | ||||
|       return | ||||
|     } | ||||
|     hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM) | ||||
| @@ -1765,7 +1784,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|     } | ||||
|     const competence = this.getCompetence(compName); | ||||
|     let rollData = { | ||||
|       alias: this.name, | ||||
|       alias: this.getAlias(), | ||||
|       caracValue: Number(carac.value), | ||||
|       selectedCarac: carac, | ||||
|       competence: competence, | ||||
| @@ -1838,7 +1857,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|       label: 'Jet ' + Grammar.apostrophe('de', competence.name), | ||||
|       template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html', | ||||
|       rollData: { | ||||
|         alias: this.name, | ||||
|         alias: this.getAlias(), | ||||
|         carac: this.system.carac, | ||||
|         selectedCarac: this.getCaracByName(caracName), | ||||
|         selectedCaracName: caracName, | ||||
| @@ -2911,7 +2930,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|  | ||||
|     let newQuantite = herbeData.system.quantite - herbeData.nbBrins; | ||||
|     let messageData = { | ||||
|       alias: this.name, | ||||
|       alias: this.getAlias(), | ||||
|       nbBrinsReste: newQuantite, | ||||
|       potion: newPotion, | ||||
|       herbe: herbeData | ||||
| @@ -3067,7 +3086,7 @@ export class RdDActor extends RdDBaseActorSang { | ||||
|     incarnation.name = 'Réincarnation de ' + incarnation.name | ||||
|     incarnation.system = { | ||||
|       carac: foundry.utils.duplicate(this.system.carac), | ||||
|       heure: RdDTimestamp.defHeure(await RdDDice.rollHeure( { rollMode: "selfroll", showDice: SHOW_DICE })).key, | ||||
|       heure: RdDTimestamp.defHeure(await RdDDice.rollHeure({ rollMode: "selfroll", showDice: SHOW_DICE })).key, | ||||
|       age: 18, | ||||
|       biographie: '', | ||||
|       notes: '', | ||||
|   | ||||
| @@ -15,7 +15,7 @@ import { StatusEffects } from "../settings/status-effects.js"; | ||||
| import { ITEM_TYPES } from "../item.js"; | ||||
| import { Targets } from "../targets.js"; | ||||
| import { RdDPossession } from "../rdd-possession.js"; | ||||
| import { RdDCombat } from "../rdd-combat.js"; | ||||
| import { RdDCombat, RdDCombatManager } from "../rdd-combat.js"; | ||||
| import { RdDConfirm } from "../rdd-confirm.js"; | ||||
| import { ENTITE_INCARNE, SHOW_DICE, SYSTEM_RDD } from "../constants.js"; | ||||
| import { RdDItemArme } from "../item-arme.js"; | ||||
| @@ -83,6 +83,23 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|   getEtatGeneral(options = { ethylisme: false }) { return 0 } | ||||
|   isActorCombat() { return true } | ||||
|  | ||||
|   getCaracInit(competence) { | ||||
|     if (!competence){ | ||||
|       return 0 | ||||
|     } | ||||
|     if (competence.type == ITEM_TYPES.competencecreature) { | ||||
|       return competence.system.carac_value | ||||
|     } | ||||
|     return this.system.carac[competence.system.defaut_carac].value; | ||||
|   } | ||||
|   listActionsCombat() { | ||||
|     return this.itemTypes[ITEM_TYPES.competencecreature] | ||||
|       .filter(it => RdDItemCompetenceCreature.isAttaque(it)) | ||||
|       .map(it => RdDItemCompetenceCreature.armeCreature(it)) | ||||
|       .filter(it => it != undefined); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   async computeArmure(attackerRoll) { return this.getProtectionNaturelle() } | ||||
|   async remiseANeuf() { } | ||||
|   async appliquerAjoutExperience(rollData, hideChatMessage = 'show') { } | ||||
| @@ -100,7 +117,7 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|     for (let effect of this.getEffects()) { | ||||
|       if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) { | ||||
|         await effect.delete(); | ||||
|         ChatMessage.create({ content: `${this.name} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` }); | ||||
|         ChatMessage.create({ content: `${this.getAlias()} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` }); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| @@ -155,9 +172,6 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|   getPossession(possessionId) { | ||||
|     return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId); | ||||
|   } | ||||
|   getPossessions() { | ||||
|     return this.itemTypes[ITEM_TYPES.possession]; | ||||
|   } | ||||
|   getEmpoignades() { | ||||
|     return this.itemTypes[ITEM_TYPES.empoignade]; | ||||
|   } | ||||
| @@ -274,7 +288,7 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|  | ||||
|     await this.openRollDialog({ | ||||
|       name: `jet-${this.id}`, | ||||
|       label: `Jet de ${this.name}`, | ||||
|       label: `Jet de ${this.getAlias()}`, | ||||
|       template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll.html', | ||||
|       rollData: { | ||||
|         carac: carac, | ||||
| @@ -370,7 +384,7 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|   rollArme(arme, categorieArme, token) { | ||||
|     token = token ?? RdDUtility.getSelectedToken(this) | ||||
|     const compToUse = this.$getCompetenceArme(arme, categorieArme) | ||||
|     if (!RdDItemArme.isArmeUtilisable(arme)) { | ||||
|     if (!RdDItemArme.isUtilisable(arme)) { | ||||
|       ui.notifications.warn(`Arme inutilisable: ${arme.name} a une résistance de 0 ou moins`) | ||||
|       return | ||||
|     } | ||||
| @@ -449,10 +463,10 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|  | ||||
|   async $afficherEncaissement(encaissement, show, defenderToken) { | ||||
|     foundry.utils.mergeObject(encaissement, { | ||||
|       alias: defenderToken?.name ?? this.name, | ||||
|       alias: defenderToken?.name ?? this.getAlias(), | ||||
|       hasPlayerOwner: this.hasPlayerOwner, | ||||
|       show: show ?? {} | ||||
|     }, {overwrite: false}); | ||||
|     }, { overwrite: false }); | ||||
|  | ||||
|     await ChatUtility.createChatWithRollMode( | ||||
|       { | ||||
| @@ -482,7 +496,7 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|     } | ||||
|     const rolled = await RdDResolutionTable.roll(this.getReveActuel(), - Number(entite.system.carac.niveau.value)); | ||||
|     const rollData = { | ||||
|       alias: this.name, | ||||
|       alias: this.getAlias(), | ||||
|       rolled: rolled, | ||||
|       entite: entite.name, | ||||
|       selectedCarac: this.system.carac.reve | ||||
| @@ -502,7 +516,7 @@ export class RdDBaseActorReve extends RdDBaseActor { | ||||
|   isEntiteAccordee(attacker) { return true } | ||||
|  | ||||
|   async setEntiteReveAccordee(actor) { | ||||
|     ui.notifications.error("Impossible de s'accorder à " + this.name + ": ce n'est pas une entité incarnée"); | ||||
|     ui.notifications.error("Impossible de s'accorder à " + this.getAlias() + ": ce n'est pas une entité incarnée"); | ||||
|   } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -191,7 +191,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve { | ||||
|       encaissement.mort = true; | ||||
|       ChatMessage.create({ | ||||
|         content: `<img class="chat-icon" src="icons/svg/skull.svg" data-tooltip="charge" /> | ||||
|         <strong>${this.name} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>` | ||||
|         <strong>${this.getAlias()} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>` | ||||
|       }); | ||||
|     } | ||||
|     return blessure; | ||||
| @@ -218,7 +218,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve { | ||||
|   async jetDeVie() { | ||||
|     if (this.isDead()) { | ||||
|       ChatMessage.create({ | ||||
|         content: `Jet de Vie: ${this.name} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`, | ||||
|         content: `Jet de Vie: ${this.getAlias()} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`, | ||||
|         whisper: ChatUtility.getOwners(this) | ||||
|       }) | ||||
|       return | ||||
| @@ -242,7 +242,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve { | ||||
|       await this.santeIncDec("vie", -perte); | ||||
|     } | ||||
|     if (this.isDead()) { | ||||
|       msgText += `<br><strong>${this.name} est mort !!!!</strong>`; | ||||
|       msgText += `<br><strong>${this.getAlias()} est mort !!!!</strong>`; | ||||
|     } | ||||
|     else if (prochainJet > 0) { | ||||
|       msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}` | ||||
| @@ -273,7 +273,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve { | ||||
|  | ||||
|   async setSonne(sonne = true) { | ||||
|     if (!game.combat && sonne) { | ||||
|       ui.notifications.info(`${this.name} est hors combat, il ne reste donc pas sonné`); | ||||
|       ui.notifications.info(`${this.getAlias()} est hors combat, il ne reste donc pas sonné`); | ||||
|       return; | ||||
|     } | ||||
|     await this.setEffect(STATUSES.StatusStunned, sonne) | ||||
|   | ||||
| @@ -78,6 +78,13 @@ export class RdDBaseActor extends Actor { | ||||
|     return game.actors.get(actorId) | ||||
|   } | ||||
|  | ||||
|   getAlias() { | ||||
|     if (this.token?.name != null && this.token != this.prototypeToken) { | ||||
|       return this.token.name | ||||
|     } | ||||
|     return this.name | ||||
|   } | ||||
|  | ||||
|   isPersonnageJoueur() { return false } | ||||
|  | ||||
|   static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; }; | ||||
| @@ -367,7 +374,7 @@ export class RdDBaseActor extends Actor { | ||||
|     chatAchatItem.quantiteTotal = quantite; | ||||
|     ChatMessage.create({ | ||||
|       user: achat.userId, | ||||
|       speaker: { alias: (acheteur ?? vendeur).name }, | ||||
|       speaker: { alias: (acheteur ?? vendeur).getAlias() }, | ||||
|       whisper: ChatUtility.getOwners(this), | ||||
|       content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', chatAchatItem) | ||||
|     }); | ||||
| @@ -683,7 +690,7 @@ export class RdDBaseActor extends Actor { | ||||
|       type: this.type, | ||||
|       img: this.img, | ||||
|       pack: this.pack, | ||||
|       name: this.name, | ||||
|       name: this.getAlias(), | ||||
|       system: { description: this.system.description } | ||||
|     } | ||||
|     renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.html', chatData) | ||||
| @@ -691,10 +698,10 @@ export class RdDBaseActor extends Actor { | ||||
|   } | ||||
|  | ||||
|   actionImpossible(action) { | ||||
|     ui.notifications.info(`${this.name} ne peut pas faire cette action: ${action}`) | ||||
|     ui.notifications.info(`${this.getAlias()} ne peut pas faire cette action: ${action}`) | ||||
|  | ||||
|   } | ||||
|   async roll() { this.actionImpossible("jet de caractéristiques") } | ||||
|  | ||||
|   async jetEthylisme() { this.actionImpossible("jet d'éthylisme") } | ||||
|   async rollAppelChance() { this.actionImpossible("appel à la chance") } | ||||
|   async jetDeMoral() { this.actionImpossible("jet de moral") } | ||||
| @@ -710,4 +717,19 @@ export class RdDBaseActor extends Actor { | ||||
|   getItemUse(itemId) { return 0; } | ||||
|   async finDeRound(options = { terminer: false }) { } | ||||
|   isActorCombat() { return false } | ||||
|   getCaracInit(competence) { return 0 } | ||||
|   listActionsCombat() { return [] } | ||||
|   listActionsPossessions() { | ||||
|     return this.itemTypes[ITEM_TYPES.possession] | ||||
|       .map(p => { | ||||
|         return { | ||||
|           name: p.name, | ||||
|           action: 'possession', | ||||
|           system: { | ||||
|             competence: p.name, | ||||
|             possessionid: p.system.possessionid, | ||||
|           } | ||||
|         } | ||||
|       }) | ||||
|   } | ||||
| } | ||||
| @@ -73,7 +73,7 @@ export class RdDCommerceSheet extends RdDBaseActorSheet { | ||||
|     } | ||||
|     const disponible = this.actor.getQuantiteDisponible(item) | ||||
|     if (disponible == 0) { | ||||
|       ui.notifications.warn(`${this.name} n'a plus de ${item.name} en vente`); | ||||
|       ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`); | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -152,8 +152,8 @@ export class Mapping { | ||||
|   } | ||||
|  | ||||
|   static prepareArme(actor, arme, maniement) { | ||||
|     const nameCompArme = RdDItemArme.getCompetenceArme(arme, maniement) | ||||
|     const competence = actor.getCompetence(nameCompArme) | ||||
|     const nameCompetenceArme = RdDItemArme.getCompetenceArme(arme, maniement) | ||||
|     const competence = actor.getCompetence(nameCompetenceArme) | ||||
|     if (RdDItemCompetence.isNiveauBase(competence)) { | ||||
|       return undefined | ||||
|     } | ||||
|   | ||||
| @@ -19,7 +19,7 @@ const PATHS = [ | ||||
|  | ||||
| const RANDOM_VALUES = { | ||||
|   'system.sexe': { 'masculin': 1, 'féminin': 1 }, | ||||
|   'system.main': { 'droitier': 51, 'gaucher': 15, 'ambidectre': 6 }, | ||||
|   'system.main': { 'droitier': 51, 'gaucher': 15, 'ambidextre': 6 }, | ||||
|   'system.cheveux': { 'noirs': 2, 'bruns': 5, 'châtains clair': 5, 'blonds': 4, 'blonds très clair': 1, 'roux carotte': 1, 'roux cuivré': 3 }, | ||||
|   'system.yeux': { 'noirs': 2, 'noisettes': 3, 'bruns vert': 4, 'verts': 3, 'bleus clair': 3, 'bleus gris': 2, 'gris': 1, 'mauves': 1, 'indigos': 1 }, | ||||
| } | ||||
|   | ||||
| @@ -51,7 +51,7 @@ export class DialogCreateSigneDraconique extends Dialog { | ||||
|       whisper: ChatUtility.getOwners(actor), | ||||
|       content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html", { | ||||
|         signe: signe, | ||||
|         alias: actor.name | ||||
|         alias: actor.getAlias() | ||||
|       }) | ||||
|     }); | ||||
|   } | ||||
|   | ||||
| @@ -206,7 +206,7 @@ export class RdDItemArme extends Item { | ||||
|     return arme.system.competence.replace(" 1 main", " 2 mains"); | ||||
|   } | ||||
|  | ||||
|   static isArmeUtilisable(arme) { | ||||
|   static isUtilisable(arme) { | ||||
|     switch (arme.type) { | ||||
|       case ITEM_TYPES.arme: return arme.system.equipe && (arme.system.resistance > 0 || arme.system.portee_courte > 0) | ||||
|       case ITEM_TYPES.competencecreature: return true | ||||
| @@ -214,6 +214,26 @@ export class RdDItemArme extends Item { | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   static isAttaque(arme) { | ||||
|     switch (arme.type) { | ||||
|       case ITEM_TYPES.arme: | ||||
|         return arme.system.equipe && (arme.system.resistance > 0 || arme.system.portee_courte > 0) | ||||
|       case ITEM_TYPES.competencecreature: | ||||
|         return arme.system.iscombat && RdDItemCompetenceCreature.isAttaque(item) | ||||
|     } | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   static isParade(arme) { | ||||
|     switch (arme.type) { | ||||
|       case ITEM_TYPES.arme: | ||||
|         return arme.system.equipe && arme.system.resistance > 0 && true/* TODO: regarder la categorie d'arme?*/ | ||||
|       case ITEM_TYPES.competencecreature: | ||||
|         return arme.system.iscombat && RdDItemCompetenceCreature.isParade(arme) | ||||
|     } | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   static ajoutCorpsACorps(armes, actor) { | ||||
|     armes.push(RdDItemArme.mainsNues(actor)); | ||||
|     armes.push(RdDItemArme.empoignade(actor)); | ||||
|   | ||||
| @@ -27,29 +27,28 @@ export class RdDItemCompetenceCreature extends Item { | ||||
|   static armeCreature(item) { | ||||
|     const categorieAttaque = RdDItemCompetenceCreature.getCategorieAttaque(item) | ||||
|     if (categorieAttaque != undefined) { | ||||
|       // si c'est un Item compétence: cloner pour ne pas modifier la compétence | ||||
|       let arme = item.clone(); | ||||
|       return foundry.utils.mergeObject(arme, { | ||||
|       // cloner pour ne pas modifier la compétence | ||||
|       return foundry.utils.mergeObject(item, { | ||||
|           action: item.isCompetencePossession() ? 'possession' : 'attaque', | ||||
|           system: { | ||||
|             competence: arme.name, | ||||
|             competence: item.name, | ||||
|             cac: categorieAttaque == "naturelle" ? "naturelle" : "", | ||||
|             niveau: item.system.niveau, | ||||
|             initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value), | ||||
|             equipe: true, | ||||
|             resistance: 100, | ||||
|             dommagesReels: arme.system.dommages, | ||||
|             dommagesReels: item.system.dommages, | ||||
|             penetration: 0, | ||||
|             force: 0, | ||||
|             rapide: true, | ||||
|           } | ||||
|         }, { inplace: false }); | ||||
|         }, { inplace: false, }); | ||||
|     } | ||||
|     return undefined; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static isCompetenceAttaque(item) { | ||||
|   static isAttaque(item) { | ||||
|     if (item.type == ITEM_TYPES.competencecreature) { | ||||
|       switch (item.system.categorie) { | ||||
|         case "melee": | ||||
| @@ -60,7 +59,7 @@ export class RdDItemCompetenceCreature extends Item { | ||||
|           return true | ||||
|       } | ||||
|     } | ||||
|     return undefined | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   static getCategorieAttaque(item) { | ||||
| @@ -77,6 +76,7 @@ export class RdDItemCompetenceCreature extends Item { | ||||
|     } | ||||
|     return undefined | ||||
|   } | ||||
|  | ||||
|   static isDommages(item) { | ||||
|     if (item.type == ITEM_TYPES.competencecreature) { | ||||
|       switch (item.system.categorie) { | ||||
| @@ -89,6 +89,7 @@ export class RdDItemCompetenceCreature extends Item { | ||||
|     } | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   static isParade(item) { | ||||
|     if (item.type == ITEM_TYPES.competencecreature) { | ||||
|       switch (item.system.categorie) { | ||||
| @@ -101,8 +102,4 @@ export class RdDItemCompetenceCreature extends Item { | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static isCompetenceParade(item) { | ||||
|     return item.type == 'competencecreature' && item.system.categorie_parade !== ""; | ||||
|   } | ||||
| }   | ||||
| } | ||||
|   | ||||
| @@ -72,19 +72,28 @@ export class RdDCombatManager extends Combat { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   async finDeRound(options = { terminer: false }) { | ||||
|     this.combatants.map(it => RdDCombatManager.getActorCombatant(it, { warning: false })) | ||||
|       .filter(it => it != undefined) | ||||
|       .forEach(async actor => { | ||||
|         await actor.finDeRound(options) | ||||
|         await actor.resetItemUse() | ||||
|       }) | ||||
|   } | ||||
|  | ||||
|     for (let combatant of this.combatants) { | ||||
|       if (!combatant.actor) { | ||||
|   static getActorCombatant(combatant, options = { warning: true }) { | ||||
|     if (!combatant.actor) { | ||||
|       if (options.warning) { | ||||
|         ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur!`) | ||||
|       } | ||||
|       else if (!combatant.actor.isActorCombat()) { | ||||
|         ui.notifications.warn(`Le combatant ${combatant.name} ne peut pas combattre!`) | ||||
|       } | ||||
|       else { | ||||
|         await combatant.actor.finDeRound(options) | ||||
|         await combatant.actor.resetItemUse() | ||||
|       } | ||||
|       return undefined | ||||
|     } | ||||
|     else if (!combatant.actor.isActorCombat()) { | ||||
|       if (options.warning) { | ||||
|         ui.notifications.warn(`${combatant.name} ne peut pas combattre!`) | ||||
|       } | ||||
|       return undefined | ||||
|     } | ||||
|     return combatant.actor | ||||
|   } | ||||
|  | ||||
|   static calculAjustementInit(actor, arme) { | ||||
| @@ -95,56 +104,27 @@ export class RdDCombatManager extends Combat { | ||||
|   } | ||||
|  | ||||
|   /************************************************************************************/ | ||||
|   async rollInitiative(ids, formula = undefined, messageOptions = {}) { | ||||
|     console.log(`${game.system.title} | Combat.rollInitiative()`, ids, formula, messageOptions); | ||||
|   async rollInitiative(ids, messageOptions = {}) { | ||||
|     console.log(`${game.system.title} | Combat.rollInitiative()`, ids, messageOptions) | ||||
|     ids = typeof ids === "string" ? [ids] : ids | ||||
|     ids.forEach(async id => | ||||
|       await this.rollInitRdD(id, undefined, messageOptions) | ||||
|     ) | ||||
|     return this | ||||
|   } | ||||
|  | ||||
|     ids = typeof ids === "string" ? [ids] : ids; | ||||
|     // calculate initiative | ||||
|     for (let cId = 0; cId < ids.length; cId++) { | ||||
|       const combatant = this.combatants.get(ids[cId]); | ||||
|       const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, undefined); | ||||
|       let rollFormula = formula ?? RdDCombatManager.formuleInitiative(2, 10, 0, ajustement); | ||||
|  | ||||
|       if (!formula) { | ||||
|         if (combatant.actor.type == 'creature' || combatant.actor.type == 'entite') { | ||||
|           const competence = combatant.actor.items.find(it => RdDItemCompetenceCreature.isCompetenceAttaque(it)) | ||||
|           if (competence) { | ||||
|             rollFormula = RdDCombatManager.formuleInitiative(2, competence.system.carac_value, competence.system.niveau, etatGeneral); | ||||
|           } | ||||
|         } else { | ||||
|           const armeCombat = combatant.actor.itemTypes['arme'].find(it => it.system.equipe) | ||||
|           let compName = "Corps à corps" | ||||
|           if (armeCombat) { | ||||
|             if (armeCombat.system.competence != "") { | ||||
|               compName = armeCombat.system.competence | ||||
|             } | ||||
|             if (armeCombat.system.lancer != "") { | ||||
|               compName = armeCombat.system.lancer | ||||
|             } | ||||
|             if (armeCombat.system.tir != "") { | ||||
|               compName = armeCombat.system.tir | ||||
|             } | ||||
|           } | ||||
|           const competence = RdDItemCompetence.findCompetence(combatant.actor.items, compName); | ||||
|           if (competence && competence.system.defaut_carac) { | ||||
|             const carac = combatant.actor.system.carac[competence.system.defaut_carac].value; | ||||
|             const niveau = competence.system.niveau; | ||||
|  | ||||
|             const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, armeCombat) | ||||
|             rollFormula = RdDCombatManager.formuleInitiative(2, carac, niveau, ajustement); | ||||
|           } else { | ||||
|             ui.notifications.warn(`Votre arme ${armeCombat.name} n'a pas de compétence renseignée`); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|   async rollInitRdD(id, formula, messageOptions = {}) { | ||||
|     const combatant = this.combatants.get(id); | ||||
|     const actor = RdDCombatManager.getActorCombatant(combatant) | ||||
|     if (actor) { | ||||
|       const rollFormula = formula ?? RdDCombatManager.getFirstInitRollFormula(actor) | ||||
|       const roll = combatant.getInitiativeRoll(rollFormula); | ||||
|       if (!roll.total) { | ||||
|         await roll.evaluate(); | ||||
|       } | ||||
|       const total = Math.max(roll.total, 0.00); | ||||
|       console.log("Compute init for", rollFormula, roll, total, combatant); | ||||
|       let id = combatant._id || combatant.id; | ||||
|       await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: total }]); | ||||
|       await this.updateEmbeddedDocuments("Combatant", [{ _id: combatant._id || combatant.id, initiative: total }]); | ||||
|  | ||||
|       // Send a chat message | ||||
|       let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode"); | ||||
| @@ -153,10 +133,10 @@ export class RdDCombatManager extends Combat { | ||||
|           scene: canvas.scene._id, | ||||
|           actor: combatant.actor?._id, | ||||
|           token: combatant.token._id, | ||||
|           alias: combatant.token.name, | ||||
|           alias: combatant.token?.name, | ||||
|           sound: CONFIG.sounds.dice, | ||||
|         }, | ||||
|         flavor: `${combatant.token.name} a fait son jet d'Initiative (${messageOptions.initInfo})<br>`, | ||||
|         flavor: `${combatant.token?.name} a fait son jet d'Initiative (${messageOptions.info})<br>` | ||||
|       }, | ||||
|         messageOptions); | ||||
|       roll.toMessage(messageData, { rollMode, create: true }); | ||||
| @@ -164,7 +144,20 @@ export class RdDCombatManager extends Combat { | ||||
|       RdDCombatManager.processPremierRoundInit(); | ||||
|     } | ||||
|     return this; | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   static getFirstInitRollFormula(actor) { | ||||
|     const actions = actor.listActionsCombat() | ||||
|     if (actions.length > 0) { | ||||
|       const action = actions[0] | ||||
|       const init = RdDCombatManager.getInitData(actor, action) | ||||
|       const ajustement = RdDCombatManager.calculAjustementInit(actor, action) | ||||
|       return RdDCombatManager.formuleInitiative(init.offset, init.carac, init.niveau, ajustement); | ||||
|     } | ||||
|  | ||||
|     let ajustement = RdDCombatManager.calculAjustementInit(actor, undefined); | ||||
|     return RdDCombatManager.formuleInitiative(2, 10, 0, ajustement); | ||||
|   } | ||||
|  | ||||
|   static formuleInitiative(rang, carac, niveau, bonusMalus) { | ||||
|     return `${rang} +( (${RdDCombatManager.calculInitiative(niveau, carac, bonusMalus)} )/100)`; | ||||
| @@ -247,61 +240,6 @@ export class RdDCombatManager extends Combat { | ||||
|     return attaque; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static listActionsCombat(combatant) { | ||||
|     const actor = combatant.actor; | ||||
|     if (!actor.isActorCombat()) { | ||||
|       return | ||||
|     } | ||||
|     let actions = RdDCombatManager.listActionsPossessions(actor); | ||||
|     if (actions.length > 0) { | ||||
|       return actions; | ||||
|     } | ||||
|     if (actor.isCreatureEntite()) { | ||||
|       actions = RdDCombatManager.listActionsCreature(actor.itemTypes['competencecreature']); | ||||
|     } else if (actor.isPersonnage()) { | ||||
|       // Recupération des items 'arme' | ||||
|       const competences = actor.itemTypes['competence']; | ||||
|       const armes = actor.itemTypes['arme'].filter(it => RdDItemArme.isArmeUtilisable(it)) | ||||
|         .concat(RdDItemArme.empoignade(actor)) | ||||
|         .concat(RdDItemArme.mainsNues(actor)); | ||||
|       actions = RdDCombatManager.listActionsArmes(armes, competences, actor.system.carac); | ||||
|  | ||||
|       if (actor.system.attributs.hautrevant.value) { | ||||
|         actions.push({ name: "Draconic", action: 'haut-reve', system: { initOnly: true, competence: "Draconic" } }); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return RdDCombatManager._indexActions(actions); | ||||
|   } | ||||
|  | ||||
|   static listActionsCreature(competences) { | ||||
|     return competences | ||||
|       .filter(it => RdDItemCompetenceCreature.isCompetenceAttaque(it)) | ||||
|       .map(it => RdDItemCompetenceCreature.armeCreature(it)) | ||||
|       .filter(it => it != undefined); | ||||
|   } | ||||
|  | ||||
|   static listActionsPossessions(actor) { | ||||
|     return RdDCombatManager._indexActions(actor.getPossessions().map(p => { | ||||
|       return { | ||||
|         name: p.name, | ||||
|         action: 'possession', | ||||
|         system: { | ||||
|           competence: p.name, | ||||
|           possessionid: p.system.possessionid, | ||||
|         } | ||||
|       } | ||||
|     })); | ||||
|   } | ||||
|  | ||||
|   static _indexActions(actions) { | ||||
|     for (let index = 0; index < actions.length; index++) { | ||||
|       actions[index].index = index; | ||||
|     } | ||||
|     return actions; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static processPremierRoundInit() { | ||||
|     // Check if we have the whole init ! | ||||
| @@ -314,7 +252,7 @@ export class RdDCombatManager extends Combat { | ||||
|           if (action && action.type == "arme") { | ||||
|             for (let initData of premierRoundInit) { | ||||
|               if (Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround).includes(initData.pattern)) { | ||||
|                 let msg = `<h4>L'initiative de ${combatant.actor.name} a été modifiée !</h4> | ||||
|                 let msg = `<h4>L'initiative de ${combatant.actor.getAlias()} a été modifiée !</h4> | ||||
|                       <hr> | ||||
|                       <div> | ||||
|                         Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}. | ||||
| @@ -339,13 +277,13 @@ export class RdDCombatManager extends Combat { | ||||
|   /* -------------------------------------------- */ | ||||
|   static pushInitiativeOptions(html, options) { | ||||
|     for (let i = 0; i < options.length; i++) { | ||||
|       let option = options[i]; | ||||
|       let option = options[i] | ||||
|       if (option.name == 'COMBAT.CombatantReroll') { // Replace ! | ||||
|         option.name = "Sélectionner l'initiative..."; | ||||
|         option.condition = true; | ||||
|         option.icon = '<i class="far fa-question-circle"></i>'; | ||||
|         option.name = "Sélectionner l'initiative..." | ||||
|         option.condition = true | ||||
|         option.icon = '<i class="far fa-question-circle"></i>' | ||||
|         option.callback = target => { | ||||
|           RdDCombatManager.displayInitiativeMenu(html, target.data('combatant-id')); | ||||
|           RdDCombatManager.displayInitiativeMenu(html, target.data('combatant-id')) | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| @@ -356,96 +294,83 @@ export class RdDCombatManager extends Combat { | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   static rollInitiativeAction(combatantId, action) { | ||||
|     const combatant = game.combat.combatants.get(combatantId); | ||||
|     if (combatant.actor == undefined) { | ||||
|       ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`) | ||||
|       return []; | ||||
|     } | ||||
|     let initInfo = ""; | ||||
|     let initOffset = 0; | ||||
|     let caracForInit = 0; | ||||
|     let compNiveau = 0; | ||||
|     let compData = { name: "Aucune" }; | ||||
|     if (combatant.actor.getSurprise() == "totale") { | ||||
|       initOffset = -1; // To force 0 | ||||
|       initInfo = "Surprise Totale" | ||||
|     } else if (combatant.actor.getSurprise() == "demi") { | ||||
|       initOffset = 0; | ||||
|       initInfo = "Demi Surprise" | ||||
|     } else if (action.action == 'possession') { | ||||
|       initOffset = 10; | ||||
|       caracForInit = combatant.actor.getReveActuel(); | ||||
|       initInfo = "Possession" | ||||
|     } else if (action.action == 'autre') { | ||||
|       initOffset = 2; | ||||
|       initInfo = "Autre Action" | ||||
|     } else if (action.action == 'haut-reve') { | ||||
|       initOffset = 9; | ||||
|       initInfo = "Draconic" | ||||
|     } else { | ||||
|       compData = RdDItemCompetence.findCompetence(combatant.actor.items, action.system.competence); | ||||
|       compNiveau = compData.system.niveau; | ||||
|       initInfo = action.name + " / " + action.system.competence; | ||||
|     const combatant = game.combat.combatants.get(combatantId) | ||||
|     const actor = RdDCombatManager.getActorCombatant(combatant) | ||||
|     if (actor == undefined) { return [] } | ||||
|  | ||||
|       if (combatant.actor.type == 'creature' || combatant.actor.type == 'entite') { | ||||
|         caracForInit = compData.system.carac_value; | ||||
|       } else { | ||||
|         caracForInit = combatant.actor.system.carac[compData.system.defaut_carac].value; | ||||
|       } | ||||
|       initOffset = RdDCombatManager._baseInitOffset(compData.system.categorie, action); | ||||
|     } | ||||
|  | ||||
|     // Cas des créatures et entités vs personnages | ||||
|     const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, action) | ||||
|     let rollFormula = RdDCombatManager.formuleInitiative(initOffset, caracForInit, compNiveau, ajustement); | ||||
|     // Garder la trace de l'arme/compétence utilisée pour l'iniative | ||||
|     combatant.initiativeData = { arme: action } // pour reclasser l'init au round 0 | ||||
|     game.combat.rollInitiative(combatantId, rollFormula, { initInfo: initInfo }); | ||||
|  | ||||
|     const init = RdDCombatManager.getInitData(actor, action) | ||||
|     const ajustement = RdDCombatManager.calculAjustementInit(actor, action) | ||||
|     const rollFormula = RdDCombatManager.formuleInitiative(init.offset, init.carac, init.niveau, ajustement); | ||||
|  | ||||
|     game.combat.rollInitRdD(combatantId, rollFormula, init); | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static _baseInitOffset(categorie, arme) { | ||||
|     if (categorie == "tir") { // Offset de principe pour les armes de jet | ||||
|       return 8; | ||||
|   static getInitData(actor, action) { | ||||
|     if (actor.getSurprise() == "totale") { return { offset: -1, info: "Surprise Totale", carac: 0, niveau: 0 } } | ||||
|     if (actor.getSurprise() == "demi") { return { offset: 0, info: "Demi Surprise", carac: 0, niveau: 0 } } | ||||
|     if (action.action == 'autre') { return { offset: 2, info: "Autre Action", carac: 0, niveau: 0 } } | ||||
|     if (action.action == 'possession') { return { offset: 10, info: "Possession", carac: actor.getReveActuel(), niveau: 0 } } | ||||
|     if (action.action == 'haut-reve') { return { offset: 9, info: "Draconic", carac: actor.getReveActuel(), niveau: 0 } } | ||||
|  | ||||
|     const comp = RdDItemCompetence.findCompetence(actor.items, action.system.competence); | ||||
|     return { | ||||
|       offset: RdDCombatManager.initOffset(comp?.system.categorie, action), | ||||
|       info: action.name + " / " + action.system.competence, | ||||
|       carac: actor.getCaracInit(comp), | ||||
|       niveau: comp?.system.niveau ?? -8 | ||||
|     } | ||||
|     if (categorie == "lancer") { // Offset de principe pour les armes de jet | ||||
|       return 7; | ||||
|   } | ||||
|  | ||||
|   static initOffset(categorie, arme) { | ||||
|     switch (categorie) { | ||||
|       case "tir": return 8 | ||||
|       case "lancer": return 7 | ||||
|       default: | ||||
|         switch (arme.system.cac) { | ||||
|           case "empoignade": return 3 | ||||
|           case "pugilat": return 4 | ||||
|           case "naturelle": return 4 | ||||
|           default: return 5 | ||||
|         } | ||||
|     } | ||||
|     switch (arme.system.cac) { | ||||
|       case "empoignade": | ||||
|         return 3; | ||||
|       case "pugilat": | ||||
|       case "naturelle": | ||||
|         return 4; | ||||
|     } | ||||
|     return 5; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static displayInitiativeMenu(html, combatantId) { | ||||
|     console.log("Combatant ; ", combatantId); | ||||
|     const combatant = game.combat.combatants.get(combatantId); | ||||
|     if (!(combatant?.actor)) { | ||||
|       ui.notifications.warn(`Le combatant ${combatant.name ?? combatantId} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`) | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     let actions = RdDCombatManager.listActionsCombat(combatant); | ||||
|  | ||||
|     // Build the relevant submenu | ||||
|     if (actions) { | ||||
|       let menuItems = []; | ||||
|       for (let action of actions) { | ||||
|         menuItems.push({ | ||||
|     const combatant = game.combat.combatants.get(combatantId) | ||||
|     const actor = RdDCombatManager.getActorCombatant(combatant, { warning: false }) | ||||
|     if (actor) { | ||||
|       const actions = RdDCombatManager.listActionsActorCombatant(actor) | ||||
|       // Build the relevant submenu | ||||
|       const menuItems = actions.map(action => { | ||||
|         return { | ||||
|           name: action.system.competence, | ||||
|           icon: "<i class='fas fa-dice-d6'></i>", | ||||
|           callback: target => { RdDCombatManager.rollInitiativeAction(combatantId, action) } | ||||
|         }); | ||||
|         } | ||||
|       }) | ||||
|       if (menuItems.length > 0) { | ||||
|         new ContextMenu(html, ".directory-list", menuItems).render(); | ||||
|       } | ||||
|       new ContextMenu(html, ".directory-list", menuItems).render(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static listActionsActorCombatant( actor) { | ||||
|     const possessions = actor.listActionsPossessions() | ||||
|     const actions = possessions.length > 0 | ||||
|       ? possessions | ||||
|       : actor.listActionsCombat() | ||||
|  | ||||
|     for (let index = 0; index < actions.length; index++) { | ||||
|       actions[index].index = index | ||||
|     } | ||||
|     return actions | ||||
|   } | ||||
|  | ||||
|  | ||||
| } | ||||
|  | ||||
| /* -------------------------------------------- */ | ||||
| @@ -829,7 +754,7 @@ export class RdDCombat { | ||||
|   /* -------------------------------------------- */ | ||||
|   _prepareAttaque(competence, arme) { | ||||
|     let rollData = { | ||||
|       alias: this.attackerToken.name, | ||||
|       alias: this.attacker?.getAlias(), | ||||
|       passeArme: foundry.utils.randomID(16), | ||||
|       mortalite: arme?.system.mortalite, | ||||
|       competence: competence, | ||||
| @@ -878,10 +803,10 @@ export class RdDCombat { | ||||
|     } | ||||
|  | ||||
|     const choixParticuliere = await ChatMessage.create({ | ||||
|       alias: this.attacker.name, | ||||
|       alias: this.attacker.getAlias(), | ||||
|       whisper: ChatUtility.getOwners(this.attacker), | ||||
|       content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html', { | ||||
|         alias: this.attackerToken.name, | ||||
|         alias: this.attacker.getAlias(), | ||||
|         attackerId: this.attackerId, | ||||
|         attackerToken: this.attackerToken, | ||||
|         defenderToken: this.defenderToken, | ||||
| @@ -901,7 +826,7 @@ export class RdDCombat { | ||||
|     attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker, this.defender.isEntite()); | ||||
|     let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} } | ||||
|     attackerRoll.show = { | ||||
|       cible: this.defenderToken?.name ?? 'la cible', | ||||
|       cible: this.defender?.getAlias() ?? 'la cible', | ||||
|       isRecul: (attackerRoll.particuliere == 'force' || attackerRoll.tactique == 'charge') | ||||
|     } | ||||
|     await RdDResolutionTable.displayRollData(attackerRoll, this.attacker, 'chat-resultat-attaque.html'); | ||||
| @@ -967,7 +892,7 @@ export class RdDCombat { | ||||
|     const choixDefense = await ChatMessage.create({ | ||||
|       // message privé: du défenseur à lui même (et aux GMs) | ||||
|       speaker: ChatMessage.getSpeaker(this.defender, canvas.tokens.get(this.defenderTokenId)), | ||||
|       alias: this.attackerToken.name, | ||||
|       alias: this.attacker?.getAlias(), | ||||
|       whisper: ChatUtility.getOwners(this.defender), | ||||
|       content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-demande-defense.html', paramDemandeDefense), | ||||
|     }); | ||||
| @@ -992,13 +917,13 @@ export class RdDCombat { | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   _filterArmesParade(defender, competence, arme) { | ||||
|     let defenses = defender.items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it)) | ||||
|   _filterArmesParade(defender, competence, armeAttaque) { | ||||
|     let defenses = defender.items.filter(it => RdDItemArme.isParade(it)) | ||||
|     defenses = foundry.utils.duplicate(defenses) | ||||
|     defenses.forEach(armeDefense => { | ||||
|       // Ajout du # d'utilisation ce round   | ||||
|       armeDefense.nbUsage = defender.getItemUse(armeDefense.id) | ||||
|       armeDefense.typeParade = RdDItemArme.defenseArmeParade(arme, armeDefense) | ||||
|       armeDefense.typeParade = RdDItemArme.defenseArmeParade(armeAttaque, armeDefense) | ||||
|     }) | ||||
|  | ||||
|     switch (competence.system.categorie) { | ||||
| @@ -1090,7 +1015,7 @@ export class RdDCombat { | ||||
|   /* -------------------------------------------- */ | ||||
|   _prepareParade(attackerRoll, armeParade, competenceParade) { | ||||
|     let defenderRoll = { | ||||
|       alias: this.defenderToken?.name, | ||||
|       alias: this.defender?.getAlias(), | ||||
|       passeArme: attackerRoll.passeArme, | ||||
|       diffLibre: attackerRoll.diffLibre, | ||||
|       attackerToken: this.attackerToken, | ||||
| @@ -1147,7 +1072,7 @@ export class RdDCombat { | ||||
|   async esquive(attackerRoll, compId, compName) { | ||||
|     const esquive = this.defender.getCompetence(compId) ?? this.defender.getCompetence(compName) | ||||
|     if (esquive == undefined) { | ||||
|       ui.notifications.error(this.defender.name + " n'a pas de compétence " + compName); | ||||
|       ui.notifications.error(this.defender.getAlias() + " n'a pas de compétence " + compName); | ||||
|       return; | ||||
|     } | ||||
|     console.log("RdDCombat.esquive >>>", attackerRoll, esquive); | ||||
| @@ -1174,7 +1099,7 @@ export class RdDCombat { | ||||
|   /* -------------------------------------------- */ | ||||
|   _prepareEsquive(attackerRoll, competence) { | ||||
|     let rollData = { | ||||
|       alias: this.defenderToken?.name, | ||||
|       alias: this.defender.getAlias(), | ||||
|       passeArme: attackerRoll.passeArme, | ||||
|       diffLibre: attackerRoll.diffLibre, | ||||
|       attackerToken: this.attackerToken, | ||||
| @@ -1353,9 +1278,10 @@ export class RdDCombat { | ||||
|     if (!actor?.isActorCombat()) { | ||||
|       return | ||||
|     } | ||||
|     let formData = { | ||||
|     const alias = token?.name ?? actor.getAlias(); | ||||
|     const formData = { | ||||
|       combatId: combat._id, | ||||
|       alias: token.name ?? actor.name, | ||||
|       alias: alias, | ||||
|       etatGeneral: actor.getEtatGeneral(), | ||||
|       isSonne: actor.isSonne(), | ||||
|       blessuresStatus: actor.computeResumeBlessure(), | ||||
| @@ -1368,12 +1294,12 @@ export class RdDCombat { | ||||
|     } | ||||
|     await ChatMessage.create({ | ||||
|       content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-acteur.hbs`, formData), | ||||
|       alias: token.name ?? actor.name | ||||
|       alias: alias | ||||
|     }) | ||||
|     await ChatMessage.create({ | ||||
|       content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-sante.hbs`, formData), | ||||
|       whisper: ChatUtility.getOwners(actor), | ||||
|       alias: token.name ?? actor.name | ||||
|     }); | ||||
|       alias: alias | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| @@ -274,6 +274,16 @@ export class SystemReveDeDragon { | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   static async setupAccueil() { | ||||
|     let exists = game.scenes.find(j => j.name == "Accueil RdD"); | ||||
|     if (!exists) { | ||||
|       const scenes = await SystemCompendiums.loadCompendium("foundryvtt-reve-de-dragon.scenes-rdd") | ||||
|       let newDocuments = scenes.filter(i => i.name == "Accueil RdD"); | ||||
|       await game.scenes.documentClass.create(newDocuments); | ||||
|       game.scenes.find(i => i.name == "Accueil RdD").activate(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   async onReady() { | ||||
|  | ||||
|     /* -------------------------------------------- */ | ||||
| @@ -307,6 +317,8 @@ export class SystemReveDeDragon { | ||||
|         user: game.user.id | ||||
|       }) | ||||
|     } | ||||
|  | ||||
|     SystemReveDeDragon.setupAccueil() | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   | ||||
| @@ -32,7 +32,7 @@ export class RdDRoll extends Dialog { | ||||
|   /* -------------------------------------------- */ | ||||
|   static _setDefaultOptions(actor, rollData) { | ||||
|     let defaultRollData = { | ||||
|       alias: actor.name, | ||||
|       alias: actor.getAlias(), | ||||
|       ajustementsConditions: CONFIG.RDD.ajustementsConditions, | ||||
|       difficultesLibres: CONFIG.RDD.difficultesLibres, | ||||
|       etat: actor.getEtatGeneral(), | ||||
| @@ -345,24 +345,25 @@ export class RdDRoll extends Dialog { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   _getTitle(rollData) { | ||||
|     const alias = rollData.alias | ||||
|     const carac = rollData.selectedCarac.label; | ||||
|     if (!rollData.competence) { | ||||
|       return carac; | ||||
|       return `${alias}: ${carac}` | ||||
|     } | ||||
|     const compName = rollData.competence.name; | ||||
|     const niveau = Misc.toSignedString(rollData.competence.system.niveau) | ||||
|     if (compName == carac) { | ||||
|       // cas des créatures | ||||
|       return `${carac} Niveau ${niveau}` | ||||
|       return `${alias}: ${carac} Niveau ${niveau}` | ||||
|     } | ||||
|     if (rollData.draconicList && rollData.selectedSort) { | ||||
|       // cas de lancer de sort | ||||
|       return `${rollData.competence.name} Niveau ${niveau} ${rollData.selectedSort.name}` | ||||
|       return `${alias}: ${rollData.competence.name} Niveau ${niveau} ${rollData.selectedSort.name}` | ||||
|     } | ||||
|     if (rollData.arme && rollData.arme.name != compName) { | ||||
|       // ajouter l'arme au titre si son nom n'est pas la compétence | ||||
|       return `${carac} /  ${compName} (${rollData.arme.name}) Niveau ${niveau}` | ||||
|       return `${alias}: ${carac} /  ${compName} (${rollData.arme.name}) Niveau ${niveau}` | ||||
|     } | ||||
|     return `${carac} / ${compName} Niveau ${niveau}` | ||||
|     return `${alias}: ${carac} / ${compName} Niveau ${niveau}` | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| import { Grammar } from "./grammar.js"; | ||||
| import { CompendiumTable, CompendiumTableHelpers, SystemCompendiums } from "./settings/system-compendiums.js"; | ||||
|  | ||||
| export class RdDRollTables { | ||||
|   | ||||
| @@ -460,7 +460,7 @@ export class RdDTMRDialog extends Dialog { | ||||
|  | ||||
|     let rencontreData = { | ||||
|       actor: this.actor, | ||||
|       alias: this.actor.name, | ||||
|       alias: this.actor.getAlias(), | ||||
|       reveDepart: this.actor.getReveActuel(), | ||||
|       competence: this.actor.getBestDraconic(), | ||||
|       rencontre: this.currentRencontre, | ||||
| @@ -641,7 +641,7 @@ export class RdDTMRDialog extends Dialog { | ||||
|     // simuler une rencontre | ||||
|     let rencontreData = { | ||||
|       actor: this.actor, | ||||
|       alias: this.actor.name, | ||||
|       alias: this.actor.getAlias(), | ||||
|       reveDepart: this.actor.getReveActuel(), | ||||
|       competence: this.actor.getBestDraconic(), | ||||
|       rencontre: this.currentRencontre, | ||||
| @@ -1098,7 +1098,10 @@ export class RdDTMRDialog extends Dialog { | ||||
|     if (!this.viewOnly && this.actor.isResonanceSigneDraconique(coord)) { | ||||
|       ChatMessage.create({ | ||||
|         whisper: ChatUtility.getOwners(this.actor), | ||||
|         content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-resonance.html`, { alias: this.actor.name, typeTMR: TMRUtility.getTMRType(coord) }) | ||||
|         content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-resonance.html`, { | ||||
|           alias: this.actor.getAlias(), | ||||
|           typeTMR: TMRUtility.getTMRType(coord) | ||||
|         }) | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
|   | ||||
| @@ -28,16 +28,15 @@ export class RdDTokenHud { | ||||
|     await RdDTokenHud.addExtensionHudSoins(html, actor); | ||||
|  | ||||
|     if (isCombat) { | ||||
|       let combatant = game.combat.combatants.find(c => c.tokenId == tokenId); | ||||
|       if (!(combatant?.actor)) { | ||||
|         ui.notifications.warn(`Le combatant ${token.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`) | ||||
|         return; | ||||
|       const combatant = game.combat.combatants.find(c => c.tokenId == tokenId) | ||||
|       const actor = RdDCombatManager.getActorCombatant(combatant, { warning: false }) | ||||
|       if (actor) { | ||||
|         let actions = RdDCombatManager.listActionsActorCombatant(actor) | ||||
|         // initiative | ||||
|         await RdDTokenHud.addExtensionHudInit(html, combatant, actions) | ||||
|         // combat | ||||
|         await RdDTokenHud.addExtensionHudCombat(html, combatant, token, actions) | ||||
|       } | ||||
|       let actions = RdDCombatManager.listActionsCombat(combatant); | ||||
|       // initiative | ||||
|       await RdDTokenHud.addExtensionHudInit(html, combatant, actions); | ||||
|       // combat | ||||
|       await RdDTokenHud.addExtensionHudCombat(html, combatant, token, actions); | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -15,17 +15,17 @@ export const STATUSES = { | ||||
| } | ||||
|  | ||||
| const rddStatusEffects = [ | ||||
|   { rdd: true, id: STATUSES.StatusStunned, label: 'EFFECT.StatusStunned', icon: 'icons/svg/stoned.svg', "duration.rounds": 1 }, | ||||
|   { rdd: true, id: STATUSES.StatusBleeding, label: 'EFFECT.StatusBleeding', icon: 'icons/svg/blood.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusProne, label: 'EFFECT.StatusProne', icon: 'icons/svg/falling.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', label: 'EFFECT.StatusGrappling', icon: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' }, | ||||
|   { rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', label: 'EFFECT.StatusGrappled', icon: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' }, | ||||
|   { rdd: true, id: STATUSES.StatusRestrained, label: 'EFFECT.StatusRestrained', icon: 'icons/svg/net.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusUnconscious, label: 'EFFECT.StatusUnconscious', icon: 'icons/svg/unconscious.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusBlind, label: 'EFFECT.StatusBlind', icon: 'icons/svg/blind.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusComma, label: 'EFFECT.StatusComma', icon: 'icons/svg/skull.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusDead, label: 'EFFECT.StatusDead', icon: 'icons/svg/skull.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusDemiReve, label: 'EFFECT.StatusDemiReve', icon: 'systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg' } | ||||
|   { rdd: true, id: STATUSES.StatusStunned, name:  'EFFECT.StatusStunned', img: 'icons/svg/stoned.svg', "duration.rounds": 1 }, | ||||
|   { rdd: true, id: STATUSES.StatusBleeding, name:  'EFFECT.StatusBleeding', img: 'icons/svg/blood.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusProne, name:  'EFFECT.StatusProne', img: 'icons/svg/falling.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', name:  'EFFECT.StatusGrappling', img: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' }, | ||||
|   { rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', name:  'EFFECT.StatusGrappled', img: 'systems/foundryvtt-reve-de-dragon/icons/empoignade.webp' }, | ||||
|   { rdd: true, id: STATUSES.StatusRestrained, name:  'EFFECT.StatusRestrained', img: 'icons/svg/net.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusUnconscious, name:  'EFFECT.StatusUnconscious', img: 'icons/svg/unconscious.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusBlind, name:  'EFFECT.StatusBlind', img: 'icons/svg/blind.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusComma, name:  'EFFECT.StatusComma', img: 'icons/svg/skull.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusDead, name:  'EFFECT.StatusDead', img: 'icons/svg/skull.svg' }, | ||||
|   { rdd: true, id: STATUSES.StatusDemiReve, name:  'EFFECT.StatusDemiReve', img: 'systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg' } | ||||
| ]; | ||||
| const demiReveStatusEffect = rddStatusEffects.find(it => it.id == STATUSES.StatusDemiReve); | ||||
|  | ||||
| @@ -57,7 +57,7 @@ export class StatusEffects extends FormApplication { | ||||
|       restricted: true | ||||
|     }); | ||||
|  | ||||
|     CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddEffectIds.includes(it.id))); | ||||
|     CONFIG.RDD.allEffects = rddStatusEffects.concat(CONFIG.statusEffects.filter(it => !rddEffectIds.includes(it.id))) | ||||
|  | ||||
|     StatusEffects._setUseStatusEffects(StatusEffects._getUseStatusEffects()); | ||||
|     console.log('statusEffects', CONFIG.statusEffects); | ||||
|   | ||||
| @@ -112,6 +112,19 @@ export class SystemCompendiums extends FormApplication { | ||||
|     return elements; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static async loadCompendiumData(compendium) { | ||||
|     const pack = game.packs.get(compendium); | ||||
|     return await pack?.getDocuments() ?? []; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static async loadCompendium(compendium, filter = item => true) { | ||||
|     let compendiumData = await SystemCompendiums.loadCompendiumData(compendium); | ||||
|     return compendiumData.filter(filter); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   static async getDefaultItems(compendium) { | ||||
|     const pack = game.packs.get(SystemCompendiums._getDefaultCompendium(compendium)); | ||||
|     if (pack.metadata.type == 'Item') { | ||||
|   | ||||
| @@ -15,7 +15,7 @@ export class AutoAdjustDarkness { | ||||
|   } | ||||
|  | ||||
|   static async adjust(darkness) { | ||||
|     if (AutoAdjustDarkness.isAuto()) { | ||||
|     if (game.user.isGM && AutoAdjustDarkness.isAuto()) { | ||||
|       const scene = game.scenes.viewed; | ||||
|       if (scene?.environment?.globalLight?.enabled && scene?.tokenVision) { | ||||
|         await scene.update({ darkness }); | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/animaux/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/animaux/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/animaux/000023.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/animaux/000023.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/animaux/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/animaux/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000022 | ||||
							
								
								
									
										0
									
								
								pack_ref/animaux/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/animaux/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/animaux/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/animaux/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.183093 7fed63e006c0 Recovering log #21 | ||||
| 2024/11/10-18:39:00.195436 7fed63e006c0 Delete type=0 #21 | ||||
| 2024/11/10-18:39:00.195482 7fed63e006c0 Delete type=3 #20 | ||||
							
								
								
									
										3
									
								
								pack_ref/animaux/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/animaux/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:38:41.533242 7f4c0b8006c0 Recovering log #19 | ||||
| 2024/11/10-18:38:41.547823 7f4c0b8006c0 Delete type=0 #19 | ||||
| 2024/11/10-18:38:41.547917 7f4c0b8006c0 Delete type=3 #18 | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/animaux/MANIFEST-000022
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/animaux/MANIFEST-000022
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/archetypes/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/archetypes/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/archetypes/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/archetypes/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/archetypes/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/archetypes/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/archetypes/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/archetypes/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/archetypes/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/archetypes/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.253481 7fed62a006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.263751 7fed62a006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.263866 7fed62a006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/archetypes/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/archetypes/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:34.139501 7f9d7f4006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:34.182207 7f9d7f4006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:34.182311 7f9d7f4006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:45.129455 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:45.129487 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:45.135738 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:45.142639 7f9d7d6006c0 Manual compaction at level-0 from '!actors!1Nng9d8r6lrPHCaJ' @ 72057594037927935 : 1 .. '!actors.items!ryUZTa17LzNv25UY.zyNYa3hYtrOcF2jA' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:45.142697 7f9d7d6006c0 Manual compaction at level-1 from '!actors!1Nng9d8r6lrPHCaJ' @ 72057594037927935 : 1 .. '!actors.items!ryUZTa17LzNv25UY.zyNYa3hYtrOcF2jA' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/archetypes/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/archetypes/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/arts-et-divertissements/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/arts-et-divertissements/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/arts-et-divertissements/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/arts-et-divertissements/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/arts-et-divertissements/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/arts-et-divertissements/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/arts-et-divertissements/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/arts-et-divertissements/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/arts-et-divertissements/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/arts-et-divertissements/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.448675 7fed63e006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.460061 7fed63e006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.460115 7fed63e006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/arts-et-divertissements/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/arts-et-divertissements/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:32.605216 7f9d7fe006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:32.664872 7f9d7fe006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:32.665020 7f9d7fe006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:44.948429 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:44.948495 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:44.954943 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:44.975424 7f9d7d6006c0 Manual compaction at level-0 from '!items!240HPtZsgZQERFMF' @ 72057594037927935 : 1 .. '!items!zRQ5WnPI483CKm9Q' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:44.975473 7f9d7d6006c0 Manual compaction at level-1 from '!items!240HPtZsgZQERFMF' @ 72057594037927935 : 1 .. '!items!zRQ5WnPI483CKm9Q' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/arts-et-divertissements/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/arts-et-divertissements/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/competences-creatures/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/competences-creatures/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/competences-creatures/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/competences-creatures/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/competences-creatures/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/competences-creatures/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/competences-creatures/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/competences-creatures/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/competences-creatures/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/competences-creatures/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.493027 7fed63e006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.503119 7fed63e006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.503242 7fed63e006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/competences-creatures/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/competences-creatures/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:32.670029 7f9d7ea006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:32.734322 7f9d7ea006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:32.734474 7f9d7ea006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:44.968549 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:44.968601 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:44.975299 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:44.975466 7f9d7d6006c0 Manual compaction at level-0 from '!items!0zRL8bOpCXNQnIR4' @ 72057594037927935 : 1 .. '!items!yDHZfK4RmwQW4YaW' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:44.975488 7f9d7d6006c0 Manual compaction at level-1 from '!items!0zRL8bOpCXNQnIR4' @ 72057594037927935 : 1 .. '!items!yDHZfK4RmwQW4YaW' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/competences-creatures/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/competences-creatures/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/competences-entites/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/competences-entites/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/competences-entites/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/competences-entites/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/competences-entites/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/competences-entites/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/competences-entites/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/competences-entites/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/competences-entites/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/competences-entites/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.509122 7fed634006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.519320 7fed634006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.519377 7fed634006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/competences-entites/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/competences-entites/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:32.738419 7f9d7f4006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:32.795459 7f9d7f4006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:32.795589 7f9d7f4006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:44.996588 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:44.996618 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:45.003008 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:45.003203 7f9d7d6006c0 Manual compaction at level-0 from '!items!0Ms9iKxqigNNpZEx' @ 72057594037927935 : 1 .. '!items!wDHR5UHWq568lfGa' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:45.003226 7f9d7d6006c0 Manual compaction at level-1 from '!items!0Ms9iKxqigNNpZEx' @ 72057594037927935 : 1 .. '!items!wDHR5UHWq568lfGa' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/competences-entites/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/competences-entites/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/competences/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/competences/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/competences/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/competences/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/competences/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/competences/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/competences/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/competences/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/competences/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/competences/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.471288 7fed63e006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.481737 7fed63e006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.481786 7fed63e006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/competences/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/competences/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:32.544114 7f9d7e0006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:32.600711 7f9d7e0006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:32.600809 7f9d7e0006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:44.962085 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:44.962125 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:44.968340 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:44.975455 7f9d7d6006c0 Manual compaction at level-0 from '!items!2JLK5e97WbTM5WxX' @ 72057594037927935 : 1 .. '!items!zyNYa3hYtrOcF2jA' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:44.975495 7f9d7d6006c0 Manual compaction at level-1 from '!items!2JLK5e97WbTM5WxX' @ 72057594037927935 : 1 .. '!items!zyNYa3hYtrOcF2jA' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/competences/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/competences/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/entites-de-cauchemar/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/entites-de-cauchemar/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/entites-de-cauchemar/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/entites-de-cauchemar/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/entites-de-cauchemar/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/entites-de-cauchemar/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/entites-de-cauchemar/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/entites-de-cauchemar/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/entites-de-cauchemar/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/entites-de-cauchemar/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.523722 7fed690006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.533930 7fed690006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.533977 7fed690006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/entites-de-cauchemar/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/entites-de-cauchemar/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:34.274388 7f9d7f4006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:34.331636 7f9d7f4006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:34.331841 7f9d7f4006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:45.135878 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:45.135910 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:45.142458 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:45.142680 7f9d7d6006c0 Manual compaction at level-0 from '!actors!47YUryMgpq1UnLuB' @ 72057594037927935 : 1 .. '!actors.items!xngqS9HtwWOLf3Vo.iwfr7ekbLFzDCayP' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:45.142706 7f9d7d6006c0 Manual compaction at level-1 from '!actors!47YUryMgpq1UnLuB' @ 72057594037927935 : 1 .. '!actors.items!xngqS9HtwWOLf3Vo.iwfr7ekbLFzDCayP' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/entites-de-cauchemar/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/entites-de-cauchemar/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -64,8 +64,8 @@ | ||||
| {"_id":"MGvyXFQJpv6nNynl","name":"Masse lourde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/masse_lourde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MGvyXFQJpv6nNynl"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":4,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":10,"categorie_parade":"","dommages":"3/4","penetration":0,"force":"12/11","competence":"Masse à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":0,"resistance_magique":0,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"masse"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"MQxgfYTEQEUhG116","name":"Épée bâtarde","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/epee_batarde.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.MQxgfYTEQEUhG116"}},"system":{"description":"<p>Comme son nom l’indique, c’est une <em>bâtarde </em>de l'épée longue et de l'épée sorde, à la fois longue et large, pouvant s’utiliser à une ou deux mains.</p>","descriptionmj":"","equipe":false,"encombrement":3,"quantite":1,"qualite":0,"cout":30,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"resistance":14,"categorie_parade":"epees-lourdes","dommages":"4/5","penetration":0,"force":"13/12","competence":"Epée à 1 main","lancer":"","tir":"","portee_courte":0,"portee_moyenne":0,"portee_extreme":0,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":false,"deuxmains":true,"unemain":true,"initpremierround":"epeebatarde"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"Mbh2M8JS1Rf0vxEX","name":"Harpe","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/harpe.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.Mbh2M8JS1Rf0vxEX"}},"system":{"description":"","descriptionmj":"","encombrement":1,"quantite":1,"qualite":0,"cout":5,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"NCp2kdTKmQGyAh1U","name":"Dague","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/dague.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sheetClass":"","sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.NCp2kdTKmQGyAh1U"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"7","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"NCp2kdTKmJVdFuit","name":"Dague mêlée","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/dague.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sheetClass":"","sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.NCp2kdTKmQGyAh1U"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"7","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"NCp2kdTKmQGyAh1U","name":"Dague","type":"arme","img":"systems/foundryvtt-reve-de-dragon/icons/armes_armures/dague.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sheetClass":"","sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.NCp2kdTKmQGyAh1U"}},"system":{"description":"","descriptionmj":"","equipe":false,"encombrement":0.5,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Frequente","frequence":18},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"resistance":8,"categorie_parade":"dagues","dommages":"1","penetration":0,"force":"7","competence":"Dague","lancer":"Dague de jet","tir":"","portee_courte":3,"portee_moyenne":8,"portee_extreme":15,"magique":false,"ecaille_efficacite":null,"resistance_magique":null,"rapide":true,"deuxmains":false,"unemain":true,"initpremierround":"dague"},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"NNLhxjFsoJVdFuit","name":"Bouteille de verre (1 litre)","type":"conteneur","img":"systems/foundryvtt-reve-de-dragon/icons/objets/bouteille_verre.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.NNLhxjFsoJVdFuit"}},"system":{"description":"","descriptionmj":"","encombrement":0.2,"quantite":1,"qualite":0,"cout":0.7,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"contenu":[],"capacite":0.5,"equipe":false},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"OXFFRZOqlhZDJas3","name":"Béret de velours","type":"objet","img":"systems/foundryvtt-reve-de-dragon/icons/objets/beret_velours.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OXFFRZOqlhZDJas3"}},"system":{"description":"","descriptionmj":"","encombrement":0.05,"quantite":1,"qualite":0,"cout":3,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rare","frequence":6},{"milieu":"Villes","rarete":"Frequente","frequence":18}],"equipe":false,"resistance":1},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
| {"_id":"OYWzXiQUFsjU5AF2","name":"Perles de Bjwal","type":"potion","img":"systems/foundryvtt-reve-de-dragon/icons/objets/perles_bjwal.webp","effects":[],"folder":null,"sort":0,"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.equipement.OYWzXiQUFsjU5AF2"}},"system":{"description":"<p>Petits granulés translucides.</p>","descriptionmj":"","encombrement":0.1,"quantite":1,"qualite":0,"cout":1,"milieu":"","environnement":[{"milieu":"Villages","rarete":"Rarissime","frequence":2},{"milieu":"Villes","rarete":"Rare","frequence":6}],"temporel":{"debut":{"indexDate":-1,"indexMinute":0},"fin":{"indexDate":-1,"indexMinute":0}},"rarete":"","categorie":"Remede","herbe":"","herbebrins":0,"herbebonus":0,"reposalchimique":false,"pr":0,"prpermanent":false,"prdate":0,"soinherbe":"","soinherbebonus":0},"ownership":{"default":0,"rYShh2P1DNavdoBD":3},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.6.15","coreVersion":"10.291","createdTime":1668808206023,"modifiedTime":1676074487966,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}} | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/equipement/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/equipement/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/equipement/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/equipement/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/equipement/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/equipement/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/equipement/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/equipement/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/equipement/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/equipement/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.544474 7fed690006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.555177 7fed690006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.555255 7fed690006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/equipement/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/equipement/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:33.076530 7f9d7e0006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:33.128870 7f9d7e0006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:33.128972 7f9d7e0006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:45.003377 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:45.003402 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:45.009778 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:45.031135 7f9d7d6006c0 Manual compaction at level-0 from '!items!0I30m9qcYJk6UR6o' @ 72057594037927935 : 1 .. '!items!zlDa1vwmls6Uf4pt' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:45.031185 7f9d7d6006c0 Manual compaction at level-1 from '!items!0I30m9qcYJk6UR6o' @ 72057594037927935 : 1 .. '!items!zlDa1vwmls6Uf4pt' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/equipement/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/equipement/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/extrait-poetique/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/extrait-poetique/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/extrait-poetique/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/extrait-poetique/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/extrait-poetique/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/extrait-poetique/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/extrait-poetique/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/extrait-poetique/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								pack_ref/extrait-poetique/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pack_ref/extrait-poetique/LOG
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| 2024/11/10-18:39:00.599542 7fed63e006c0 Recovering log #8 | ||||
| 2024/11/10-18:39:00.610171 7fed63e006c0 Delete type=3 #6 | ||||
| 2024/11/10-18:39:00.610222 7fed63e006c0 Delete type=0 #8 | ||||
							
								
								
									
										8
									
								
								pack_ref/extrait-poetique/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								pack_ref/extrait-poetique/LOG.old
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| 2024/11/08-19:40:33.631893 7f9d7fe006c0 Recovering log #4 | ||||
| 2024/11/08-19:40:33.691489 7f9d7fe006c0 Delete type=3 #2 | ||||
| 2024/11/08-19:40:33.691603 7f9d7fe006c0 Delete type=0 #4 | ||||
| 2024/11/08-19:56:45.074153 7f9d7d6006c0 Level-0 table #9: started | ||||
| 2024/11/08-19:56:45.074177 7f9d7d6006c0 Level-0 table #9: 0 bytes OK | ||||
| 2024/11/08-19:56:45.081226 7f9d7d6006c0 Delete type=0 #7 | ||||
| 2024/11/08-19:56:45.087832 7f9d7d6006c0 Manual compaction at level-0 from '!items!1xzVPsfnO3uukbc4' @ 72057594037927935 : 1 .. '!items!yJ3m3fheGJluiGDx' @ 0 : 0; will stop at (end) | ||||
| 2024/11/08-19:56:45.087874 7f9d7d6006c0 Manual compaction at level-1 from '!items!1xzVPsfnO3uukbc4' @ 72057594037927935 : 1 .. '!items!yJ3m3fheGJluiGDx' @ 0 : 0; will stop at (end) | ||||
							
								
								
									
										
											BIN
										
									
								
								pack_ref/extrait-poetique/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/extrait-poetique/MANIFEST-000010
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								pack_ref/faune-flore-mineraux/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pack_ref/faune-flore-mineraux/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								pack_ref/faune-flore-mineraux/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/faune-flore-mineraux/000011.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								pack_ref/faune-flore-mineraux/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pack_ref/faune-flore-mineraux/CURRENT
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MANIFEST-000010 | ||||
							
								
								
									
										0
									
								
								pack_ref/faune-flore-mineraux/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pack_ref/faune-flore-mineraux/LOCK
									
									
									
									
									
										Normal file
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user