57{
58 state->set_function("cast_unit_to_npc",
59 [](std::shared_ptr<Unit> e)
60 {
61 return e->template downcast<Horizon::Zone::Units::NPC>();
62 });
63
64 state->set_function("NewNPC",
65 [
this] (std::string
const &name, std::string
const &map_name, uint16_t x, uint16_t y, uint32_t job_id,
directions dir, std::string
const &script_file) {
66 std::shared_ptr<Map> map;
67
69
70 if (segment_number == 0)
71 return;
72
74
75 if (map == nullptr)
76 return;
77
78 std::shared_ptr<NPC> npc = std::make_shared<NPC>(name, map, x, y, job_id, dir);
79 npc->initialize();
80
82 return;
83
92
93 std::shared_ptr<npc_db_data> p_nd = std::make_shared<npc_db_data>(nd);
94
96 });
97
98 state->set_function("DupNPC",
99 [
this] (std::string
const &name, std::string
const &map_name, uint16_t x, uint16_t y, uint32_t job_id,
directions dir, std::shared_ptr<NPC> duplicate) {
100
101 std::shared_ptr<Map> map;
102
104
105 if (segment_number == 0)
106 return;
107
109
110 if (map == nullptr)
111 return;
112
113 std::shared_ptr<NPC> npc = std::make_shared<NPC>(name, map, x, y, job_id, dir);
114 npc->initialize();
115
117 return;
118
125
126 std::shared_ptr<npc_db_data> dup_nd =
_npc_db.
at(duplicate->guid());
127
128 nd.
script = dup_nd->script;
130
131 std::shared_ptr<npc_db_data> p_nd = std::make_shared<npc_db_data>(nd);
132
134 });
135
136 state->set_function("SilentNPC",
137 [
this] (std::string
const &name, std::string
const &map_name, uint16_t x, uint16_t y, uint32_t job_id,
directions dir) {
138 std::shared_ptr<Map> map;
139
141
142 if (segment_number == 0)
143 return;
144
146
147 if (map == nullptr)
148 return;
149
150 std::shared_ptr<NPC> npc = std::make_shared<NPC>(name, map, x, y, job_id, dir);
151 npc->initialize();
152
154 return;
155
162
163 std::shared_ptr<npc_db_data> p_nd = std::make_shared<npc_db_data>(nd);
164
166 });
167
168 state->set_function("Warp",
169 [this] (std::string const &name, std::string const &map_name, uint16_t x, uint16_t y, std::string const &script, uint16_t trigger_range)
170 {
171 std::shared_ptr<Map> map;
172
174
175 if (segment_number == 0)
176 return;
177
179
180 if (map == nullptr)
181 return;
182
183 std::shared_ptr<NPC> npc = std::make_shared<NPC>(name, map, x, y, script);
184
185 npc->initialize();
186
195
196 std::shared_ptr<npc_db_data> p_nd = std::make_shared<npc_db_data>(nd);
197
199 });
200}
Coordinates< MAX_CELLS_PER_MAP > MapCoords
Definition: GridDefinitions.hpp:83
@ RESOURCE_PRIORITY_PRIMARY
Definition: Server.hpp:79
directions
Definition: UnitDefinitions.hpp:75
Definition: GameLogicProcess.hpp:48
std::shared_ptr< npc_db_data > get_npc_from_db(uint32_t guid)
Definition: NPCComponent.hpp:53
void add_npc_to_db(uint32_t guid, std::shared_ptr< npc_db_data > const &data)
Definition: NPCComponent.hpp:52
@ RUNTIME_GAMELOGIC
Definition: System.hpp:86
Definition: NPCDefinitions.hpp:66
directions direction
Definition: NPCDefinitions.hpp:70
MapCoords coords
Definition: NPCDefinitions.hpp:69
bool script_is_file
Definition: NPCDefinitions.hpp:73
std::string script
Definition: NPCDefinitions.hpp:72
std::string npc_name
Definition: NPCDefinitions.hpp:67
uint16_t trigger_range
Definition: NPCDefinitions.hpp:74
std::shared_ptr< Horizon::Zone::Units::NPC > _npc
Definition: NPCDefinitions.hpp:75
std::string map_name
Definition: NPCDefinitions.hpp:68