Kelsidavis-WoWee/tools/editor/sql_exporter.hpp
Kelsi 446b0970dc fix(sql): translate spawn.id to creature SQL entry for quest links
The editor stores quest hooks (questGiverNpcId, turnInNpcId, KillCreature
targetName) as the spawner's per-spawn .id sequence. The SQL exporter
writes creature_template entries as 'creatureStartEntry + index'. The
two number spaces are different, so quest links pointed at non-existent
creature entries. Added a spawn.id -> SQL entry map built from the
spawns vector and used it in:
  - RequiredNpcOrGo[1..4] for KillCreature objectives
  - creature_queststarter / creature_questender
2026-05-06 03:33:36 -07:00

39 lines
1.5 KiB
C++

#pragma once
#include "npc_spawner.hpp"
#include "quest_editor.hpp"
#include <string>
#include <cstdint>
namespace wowee {
namespace editor {
class SQLExporter {
public:
// Export creature spawns as AzerothCore/TrinityCore SQL
static bool exportCreatures(const std::vector<CreatureSpawn>& spawns,
const std::string& path,
uint32_t mapId = 9000,
uint32_t startEntry = 100000);
// Export quest definitions as AzerothCore quest_template SQL.
// `spawns` is used to translate the editor's per-spawn .id values stored
// in quest links (questGiverNpcId, turnInNpcId, KillCreature targetName)
// into the matching SQL `entry` (which is `creatureStartEntry + index`).
// Pass an empty spawns vector if no translation is needed.
static bool exportQuests(const std::vector<Quest>& quests,
const std::string& path,
uint32_t startEntry = 100000,
const std::vector<CreatureSpawn>* spawns = nullptr,
uint32_t creatureStartEntry = 100000);
// Export everything to a single SQL file
static bool exportAll(const std::vector<CreatureSpawn>& spawns,
const std::vector<Quest>& quests,
const std::string& path,
uint32_t mapId = 9000,
uint32_t startEntry = 100000);
};
} // namespace editor
} // namespace wowee