Compare commits
19 Commits
foundryvtt
...
build-test
Author | SHA1 | Date | |
---|---|---|---|
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 |
@ -1,4 +1,10 @@
|
|||||||
# 12.0
|
# 12.0
|
||||||
|
## 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
|
## 12.0.18 - A la barbe d'Astrobazzarh
|
||||||
- Améliorations sur la feuille de PNJ simplifiée
|
- Améliorations sur la feuille de PNJ simplifiée
|
||||||
- Ajout du portrait
|
- Ajout du portrait
|
||||||
|
@ -36,6 +36,8 @@ import { ITEM_TYPES } from "./item.js";
|
|||||||
import { RdDBaseActorSang } from "./actor/base-actor-sang.js";
|
import { RdDBaseActorSang } from "./actor/base-actor-sang.js";
|
||||||
import { RdDCoeur } from "./coeur/rdd-coeur.js";
|
import { RdDCoeur } from "./coeur/rdd-coeur.js";
|
||||||
import { DialogChoixXpCarac } from "./dialog-choix-xp-carac.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']
|
export const MAINS_DIRECTRICES = ['Droitier', 'Gaucher', 'Ambidextre']
|
||||||
|
|
||||||
@ -130,6 +132,23 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
.reduce(Misc.sum(), 0);
|
.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') }
|
getTache(id) { return this.findItemLike(id, 'tache') }
|
||||||
getMeditation(id) { return this.findItemLike(id, 'meditation') }
|
getMeditation(id) { return this.findItemLike(id, 'meditation') }
|
||||||
@ -1548,7 +1567,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') {
|
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') {
|
||||||
if (!Misc.isFirstConnectedGM()){
|
if (!Misc.isFirstConnectedGM()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM)
|
hideChatMessage = hideChatMessage == 'hide' || (Misc.isRollModeHiddenToPlayer() && !game.user.isGM)
|
||||||
@ -3067,7 +3086,7 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
incarnation.name = 'Réincarnation de ' + incarnation.name
|
incarnation.name = 'Réincarnation de ' + incarnation.name
|
||||||
incarnation.system = {
|
incarnation.system = {
|
||||||
carac: foundry.utils.duplicate(this.system.carac),
|
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,
|
age: 18,
|
||||||
biographie: '',
|
biographie: '',
|
||||||
notes: '',
|
notes: '',
|
||||||
|
@ -15,7 +15,7 @@ import { StatusEffects } from "../settings/status-effects.js";
|
|||||||
import { ITEM_TYPES } from "../item.js";
|
import { ITEM_TYPES } from "../item.js";
|
||||||
import { Targets } from "../targets.js";
|
import { Targets } from "../targets.js";
|
||||||
import { RdDPossession } from "../rdd-possession.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 { RdDConfirm } from "../rdd-confirm.js";
|
||||||
import { ENTITE_INCARNE, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
|
import { ENTITE_INCARNE, SHOW_DICE, SYSTEM_RDD } from "../constants.js";
|
||||||
import { RdDItemArme } from "../item-arme.js";
|
import { RdDItemArme } from "../item-arme.js";
|
||||||
@ -83,6 +83,23 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
getEtatGeneral(options = { ethylisme: false }) { return 0 }
|
getEtatGeneral(options = { ethylisme: false }) { return 0 }
|
||||||
isActorCombat() { return true }
|
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 computeArmure(attackerRoll) { return this.getProtectionNaturelle() }
|
||||||
async remiseANeuf() { }
|
async remiseANeuf() { }
|
||||||
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') { }
|
async appliquerAjoutExperience(rollData, hideChatMessage = 'show') { }
|
||||||
@ -155,9 +172,6 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
getPossession(possessionId) {
|
getPossession(possessionId) {
|
||||||
return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId);
|
return this.itemTypes[ITEM_TYPES.possession].find(it => it.system.possessionid == possessionId);
|
||||||
}
|
}
|
||||||
getPossessions() {
|
|
||||||
return this.itemTypes[ITEM_TYPES.possession];
|
|
||||||
}
|
|
||||||
getEmpoignades() {
|
getEmpoignades() {
|
||||||
return this.itemTypes[ITEM_TYPES.empoignade];
|
return this.itemTypes[ITEM_TYPES.empoignade];
|
||||||
}
|
}
|
||||||
@ -370,7 +384,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
rollArme(arme, categorieArme, token) {
|
rollArme(arme, categorieArme, token) {
|
||||||
token = token ?? RdDUtility.getSelectedToken(this)
|
token = token ?? RdDUtility.getSelectedToken(this)
|
||||||
const compToUse = this.$getCompetenceArme(arme, categorieArme)
|
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`)
|
ui.notifications.warn(`Arme inutilisable: ${arme.name} a une résistance de 0 ou moins`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -452,7 +466,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
|||||||
alias: defenderToken?.name ?? this.name,
|
alias: defenderToken?.name ?? this.name,
|
||||||
hasPlayerOwner: this.hasPlayerOwner,
|
hasPlayerOwner: this.hasPlayerOwner,
|
||||||
show: show ?? {}
|
show: show ?? {}
|
||||||
}, {overwrite: false});
|
}, { overwrite: false });
|
||||||
|
|
||||||
await ChatUtility.createChatWithRollMode(
|
await ChatUtility.createChatWithRollMode(
|
||||||
{
|
{
|
||||||
|
@ -710,4 +710,19 @@ export class RdDBaseActor extends Actor {
|
|||||||
getItemUse(itemId) { return 0; }
|
getItemUse(itemId) { return 0; }
|
||||||
async finDeRound(options = { terminer: false }) { }
|
async finDeRound(options = { terminer: false }) { }
|
||||||
isActorCombat() { return 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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
@ -152,8 +152,8 @@ export class Mapping {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static prepareArme(actor, arme, maniement) {
|
static prepareArme(actor, arme, maniement) {
|
||||||
const nameCompArme = RdDItemArme.getCompetenceArme(arme, maniement)
|
const nameCompetenceArme = RdDItemArme.getCompetenceArme(arme, maniement)
|
||||||
const competence = actor.getCompetence(nameCompArme)
|
const competence = actor.getCompetence(nameCompetenceArme)
|
||||||
if (RdDItemCompetence.isNiveauBase(competence)) {
|
if (RdDItemCompetence.isNiveauBase(competence)) {
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ export class RdDItemArme extends Item {
|
|||||||
return arme.system.competence.replace(" 1 main", " 2 mains");
|
return arme.system.competence.replace(" 1 main", " 2 mains");
|
||||||
}
|
}
|
||||||
|
|
||||||
static isArmeUtilisable(arme) {
|
static isUtilisable(arme) {
|
||||||
switch (arme.type) {
|
switch (arme.type) {
|
||||||
case ITEM_TYPES.arme: return arme.system.equipe && (arme.system.resistance > 0 || arme.system.portee_courte > 0)
|
case ITEM_TYPES.arme: return arme.system.equipe && (arme.system.resistance > 0 || arme.system.portee_courte > 0)
|
||||||
case ITEM_TYPES.competencecreature: return true
|
case ITEM_TYPES.competencecreature: return true
|
||||||
@ -214,6 +214,26 @@ export class RdDItemArme extends Item {
|
|||||||
return false
|
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) {
|
static ajoutCorpsACorps(armes, actor) {
|
||||||
armes.push(RdDItemArme.mainsNues(actor));
|
armes.push(RdDItemArme.mainsNues(actor));
|
||||||
armes.push(RdDItemArme.empoignade(actor));
|
armes.push(RdDItemArme.empoignade(actor));
|
||||||
|
@ -27,29 +27,28 @@ export class RdDItemCompetenceCreature extends Item {
|
|||||||
static armeCreature(item) {
|
static armeCreature(item) {
|
||||||
const categorieAttaque = RdDItemCompetenceCreature.getCategorieAttaque(item)
|
const categorieAttaque = RdDItemCompetenceCreature.getCategorieAttaque(item)
|
||||||
if (categorieAttaque != undefined) {
|
if (categorieAttaque != undefined) {
|
||||||
// si c'est un Item compétence: cloner pour ne pas modifier la compétence
|
// cloner pour ne pas modifier la compétence
|
||||||
let arme = item.clone();
|
return foundry.utils.mergeObject(item, {
|
||||||
return foundry.utils.mergeObject(arme, {
|
|
||||||
action: item.isCompetencePossession() ? 'possession' : 'attaque',
|
action: item.isCompetencePossession() ? 'possession' : 'attaque',
|
||||||
system: {
|
system: {
|
||||||
competence: arme.name,
|
competence: item.name,
|
||||||
cac: categorieAttaque == "naturelle" ? "naturelle" : "",
|
cac: categorieAttaque == "naturelle" ? "naturelle" : "",
|
||||||
niveau: item.system.niveau,
|
niveau: item.system.niveau,
|
||||||
initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value),
|
initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value),
|
||||||
equipe: true,
|
equipe: true,
|
||||||
resistance: 100,
|
resistance: 100,
|
||||||
dommagesReels: arme.system.dommages,
|
dommagesReels: item.system.dommages,
|
||||||
penetration: 0,
|
penetration: 0,
|
||||||
force: 0,
|
force: 0,
|
||||||
rapide: true,
|
rapide: true,
|
||||||
}
|
}
|
||||||
}, { inplace: false });
|
}, { inplace: false, });
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static isCompetenceAttaque(item) {
|
static isAttaque(item) {
|
||||||
if (item.type == ITEM_TYPES.competencecreature) {
|
if (item.type == ITEM_TYPES.competencecreature) {
|
||||||
switch (item.system.categorie) {
|
switch (item.system.categorie) {
|
||||||
case "melee":
|
case "melee":
|
||||||
@ -60,7 +59,7 @@ export class RdDItemCompetenceCreature extends Item {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return undefined
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
static getCategorieAttaque(item) {
|
static getCategorieAttaque(item) {
|
||||||
@ -77,6 +76,7 @@ export class RdDItemCompetenceCreature extends Item {
|
|||||||
}
|
}
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
static isDommages(item) {
|
static isDommages(item) {
|
||||||
if (item.type == ITEM_TYPES.competencecreature) {
|
if (item.type == ITEM_TYPES.competencecreature) {
|
||||||
switch (item.system.categorie) {
|
switch (item.system.categorie) {
|
||||||
@ -89,6 +89,7 @@ export class RdDItemCompetenceCreature extends Item {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
static isParade(item) {
|
static isParade(item) {
|
||||||
if (item.type == ITEM_TYPES.competencecreature) {
|
if (item.type == ITEM_TYPES.competencecreature) {
|
||||||
switch (item.system.categorie) {
|
switch (item.system.categorie) {
|
||||||
@ -101,8 +102,4 @@ export class RdDItemCompetenceCreature extends Item {
|
|||||||
return false
|
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 }) {
|
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) {
|
static getActorCombatant(combatant, options = { warning: true }) {
|
||||||
if (!combatant.actor) {
|
if (!combatant.actor) {
|
||||||
|
if (options.warning) {
|
||||||
ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur!`)
|
ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur!`)
|
||||||
}
|
}
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
else if (!combatant.actor.isActorCombat()) {
|
else if (!combatant.actor.isActorCombat()) {
|
||||||
ui.notifications.warn(`Le combatant ${combatant.name} ne peut pas combattre!`)
|
if (options.warning) {
|
||||||
}
|
ui.notifications.warn(`${combatant.name} ne peut pas combattre!`)
|
||||||
else {
|
|
||||||
await combatant.actor.finDeRound(options)
|
|
||||||
await combatant.actor.resetItemUse()
|
|
||||||
}
|
}
|
||||||
|
return undefined
|
||||||
}
|
}
|
||||||
|
return combatant.actor
|
||||||
}
|
}
|
||||||
|
|
||||||
static calculAjustementInit(actor, arme) {
|
static calculAjustementInit(actor, arme) {
|
||||||
@ -95,56 +104,27 @@ export class RdDCombatManager extends Combat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************************/
|
/************************************************************************************/
|
||||||
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
|
async rollInitiative(ids, messageOptions = {}) {
|
||||||
console.log(`${game.system.title} | Combat.rollInitiative()`, ids, formula, 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;
|
async rollInitRdD(id, formula, messageOptions = {}) {
|
||||||
// calculate initiative
|
const combatant = this.combatants.get(id);
|
||||||
for (let cId = 0; cId < ids.length; cId++) {
|
const actor = RdDCombatManager.getActorCombatant(combatant)
|
||||||
const combatant = this.combatants.get(ids[cId]);
|
if (actor) {
|
||||||
const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, undefined);
|
const rollFormula = formula ?? RdDCombatManager.getFirstInitRollFormula(actor)
|
||||||
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`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const roll = combatant.getInitiativeRoll(rollFormula);
|
const roll = combatant.getInitiativeRoll(rollFormula);
|
||||||
if (!roll.total) {
|
if (!roll.total) {
|
||||||
await roll.evaluate();
|
await roll.evaluate();
|
||||||
}
|
}
|
||||||
const total = Math.max(roll.total, 0.00);
|
const total = Math.max(roll.total, 0.00);
|
||||||
console.log("Compute init for", rollFormula, roll, total, combatant);
|
console.log("Compute init for", rollFormula, roll, total, combatant);
|
||||||
let id = combatant._id || combatant.id;
|
await this.updateEmbeddedDocuments("Combatant", [{ _id: combatant._id || combatant.id, initiative: total }]);
|
||||||
await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: total }]);
|
|
||||||
|
|
||||||
// Send a chat message
|
// Send a chat message
|
||||||
let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode");
|
let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode");
|
||||||
@ -156,7 +136,7 @@ export class RdDCombatManager extends Combat {
|
|||||||
alias: combatant.token.name,
|
alias: combatant.token.name,
|
||||||
sound: CONFIG.sounds.dice,
|
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);
|
messageOptions);
|
||||||
roll.toMessage(messageData, { rollMode, create: true });
|
roll.toMessage(messageData, { rollMode, create: true });
|
||||||
@ -164,7 +144,20 @@ export class RdDCombatManager extends Combat {
|
|||||||
RdDCombatManager.processPremierRoundInit();
|
RdDCombatManager.processPremierRoundInit();
|
||||||
}
|
}
|
||||||
return this;
|
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) {
|
static formuleInitiative(rang, carac, niveau, bonusMalus) {
|
||||||
return `${rang} +( (${RdDCombatManager.calculInitiative(niveau, carac, bonusMalus)} )/100)`;
|
return `${rang} +( (${RdDCombatManager.calculInitiative(niveau, carac, bonusMalus)} )/100)`;
|
||||||
@ -247,61 +240,6 @@ export class RdDCombatManager extends Combat {
|
|||||||
return attaque;
|
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() {
|
static processPremierRoundInit() {
|
||||||
// Check if we have the whole init !
|
// Check if we have the whole init !
|
||||||
@ -339,13 +277,13 @@ export class RdDCombatManager extends Combat {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static pushInitiativeOptions(html, options) {
|
static pushInitiativeOptions(html, options) {
|
||||||
for (let i = 0; i < options.length; i++) {
|
for (let i = 0; i < options.length; i++) {
|
||||||
let option = options[i];
|
let option = options[i]
|
||||||
if (option.name == 'COMBAT.CombatantReroll') { // Replace !
|
if (option.name == 'COMBAT.CombatantReroll') { // Replace !
|
||||||
option.name = "Sélectionner l'initiative...";
|
option.name = "Sélectionner l'initiative..."
|
||||||
option.condition = true;
|
option.condition = true
|
||||||
option.icon = '<i class="far fa-question-circle"></i>';
|
option.icon = '<i class="far fa-question-circle"></i>'
|
||||||
option.callback = target => {
|
option.callback = target => {
|
||||||
RdDCombatManager.displayInitiativeMenu(html, target.data('combatant-id'));
|
RdDCombatManager.displayInitiativeMenu(html, target.data('combatant-id'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -356,95 +294,82 @@ export class RdDCombatManager extends Combat {
|
|||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static rollInitiativeAction(combatantId, action) {
|
static rollInitiativeAction(combatantId, action) {
|
||||||
const combatant = game.combat.combatants.get(combatantId);
|
const combatant = game.combat.combatants.get(combatantId)
|
||||||
if (combatant.actor == undefined) {
|
const actor = RdDCombatManager.getActorCombatant(combatant)
|
||||||
ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
if (actor == undefined) { return [] }
|
||||||
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;
|
|
||||||
|
|
||||||
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
|
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 getInitData(actor, action) {
|
||||||
static _baseInitOffset(categorie, arme) {
|
if (actor.getSurprise() == "totale") { return { offset: -1, info: "Surprise Totale", carac: 0, niveau: 0 } }
|
||||||
if (categorie == "tir") { // Offset de principe pour les armes de jet
|
if (actor.getSurprise() == "demi") { return { offset: 0, info: "Demi Surprise", carac: 0, niveau: 0 } }
|
||||||
return 8;
|
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) {
|
switch (arme.system.cac) {
|
||||||
case "empoignade":
|
case "empoignade": return 3
|
||||||
return 3;
|
case "pugilat": return 4
|
||||||
case "pugilat":
|
case "naturelle": return 4
|
||||||
case "naturelle":
|
default: return 5
|
||||||
return 4;
|
}
|
||||||
}
|
}
|
||||||
return 5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static displayInitiativeMenu(html, combatantId) {
|
static displayInitiativeMenu(html, combatantId) {
|
||||||
console.log("Combatant ; ", combatantId);
|
const combatant = game.combat.combatants.get(combatantId)
|
||||||
const combatant = game.combat.combatants.get(combatantId);
|
const actor = RdDCombatManager.getActorCombatant(combatant, { warning: false })
|
||||||
if (!(combatant?.actor)) {
|
if (actor) {
|
||||||
ui.notifications.warn(`Le combatant ${combatant.name ?? combatantId} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
const actions = RdDCombatManager.listActionsActorCombatant(actor)
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let actions = RdDCombatManager.listActionsCombat(combatant);
|
|
||||||
|
|
||||||
// Build the relevant submenu
|
// Build the relevant submenu
|
||||||
if (actions) {
|
const menuItems = actions.map(action => {
|
||||||
let menuItems = [];
|
return {
|
||||||
for (let action of actions) {
|
|
||||||
menuItems.push({
|
|
||||||
name: action.system.competence,
|
name: action.system.competence,
|
||||||
icon: "<i class='fas fa-dice-d6'></i>",
|
icon: "<i class='fas fa-dice-d6'></i>",
|
||||||
callback: target => { RdDCombatManager.rollInitiativeAction(combatantId, action) }
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -992,13 +917,13 @@ export class RdDCombat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_filterArmesParade(defender, competence, arme) {
|
_filterArmesParade(defender, competence, armeAttaque) {
|
||||||
let defenses = defender.items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it))
|
let defenses = defender.items.filter(it => RdDItemArme.isParade(it))
|
||||||
defenses = foundry.utils.duplicate(defenses)
|
defenses = foundry.utils.duplicate(defenses)
|
||||||
defenses.forEach(armeDefense => {
|
defenses.forEach(armeDefense => {
|
||||||
// Ajout du # d'utilisation ce round
|
// Ajout du # d'utilisation ce round
|
||||||
armeDefense.nbUsage = defender.getItemUse(armeDefense.id)
|
armeDefense.nbUsage = defender.getItemUse(armeDefense.id)
|
||||||
armeDefense.typeParade = RdDItemArme.defenseArmeParade(arme, armeDefense)
|
armeDefense.typeParade = RdDItemArme.defenseArmeParade(armeAttaque, armeDefense)
|
||||||
})
|
})
|
||||||
|
|
||||||
switch (competence.system.categorie) {
|
switch (competence.system.categorie) {
|
||||||
@ -1353,7 +1278,7 @@ export class RdDCombat {
|
|||||||
if (!actor?.isActorCombat()) {
|
if (!actor?.isActorCombat()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let formData = {
|
const formData = {
|
||||||
combatId: combat._id,
|
combatId: combat._id,
|
||||||
alias: token.name ?? actor.name,
|
alias: token.name ?? actor.name,
|
||||||
etatGeneral: actor.getEtatGeneral(),
|
etatGeneral: actor.getEtatGeneral(),
|
||||||
@ -1374,6 +1299,6 @@ export class RdDCombat {
|
|||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-sante.hbs`, formData),
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-sante.hbs`, formData),
|
||||||
whisper: ChatUtility.getOwners(actor),
|
whisper: ChatUtility.getOwners(actor),
|
||||||
alias: token.name ?? actor.name
|
alias: token.name ?? actor.name
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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() {
|
async onReady() {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -307,6 +317,8 @@ export class SystemReveDeDragon {
|
|||||||
user: game.user.id
|
user: game.user.id
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SystemReveDeDragon.setupAccueil()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -28,16 +28,15 @@ export class RdDTokenHud {
|
|||||||
await RdDTokenHud.addExtensionHudSoins(html, actor);
|
await RdDTokenHud.addExtensionHudSoins(html, actor);
|
||||||
|
|
||||||
if (isCombat) {
|
if (isCombat) {
|
||||||
let combatant = game.combat.combatants.find(c => c.tokenId == tokenId);
|
const combatant = game.combat.combatants.find(c => c.tokenId == tokenId)
|
||||||
if (!(combatant?.actor)) {
|
const actor = RdDCombatManager.getActorCombatant(combatant, { warning: false })
|
||||||
ui.notifications.warn(`Le combatant ${token.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
if (actor) {
|
||||||
return;
|
let actions = RdDCombatManager.listActionsActorCombatant(actor)
|
||||||
}
|
|
||||||
let actions = RdDCombatManager.listActionsCombat(combatant);
|
|
||||||
// initiative
|
// initiative
|
||||||
await RdDTokenHud.addExtensionHudInit(html, combatant, actions);
|
await RdDTokenHud.addExtensionHudInit(html, combatant, actions)
|
||||||
// combat
|
// combat
|
||||||
await RdDTokenHud.addExtensionHudCombat(html, combatant, token, actions);
|
await RdDTokenHud.addExtensionHudCombat(html, combatant, token, actions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,6 +112,19 @@ export class SystemCompendiums extends FormApplication {
|
|||||||
return elements;
|
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) {
|
static async getDefaultItems(compendium) {
|
||||||
const pack = game.packs.get(SystemCompendiums._getDefaultCompendium(compendium));
|
const pack = game.packs.get(SystemCompendiums._getDefaultCompendium(compendium));
|
||||||
if (pack.metadata.type == 'Item') {
|
if (pack.metadata.type == 'Item') {
|
||||||
|
@ -15,7 +15,7 @@ export class AutoAdjustDarkness {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static async adjust(darkness) {
|
static async adjust(darkness) {
|
||||||
if (AutoAdjustDarkness.isAuto()) {
|
if (game.user.isGM && AutoAdjustDarkness.isAuto()) {
|
||||||
const scene = game.scenes.viewed;
|
const scene = game.scenes.viewed;
|
||||||
if (scene?.environment?.globalLight?.enabled && scene?.tokenVision) {
|
if (scene?.environment?.globalLight?.enabled && scene?.tokenVision) {
|
||||||
await scene.update({ darkness });
|
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":"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":"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":"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":"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":"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":"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"}}
|
{"_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
3
pack_ref/faune-flore-mineraux/LOG
Normal file
3
pack_ref/faune-flore-mineraux/LOG
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
2024/11/10-18:39:00.613190 7fed634006c0 Recovering log #8
|
||||||
|
2024/11/10-18:39:00.622547 7fed634006c0 Delete type=3 #6
|
||||||
|
2024/11/10-18:39:00.622602 7fed634006c0 Delete type=0 #8
|
8
pack_ref/faune-flore-mineraux/LOG.old
Normal file
8
pack_ref/faune-flore-mineraux/LOG.old
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
2024/11/08-19:40:34.398961 7f9d7fe006c0 Recovering log #4
|
||||||
|
2024/11/08-19:40:34.452615 7f9d7fe006c0 Delete type=3 #2
|
||||||
|
2024/11/08-19:40:34.452747 7f9d7fe006c0 Delete type=0 #4
|
||||||
|
2024/11/08-19:56:45.142823 7f9d7d6006c0 Level-0 table #9: started
|
||||||
|
2024/11/08-19:56:45.142856 7f9d7d6006c0 Level-0 table #9: 0 bytes OK
|
||||||
|
2024/11/08-19:56:45.149531 7f9d7d6006c0 Delete type=0 #7
|
||||||
|
2024/11/08-19:56:45.170462 7f9d7d6006c0 Manual compaction at level-0 from '!items!0EA5It28VyLzQE6n' @ 72057594037927935 : 1 .. '!items!ySY57JWhYS7PWBXv' @ 0 : 0; will stop at (end)
|
||||||
|
2024/11/08-19:56:45.170535 7f9d7d6006c0 Manual compaction at level-1 from '!items!0EA5It28VyLzQE6n' @ 72057594037927935 : 1 .. '!items!ySY57JWhYS7PWBXv' @ 0 : 0; will stop at (end)
|
BIN
pack_ref/faune-flore-mineraux/MANIFEST-000010
Normal file
BIN
pack_ref/faune-flore-mineraux/MANIFEST-000010
Normal file
Binary file not shown.
BIN
pack_ref/humanoides/000005.ldb
Normal file
BIN
pack_ref/humanoides/000005.ldb
Normal file
Binary file not shown.
0
pack_ref/humanoides/000011.log
Normal file
0
pack_ref/humanoides/000011.log
Normal file
1
pack_ref/humanoides/CURRENT
Normal file
1
pack_ref/humanoides/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000010
|
0
pack_ref/humanoides/LOCK
Normal file
0
pack_ref/humanoides/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