feat(editor): quest editor with objectives, rewards, and quest chains

- New Quest mode (key 6) with full quest creation panel:
  - Title, description, required level
  - Quest giver / turn-in NPC ID linkage
  - Up to 4 objectives: Kill, Collect, Talk, Explore, Escort, Use Object
  - Rewards: XP and gold
  - Quest chain support via nextQuestId linking
- Quest list showing all created quests with level and objective count
- Save quests to JSON (included in Export Zone package)
- Foundation for campaign system: create quest chains across NPCs,
  link objectives to placed creatures, build storylines
This commit is contained in:
Kelsi 2026-05-05 06:10:14 -07:00
parent 124ff5a54a
commit f59d79537a
7 changed files with 239 additions and 2 deletions

View file

@ -8,6 +8,7 @@
#include "object_placer.hpp"
#include "npc_spawner.hpp"
#include "npc_presets.hpp"
#include "quest_editor.hpp"
#include "zone_manifest.hpp"
#include "asset_browser.hpp"
#include "core/window.hpp"
@ -18,7 +19,7 @@
namespace wowee {
namespace editor {
enum class EditorMode { Sculpt, Paint, PlaceObject, Water, NPC };
enum class EditorMode { Sculpt, Paint, PlaceObject, Water, NPC, Quest };
class EditorApp {
public:
@ -47,6 +48,7 @@ public:
ObjectPlacer& getObjectPlacer() { return objectPlacer_; }
NpcSpawner& getNpcSpawner() { return npcSpawner_; }
NpcPresets& getNpcPresets() { return npcPresets_; }
QuestEditor& getQuestEditor() { return questEditor_; }
AssetBrowser& getAssetBrowser() { return assetBrowser_; }
rendering::TerrainRenderer* getTerrainRenderer();
rendering::M2Renderer* getM2Renderer() { return viewport_.getM2Renderer(); }
@ -110,6 +112,7 @@ private:
ObjectPlacer objectPlacer_;
NpcSpawner npcSpawner_;
NpcPresets npcPresets_;
QuestEditor questEditor_;
AssetBrowser assetBrowser_;
pipeline::ADTTerrain terrain_;