Update vtt types
This commit is contained in:
parent
623558dc78
commit
c57960c153
24 changed files with 144 additions and 107 deletions
|
@ -5,12 +5,13 @@
|
|||
|
||||
import { ModifiableDataBaseTotal } from "../common/common-data";
|
||||
import { DS4 } from "../config";
|
||||
import { ItemType } from "../item/item-data-source";
|
||||
import { DS4ArmorDataProperties, DS4ShieldDataProperties } from "../item/item-data-properties";
|
||||
import { createCheckRoll } from "../rolls/check-factory";
|
||||
import { isAttribute, isTrait } from "./actor-data-source";
|
||||
import { Check } from "./actor-data-properties";
|
||||
import { getGame } from "../helpers";
|
||||
import { DS4Item } from "../item/item";
|
||||
import { DS4ArmorDataProperties, DS4ShieldDataProperties } from "../item/item-data-properties";
|
||||
import { ItemType } from "../item/item-data-source";
|
||||
import { createCheckRoll } from "../rolls/check-factory";
|
||||
import { Check } from "./actor-data-properties";
|
||||
import { isAttribute, isTrait } from "./actor-data-source";
|
||||
|
||||
declare global {
|
||||
interface DocumentClassConfig {
|
||||
|
@ -307,10 +308,10 @@ export class DS4Actor extends Actor {
|
|||
*/
|
||||
async rollCheck(check: Check): Promise<void> {
|
||||
await createCheckRoll(this.data.data.checks[check], {
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
rollMode: getGame().settings.get("core", "rollMode"),
|
||||
maximumCoupResult: this.data.data.rolling.maximumCoupResult,
|
||||
minimumFumbleResult: this.data.data.rolling.minimumFumbleResult,
|
||||
flavor: game.i18n.format("DS4.ActorCheckFlavor", { actor: this.name, check: DS4.i18n.checks[check] }),
|
||||
flavor: getGame().i18n.format("DS4.ActorCheckFlavor", { actor: this.name, check: DS4.i18n.checks[check] }),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -322,10 +323,10 @@ export class DS4Actor extends Actor {
|
|||
const { attribute, trait } = await this.selectAttributeAndTrait();
|
||||
const checkTargetNumber = this.data.data.attributes[attribute].total + this.data.data.traits[trait].total;
|
||||
await createCheckRoll(checkTargetNumber, {
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
rollMode: getGame().settings.get("core", "rollMode"),
|
||||
maximumCoupResult: this.data.data.rolling.maximumCoupResult,
|
||||
minimumFumbleResult: this.data.data.rolling.minimumFumbleResult,
|
||||
flavor: game.i18n.format("DS4.ActorGenericCheckFlavor", {
|
||||
flavor: getGame().i18n.format("DS4.ActorGenericCheckFlavor", {
|
||||
actor: this.name,
|
||||
attribute: DS4.i18n.attributes[attribute],
|
||||
trait: DS4.i18n.traits[trait],
|
||||
|
@ -340,27 +341,27 @@ export class DS4Actor extends Actor {
|
|||
const attributeIdentifier = "attribute-trait-selection-attribute";
|
||||
const traitIdentifier = "attribute-trait-selection-trait";
|
||||
return Dialog.prompt({
|
||||
title: game.i18n.localize("DS4.DialogAttributeTraitSelection"),
|
||||
title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"),
|
||||
content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", {
|
||||
selects: [
|
||||
{
|
||||
label: game.i18n.localize("DS4.Attribute"),
|
||||
label: getGame().i18n.localize("DS4.Attribute"),
|
||||
identifier: attributeIdentifier,
|
||||
options: DS4.i18n.attributes,
|
||||
},
|
||||
{
|
||||
label: game.i18n.localize("DS4.Trait"),
|
||||
label: getGame().i18n.localize("DS4.Trait"),
|
||||
identifier: traitIdentifier,
|
||||
options: DS4.i18n.traits,
|
||||
},
|
||||
],
|
||||
}),
|
||||
label: game.i18n.localize("DS4.GenericOkButton"),
|
||||
label: getGame().i18n.localize("DS4.GenericOkButton"),
|
||||
callback: (html) => {
|
||||
const selectedAttribute = html.find(`#${attributeIdentifier}`).val();
|
||||
if (!isAttribute(selectedAttribute)) {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorUnexpectedAttribute", {
|
||||
getGame().i18n.format("DS4.ErrorUnexpectedAttribute", {
|
||||
actualAttribute: selectedAttribute,
|
||||
expectedTypes: Object.keys(DS4.i18n.attributes)
|
||||
.map((attribute) => `'${attribute}'`)
|
||||
|
@ -371,7 +372,7 @@ export class DS4Actor extends Actor {
|
|||
const selectedTrait = html.find(`#${traitIdentifier}`).val();
|
||||
if (!isTrait(selectedTrait)) {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorUnexpectedTrait", {
|
||||
getGame().i18n.format("DS4.ErrorUnexpectedTrait", {
|
||||
actualTrait: selectedTrait,
|
||||
expectedTypes: Object.keys(DS4.i18n.traits)
|
||||
.map((attribute) => `'${attribute}'`)
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
import { ModifiableDataBaseTotal } from "../../common/common-data";
|
||||
import { DS4 } from "../../config";
|
||||
import { getCanvas } from "../../helpers";
|
||||
import { getCanvas, getGame } from "../../helpers";
|
||||
import { DS4Item } from "../../item/item";
|
||||
import { DS4Settings, getDS4Settings } from "../../settings";
|
||||
import notifications from "../../ui/notifications";
|
||||
|
@ -81,9 +81,11 @@ export class DS4ActorSheet extends ActorSheet<ActorSheet.Options, DS4ActorSheetD
|
|||
}
|
||||
|
||||
protected getTooltipForValue(value: ModifiableDataBaseTotal<number>): string {
|
||||
return `${value.base} (${game.i18n.localize("DS4.TooltipBaseValue")}) + ${value.mod} (${game.i18n.localize(
|
||||
"DS4.TooltipModifier",
|
||||
)}) ➞ ${game.i18n.localize("DS4.TooltipEffects")} ➞ ${value.total}`;
|
||||
return `${value.base} (${getGame().i18n.localize("DS4.TooltipBaseValue")}) + ${
|
||||
value.mod
|
||||
} (${getGame().i18n.localize("DS4.TooltipModifier")}) ➞ ${getGame().i18n.localize("DS4.TooltipEffects")} ➞ ${
|
||||
value.total
|
||||
}`;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
|
@ -102,10 +104,10 @@ export class DS4ActorSheet extends ActorSheet<ActorSheet.Options, DS4ActorSheetD
|
|||
const id = li.data("itemId");
|
||||
const item = this.actor.getEmbeddedDocument("Item", id) as DS4Item; // TODO: Improve in upstream
|
||||
if (!item) {
|
||||
throw new Error(game.i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name }));
|
||||
throw new Error(getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name }));
|
||||
}
|
||||
if (!item.sheet) {
|
||||
throw new Error(game.i18n.localize("DS4.ErrorUnexpectedError"));
|
||||
throw new Error(getGame().i18n.localize("DS4.ErrorUnexpectedError"));
|
||||
}
|
||||
item.sheet.render(true);
|
||||
});
|
||||
|
@ -257,7 +259,7 @@ export class DS4ActorSheet extends ActorSheet<ActorSheet.Options, DS4ActorSheetD
|
|||
const check = target.dataset.check;
|
||||
if (!check) return super._onDragStart(event);
|
||||
|
||||
if (!isCheck(check)) throw new Error(game.i18n.format("DS4.ErrorCannotDragMissingCheck", { check }));
|
||||
if (!isCheck(check)) throw new Error(getGame().i18n.format("DS4.ErrorCannotDragMissingCheck", { check }));
|
||||
|
||||
const dragData = {
|
||||
actorId: this.actor.id,
|
||||
|
@ -275,7 +277,7 @@ export class DS4ActorSheet extends ActorSheet<ActorSheet.Options, DS4ActorSheetD
|
|||
const item = await DS4Item.fromDropData(data);
|
||||
if (item && !this.actor.canOwnItemType(item.data.type)) {
|
||||
notifications.warn(
|
||||
game.i18n.format("DS4.WarningActorCannotOwnItem", {
|
||||
getGame().i18n.format("DS4.WarningActorCannotOwnItem", {
|
||||
actorName: this.actor.name,
|
||||
actorType: this.actor.data.type,
|
||||
itemName: item.name,
|
||||
|
|
|
@ -4,7 +4,14 @@
|
|||
|
||||
export function getCanvas(): Canvas {
|
||||
if (!(canvas instanceof Canvas) || !canvas.ready) {
|
||||
throw new Error(game.i18n.localize("DS4.ErrorCanvasIsNotInitialized"));
|
||||
throw new Error(getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized"));
|
||||
}
|
||||
return canvas;
|
||||
}
|
||||
|
||||
export function getGame(): Game {
|
||||
if (!(game instanceof Game)) {
|
||||
throw new Error("Game is not initialized yet."); // Cannot localize this as we would need to access game to do this.
|
||||
}
|
||||
return game;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { isCheck } from "../actor/actor-data-properties";
|
||||
import { getGame } from "../helpers";
|
||||
import { DS4Item } from "../item/item";
|
||||
import { createRollCheckMacro } from "../macros/roll-check";
|
||||
import { createRollItemMacro } from "../macros/roll-item";
|
||||
|
@ -13,13 +14,15 @@ export default function registerForHotbarDropHook(): void {
|
|||
switch (data.type) {
|
||||
case "Item": {
|
||||
if (!isItemDropData(data) || !("data" in data)) {
|
||||
return notifications.warn(game.i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems"));
|
||||
return notifications.warn(
|
||||
getGame().i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems"),
|
||||
);
|
||||
}
|
||||
const itemData = data.data;
|
||||
|
||||
if (!DS4Item.rollableItemTypes.includes(itemData.type)) {
|
||||
return notifications.warn(
|
||||
game.i18n.format("DS4.WarningItemIsNotRollable", {
|
||||
getGame().i18n.format("DS4.WarningItemIsNotRollable", {
|
||||
name: itemData.name,
|
||||
id: itemData._id,
|
||||
type: itemData.type,
|
||||
|
@ -30,7 +33,7 @@ export default function registerForHotbarDropHook(): void {
|
|||
}
|
||||
case "Check": {
|
||||
if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) {
|
||||
return notifications.warn(game.i18n.localize("DS4.WarningInvalidCheckDropped"));
|
||||
return notifications.warn(getGame().i18n.localize("DS4.WarningInvalidCheckDropped"));
|
||||
}
|
||||
return createRollCheckMacro(data.data, slot);
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import { DS4CreatureActorSheet } from "../actor/sheets/creature-sheet";
|
|||
import { DS4 } from "../config";
|
||||
import registerHandlebarsHelpers from "../handlebars/handlebars-helpers";
|
||||
import registerHandlebarsPartials from "../handlebars/handlebars-partials";
|
||||
import { getGame } from "../helpers";
|
||||
import { DS4Item } from "../item/item";
|
||||
import { DS4ItemSheet } from "../item/item-sheet";
|
||||
import logger from "../logger";
|
||||
|
@ -28,7 +29,7 @@ export default function registerForInitHook(): void {
|
|||
async function init() {
|
||||
logger.info(`Initializing the DS4 Game System\n${DS4.ASCII}`);
|
||||
|
||||
game.ds4 = {
|
||||
getGame().ds4 = {
|
||||
DS4Actor,
|
||||
DS4Item,
|
||||
DS4,
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { DS4 } from "../config";
|
||||
import { getGame } from "../helpers";
|
||||
|
||||
export default function registerForSetupHooks(): void {
|
||||
Hooks.once("setup", () => {
|
||||
|
@ -21,7 +22,7 @@ function localizeAndSortConfigObjects() {
|
|||
|
||||
const localizeObject = <T extends { [s: string]: string }>(obj: T, sort = true): T => {
|
||||
const localized = Object.entries(obj).map(([key, value]) => {
|
||||
return [key, game.i18n.localize(value)];
|
||||
return [key, getGame().i18n.localize(value)];
|
||||
});
|
||||
if (sort) localized.sort((a, b) => a[1].localeCompare(b[1]));
|
||||
return Object.fromEntries(localized);
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { DS4 } from "../config";
|
||||
import { getGame } from "../helpers";
|
||||
import notifications from "../ui/notifications";
|
||||
import { isDS4ItemDataTypePhysical } from "./item-data-source";
|
||||
|
||||
|
@ -70,7 +71,7 @@ export class DS4ItemSheet extends ItemSheet<ItemSheet.Options, DS4ItemSheetData>
|
|||
event.preventDefault();
|
||||
|
||||
if (this.item.isOwned) {
|
||||
return notifications.warn(game.i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem"));
|
||||
return notifications.warn(getGame().i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem"));
|
||||
}
|
||||
const a = event.currentTarget;
|
||||
const li = $(a).parents(".effect");
|
||||
|
@ -82,7 +83,9 @@ export class DS4ItemSheet extends ItemSheet<ItemSheet.Options, DS4ItemSheetData>
|
|||
const id = li.data("effectId");
|
||||
const effect = this.item.effects.get(id);
|
||||
if (!effect) {
|
||||
throw new Error(game.i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name }));
|
||||
throw new Error(
|
||||
getGame().i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name }),
|
||||
);
|
||||
}
|
||||
return effect.sheet.render(true);
|
||||
case "delete": {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { DS4 } from "../config";
|
||||
import { getGame } from "../helpers";
|
||||
import { createCheckRoll } from "../rolls/check-factory";
|
||||
import notifications from "../ui/notifications";
|
||||
import { AttackType, ItemType } from "./item-data-source";
|
||||
|
@ -71,14 +72,16 @@ export class DS4Item extends Item {
|
|||
case "spell":
|
||||
return this.rollSpell();
|
||||
default:
|
||||
throw new Error(game.i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type }));
|
||||
throw new Error(
|
||||
getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type }),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected async rollWeapon(): Promise<void> {
|
||||
if (!(this.data.type === "weapon")) {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorWrongItemType", {
|
||||
getGame().i18n.format("DS4.ErrorWrongItemType", {
|
||||
actualType: this.data.type,
|
||||
expectedType: "weapon",
|
||||
id: this.id,
|
||||
|
@ -89,7 +92,7 @@ export class DS4Item extends Item {
|
|||
|
||||
if (!this.data.data.equipped) {
|
||||
return notifications.warn(
|
||||
game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", {
|
||||
getGame().i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", {
|
||||
name: this.name,
|
||||
id: this.id,
|
||||
type: this.data.type,
|
||||
|
@ -98,7 +101,7 @@ export class DS4Item extends Item {
|
|||
}
|
||||
|
||||
if (!this.actor) {
|
||||
throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id }));
|
||||
throw new Error(getGame().i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id }));
|
||||
}
|
||||
|
||||
const ownerDataData = this.actor.data.data;
|
||||
|
@ -107,17 +110,17 @@ export class DS4Item extends Item {
|
|||
const checkTargetNumber = ownerDataData.combatValues[combatValue].total + weaponBonus;
|
||||
|
||||
await createCheckRoll(checkTargetNumber, {
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
rollMode: getGame().settings.get("core", "rollMode"),
|
||||
maximumCoupResult: ownerDataData.rolling.maximumCoupResult,
|
||||
minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult,
|
||||
flavor: game.i18n.format("DS4.ItemWeaponCheckFlavor", { actor: this.actor.name, weapon: this.name }),
|
||||
flavor: getGame().i18n.format("DS4.ItemWeaponCheckFlavor", { actor: this.actor.name, weapon: this.name }),
|
||||
});
|
||||
}
|
||||
|
||||
protected async rollSpell(): Promise<void> {
|
||||
if (!(this.data.type === "spell")) {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorWrongItemType", {
|
||||
getGame().i18n.format("DS4.ErrorWrongItemType", {
|
||||
actualType: this.data.type,
|
||||
expectedType: "spell",
|
||||
id: this.id,
|
||||
|
@ -128,7 +131,7 @@ export class DS4Item extends Item {
|
|||
|
||||
if (!this.data.data.equipped) {
|
||||
return notifications.warn(
|
||||
game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", {
|
||||
getGame().i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", {
|
||||
name: this.name,
|
||||
id: this.id,
|
||||
type: this.data.type,
|
||||
|
@ -137,14 +140,14 @@ export class DS4Item extends Item {
|
|||
}
|
||||
|
||||
if (!this.actor) {
|
||||
throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id }));
|
||||
throw new Error(getGame().i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id }));
|
||||
}
|
||||
|
||||
const ownerDataData = this.actor.data.data;
|
||||
const spellBonus = Number.isNumeric(this.data.data.bonus) ? parseInt(this.data.data.bonus) : undefined;
|
||||
if (spellBonus === undefined) {
|
||||
notifications.info(
|
||||
game.i18n.format("DS4.InfoManuallyEnterSpellBonus", {
|
||||
getGame().i18n.format("DS4.InfoManuallyEnterSpellBonus", {
|
||||
name: this.name,
|
||||
spellBonus: this.data.data.bonus,
|
||||
}),
|
||||
|
@ -154,10 +157,10 @@ export class DS4Item extends Item {
|
|||
const checkTargetNumber = ownerDataData.combatValues[spellType].total + (spellBonus ?? 0);
|
||||
|
||||
await createCheckRoll(checkTargetNumber, {
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
rollMode: getGame().settings.get("core", "rollMode"),
|
||||
maximumCoupResult: ownerDataData.rolling.maximumCoupResult,
|
||||
minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult,
|
||||
flavor: game.i18n.format("DS4.ItemSpellCheckFlavor", { actor: this.actor.name, spell: this.name }),
|
||||
flavor: getGame().i18n.format("DS4.ItemSpellCheckFlavor", { actor: this.actor.name, spell: this.name }),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -166,22 +169,22 @@ export class DS4Item extends Item {
|
|||
const { melee, ranged } = { ...DS4.i18n.attackTypes };
|
||||
const identifier = "attack-type-selection";
|
||||
return Dialog.prompt({
|
||||
title: game.i18n.localize("DS4.DialogAttackTypeSelection"),
|
||||
title: getGame().i18n.localize("DS4.DialogAttackTypeSelection"),
|
||||
content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", {
|
||||
selects: [
|
||||
{
|
||||
label: game.i18n.localize("DS4.AttackType"),
|
||||
label: getGame().i18n.localize("DS4.AttackType"),
|
||||
identifier,
|
||||
options: { melee, ranged },
|
||||
},
|
||||
],
|
||||
}),
|
||||
label: game.i18n.localize("DS4.GenericOkButton"),
|
||||
label: getGame().i18n.localize("DS4.GenericOkButton"),
|
||||
callback: (html) => {
|
||||
const selectedAttackType = html.find(`#${identifier}`).val();
|
||||
if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorUnexpectedAttackType", {
|
||||
getGame().i18n.format("DS4.ErrorUnexpectedAttackType", {
|
||||
actualType: selectedAttackType,
|
||||
expectedTypes: "'melee', 'ranged'",
|
||||
}),
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { DS4Actor } from "../actor/actor";
|
||||
import { getCanvas } from "../helpers";
|
||||
import { getCanvas, getGame } from "../helpers";
|
||||
|
||||
/**
|
||||
* Gets the currently active actor based on how {@link ChatMessage} determines
|
||||
|
@ -18,7 +18,7 @@ export function getActiveActor(): DS4Actor | undefined {
|
|||
return speakerToken.actor ?? undefined;
|
||||
}
|
||||
|
||||
const speakerActor = speaker.actor ? game.actors?.get(speaker.actor) : undefined;
|
||||
const speakerActor = speaker.actor ? getGame().actors?.get(speaker.actor) : undefined;
|
||||
if (speakerActor) {
|
||||
return speakerActor;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import { Check } from "../actor/actor-data-properties";
|
||||
import { DS4 } from "../config";
|
||||
import { getGame } from "../helpers";
|
||||
import notifications from "../ui/notifications";
|
||||
import { getActiveActor } from "./helpers";
|
||||
|
||||
|
@ -15,13 +16,15 @@ import { getActiveActor } from "./helpers";
|
|||
*/
|
||||
export async function createRollCheckMacro(check: Check, slot: string): Promise<void> {
|
||||
const macro = await getOrCreateRollCheckMacro(check);
|
||||
game.user?.assignHotbarMacro(macro ?? null, slot);
|
||||
getGame().user?.assignHotbarMacro(macro ?? null, slot);
|
||||
}
|
||||
|
||||
async function getOrCreateRollCheckMacro(check: Check): Promise<Macro | undefined> {
|
||||
const command = `game.ds4.macros.rollCheck("${check}");`;
|
||||
const command = `getGame().ds4.macros.rollCheck("${check}");`;
|
||||
|
||||
const existingMacro = game.macros?.find((m) => m.name === DS4.i18n.checks[check] && m.data.command === command);
|
||||
const existingMacro = getGame().macros?.find(
|
||||
(m) => m.name === DS4.i18n.checks[check] && m.data.command === command,
|
||||
);
|
||||
if (existingMacro) {
|
||||
return existingMacro;
|
||||
}
|
||||
|
@ -44,7 +47,7 @@ async function getOrCreateRollCheckMacro(check: Check): Promise<Macro | undefine
|
|||
export async function rollCheck(check: Check): Promise<void> {
|
||||
const actor = getActiveActor();
|
||||
if (!actor) {
|
||||
return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro"));
|
||||
return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro"));
|
||||
}
|
||||
|
||||
return actor.rollCheck(check).catch((e) => notifications.error(e, { log: true }));
|
||||
|
|
|
@ -2,15 +2,17 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
import notifications from "../ui/notifications";
|
||||
import { getActiveActor } from "./helpers";
|
||||
|
||||
/**
|
||||
* Executes the roll generic check macro.
|
||||
*/
|
||||
export async function rollGenericCheck(): Promise<void> {
|
||||
const actor = getActiveActor();
|
||||
if (!actor) {
|
||||
return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro"));
|
||||
return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro"));
|
||||
}
|
||||
|
||||
return actor.rollGenericCheck().catch((e) => notifications.error(e, { log: true }));
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
import notifications from "../ui/notifications";
|
||||
import { getActiveActor } from "./helpers";
|
||||
|
||||
|
@ -13,13 +14,13 @@ import { getActiveActor } from "./helpers";
|
|||
*/
|
||||
export async function createRollItemMacro(itemData: foundry.data.ItemData["_source"], slot: string): Promise<void> {
|
||||
const macro = await getOrCreateRollItemMacro(itemData);
|
||||
game.user?.assignHotbarMacro(macro ?? null, slot);
|
||||
getGame().user?.assignHotbarMacro(macro ?? null, slot);
|
||||
}
|
||||
|
||||
async function getOrCreateRollItemMacro(itemData: foundry.data.ItemData["_source"]): Promise<Macro | undefined> {
|
||||
const command = `game.ds4.macros.rollItem("${itemData._id}");`;
|
||||
const command = `getGame().ds4.macros.rollItem("${itemData._id}");`;
|
||||
|
||||
const existingMacro = game.macros?.find((m) => m.name === itemData.name && m.data.command === command);
|
||||
const existingMacro = getGame().macros?.find((m) => m.name === itemData.name && m.data.command === command);
|
||||
if (existingMacro) {
|
||||
return existingMacro;
|
||||
}
|
||||
|
@ -42,13 +43,13 @@ async function getOrCreateRollItemMacro(itemData: foundry.data.ItemData["_source
|
|||
export async function rollItem(itemId: string): Promise<void> {
|
||||
const actor = getActiveActor();
|
||||
if (!actor) {
|
||||
return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro"));
|
||||
return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro"));
|
||||
}
|
||||
|
||||
const item = actor.items?.get(itemId);
|
||||
if (!item) {
|
||||
return notifications.warn(
|
||||
game.i18n.format("DS4.WarningControlledActorDoesNotHaveItem", {
|
||||
getGame().i18n.format("DS4.WarningControlledActorDoesNotHaveItem", {
|
||||
actorName: actor.name,
|
||||
actorId: actor.id,
|
||||
itemId,
|
||||
|
|
|
@ -2,25 +2,25 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "./helpers";
|
||||
import logger from "./logger";
|
||||
import { migrate as migrate001 } from "./migrations/001";
|
||||
// import { migrate as migrate002 } from "./migrations/002";
|
||||
// import { migrate as migrate003 } from "./migrations/003";
|
||||
// import { migrate as migrate004 } from "./migrations/004";
|
||||
|
||||
import notifications from "./ui/notifications";
|
||||
|
||||
async function migrate(): Promise<void> {
|
||||
if (!game.user?.isGM) {
|
||||
if (!getGame().user?.isGM) {
|
||||
return;
|
||||
}
|
||||
|
||||
const oldMigrationVersion = game.settings.get("ds4", "systemMigrationVersion");
|
||||
const oldMigrationVersion = getGame().settings.get("ds4", "systemMigrationVersion");
|
||||
|
||||
const targetMigrationVersion = migrations.length;
|
||||
|
||||
if (isFirstWorldStart(oldMigrationVersion)) {
|
||||
game.settings.set("ds4", "systemMigrationVersion", targetMigrationVersion);
|
||||
getGame().settings.set("ds4", "systemMigrationVersion", targetMigrationVersion);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ async function migrate(): Promise<void> {
|
|||
}
|
||||
|
||||
async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion: number): Promise<void> {
|
||||
if (!game.user?.isGM) {
|
||||
if (!getGame().user?.isGM) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion
|
|||
|
||||
if (migrationsToExecute.length > 0) {
|
||||
notifications.info(
|
||||
game.i18n.format("DS4.InfoSystemUpdateStart", {
|
||||
getGame().i18n.format("DS4.InfoSystemUpdateStart", {
|
||||
currentVersion: oldMigrationVersion,
|
||||
targetVersion: targetMigrationVersion,
|
||||
}),
|
||||
|
@ -48,10 +48,10 @@ async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion
|
|||
logger.info("executing migration script ", currentMigrationVersion);
|
||||
try {
|
||||
await migration();
|
||||
game.settings.set("ds4", "systemMigrationVersion", currentMigrationVersion);
|
||||
getGame().settings.set("ds4", "systemMigrationVersion", currentMigrationVersion);
|
||||
} catch (err) {
|
||||
notifications.error(
|
||||
game.i18n.format("DS4.ErrorDuringMigration", {
|
||||
getGame().i18n.format("DS4.ErrorDuringMigration", {
|
||||
currentVersion: oldMigrationVersion,
|
||||
targetVersion: targetMigrationVersion,
|
||||
migrationVersion: currentMigrationVersion,
|
||||
|
@ -65,7 +65,7 @@ async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion
|
|||
}
|
||||
|
||||
notifications.info(
|
||||
game.i18n.format("DS4.InfoSystemUpdateCompleted", {
|
||||
getGame().i18n.format("DS4.InfoSystemUpdateCompleted", {
|
||||
currentVersion: oldMigrationVersion,
|
||||
targetVersion: targetMigrationVersion,
|
||||
}),
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
import logger from "../logger";
|
||||
|
||||
export async function migrate(): Promise<void> {
|
||||
for (const a of game.actors?.contents ?? []) {
|
||||
for (const a of getGame().actors?.contents ?? []) {
|
||||
const updateData = getActorUpdateData();
|
||||
logger.info(`Migrating actor ${a.name}`);
|
||||
await a.update(updateData);
|
||||
|
|
|
@ -12,7 +12,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateItems() {
|
||||
// for (const item of game.items?.contents ?? []) {
|
||||
// for (const item of getGame().items?.contents ?? []) {
|
||||
// try {
|
||||
// const updateData = getItemUpdateData(item.toObject());
|
||||
// if (updateData) {
|
||||
|
@ -32,7 +32,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateActors() {
|
||||
// for (const actor of game.actors?.contents ?? []) {
|
||||
// for (const actor of getGame().actors?.contents ?? []) {
|
||||
// try {
|
||||
// const updateData = getActorUpdateData(actor.toObject());
|
||||
// if (updateData) {
|
||||
|
@ -61,7 +61,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateScenes() {
|
||||
// for (const scene of game.scenes?.contents ?? []) {
|
||||
// for (const scene of getGame().scenes?.contents ?? []) {
|
||||
// try {
|
||||
// const updateData = getSceneUpdateData(scene.toObject());
|
||||
// if (updateData) {
|
||||
|
@ -81,7 +81,7 @@ import logger from "../logger";
|
|||
// const tokens = scene.tokens.map((tokenData: foundry.data.TokenData["_source"]) => {
|
||||
// if (!tokenData.actorId || tokenData.actorLink) {
|
||||
// tokenData.actorData = {};
|
||||
// } else if (!game.actors?.has(tokenData.actorId)) {
|
||||
// } else if (!getGame().actors?.has(tokenData.actorId)) {
|
||||
// tokenData.actorId = null;
|
||||
// tokenData.actorData = {};
|
||||
// } else if (!tokenData.actorLink) {
|
||||
|
@ -111,7 +111,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateCompendiums() {
|
||||
// for (const compendium of game.packs ?? []) {
|
||||
// for (const compendium of getGame().packs ?? []) {
|
||||
// if (compendium.metadata.package !== "world") continue;
|
||||
// if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue;
|
||||
// await migrateCompendium(compendium);
|
||||
|
|
|
@ -12,7 +12,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateItems() {
|
||||
// for (const item of game.items?.entities ?? []) {
|
||||
// for (const item of getGame().items?.entities ?? []) {
|
||||
// try {
|
||||
// const updateData = getItemUpdateData(item._data);
|
||||
// if (updateData) {
|
||||
|
@ -36,7 +36,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateActors() {
|
||||
// for (const actor of game.actors?.entities ?? []) {
|
||||
// for (const actor of getGame().actors?.entities ?? []) {
|
||||
// try {
|
||||
// const updateData = getActorUpdateData(actor._data);
|
||||
// if (updateData) {
|
||||
|
@ -65,7 +65,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateScenes() {
|
||||
// for (const scene of game.scenes?.entities ?? []) {
|
||||
// for (const scene of getGame().scenes?.entities ?? []) {
|
||||
// try {
|
||||
// const updateData = getSceneUpdateData(scene._data);
|
||||
// if (updateData) {
|
||||
|
@ -104,7 +104,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateCompendiums() {
|
||||
// for (const compendium of game.packs ?? []) {
|
||||
// for (const compendium of getGame().packs ?? []) {
|
||||
// if (compendium.metadata.package !== "world") continue;
|
||||
// if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue;
|
||||
// await migrateCompendium(compendium);
|
||||
|
|
|
@ -13,7 +13,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateItems() {
|
||||
// for (const item of game.items?.entities ?? []) {
|
||||
// for (const item of getGame().items?.entities ?? []) {
|
||||
// try {
|
||||
// const updateData = getItemUpdateData(item._data);
|
||||
// if (updateData) {
|
||||
|
@ -40,7 +40,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateActors() {
|
||||
// for (const actor of game.actors?.entities ?? []) {
|
||||
// for (const actor of getGame().actors?.entities ?? []) {
|
||||
// try {
|
||||
// const updateData = getActorUpdateData(actor._data);
|
||||
// if (updateData) {
|
||||
|
@ -76,7 +76,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateScenes() {
|
||||
// for (const scene of game.scenes?.entities ?? []) {
|
||||
// for (const scene of getGame().scenes?.entities ?? []) {
|
||||
// try {
|
||||
// const updateData = getSceneUpdateData(scene._data);
|
||||
// if (updateData) {
|
||||
|
@ -115,7 +115,7 @@ import logger from "../logger";
|
|||
// }
|
||||
|
||||
// async function migrateCompendiums() {
|
||||
// for (const compendium of game.packs ?? []) {
|
||||
// for (const compendium of getGame().packs ?? []) {
|
||||
// if (compendium.metadata.package !== "world") continue;
|
||||
// if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue;
|
||||
// await migrateCompendium(compendium);
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
|
||||
export default function evaluateCheck(
|
||||
dice: number[],
|
||||
checkTargetNumber: number,
|
||||
|
@ -39,7 +41,7 @@ function assignSubChecksToDice(
|
|||
const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber);
|
||||
|
||||
if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) {
|
||||
throw new Error(game.i18n.localize("DS4.ErrorInvalidNumberOfDice"));
|
||||
throw new Error(getGame().i18n.localize("DS4.ErrorInvalidNumberOfDice"));
|
||||
}
|
||||
|
||||
const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1);
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
|
||||
/**
|
||||
* Provides default values for all arguments the `CheckFactory` expects.
|
||||
*/
|
||||
|
@ -86,7 +88,7 @@ export async function createCheckRoll(
|
|||
const newOptions: Partial<DS4CheckFactoryOptions> = {
|
||||
maximumCoupResult: gmModifierData.maximumCoupResult ?? options.maximumCoupResult,
|
||||
minimumFumbleResult: gmModifierData.minimumFumbleResult ?? options.minimumFumbleResult,
|
||||
useSlayingDice: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"),
|
||||
useSlayingDice: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"),
|
||||
rollMode: gmModifierData.rollMode ?? options.rollMode,
|
||||
flavor: options.flavor,
|
||||
};
|
||||
|
@ -114,13 +116,13 @@ async function askGmModifier(
|
|||
{ template, title }: { template?: string; title?: string } = {},
|
||||
): Promise<Partial<IntermediateGmModifierData>> {
|
||||
const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs";
|
||||
const usedTitle = title ?? game.i18n.localize("DS4.DialogRollOptionsDefaultTitle");
|
||||
const usedTitle = title ?? getGame().i18n.localize("DS4.DialogRollOptionsDefaultTitle");
|
||||
const templateData = {
|
||||
title: usedTitle,
|
||||
checkTargetNumber: checkTargetNumber,
|
||||
maximumCoupResult: options.maximumCoupResult ?? defaultCheckOptions.maximumCoupResult,
|
||||
minimumFumbleResult: options.minimumFumbleResult ?? defaultCheckOptions.minimumFumbleResult,
|
||||
rollMode: options.rollMode ?? game.settings.get("core", "rollMode"),
|
||||
rollMode: options.rollMode ?? getGame().settings.get("core", "rollMode"),
|
||||
rollModes: CONFIG.Dice.rollModes,
|
||||
};
|
||||
const renderedHtml = await renderTemplate(usedTemplate, templateData);
|
||||
|
@ -132,11 +134,11 @@ async function askGmModifier(
|
|||
buttons: {
|
||||
ok: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: game.i18n.localize("DS4.GenericOkButton"),
|
||||
label: getGame().i18n.localize("DS4.GenericOkButton"),
|
||||
callback: (html) => {
|
||||
if (!("jquery" in html)) {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorUnexpectedHtmlType", {
|
||||
getGame().i18n.format("DS4.ErrorUnexpectedHtmlType", {
|
||||
exType: "JQuery",
|
||||
realType: "HTMLElement",
|
||||
}),
|
||||
|
@ -145,7 +147,7 @@ async function askGmModifier(
|
|||
const innerForm = html[0].querySelector("form");
|
||||
if (!innerForm) {
|
||||
throw new Error(
|
||||
game.i18n.format("DS4.ErrorCouldNotFindHtmlElement", { htmlElement: "form" }),
|
||||
getGame().i18n.format("DS4.ErrorCouldNotFindHtmlElement", { htmlElement: "form" }),
|
||||
);
|
||||
}
|
||||
resolve(innerForm);
|
||||
|
@ -154,7 +156,7 @@ async function askGmModifier(
|
|||
},
|
||||
cancel: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: game.i18n.localize("DS4.GenericCancelButton"),
|
||||
label: getGame().i18n.localize("DS4.GenericCancelButton"),
|
||||
},
|
||||
},
|
||||
default: "ok",
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
import evaluateCheck, { getRequiredNumberOfDice } from "./check-evaluation";
|
||||
|
||||
/**
|
||||
|
@ -50,7 +51,7 @@ export class DS4Check extends DiceTerm {
|
|||
? parseInt(parseMinimumFumbleResult)
|
||||
: DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT;
|
||||
if (this.minimumFumbleResult <= this.maximumCoupResult)
|
||||
throw new SyntaxError(game.i18n.localize("DS4.ErrorDiceCoupFumbleOverlap"));
|
||||
throw new SyntaxError(getGame().i18n.localize("DS4.ErrorDiceCoupFumbleOverlap"));
|
||||
}
|
||||
|
||||
// Parse and store no fumble
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
import { DS4Check } from "./check";
|
||||
|
||||
export class DS4Roll<D extends Record<string, unknown> = Record<string, unknown>> extends Roll<D> {
|
||||
|
@ -15,7 +16,7 @@ export class DS4Roll<D extends Record<string, unknown> = Record<string, unknown>
|
|||
async render(chatOptions: Parameters<Roll["render"]>[0] = {}): Promise<string> {
|
||||
chatOptions = foundry.utils.mergeObject(
|
||||
{
|
||||
user: game.user?.id,
|
||||
user: getGame().user?.id,
|
||||
flavor: null,
|
||||
template: DS4Roll.CHAT_TEMPLATE,
|
||||
blind: false,
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "../helpers";
|
||||
import { DS4Check } from "./check";
|
||||
|
||||
export default function registerSlayingDiceModifier(): void {
|
||||
|
@ -26,6 +27,6 @@ function slay(this: PoolTerm, modifier: string): void {
|
|||
this.results.push({ result: additionalRoll.total ?? 0, active: true });
|
||||
this.terms.push(formula);
|
||||
}
|
||||
if (checked > 1000) throw new Error(game.i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded"));
|
||||
if (checked > 1000) throw new Error(getGame().i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,13 @@
|
|||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import { getGame } from "./helpers";
|
||||
|
||||
export function registerSystemSettings(): void {
|
||||
/**
|
||||
* Track the migrations version of the latest migration that has been applied
|
||||
*/
|
||||
game.settings.register("ds4", "systemMigrationVersion", {
|
||||
getGame().settings.register("ds4", "systemMigrationVersion", {
|
||||
name: "System Migration Version",
|
||||
scope: "world",
|
||||
config: false,
|
||||
|
@ -14,7 +16,7 @@ export function registerSystemSettings(): void {
|
|||
default: -1,
|
||||
});
|
||||
|
||||
game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", {
|
||||
getGame().settings.register("ds4", "useSlayingDiceForAutomatedChecks", {
|
||||
name: "DS4.SettingUseSlayingDiceForAutomatedChecksName",
|
||||
hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint",
|
||||
scope: "world",
|
||||
|
@ -23,7 +25,7 @@ export function registerSystemSettings(): void {
|
|||
default: false,
|
||||
});
|
||||
|
||||
game.settings.register("ds4", "showSlayerPoints", {
|
||||
getGame().settings.register("ds4", "showSlayerPoints", {
|
||||
name: "DS4.SettingShowSlayerPointsName",
|
||||
hint: "DS4.SettingShowSlayerPointsHint",
|
||||
scope: "world",
|
||||
|
@ -41,8 +43,8 @@ export interface DS4Settings {
|
|||
|
||||
export function getDS4Settings(): DS4Settings {
|
||||
return {
|
||||
systemMigrationVersion: game.settings.get("ds4", "systemMigrationVersion"),
|
||||
useSlayingDiceForAutomatedChecks: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"),
|
||||
showSlayerPoints: game.settings.get("ds4", "showSlayerPoints"),
|
||||
systemMigrationVersion: getGame().settings.get("ds4", "systemMigrationVersion"),
|
||||
useSlayingDiceForAutomatedChecks: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"),
|
||||
showSlayerPoints: getGame().settings.get("ds4", "showSlayerPoints"),
|
||||
};
|
||||
}
|
||||
|
|
16
yarn.lock
16
yarn.lock
|
@ -673,7 +673,7 @@ __metadata:
|
|||
|
||||
"@league-of-foundry-developers/foundry-vtt-types@https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#foundry-0.8.x":
|
||||
version: 0.7.9-6
|
||||
resolution: "@league-of-foundry-developers/foundry-vtt-types@https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#commit=91fcf23da640665cf9b0a02bf83f87958b1dfef0"
|
||||
resolution: "@league-of-foundry-developers/foundry-vtt-types@https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#commit=22688f7be9f9c2605c3376e365e12b6084d59b85"
|
||||
dependencies:
|
||||
"@types/jquery": ~3.5.5
|
||||
"@types/simple-peer": ~9.11.0
|
||||
|
@ -683,7 +683,7 @@ __metadata:
|
|||
socket.io-client: 4.1.2
|
||||
tinymce: 5.8.1
|
||||
typescript: ^4.1.6
|
||||
checksum: 513c8c8eaeb585641e78dd72f983e07a06d0babb24a8ed4de83479afdc9f9d85d2b255bc6168ec2d17d9368bcff3429b910d310b5f63358e74c9f49a84da958e
|
||||
checksum: bba8fb7081e7cd1c43a5af841820232629a9034e7075d733558b261b5d488fd166dcf9501158cd49e29a7a2e9b7b4ebf6f4aef76b1d740a253455a7432308a77
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1279,11 +1279,11 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"@types/jquery@npm:~3.5.5":
|
||||
version: 3.5.5
|
||||
resolution: "@types/jquery@npm:3.5.5"
|
||||
version: 3.5.6
|
||||
resolution: "@types/jquery@npm:3.5.6"
|
||||
dependencies:
|
||||
"@types/sizzle": "*"
|
||||
checksum: 9e3c34451577c6916ac9de8a26fd8bce2831cb5861116514cba4a984189067635a3e084039308324d8e20bfa5f2e1ce7725a509110e5e05487b91f9369b1ae43
|
||||
checksum: b59c43f42ad94cb428c8708e1c0e9589a4e2cf8ca38a34528630081de2b715f0760d02e73171934896573a6e817c45c9ded725ae13e9f8d33509f67ae4f1bd01
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -1325,11 +1325,11 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"@types/simple-peer@npm:~9.11.0":
|
||||
version: 9.11.0
|
||||
resolution: "@types/simple-peer@npm:9.11.0"
|
||||
version: 9.11.1
|
||||
resolution: "@types/simple-peer@npm:9.11.1"
|
||||
dependencies:
|
||||
"@types/node": "*"
|
||||
checksum: ab05e2373fe48faa59cc0d7795bfdea3c7e7a93f7af2683cfdd2a311035ce4dd2a948c950886f48d662db503e8af2d930b9d51b53c0eef8c90ba86287864d4f7
|
||||
checksum: 15738eb9e95e2fa98b012f519ed01dbd55219ff52ed531a95b6cb7861fc1a000930db7e165de8f414a3b1998813a7c6c26becaa1eb21918f8e65e7e03395cfe5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
Loading…
Reference in a new issue