@kbve/laser 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +11 -0
  2. package/package.json +43 -0
  3. package/src/index.d.ts +17 -0
  4. package/src/index.js +34 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/animations/TypewriterComponent.d.ts +8 -0
  7. package/src/lib/animations/TypewriterComponent.js +53 -0
  8. package/src/lib/animations/TypewriterComponent.js.map +1 -0
  9. package/src/lib/eventhandler.d.ts +31 -0
  10. package/src/lib/eventhandler.js +45 -0
  11. package/src/lib/eventhandler.js.map +1 -0
  12. package/src/lib/icon/CollapseIcon.d.ts +4 -0
  13. package/src/lib/icon/CollapseIcon.js +10 -0
  14. package/src/lib/icon/CollapseIcon.js.map +1 -0
  15. package/src/lib/icon/ExpandIcon.d.ts +4 -0
  16. package/src/lib/icon/ExpandIcon.js +10 -0
  17. package/src/lib/icon/ExpandIcon.js.map +1 -0
  18. package/src/lib/laser.d.ts +1 -0
  19. package/src/lib/laser.js +8 -0
  20. package/src/lib/laser.js.map +1 -0
  21. package/src/lib/localdb.d.ts +55 -0
  22. package/src/lib/localdb.js +591 -0
  23. package/src/lib/localdb.js.map +1 -0
  24. package/src/lib/minigame/dice/MinigameDice.d.ts +4 -0
  25. package/src/lib/minigame/dice/MinigameDice.js +85 -0
  26. package/src/lib/minigame/dice/MinigameDice.js.map +1 -0
  27. package/src/lib/phaser/monster/bird.d.ts +7 -0
  28. package/src/lib/phaser/monster/bird.js +44 -0
  29. package/src/lib/phaser/monster/bird.js.map +1 -0
  30. package/src/lib/phaser/npc/chatbubble.d.ts +10 -0
  31. package/src/lib/phaser/npc/chatbubble.js +78 -0
  32. package/src/lib/phaser/npc/chatbubble.js.map +1 -0
  33. package/src/lib/phaser/npc/npcdatabase.d.ts +56 -0
  34. package/src/lib/phaser/npc/npcdatabase.js +497 -0
  35. package/src/lib/phaser/npc/npcdatabase.js.map +1 -0
  36. package/src/lib/phaser/npc/npchandler.d.ts +20 -0
  37. package/src/lib/phaser/npc/npchandler.js +114 -0
  38. package/src/lib/phaser/npc/npchandler.js.map +1 -0
  39. package/src/lib/phaser/npc/tooltipmenu.d.ts +17 -0
  40. package/src/lib/phaser/npc/tooltipmenu.js +68 -0
  41. package/src/lib/phaser/npc/tooltipmenu.js.map +1 -0
  42. package/src/lib/phaser/player/playercontroller.d.ts +24 -0
  43. package/src/lib/phaser/player/playercontroller.js +219 -0
  44. package/src/lib/phaser/player/playercontroller.js.map +1 -0
  45. package/src/lib/quadtree.d.ts +37 -0
  46. package/src/lib/quadtree.js +123 -0
  47. package/src/lib/quadtree.js.map +1 -0
  48. package/src/lib/utils/debug.d.ts +8 -0
  49. package/src/lib/utils/debug.js +46 -0
  50. package/src/lib/utils/debug.js.map +1 -0
  51. package/src/lib/utils/ulid.d.ts +1 -0
  52. package/src/lib/utils/ulid.js +38 -0
  53. package/src/lib/utils/ulid.js.map +1 -0
  54. package/src/types.d.ts +355 -0
  55. package/src/types.js +9 -0
  56. package/src/types.js.map +1 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // MinigameDice.tsx
6
+ const react_1 = require("react");
7
+ const fiber_1 = require("@react-three/fiber");
8
+ const react_2 = require("@nanostores/react");
9
+ const eventhandler_1 = require("../../eventhandler");
10
+ const localdb_1 = require("../../localdb");
11
+ const types_1 = require("../../../types");
12
+ const THREE = tslib_1.__importStar(require("three"));
13
+ const diceOrientations = [
14
+ new THREE.Euler(-Math.PI / 2, -Math.PI / 2, -Math.PI / 2), // 1
15
+ new THREE.Euler(0, Math.PI / 2, 0), // 2
16
+ new THREE.Euler(0, -Math.PI / 2, -Math.PI / 2), // 3
17
+ new THREE.Euler(Math.PI / 2, Math.PI, Math.PI), // 4
18
+ new THREE.Euler(0, 0, -Math.PI / 2), // 5
19
+ new THREE.Euler(Math.PI, 0, 0) // 6
20
+ ];
21
+ const PixelatedDice = ({ diceValues, isRolling, textures }) => {
22
+ const diceRefs = (0, react_1.useRef)([]);
23
+ const materialsRef = (0, react_1.useRef)([]);
24
+ (0, react_1.useEffect)(() => {
25
+ const loader = new THREE.TextureLoader();
26
+ //const yellowTint = new THREE.Color(0xffff00);
27
+ const yellowTint = new THREE.Color(0xFFD700);
28
+ materialsRef.current = [
29
+ new THREE.MeshStandardMaterial({ map: loader.load(textures.side1), color: yellowTint }),
30
+ new THREE.MeshStandardMaterial({ map: loader.load(textures.side2), color: yellowTint }),
31
+ new THREE.MeshStandardMaterial({ map: loader.load(textures.side3), color: yellowTint }),
32
+ new THREE.MeshStandardMaterial({ map: loader.load(textures.side4), color: yellowTint }),
33
+ new THREE.MeshStandardMaterial({ map: loader.load(textures.side5), color: yellowTint }),
34
+ new THREE.MeshStandardMaterial({ map: loader.load(textures.side6), color: yellowTint }),
35
+ ];
36
+ diceRefs.current.forEach((dice) => {
37
+ if (dice) {
38
+ dice.material = materialsRef.current;
39
+ }
40
+ });
41
+ }, [textures]);
42
+ (0, fiber_1.useFrame)(() => {
43
+ diceRefs.current.forEach((dice, index) => {
44
+ if (dice) {
45
+ if (isRolling) {
46
+ dice.rotation.x += 0.2;
47
+ dice.rotation.y += 0.2;
48
+ }
49
+ else {
50
+ const targetRotation = diceOrientations[diceValues[index] - 1];
51
+ dice.rotation.x = THREE.MathUtils.lerp(dice.rotation.x, targetRotation.x, 0.1);
52
+ dice.rotation.y = THREE.MathUtils.lerp(dice.rotation.y, targetRotation.y, 0.1);
53
+ dice.rotation.z = THREE.MathUtils.lerp(dice.rotation.z, targetRotation.z, 0.1);
54
+ }
55
+ }
56
+ });
57
+ });
58
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: diceValues.map((value, index) => ((0, jsx_runtime_1.jsxs)("mesh", { ref: el => diceRefs.current[index] = el, position: [index * 2 - (diceValues.length - 1), 0, 0], children: [(0, jsx_runtime_1.jsx)("boxGeometry", { args: [1, 1, 1] }), materialsRef.current.length === 6 && materialsRef.current.map((material, i) => ((0, jsx_runtime_1.jsx)("meshStandardMaterial", Object.assign({ attach: `material-${i}` }, material), i)))] }, index))) }));
59
+ };
60
+ const MinigameDice = ({ styleClass, textures, diceCount }) => {
61
+ const state = (0, react_2.useStore)(localdb_1.minigameState);
62
+ (0, react_1.useEffect)(() => {
63
+ (0, localdb_1.setGameMode)('Dice');
64
+ (0, localdb_1.setTextures)(textures);
65
+ (0, localdb_1.setAction)({
66
+ type: 'ROLL_DICE',
67
+ diceValues: Array(diceCount).fill(1),
68
+ isRolling: false,
69
+ });
70
+ }, [textures, diceCount]);
71
+ const rollDice = () => {
72
+ (0, localdb_1.setRollingStatus)(true);
73
+ setTimeout(() => {
74
+ const newValues = Array.from({ length: diceCount }, () => Math.floor(Math.random() * 6) + 1);
75
+ (0, localdb_1.updateDiceValues)(newValues);
76
+ (0, localdb_1.setRollingStatus)(false);
77
+ // Emit the roll result
78
+ const rollResult = { diceValues: newValues };
79
+ eventhandler_1.EventEmitter.emit('diceRollResult', rollResult);
80
+ }, 2000); // Duration matches the animation
81
+ };
82
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `flex flex-col items-center justify-center p-4 ${styleClass}`, children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-2xl font-bold mb-4", children: "Dice Roller" }), (0, jsx_runtime_1.jsxs)(fiber_1.Canvas, { className: "w-full h-full", camera: { position: [0, 0, 5] }, children: [(0, jsx_runtime_1.jsx)("ambientLight", { intensity: 2.5 }), (0, jsx_runtime_1.jsx)("pointLight", { position: [10, 10, 10] }), (0, types_1.isDiceAction)(state.action) && ((0, jsx_runtime_1.jsx)(PixelatedDice, { diceValues: state.action.diceValues, isRolling: state.action.isRolling, textures: state.textures }))] }), (0, types_1.isDiceAction)(state.action) && ((0, jsx_runtime_1.jsx)("button", { onClick: rollDice, className: `mt-4 p-2 border border-yellow-300 rounded text-yellow-400 hover:scale-110 ${state.action.isRolling ? 'opacity-50' : ''}`, disabled: state.action.isRolling, children: "Roll Dice" }))] }));
83
+ };
84
+ exports.default = MinigameDice;
85
+ //# sourceMappingURL=MinigameDice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinigameDice.js","sourceRoot":"","sources":["../../../../../../../packages/laser/src/lib/minigame/dice/MinigameDice.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Scene } from 'phaser';
2
+ export declare function getBirdNum(charId: string): number;
3
+ export declare function isBird(charId: string): boolean;
4
+ export declare function createCroppedSprites(scene: Scene, x: number, y: number, width: number, height: number): Phaser.GameObjects.Sprite[];
5
+ export declare function createBirdSprites(scene: Scene): Phaser.GameObjects.Sprite[];
6
+ export declare function createShadowSprites(scene: Scene): Phaser.GameObjects.Sprite[];
7
+ export declare function createBirdAnimation(scene: Scene): void;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBirdAnimation = exports.createShadowSprites = exports.createBirdSprites = exports.createCroppedSprites = exports.isBird = exports.getBirdNum = void 0;
4
+ function getBirdNum(charId) {
5
+ return +charId[charId.length - 1];
6
+ }
7
+ exports.getBirdNum = getBirdNum;
8
+ function isBird(charId) {
9
+ return charId.startsWith('monster_bird_') && !charId.startsWith('monster_bird_shadow');
10
+ }
11
+ exports.isBird = isBird;
12
+ function createCroppedSprites(scene, x, y, width, height) {
13
+ const croppedSprites = [];
14
+ for (let i = 0; i < 10; i++) {
15
+ const monsterBirdSprite = scene.add.sprite(0, 0, "monster_bird");
16
+ monsterBirdSprite.setCrop(x, y, width, height);
17
+ monsterBirdSprite.scale = 3;
18
+ croppedSprites.push(monsterBirdSprite);
19
+ }
20
+ return croppedSprites;
21
+ }
22
+ exports.createCroppedSprites = createCroppedSprites;
23
+ function createBirdSprites(scene) {
24
+ return createCroppedSprites(scene, 0, 0, 61, 47);
25
+ }
26
+ exports.createBirdSprites = createBirdSprites;
27
+ function createShadowSprites(scene) {
28
+ return createCroppedSprites(scene, 22, 47, 16, 10);
29
+ }
30
+ exports.createShadowSprites = createShadowSprites;
31
+ function createBirdAnimation(scene) {
32
+ scene.anims.create({
33
+ key: "bird",
34
+ frames: scene.anims.generateFrameNumbers("monster_bird", {
35
+ start: 0,
36
+ end: 2,
37
+ }),
38
+ frameRate: 10,
39
+ repeat: -1,
40
+ yoyo: true,
41
+ });
42
+ }
43
+ exports.createBirdAnimation = createBirdAnimation;
44
+ //# sourceMappingURL=bird.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bird.js","sourceRoot":"","sources":["../../../../../../../packages/laser/src/lib/phaser/monster/bird.ts"],"names":[],"mappings":";;;AAEA,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAFD,gCAEC;AAED,SAAgB,MAAM,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACzF,CAAC;AAFD,wBAEC;AAED,SAAgB,oBAAoB,CAAC,KAAY,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;IACpG,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QACjE,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5B,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AATD,oDASC;AAED,SAAgB,iBAAiB,CAAC,KAAY;IAC5C,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAFD,8CAEC;AAED,SAAgB,mBAAmB,CAAC,KAAY;IAC9C,OAAO,oBAAoB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAFD,kDAEC;AAED,SAAgB,mBAAmB,CAAC,KAAY;IAC9C,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,cAAc,EAAE;YACvD,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;SACP,CAAC;QACF,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,CAAC,CAAC;QACV,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAXD,kDAWC"}
@@ -0,0 +1,10 @@
1
+ import { Scene } from 'phaser';
2
+ declare class ExtendedSprite extends Phaser.GameObjects.Sprite {
3
+ textBubble?: Phaser.GameObjects.Container;
4
+ messageBubble?: Phaser.GameObjects.Container;
5
+ }
6
+ export declare function createMessageBubble(scene: Scene, sprite: ExtendedSprite, text: string | string[], duration: number): Phaser.GameObjects.Container;
7
+ export declare function createTextBubble(scene: Scene, sprite: ExtendedSprite, text: string | string[]): Phaser.GameObjects.Container;
8
+ export declare function updateTextBubblePosition(sprite: ExtendedSprite): void;
9
+ export declare function updateMessageBubblePosition(sprite: ExtendedSprite): void;
10
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateMessageBubblePosition = exports.updateTextBubblePosition = exports.createTextBubble = exports.createMessageBubble = void 0;
4
+ class ExtendedSprite extends Phaser.GameObjects.Sprite {
5
+ }
6
+ function createMessageBubble(scene, sprite, text, duration) {
7
+ const bubbleWidth = 200;
8
+ const bubbleHeight = 60;
9
+ const bubblePadding = 10;
10
+ const bubble = scene.add.graphics();
11
+ bubble.fillStyle(0xffffff, 1);
12
+ bubble.fillRoundedRect(0, 0, bubbleWidth, bubbleHeight, 16);
13
+ bubble.setDepth(99);
14
+ const content = scene.add.text(100, 30, text, {
15
+ fontFamily: 'Arial',
16
+ fontSize: 16,
17
+ color: '#000000',
18
+ });
19
+ content.setOrigin(0.5);
20
+ content.setWordWrapWidth(bubbleWidth - bubblePadding * 2);
21
+ content.setDepth(100);
22
+ const container = scene.add.container(0, 0, [bubble, content]);
23
+ container.setDepth(100);
24
+ sprite.messageBubble = container;
25
+ updateMessageBubblePosition(sprite);
26
+ scene.time.addEvent({
27
+ delay: duration,
28
+ callback: () => {
29
+ container.destroy();
30
+ if (sprite.messageBubble === container) {
31
+ sprite.messageBubble = undefined;
32
+ }
33
+ },
34
+ callbackScope: scene
35
+ });
36
+ return container;
37
+ }
38
+ exports.createMessageBubble = createMessageBubble;
39
+ function createTextBubble(scene, sprite, text) {
40
+ const bubbleWidth = 200;
41
+ const bubbleHeight = 60;
42
+ const bubblePadding = 10;
43
+ const bubble = scene.add.graphics();
44
+ bubble.fillStyle(0xffffff, 1);
45
+ bubble.fillRoundedRect(0, 0, bubbleWidth, bubbleHeight, 16);
46
+ bubble.setDepth(99);
47
+ const content = scene.add.text(100, 30, text, {
48
+ fontFamily: 'Arial',
49
+ fontSize: 16,
50
+ color: '#000000',
51
+ });
52
+ content.setOrigin(0.5);
53
+ content.setWordWrapWidth(bubbleWidth - bubblePadding * 2);
54
+ content.setDepth(100);
55
+ const container = scene.add.container(0, 0, [bubble, content]);
56
+ container.setDepth(100);
57
+ sprite.textBubble = container;
58
+ updateTextBubblePosition(sprite);
59
+ return container;
60
+ }
61
+ exports.createTextBubble = createTextBubble;
62
+ function updateTextBubblePosition(sprite) {
63
+ const container = sprite.textBubble;
64
+ if (container) {
65
+ container.x = sprite.x;
66
+ container.y = sprite.y - sprite.height - container.height / 2;
67
+ }
68
+ }
69
+ exports.updateTextBubblePosition = updateTextBubblePosition;
70
+ function updateMessageBubblePosition(sprite) {
71
+ const container = sprite.messageBubble;
72
+ if (container) {
73
+ container.x = sprite.x;
74
+ container.y = sprite.y - sprite.height - container.height / 2;
75
+ }
76
+ }
77
+ exports.updateMessageBubblePosition = updateMessageBubblePosition;
78
+ //# sourceMappingURL=chatbubble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbubble.js","sourceRoot":"","sources":["../../../../../../../packages/laser/src/lib/phaser/npc/chatbubble.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import Dexie from 'dexie';
2
+ import { WritableAtom } from 'nanostores';
3
+ import { INPCData, ISprite, IAvatar, IDialogueObject } from '../../../types';
4
+ import { Scene } from 'phaser';
5
+ interface ExtendedScene extends Scene {
6
+ gridEngine: any;
7
+ }
8
+ declare class NPCDatabase extends Dexie {
9
+ npcs: Dexie.Table<INPCData, string>;
10
+ sprites: Dexie.Table<ISprite, string>;
11
+ avatars: Dexie.Table<IAvatar, string>;
12
+ dialogues: Dexie.Table<IDialogueObject, string>;
13
+ constructor();
14
+ addNPC(npcData: INPCData): Promise<void>;
15
+ getNPC(id: string): Promise<INPCData | undefined>;
16
+ getNPCByName(name: string): Promise<INPCData | undefined>;
17
+ getAllNPCs(): Promise<INPCData[]>;
18
+ exportNPCs(): Promise<string>;
19
+ importNPCs(jsonData: string): Promise<void>;
20
+ fetchNPCData(url: string): Promise<INPCData | undefined>;
21
+ addSprite(sprite: ISprite): Promise<void>;
22
+ getSprite(id: string): Promise<ISprite | undefined>;
23
+ getAllSprites(): Promise<ISprite[]>;
24
+ addAvatar(avatar: IAvatar): Promise<void>;
25
+ getAvatar(id: string): Promise<IAvatar | undefined>;
26
+ getAllAvatars(): Promise<IAvatar[]>;
27
+ urlToBlob(url: string): Promise<Blob | undefined>;
28
+ addNewSprite(url: string, spriteDetails: Omit<ISprite, 'spriteData'>): Promise<string | undefined>;
29
+ addNewNPC(npcDetails: Omit<INPCData, 'spriteImageId' | 'avatarImageId'>, spriteImageId: string, avatarImageId: string): Promise<void>;
30
+ addNewAvatar(url: string, avatarDetails: Omit<IAvatar, 'avatarData'>): Promise<string | undefined>;
31
+ fetchAvatars(url: string): Promise<void>;
32
+ fetchSprites(url: string): Promise<void>;
33
+ fetchNPCs(url: string): Promise<void>;
34
+ initializeDatabase(baseURL?: string): Promise<void>;
35
+ loadNPC(scene: ExtendedScene, npcName: string, x?: number, y?: number): Promise<void>;
36
+ loadCharacter(scene: ExtendedScene, npcId: string, x?: number, y?: number): Promise<void>;
37
+ addNPCToScene(scene: ExtendedScene, npcData: INPCData, x?: number, y?: number): void;
38
+ addDialogue(dialogue: IDialogueObject): Promise<void>;
39
+ getDialogue(id: string): Promise<IDialogueObject | undefined>;
40
+ getAllDialogues(): Promise<IDialogueObject[]>;
41
+ getDialoguesForNPC(npcId: string): Promise<IDialogueObject[]>;
42
+ markDialogueAsRead(npcId: string, dialogueId: string): Promise<void>;
43
+ fetchDialogues(url: string): Promise<void>;
44
+ getPrioritizedDialoguesForNPC(npcId: string): Promise<(IDialogueObject & {
45
+ priority: number;
46
+ read: boolean;
47
+ })[]>;
48
+ getNPCNameById(npcId: string): Promise<string | undefined>;
49
+ getNPCAvatarById(npcId: string): Promise<Blob | undefined>;
50
+ getNPCSlugById(npcId: string): Promise<string | undefined>;
51
+ getNPCHealthById(npcId: string): Promise<string | undefined>;
52
+ getNPCManaById(npcId: string): Promise<string | undefined>;
53
+ createNPCSession(SessionAtom: WritableAtom<Record<string, string>>, npcId: string): Promise<void>;
54
+ }
55
+ export { NPCDatabase };
56
+ export declare const npcDatabase: NPCDatabase;