@nice2dev/game-engine 1.3.12 → 1.3.14
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.
- package/CHANGELOG.md +8 -0
- package/package.json +2 -2
- package/dist/types/accessibility/index.d.ts +0 -1
- package/dist/types/ai/index.d.ts +0 -1
- package/dist/types/animation/index.d.ts +0 -1
- package/dist/types/audio/HRTFAudio.d.ts +0 -180
- package/dist/types/audio/index.d.ts +0 -2
- package/dist/types/community/Community.d.ts +0 -112
- package/dist/types/community/index.d.ts +0 -1
- package/dist/types/core/TypeSafety.d.ts +0 -190
- package/dist/types/core/index.d.ts +0 -7
- package/dist/types/devtools/AssetStore.d.ts +0 -133
- package/dist/types/devtools/index.d.ts +0 -3
- package/dist/types/dialogue/index.d.ts +0 -2
- package/dist/types/docs/APIPlayground.d.ts +0 -26
- package/dist/types/docs/Cookbook.d.ts +0 -18
- package/dist/types/docs/Guides.d.ts +0 -18
- package/dist/types/docs/index.d.ts +0 -4
- package/dist/types/ecs/ECSOptimized.d.ts +0 -131
- package/dist/types/ecs/index.d.ts +0 -2
- package/dist/types/editor/NiceAnimationTimeline.d.ts +0 -114
- package/dist/types/editor/NiceLevelEditor.d.ts +0 -232
- package/dist/types/editor/NiceMaterialEditor.d.ts +0 -105
- package/dist/types/editor/NiceNodeGraph.d.ts +0 -87
- package/dist/types/editor/NiceParticleEditor.d.ts +0 -127
- package/dist/types/editor/behavior-tree/BTDebugPanel.d.ts +0 -102
- package/dist/types/editor/behavior-tree/BTEditorCanvas.d.ts +0 -79
- package/dist/types/editor/behavior-tree/BTEditorNode.d.ts +0 -58
- package/dist/types/editor/behavior-tree/BTEditorToolbar.d.ts +0 -75
- package/dist/types/editor/behavior-tree/BTNodePalette.d.ts +0 -72
- package/dist/types/editor/behavior-tree/BTPropertyPanel.d.ts +0 -66
- package/dist/types/editor/behavior-tree/BehaviorTreeEditor.d.ts +0 -186
- package/dist/types/editor/behavior-tree/index.d.ts +0 -14
- package/dist/types/editor/behavior-tree/serialization.d.ts +0 -30
- package/dist/types/editor/behavior-tree/types.d.ts +0 -299
- package/dist/types/editor/index.d.ts +0 -20
- package/dist/types/editor/state-machine/SMEditorCanvas.d.ts +0 -61
- package/dist/types/editor/state-machine/StateMachineEditor.d.ts +0 -139
- package/dist/types/editor/state-machine/index.d.ts +0 -11
- package/dist/types/editor/state-machine/serialization.d.ts +0 -23
- package/dist/types/editor/state-machine/types.d.ts +0 -241
- package/dist/types/engine/index.d.ts +0 -2
- package/dist/types/enterprise/index.d.ts +0 -1
- package/dist/types/epic/index.d.ts +0 -10
- package/dist/types/i18n/index.d.ts +0 -2
- package/dist/types/input/index.d.ts +0 -3
- package/dist/types/kids/index.d.ts +0 -2
- package/dist/types/legendary/index.d.ts +0 -57
- package/dist/types/monetization/index.d.ts +0 -1
- package/dist/types/multiplayer/NiceNetcode.d.ts +0 -434
- package/dist/types/multiplayer/index.d.ts +0 -5
- package/dist/types/network/index.d.ts +0 -2
- package/dist/types/pathfinding/index.d.ts +0 -1
- package/dist/types/performance/AssetCompression.d.ts +0 -137
- package/dist/types/performance/WASMModules.d.ts +0 -65
- package/dist/types/performance/WebGPUCompute.d.ts +0 -71
- package/dist/types/performance/index.d.ts +0 -1
- package/dist/types/physics/RapierIntegration.d.ts +0 -404
- package/dist/types/physics/index.d.ts +0 -2
- package/dist/types/plugins/index.d.ts +0 -2
- package/dist/types/procedural/index.d.ts +0 -2
- package/dist/types/release/index.d.ts +0 -1
- package/dist/types/rendering/WebGPUv2.d.ts +0 -173
- package/dist/types/rendering/index.d.ts +0 -3
- package/dist/types/runtime3d/index.d.ts +0 -2
- package/dist/types/scene/index.d.ts +0 -2
- package/dist/types/scripting/WasmCompiler.d.ts +0 -182
- package/dist/types/scripting/index.d.ts +0 -19
- package/dist/types/social/index.d.ts +0 -1
- package/dist/types/systems/NiceAI.d.ts +0 -637
- package/dist/types/systems/NiceAbility.d.ts +0 -225
- package/dist/types/systems/NiceAccessibility.d.ts +0 -230
- package/dist/types/systems/NiceAchievement.d.ts +0 -153
- package/dist/types/systems/NiceAchievementUI.d.ts +0 -196
- package/dist/types/systems/NiceAchievements.d.ts +0 -230
- package/dist/types/systems/NiceAction.d.ts +0 -81
- package/dist/types/systems/NiceAlchemy.d.ts +0 -195
- package/dist/types/systems/NiceAnalytics.d.ts +0 -493
- package/dist/types/systems/NiceAnimation.d.ts +0 -350
- package/dist/types/systems/NiceArena.d.ts +0 -215
- package/dist/types/systems/NiceAssetLoader.d.ts +0 -136
- package/dist/types/systems/NiceAuction.d.ts +0 -157
- package/dist/types/systems/NiceAudio.d.ts +0 -224
- package/dist/types/systems/NiceAugment.d.ts +0 -187
- package/dist/types/systems/NiceAura.d.ts +0 -193
- package/dist/types/systems/NiceBank.d.ts +0 -158
- package/dist/types/systems/NiceBattlePass.d.ts +0 -150
- package/dist/types/systems/NiceBehavior.d.ts +0 -160
- package/dist/types/systems/NiceBinding.d.ts +0 -96
- package/dist/types/systems/NiceBlacksmith.d.ts +0 -221
- package/dist/types/systems/NiceBuff.d.ts +0 -177
- package/dist/types/systems/NiceBuilding.d.ts +0 -207
- package/dist/types/systems/NiceBullet.d.ts +0 -167
- package/dist/types/systems/NiceCamera.d.ts +0 -252
- package/dist/types/systems/NiceCard.d.ts +0 -171
- package/dist/types/systems/NiceChat.d.ts +0 -148
- package/dist/types/systems/NiceCheat.d.ts +0 -375
- package/dist/types/systems/NiceClimbing.d.ts +0 -186
- package/dist/types/systems/NiceCloud.d.ts +0 -422
- package/dist/types/systems/NiceCollision.d.ts +0 -238
- package/dist/types/systems/NiceCombo.d.ts +0 -131
- package/dist/types/systems/NiceCommand.d.ts +0 -112
- package/dist/types/systems/NiceCompanion.d.ts +0 -182
- package/dist/types/systems/NiceController.d.ts +0 -144
- package/dist/types/systems/NiceCooking.d.ts +0 -193
- package/dist/types/systems/NiceCoroutine.d.ts +0 -101
- package/dist/types/systems/NiceCrafting.d.ts +0 -228
- package/dist/types/systems/NiceCutscene.d.ts +0 -437
- package/dist/types/systems/NiceDaily.d.ts +0 -133
- package/dist/types/systems/NiceDamage.d.ts +0 -271
- package/dist/types/systems/NiceDayNight.d.ts +0 -126
- package/dist/types/systems/NiceDebug.d.ts +0 -255
- package/dist/types/systems/NiceDestructible.d.ts +0 -150
- package/dist/types/systems/NiceDialogue.d.ts +0 -629
- package/dist/types/systems/NiceDungeon.d.ts +0 -202
- package/dist/types/systems/NiceECS.d.ts +0 -151
- package/dist/types/systems/NiceEnchant.d.ts +0 -148
- package/dist/types/systems/NiceEntityPool.d.ts +0 -127
- package/dist/types/systems/NiceEquipment.d.ts +0 -137
- package/dist/types/systems/NiceEvent.d.ts +0 -202
- package/dist/types/systems/NiceEventBus.d.ts +0 -164
- package/dist/types/systems/NiceFaction.d.ts +0 -173
- package/dist/types/systems/NiceFarming.d.ts +0 -163
- package/dist/types/systems/NiceFishing.d.ts +0 -196
- package/dist/types/systems/NiceFlocking.d.ts +0 -156
- package/dist/types/systems/NiceFog.d.ts +0 -137
- package/dist/types/systems/NiceFormation.d.ts +0 -140
- package/dist/types/systems/NiceGacha.d.ts +0 -134
- package/dist/types/systems/NiceGambling.d.ts +0 -175
- package/dist/types/systems/NiceGem.d.ts +0 -165
- package/dist/types/systems/NiceGesture.d.ts +0 -502
- package/dist/types/systems/NiceGrappling.d.ts +0 -154
- package/dist/types/systems/NiceGrid.d.ts +0 -142
- package/dist/types/systems/NiceGuild.d.ts +0 -162
- package/dist/types/systems/NiceHaptics.d.ts +0 -112
- package/dist/types/systems/NiceHousing.d.ts +0 -197
- package/dist/types/systems/NiceInput.d.ts +0 -280
- package/dist/types/systems/NiceInventory.d.ts +0 -534
- package/dist/types/systems/NiceLOD.d.ts +0 -144
- package/dist/types/systems/NiceLeaderboard.d.ts +0 -191
- package/dist/types/systems/NiceLevel.d.ts +0 -304
- package/dist/types/systems/NiceLighting.d.ts +0 -214
- package/dist/types/systems/NiceLocalization.d.ts +0 -148
- package/dist/types/systems/NiceLocomotion.d.ts +0 -398
- package/dist/types/systems/NiceLogger.d.ts +0 -117
- package/dist/types/systems/NiceLoot.d.ts +0 -176
- package/dist/types/systems/NiceMail.d.ts +0 -164
- package/dist/types/systems/NiceMap.d.ts +0 -234
- package/dist/types/systems/NiceMarriage.d.ts +0 -150
- package/dist/types/systems/NiceMastery.d.ts +0 -171
- package/dist/types/systems/NiceMatch.d.ts +0 -196
- package/dist/types/systems/NiceMatch3.d.ts +0 -118
- package/dist/types/systems/NiceMessageBus.d.ts +0 -115
- package/dist/types/systems/NiceMinimap.d.ts +0 -258
- package/dist/types/systems/NiceMining.d.ts +0 -175
- package/dist/types/systems/NiceModding.d.ts +0 -452
- package/dist/types/systems/NiceMount.d.ts +0 -152
- package/dist/types/systems/NiceNavigation.d.ts +0 -307
- package/dist/types/systems/NiceNetwork.d.ts +0 -568
- package/dist/types/systems/NiceNotification.d.ts +0 -438
- package/dist/types/systems/NiceObjective.d.ts +0 -395
- package/dist/types/systems/NiceParticle.d.ts +0 -639
- package/dist/types/systems/NiceParty.d.ts +0 -168
- package/dist/types/systems/NicePerformance.d.ts +0 -144
- package/dist/types/systems/NicePet.d.ts +0 -167
- package/dist/types/systems/NicePhotoMode.d.ts +0 -270
- package/dist/types/systems/NicePhysics.d.ts +0 -326
- package/dist/types/systems/NicePlatformer.d.ts +0 -158
- package/dist/types/systems/NicePool.d.ts +0 -128
- package/dist/types/systems/NicePortal.d.ts +0 -178
- package/dist/types/systems/NicePostProcess.d.ts +0 -254
- package/dist/types/systems/NiceProcedural.d.ts +0 -202
- package/dist/types/systems/NiceProfile.d.ts +0 -223
- package/dist/types/systems/NiceProjectile.d.ts +0 -157
- package/dist/types/systems/NicePvP.d.ts +0 -199
- package/dist/types/systems/NiceQTE.d.ts +0 -160
- package/dist/types/systems/NiceQuest.d.ts +0 -620
- package/dist/types/systems/NiceRaid.d.ts +0 -215
- package/dist/types/systems/NiceRanking.d.ts +0 -399
- package/dist/types/systems/NiceReplay.d.ts +0 -180
- package/dist/types/systems/NiceReputation.d.ts +0 -151
- package/dist/types/systems/NiceResource.d.ts +0 -200
- package/dist/types/systems/NiceRhythm.d.ts +0 -148
- package/dist/types/systems/NiceRoguelike.d.ts +0 -276
- package/dist/types/systems/NiceRune.d.ts +0 -202
- package/dist/types/systems/NiceSaveSystem.d.ts +0 -194
- package/dist/types/systems/NiceSceneManager.d.ts +0 -112
- package/dist/types/systems/NiceScore.d.ts +0 -186
- package/dist/types/systems/NiceScreenFX.d.ts +0 -235
- package/dist/types/systems/NiceScreenshot.d.ts +0 -443
- package/dist/types/systems/NiceScribe.d.ts +0 -239
- package/dist/types/systems/NiceSeason.d.ts +0 -176
- package/dist/types/systems/NiceSerialization.d.ts +0 -89
- package/dist/types/systems/NiceServiceLocator.d.ts +0 -94
- package/dist/types/systems/NiceShop.d.ts +0 -528
- package/dist/types/systems/NiceSignal.d.ts +0 -112
- package/dist/types/systems/NiceSkillTree.d.ts +0 -237
- package/dist/types/systems/NiceSocial.d.ts +0 -580
- package/dist/types/systems/NiceSpawner.d.ts +0 -237
- package/dist/types/systems/NiceSpell.d.ts +0 -216
- package/dist/types/systems/NiceState.d.ts +0 -224
- package/dist/types/systems/NiceStateMachine.d.ts +0 -108
- package/dist/types/systems/NiceStatus.d.ts +0 -116
- package/dist/types/systems/NiceStealth.d.ts +0 -204
- package/dist/types/systems/NiceSteam.d.ts +0 -255
- package/dist/types/systems/NiceStreaming.d.ts +0 -173
- package/dist/types/systems/NiceSwimming.d.ts +0 -166
- package/dist/types/systems/NiceTalent.d.ts +0 -154
- package/dist/types/systems/NiceTarget.d.ts +0 -121
- package/dist/types/systems/NiceTerrain.d.ts +0 -143
- package/dist/types/systems/NiceTilemap.d.ts +0 -218
- package/dist/types/systems/NiceTimer.d.ts +0 -153
- package/dist/types/systems/NiceTournament.d.ts +0 -190
- package/dist/types/systems/NiceTrading.d.ts +0 -238
- package/dist/types/systems/NiceTransmog.d.ts +0 -142
- package/dist/types/systems/NiceTutorial.d.ts +0 -248
- package/dist/types/systems/NiceTween.d.ts +0 -164
- package/dist/types/systems/NiceUI.d.ts +0 -364
- package/dist/types/systems/NiceVFX.d.ts +0 -333
- package/dist/types/systems/NiceVehicle.d.ts +0 -176
- package/dist/types/systems/NiceVoice.d.ts +0 -502
- package/dist/types/systems/NiceWater.d.ts +0 -162
- package/dist/types/systems/NiceWave.d.ts +0 -174
- package/dist/types/systems/NiceWaypoint.d.ts +0 -165
- package/dist/types/systems/NiceWeather.d.ts +0 -225
- package/dist/types/systems/NiceXR.d.ts +0 -187
- package/dist/types/systems/index.d.ts +0 -182
- package/dist/types/templates/index.d.ts +0 -2
- package/dist/types/tilemap/index.d.ts +0 -1
- package/dist/types/tutorials/TutorialEditor.d.ts +0 -43
- package/dist/types/tutorials/VoiceNarration.d.ts +0 -75
- package/dist/types/tutorials/content/Tutorials_T04.d.ts +0 -3
- package/dist/types/tutorials/content/UITutorials.d.ts +0 -14
- package/dist/types/tutorials/content/index.d.ts +0 -5
- package/dist/types/tutorials/index.d.ts +0 -6
- package/dist/types/ui/index.d.ts +0 -2
- package/dist/types/visual-scripting/VisualScriptDebugger.d.ts +0 -145
- package/dist/types/visual-scripting/VisualScriptExecutor.d.ts +0 -100
- package/dist/types/visual-scripting/VisualScriptGraph.d.ts +0 -173
- package/dist/types/visual-scripting/VisualScriptNode.d.ts +0 -157
- package/dist/types/visual-scripting/index.d.ts +0 -6
- package/dist/types/visual-scripting/nodes/ActionNodes.d.ts +0 -152
- package/dist/types/visual-scripting/nodes/EventNodes.d.ts +0 -95
- package/dist/types/visual-scripting/nodes/FlowControlNodes.d.ts +0 -134
- package/dist/types/visual-scripting/nodes/LogicNodes.d.ts +0 -122
- package/dist/types/visual-scripting/nodes/MathNodes.d.ts +0 -170
- package/dist/types/visual-scripting/nodes/UtilityNodes.d.ts +0 -131
- package/dist/types/visual-scripting/nodes/VariableNodes.d.ts +0 -107
- package/dist/types/visual-scripting/nodes/index.d.ts +0 -21
- package/dist/types/visual-scripting/nodes/registerNodes.d.ts +0 -29
- package/dist/types/visual-scripting/types.d.ts +0 -402
- package/dist/types/xr/WebXRLayers.d.ts +0 -319
- package/dist/types/xr/index.d.ts +0 -2
|
@@ -1,620 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NiceQuest - Comprehensive Quest/Mission System
|
|
3
|
-
*
|
|
4
|
-
* Professional quest system for RPGs and adventure games.
|
|
5
|
-
* Supports complex objectives, branching, tracking, rewards, and discovery.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Multi-objective quests with dependencies
|
|
9
|
-
* - Branching quest lines
|
|
10
|
-
* - Quest chains and prerequisites
|
|
11
|
-
* - Auto-tracking and discovery
|
|
12
|
-
* - Dynamic objectives
|
|
13
|
-
* - Rewards system (items, XP, reputation)
|
|
14
|
-
* - Quest journal with categories
|
|
15
|
-
* - Time-limited quests
|
|
16
|
-
* - Repeatable/daily quests
|
|
17
|
-
* - Hidden/secret quests
|
|
18
|
-
* - Quest markers/waypoints
|
|
19
|
-
*
|
|
20
|
-
* @packageDocumentation
|
|
21
|
-
*/
|
|
22
|
-
import { EventEmitter } from 'eventemitter3';
|
|
23
|
-
/** Unique identifier for quests */
|
|
24
|
-
export type QuestId = string;
|
|
25
|
-
/** Unique identifier for objectives */
|
|
26
|
-
export type ObjectiveId = string;
|
|
27
|
-
/** Unique identifier for quest chains */
|
|
28
|
-
export type ChainId = string;
|
|
29
|
-
/** Unique identifier for NPCs */
|
|
30
|
-
export type NpcId = string;
|
|
31
|
-
/** Unique identifier for quest markers */
|
|
32
|
-
export type MarkerId = string;
|
|
33
|
-
/** Quest states */
|
|
34
|
-
export type QuestState = 'unknown' | 'available' | 'active' | 'completed' | 'failed' | 'abandoned' | 'locked';
|
|
35
|
-
/** Objective states */
|
|
36
|
-
export type ObjectiveState = 'hidden' | 'active' | 'completed' | 'failed' | 'optional';
|
|
37
|
-
/** Objective types */
|
|
38
|
-
export type ObjectiveType = 'collect' | 'kill' | 'talk' | 'explore' | 'escort' | 'defend' | 'deliver' | 'interact' | 'craft' | 'use' | 'survive' | 'win' | 'custom';
|
|
39
|
-
/** Quest difficulty */
|
|
40
|
-
export type QuestDifficulty = 'trivial' | 'easy' | 'normal' | 'hard' | 'legendary';
|
|
41
|
-
/** Quest category */
|
|
42
|
-
export type QuestCategory = 'main' | 'side' | 'daily' | 'weekly' | 'world' | 'guild' | 'dungeon' | 'pvp' | 'achievement';
|
|
43
|
-
/** 2D position */
|
|
44
|
-
export interface Vec2 {
|
|
45
|
-
x: number;
|
|
46
|
-
y: number;
|
|
47
|
-
}
|
|
48
|
-
/** 3D position */
|
|
49
|
-
export interface Vec3 {
|
|
50
|
-
x: number;
|
|
51
|
-
y: number;
|
|
52
|
-
z: number;
|
|
53
|
-
}
|
|
54
|
-
/** Reward types */
|
|
55
|
-
export interface Reward {
|
|
56
|
-
type: 'item' | 'currency' | 'experience' | 'reputation' | 'unlock' | 'custom';
|
|
57
|
-
id?: string;
|
|
58
|
-
amount?: number;
|
|
59
|
-
data?: Record<string, unknown>;
|
|
60
|
-
}
|
|
61
|
-
/** Condition for quest availability */
|
|
62
|
-
export interface QuestCondition {
|
|
63
|
-
type: 'level' | 'quest' | 'item' | 'reputation' | 'time' | 'flag' | 'custom';
|
|
64
|
-
operator?: '==' | '!=' | '>' | '<' | '>=' | '<=';
|
|
65
|
-
target?: string;
|
|
66
|
-
value?: number | string | boolean;
|
|
67
|
-
customCheck?: () => boolean;
|
|
68
|
-
}
|
|
69
|
-
/** Quest marker for map/compass */
|
|
70
|
-
export interface QuestMarker {
|
|
71
|
-
id: MarkerId;
|
|
72
|
-
questId: QuestId;
|
|
73
|
-
objectiveId?: ObjectiveId;
|
|
74
|
-
position: Vec3;
|
|
75
|
-
type: 'quest' | 'objective' | 'turn-in' | 'poi';
|
|
76
|
-
icon?: string;
|
|
77
|
-
label?: string;
|
|
78
|
-
visible: boolean;
|
|
79
|
-
tracked: boolean;
|
|
80
|
-
}
|
|
81
|
-
/** Objective definition */
|
|
82
|
-
export interface ObjectiveDefinition {
|
|
83
|
-
id: ObjectiveId;
|
|
84
|
-
type: ObjectiveType;
|
|
85
|
-
description: string;
|
|
86
|
-
shortDescription?: string;
|
|
87
|
-
target?: string;
|
|
88
|
-
targetId?: string;
|
|
89
|
-
requiredCount: number;
|
|
90
|
-
currentCount?: number;
|
|
91
|
-
isOptional?: boolean;
|
|
92
|
-
isHidden?: boolean;
|
|
93
|
-
revealConditions?: QuestCondition[];
|
|
94
|
-
failConditions?: QuestCondition[];
|
|
95
|
-
location?: Vec3;
|
|
96
|
-
radius?: number;
|
|
97
|
-
timeLimit?: number;
|
|
98
|
-
markers?: QuestMarker[];
|
|
99
|
-
dependencies?: ObjectiveId[];
|
|
100
|
-
onComplete?: () => void;
|
|
101
|
-
onFail?: () => void;
|
|
102
|
-
metadata?: Record<string, unknown>;
|
|
103
|
-
}
|
|
104
|
-
/** Objective instance */
|
|
105
|
-
export interface ObjectiveInstance {
|
|
106
|
-
definition: ObjectiveDefinition;
|
|
107
|
-
state: ObjectiveState;
|
|
108
|
-
currentCount: number;
|
|
109
|
-
startTime?: number;
|
|
110
|
-
completionTime?: number;
|
|
111
|
-
failTime?: number;
|
|
112
|
-
}
|
|
113
|
-
/** Quest stage (for branching) */
|
|
114
|
-
export interface QuestStage {
|
|
115
|
-
id: string;
|
|
116
|
-
name: string;
|
|
117
|
-
description?: string;
|
|
118
|
-
objectives: ObjectiveId[];
|
|
119
|
-
nextStages?: Array<{
|
|
120
|
-
stageId: string;
|
|
121
|
-
conditions?: QuestCondition[];
|
|
122
|
-
}>;
|
|
123
|
-
onEnter?: () => void;
|
|
124
|
-
onExit?: () => void;
|
|
125
|
-
}
|
|
126
|
-
/** Quest definition */
|
|
127
|
-
export interface QuestDefinition {
|
|
128
|
-
id: QuestId;
|
|
129
|
-
name: string;
|
|
130
|
-
description: string;
|
|
131
|
-
shortDescription?: string;
|
|
132
|
-
category: QuestCategory;
|
|
133
|
-
difficulty?: QuestDifficulty;
|
|
134
|
-
levelRequirement?: number;
|
|
135
|
-
levelRecommended?: number;
|
|
136
|
-
prerequisites?: QuestCondition[];
|
|
137
|
-
objectives: ObjectiveDefinition[];
|
|
138
|
-
stages?: QuestStage[];
|
|
139
|
-
startStage?: string;
|
|
140
|
-
rewards: Reward[];
|
|
141
|
-
bonusRewards?: Array<{
|
|
142
|
-
conditions: QuestCondition[];
|
|
143
|
-
rewards: Reward[];
|
|
144
|
-
}>;
|
|
145
|
-
questGiver?: NpcId;
|
|
146
|
-
turnInNpc?: NpcId;
|
|
147
|
-
isRepeatable?: boolean;
|
|
148
|
-
repeatCooldown?: number;
|
|
149
|
-
isHidden?: boolean;
|
|
150
|
-
autoAccept?: boolean;
|
|
151
|
-
autoComplete?: boolean;
|
|
152
|
-
timeLimit?: number;
|
|
153
|
-
failOnAbandon?: boolean;
|
|
154
|
-
canAbandon?: boolean;
|
|
155
|
-
chainId?: ChainId;
|
|
156
|
-
chainOrder?: number;
|
|
157
|
-
tags?: string[];
|
|
158
|
-
icon?: string;
|
|
159
|
-
markers?: QuestMarker[];
|
|
160
|
-
onStart?: () => void;
|
|
161
|
-
onComplete?: () => void;
|
|
162
|
-
onFail?: () => void;
|
|
163
|
-
onAbandon?: () => void;
|
|
164
|
-
metadata?: Record<string, unknown>;
|
|
165
|
-
}
|
|
166
|
-
/** Quest instance (active/completed quest) */
|
|
167
|
-
export interface QuestInstance {
|
|
168
|
-
definition: QuestDefinition;
|
|
169
|
-
state: QuestState;
|
|
170
|
-
objectives: Map<ObjectiveId, ObjectiveInstance>;
|
|
171
|
-
currentStage?: string;
|
|
172
|
-
startTime?: number;
|
|
173
|
-
completionTime?: number;
|
|
174
|
-
failTime?: number;
|
|
175
|
-
abandonTime?: number;
|
|
176
|
-
completionCount: number;
|
|
177
|
-
lastCompletionTime?: number;
|
|
178
|
-
isTracked: boolean;
|
|
179
|
-
metadata: Map<string, unknown>;
|
|
180
|
-
}
|
|
181
|
-
/** Quest chain definition */
|
|
182
|
-
export interface QuestChain {
|
|
183
|
-
id: ChainId;
|
|
184
|
-
name: string;
|
|
185
|
-
description?: string;
|
|
186
|
-
quests: QuestId[];
|
|
187
|
-
isLinear: boolean;
|
|
188
|
-
rewards?: Reward[];
|
|
189
|
-
onComplete?: () => void;
|
|
190
|
-
metadata?: Record<string, unknown>;
|
|
191
|
-
}
|
|
192
|
-
/** Quest chain progress */
|
|
193
|
-
export interface ChainProgress {
|
|
194
|
-
chain: QuestChain;
|
|
195
|
-
currentQuestIndex: number;
|
|
196
|
-
completedQuests: QuestId[];
|
|
197
|
-
isComplete: boolean;
|
|
198
|
-
}
|
|
199
|
-
/** Quest journal entry */
|
|
200
|
-
export interface JournalEntry {
|
|
201
|
-
timestamp: number;
|
|
202
|
-
questId: QuestId;
|
|
203
|
-
type: 'started' | 'objective' | 'stage' | 'completed' | 'failed' | 'abandoned';
|
|
204
|
-
objectiveId?: ObjectiveId;
|
|
205
|
-
stageId?: string;
|
|
206
|
-
message?: string;
|
|
207
|
-
}
|
|
208
|
-
/** Quest event types */
|
|
209
|
-
export type QuestEventType = 'quest:discovered' | 'quest:available' | 'quest:started' | 'quest:completed' | 'quest:failed' | 'quest:abandoned' | 'quest:tracked' | 'quest:untracked' | 'objective:started' | 'objective:progress' | 'objective:completed' | 'objective:failed' | 'objective:revealed' | 'stage:entered' | 'stage:exited' | 'chain:started' | 'chain:progress' | 'chain:completed' | 'reward:granted' | 'marker:added' | 'marker:removed' | 'marker:updated' | 'error';
|
|
210
|
-
/** Quest event */
|
|
211
|
-
export interface QuestEvent {
|
|
212
|
-
type: QuestEventType;
|
|
213
|
-
questId?: QuestId;
|
|
214
|
-
objectiveId?: ObjectiveId;
|
|
215
|
-
chainId?: ChainId;
|
|
216
|
-
stageId?: string;
|
|
217
|
-
markerId?: MarkerId;
|
|
218
|
-
quest?: QuestInstance;
|
|
219
|
-
objective?: ObjectiveInstance;
|
|
220
|
-
chain?: ChainProgress;
|
|
221
|
-
marker?: QuestMarker;
|
|
222
|
-
reward?: Reward;
|
|
223
|
-
progress?: {
|
|
224
|
-
current: number;
|
|
225
|
-
required: number;
|
|
226
|
-
};
|
|
227
|
-
error?: Error;
|
|
228
|
-
timestamp: number;
|
|
229
|
-
}
|
|
230
|
-
/** Event callback */
|
|
231
|
-
export type QuestEventCallback = (event: QuestEvent) => void;
|
|
232
|
-
/** Quest system configuration */
|
|
233
|
-
export interface QuestConfig {
|
|
234
|
-
/** Maximum active quests */
|
|
235
|
-
maxActiveQuests: number;
|
|
236
|
-
/** Maximum tracked quests */
|
|
237
|
-
maxTrackedQuests: number;
|
|
238
|
-
/** Enable quest journal */
|
|
239
|
-
enableJournal: boolean;
|
|
240
|
-
/** Maximum journal entries */
|
|
241
|
-
maxJournalEntries: number;
|
|
242
|
-
/** Auto-track new quests */
|
|
243
|
-
autoTrackNewQuests: boolean;
|
|
244
|
-
/** Show objective notifications */
|
|
245
|
-
showObjectiveNotifications: boolean;
|
|
246
|
-
/** Check conditions interval (ms) */
|
|
247
|
-
conditionCheckInterval: number;
|
|
248
|
-
/** Debug mode */
|
|
249
|
-
debug: boolean;
|
|
250
|
-
}
|
|
251
|
-
export declare const DEFAULT_QUEST_CONFIG: QuestConfig;
|
|
252
|
-
export declare class NiceQuest extends EventEmitter<Record<QuestEventType, [QuestEvent]>> {
|
|
253
|
-
private config;
|
|
254
|
-
private questDefinitions;
|
|
255
|
-
private questInstances;
|
|
256
|
-
private questChains;
|
|
257
|
-
private chainProgress;
|
|
258
|
-
private markers;
|
|
259
|
-
private journal;
|
|
260
|
-
private playerLevel;
|
|
261
|
-
private playerFlags;
|
|
262
|
-
private playerReputation;
|
|
263
|
-
private conditionCheckTimer?;
|
|
264
|
-
private markerCounter;
|
|
265
|
-
constructor(config?: Partial<QuestConfig>);
|
|
266
|
-
/**
|
|
267
|
-
* Register a quest definition
|
|
268
|
-
*/
|
|
269
|
-
registerQuest(quest: QuestDefinition): void;
|
|
270
|
-
/**
|
|
271
|
-
* Register multiple quests
|
|
272
|
-
*/
|
|
273
|
-
registerQuests(quests: QuestDefinition[]): void;
|
|
274
|
-
/**
|
|
275
|
-
* Register a quest chain
|
|
276
|
-
*/
|
|
277
|
-
registerChain(chain: QuestChain): void;
|
|
278
|
-
/**
|
|
279
|
-
* Get quest definition
|
|
280
|
-
*/
|
|
281
|
-
getQuestDefinition(id: QuestId): QuestDefinition | undefined;
|
|
282
|
-
/**
|
|
283
|
-
* Get quest instance
|
|
284
|
-
*/
|
|
285
|
-
getQuest(id: QuestId): QuestInstance | undefined;
|
|
286
|
-
/**
|
|
287
|
-
* Get quest chain
|
|
288
|
-
*/
|
|
289
|
-
getChain(id: ChainId): QuestChain | undefined;
|
|
290
|
-
/**
|
|
291
|
-
* Get chain progress
|
|
292
|
-
*/
|
|
293
|
-
getChainProgress(id: ChainId): ChainProgress | undefined;
|
|
294
|
-
/**
|
|
295
|
-
* Start a quest
|
|
296
|
-
*/
|
|
297
|
-
startQuest(questId: QuestId): boolean;
|
|
298
|
-
/**
|
|
299
|
-
* Complete a quest
|
|
300
|
-
*/
|
|
301
|
-
completeQuest(questId: QuestId, grantRewards?: boolean): boolean;
|
|
302
|
-
/**
|
|
303
|
-
* Fail a quest
|
|
304
|
-
*/
|
|
305
|
-
failQuest(questId: QuestId): boolean;
|
|
306
|
-
/**
|
|
307
|
-
* Abandon a quest
|
|
308
|
-
*/
|
|
309
|
-
abandonQuest(questId: QuestId): boolean;
|
|
310
|
-
/**
|
|
311
|
-
* Reset a quest (for repeatable)
|
|
312
|
-
*/
|
|
313
|
-
private resetQuest;
|
|
314
|
-
/**
|
|
315
|
-
* Update objective progress
|
|
316
|
-
*/
|
|
317
|
-
updateObjective(questId: QuestId, objectiveId: ObjectiveId, progress: number, absolute?: boolean): boolean;
|
|
318
|
-
/**
|
|
319
|
-
* Update objective by type
|
|
320
|
-
*/
|
|
321
|
-
updateObjectiveByType(objectiveType: ObjectiveType, targetId: string, progress?: number): void;
|
|
322
|
-
/**
|
|
323
|
-
* Complete an objective
|
|
324
|
-
*/
|
|
325
|
-
completeObjective(questId: QuestId, objectiveId: ObjectiveId): boolean;
|
|
326
|
-
/**
|
|
327
|
-
* Fail an objective
|
|
328
|
-
*/
|
|
329
|
-
failObjective(questId: QuestId, objectiveId: ObjectiveId): boolean;
|
|
330
|
-
/**
|
|
331
|
-
* Reveal a hidden objective
|
|
332
|
-
*/
|
|
333
|
-
revealObjective(questId: QuestId, objectiveId: ObjectiveId): boolean;
|
|
334
|
-
/**
|
|
335
|
-
* Check and advance stages
|
|
336
|
-
*/
|
|
337
|
-
private checkStageProgress;
|
|
338
|
-
/**
|
|
339
|
-
* Enter a new stage
|
|
340
|
-
*/
|
|
341
|
-
private enterStage;
|
|
342
|
-
/**
|
|
343
|
-
* Track a quest
|
|
344
|
-
*/
|
|
345
|
-
trackQuest(questId: QuestId): boolean;
|
|
346
|
-
/**
|
|
347
|
-
* Untrack a quest
|
|
348
|
-
*/
|
|
349
|
-
untrackQuest(questId: QuestId): boolean;
|
|
350
|
-
/**
|
|
351
|
-
* Add quest markers
|
|
352
|
-
*/
|
|
353
|
-
private addQuestMarkers;
|
|
354
|
-
/**
|
|
355
|
-
* Add a marker
|
|
356
|
-
*/
|
|
357
|
-
addMarker(marker: QuestMarker): void;
|
|
358
|
-
/**
|
|
359
|
-
* Remove quest markers
|
|
360
|
-
*/
|
|
361
|
-
private removeQuestMarkers;
|
|
362
|
-
/**
|
|
363
|
-
* Remove objective markers
|
|
364
|
-
*/
|
|
365
|
-
private removeObjectiveMarkers;
|
|
366
|
-
/**
|
|
367
|
-
* Get all markers
|
|
368
|
-
*/
|
|
369
|
-
getMarkers(): QuestMarker[];
|
|
370
|
-
/**
|
|
371
|
-
* Get visible markers
|
|
372
|
-
*/
|
|
373
|
-
getVisibleMarkers(): QuestMarker[];
|
|
374
|
-
/**
|
|
375
|
-
* Update chain progress
|
|
376
|
-
*/
|
|
377
|
-
private updateChainProgress;
|
|
378
|
-
/**
|
|
379
|
-
* Grant rewards
|
|
380
|
-
*/
|
|
381
|
-
private grantRewards;
|
|
382
|
-
/**
|
|
383
|
-
* Get active quests
|
|
384
|
-
*/
|
|
385
|
-
getActiveQuests(): QuestInstance[];
|
|
386
|
-
/**
|
|
387
|
-
* Get available quests
|
|
388
|
-
*/
|
|
389
|
-
getAvailableQuests(): QuestInstance[];
|
|
390
|
-
/**
|
|
391
|
-
* Get completed quests
|
|
392
|
-
*/
|
|
393
|
-
getCompletedQuests(): QuestInstance[];
|
|
394
|
-
/**
|
|
395
|
-
* Get failed quests
|
|
396
|
-
*/
|
|
397
|
-
getFailedQuests(): QuestInstance[];
|
|
398
|
-
/**
|
|
399
|
-
* Get tracked quests
|
|
400
|
-
*/
|
|
401
|
-
getTrackedQuests(): QuestInstance[];
|
|
402
|
-
/**
|
|
403
|
-
* Get quests by category
|
|
404
|
-
*/
|
|
405
|
-
getQuestsByCategory(category: QuestCategory): QuestInstance[];
|
|
406
|
-
/**
|
|
407
|
-
* Get quests by NPC
|
|
408
|
-
*/
|
|
409
|
-
getQuestsByNpc(npcId: NpcId): QuestInstance[];
|
|
410
|
-
/**
|
|
411
|
-
* Get quests available from NPC
|
|
412
|
-
*/
|
|
413
|
-
getAvailableQuestsFromNpc(npcId: NpcId): QuestInstance[];
|
|
414
|
-
/**
|
|
415
|
-
* Get quests ready to turn in to NPC
|
|
416
|
-
*/
|
|
417
|
-
getCompletableQuestsForNpc(npcId: NpcId): QuestInstance[];
|
|
418
|
-
/**
|
|
419
|
-
* Check a condition
|
|
420
|
-
*/
|
|
421
|
-
checkCondition(condition: QuestCondition): boolean;
|
|
422
|
-
/**
|
|
423
|
-
* Compare values
|
|
424
|
-
*/
|
|
425
|
-
private compareValue;
|
|
426
|
-
/**
|
|
427
|
-
* Check quest availability
|
|
428
|
-
*/
|
|
429
|
-
private checkQuestAvailability;
|
|
430
|
-
/**
|
|
431
|
-
* Start condition checking loop
|
|
432
|
-
*/
|
|
433
|
-
private startConditionChecking;
|
|
434
|
-
/**
|
|
435
|
-
* Check all conditions
|
|
436
|
-
*/
|
|
437
|
-
private checkAllConditions;
|
|
438
|
-
/**
|
|
439
|
-
* Set player level
|
|
440
|
-
*/
|
|
441
|
-
setPlayerLevel(level: number): void;
|
|
442
|
-
/**
|
|
443
|
-
* Set player flag
|
|
444
|
-
*/
|
|
445
|
-
setFlag(name: string, value: boolean): void;
|
|
446
|
-
/**
|
|
447
|
-
* Set player reputation
|
|
448
|
-
*/
|
|
449
|
-
setReputation(faction: string, value: number): void;
|
|
450
|
-
/**
|
|
451
|
-
* Add reputation
|
|
452
|
-
*/
|
|
453
|
-
addReputation(faction: string, amount: number): void;
|
|
454
|
-
/**
|
|
455
|
-
* Add journal entry
|
|
456
|
-
*/
|
|
457
|
-
private addJournalEntry;
|
|
458
|
-
/**
|
|
459
|
-
* Get journal entries
|
|
460
|
-
*/
|
|
461
|
-
getJournal(): JournalEntry[];
|
|
462
|
-
/**
|
|
463
|
-
* Get journal for quest
|
|
464
|
-
*/
|
|
465
|
-
getQuestJournal(questId: QuestId): JournalEntry[];
|
|
466
|
-
/**
|
|
467
|
-
* Clear journal
|
|
468
|
-
*/
|
|
469
|
-
clearJournal(): void;
|
|
470
|
-
/**
|
|
471
|
-
* Create quest instance
|
|
472
|
-
*/
|
|
473
|
-
private createQuestInstance;
|
|
474
|
-
/**
|
|
475
|
-
* Emit error event
|
|
476
|
-
*/
|
|
477
|
-
private emitError;
|
|
478
|
-
/**
|
|
479
|
-
* Get statistics
|
|
480
|
-
*/
|
|
481
|
-
getStats(): {
|
|
482
|
-
totalQuests: number;
|
|
483
|
-
activeQuests: number;
|
|
484
|
-
completedQuests: number;
|
|
485
|
-
failedQuests: number;
|
|
486
|
-
availableQuests: number;
|
|
487
|
-
trackedQuests: number;
|
|
488
|
-
totalChains: number;
|
|
489
|
-
completedChains: number;
|
|
490
|
-
journalEntries: number;
|
|
491
|
-
markerCount: number;
|
|
492
|
-
};
|
|
493
|
-
/**
|
|
494
|
-
* Export state for saving
|
|
495
|
-
*/
|
|
496
|
-
exportState(): {
|
|
497
|
-
quests: Array<{
|
|
498
|
-
id: QuestId;
|
|
499
|
-
state: QuestState;
|
|
500
|
-
objectives: Array<{
|
|
501
|
-
id: ObjectiveId;
|
|
502
|
-
state: ObjectiveState;
|
|
503
|
-
currentCount: number;
|
|
504
|
-
}>;
|
|
505
|
-
currentStage?: string;
|
|
506
|
-
startTime?: number;
|
|
507
|
-
completionTime?: number;
|
|
508
|
-
completionCount: number;
|
|
509
|
-
isTracked: boolean;
|
|
510
|
-
}>;
|
|
511
|
-
chains: Array<{
|
|
512
|
-
id: ChainId;
|
|
513
|
-
currentQuestIndex: number;
|
|
514
|
-
completedQuests: QuestId[];
|
|
515
|
-
isComplete: boolean;
|
|
516
|
-
}>;
|
|
517
|
-
playerLevel: number;
|
|
518
|
-
flags: Record<string, boolean>;
|
|
519
|
-
reputation: Record<string, number>;
|
|
520
|
-
journal: JournalEntry[];
|
|
521
|
-
};
|
|
522
|
-
/**
|
|
523
|
-
* Import state
|
|
524
|
-
*/
|
|
525
|
-
importState(data: ReturnType<typeof this.exportState>): void;
|
|
526
|
-
/**
|
|
527
|
-
* Destroy the quest system
|
|
528
|
-
*/
|
|
529
|
-
destroy(): void;
|
|
530
|
-
}
|
|
531
|
-
/**
|
|
532
|
-
* Create a quest system
|
|
533
|
-
*/
|
|
534
|
-
export declare function createQuestSystem(config?: Partial<QuestConfig>): NiceQuest;
|
|
535
|
-
/**
|
|
536
|
-
* Fluent builder for creating quests
|
|
537
|
-
*/
|
|
538
|
-
export declare class QuestBuilder {
|
|
539
|
-
private quest;
|
|
540
|
-
constructor(id: QuestId, name: string, category?: QuestCategory);
|
|
541
|
-
description(desc: string): this;
|
|
542
|
-
shortDescription(desc: string): this;
|
|
543
|
-
difficulty(d: QuestDifficulty): this;
|
|
544
|
-
levelRequirement(level: number): this;
|
|
545
|
-
levelRecommended(level: number): this;
|
|
546
|
-
prerequisite(condition: QuestCondition): this;
|
|
547
|
-
requiresQuest(questId: QuestId, state?: QuestState): this;
|
|
548
|
-
requiresLevel(level: number): this;
|
|
549
|
-
questGiver(npcId: NpcId): this;
|
|
550
|
-
turnIn(npcId: NpcId): this;
|
|
551
|
-
objective(id: ObjectiveId, type: ObjectiveType, description: string, requiredCount?: number): ObjectiveBuilder;
|
|
552
|
-
collectObjective(id: ObjectiveId, itemId: string, description: string, count?: number): this;
|
|
553
|
-
killObjective(id: ObjectiveId, enemyId: string, description: string, count?: number): this;
|
|
554
|
-
talkObjective(id: ObjectiveId, npcId: NpcId, description: string): this;
|
|
555
|
-
exploreObjective(id: ObjectiveId, description: string, location: Vec3, radius?: number): this;
|
|
556
|
-
reward(type: Reward['type'], id?: string, amount?: number): this;
|
|
557
|
-
rewardItem(itemId: string, amount?: number): this;
|
|
558
|
-
rewardCurrency(currencyId: string, amount: number): this;
|
|
559
|
-
rewardExperience(amount: number): this;
|
|
560
|
-
rewardReputation(factionId: string, amount: number): this;
|
|
561
|
-
repeatable(cooldown?: number): this;
|
|
562
|
-
timeLimit(ms: number): this;
|
|
563
|
-
hidden(): this;
|
|
564
|
-
autoAccept(): this;
|
|
565
|
-
autoComplete(): this;
|
|
566
|
-
cannotAbandon(): this;
|
|
567
|
-
failOnAbandon(): this;
|
|
568
|
-
chain(chainId: ChainId, order: number): this;
|
|
569
|
-
tags(...tags: string[]): this;
|
|
570
|
-
icon(icon: string): this;
|
|
571
|
-
onStart(callback: () => void): this;
|
|
572
|
-
onComplete(callback: () => void): this;
|
|
573
|
-
onFail(callback: () => void): this;
|
|
574
|
-
onAbandon(callback: () => void): this;
|
|
575
|
-
build(): QuestDefinition;
|
|
576
|
-
}
|
|
577
|
-
/**
|
|
578
|
-
* Objective builder
|
|
579
|
-
*/
|
|
580
|
-
export declare class ObjectiveBuilder {
|
|
581
|
-
private parent;
|
|
582
|
-
private objective;
|
|
583
|
-
constructor(parent: QuestBuilder, objective: ObjectiveDefinition);
|
|
584
|
-
target(targetId: string): this;
|
|
585
|
-
location(loc: Vec3, radius?: number): this;
|
|
586
|
-
optional(): this;
|
|
587
|
-
hidden(): this;
|
|
588
|
-
timeLimit(ms: number): this;
|
|
589
|
-
dependsOn(...objectiveIds: ObjectiveId[]): this;
|
|
590
|
-
revealWhen(condition: QuestCondition): this;
|
|
591
|
-
failWhen(condition: QuestCondition): this;
|
|
592
|
-
onComplete(callback: () => void): this;
|
|
593
|
-
onFail(callback: () => void): this;
|
|
594
|
-
marker(position: Vec3, type?: QuestMarker['type'], label?: string): this;
|
|
595
|
-
done(): QuestBuilder;
|
|
596
|
-
}
|
|
597
|
-
/**
|
|
598
|
-
* Create a quest builder
|
|
599
|
-
*/
|
|
600
|
-
export declare function quest(id: QuestId, name: string, category?: QuestCategory): QuestBuilder;
|
|
601
|
-
/**
|
|
602
|
-
* Create a quest chain
|
|
603
|
-
*/
|
|
604
|
-
export declare function questChain(id: ChainId, name: string, quests: QuestId[], isLinear?: boolean): QuestChain;
|
|
605
|
-
/**
|
|
606
|
-
* Create a level condition
|
|
607
|
-
*/
|
|
608
|
-
export declare function levelCondition(level: number, operator?: QuestCondition['operator']): QuestCondition;
|
|
609
|
-
/**
|
|
610
|
-
* Create a quest condition
|
|
611
|
-
*/
|
|
612
|
-
export declare function questCondition(questId: QuestId, state?: QuestState): QuestCondition;
|
|
613
|
-
/**
|
|
614
|
-
* Create a flag condition
|
|
615
|
-
*/
|
|
616
|
-
export declare function flagCondition(flagName: string, value?: boolean): QuestCondition;
|
|
617
|
-
/**
|
|
618
|
-
* Create a reputation condition
|
|
619
|
-
*/
|
|
620
|
-
export declare function reputationCondition(faction: string, value: number, operator?: QuestCondition['operator']): QuestCondition;
|