Browse Source

Added ClearRunback() lua command. Stops npc from returning to spawn point.

Devn00b 2 years ago
parent
commit
c2d06a44fa

+ 16 - 0
EQ2/source/WorldServer/LuaFunctions.cpp

@@ -6738,6 +6738,22 @@ int EQ2Emu_lua_CompareSpawns(lua_State* state) {
 	return 1;
 }
 
+int EQ2Emu_lua_ClearRunback(lua_State* state){
+	if (!lua_interface)
+		return 0;
+	Spawn* spawn = lua_interface->GetSpawn(state);
+	if (!spawn) {
+		lua_interface->LogError("%s: LUA ClearRunback command error: spawn is not valid", lua_interface->GetScriptName(state));
+		return 0;
+	}
+	if (!spawn->IsNPC()) {
+		lua_interface->LogError("%s: LUA ClearRunback command error: spawn is not an NPC", lua_interface->GetScriptName(state));
+		return 0;
+	}
+	((NPC*)spawn)->ClearRunback();
+	return 0;
+}
+
 int EQ2Emu_lua_Runback(lua_State* state) {
 	if (!lua_interface)
 		return 0;

+ 1 - 0
EQ2/source/WorldServer/LuaFunctions.h

@@ -357,6 +357,7 @@ int EQ2Emu_lua_IsPet(lua_State* state);
 int EQ2Emu_lua_GetOwner(lua_State* state);
 int EQ2Emu_lua_SetInCombat(lua_State* state);
 int EQ2Emu_lua_CompareSpawns(lua_State* state);
+int EQ2Emu_lua_ClearRunback(lua_State* state);
 int EQ2Emu_lua_Runback(lua_State* state);
 int EQ2Emu_lua_GetRunbackDistance(lua_State* state);
 int EQ2Emu_lua_IsCasting(lua_State* state);

+ 1 - 0
EQ2/source/WorldServer/LuaInterface.cpp

@@ -1219,6 +1219,7 @@ void LuaInterface::RegisterFunctions(lua_State* state) {
 	lua_register(state, "GetOwner", EQ2Emu_lua_GetOwner);
 	lua_register(state, "SetInCombat", EQ2Emu_lua_SetInCombat);
 	lua_register(state, "CompareSpawns", EQ2Emu_lua_CompareSpawns);
+	lua_register(state, "ClearRunback", EQ2Emu_lua_ClearRunback);
 	lua_register(state, "Runback", EQ2Emu_lua_Runback);
 	lua_register(state, "GetRunbackDistance", EQ2Emu_lua_GetRunbackDistance);
 	lua_register(state, "IsCasting", EQ2Emu_lua_IsCasting);