Add EVENT_TICK for NPCs

This event fires at the start of the tick processing so we can
script on the actual tick.
This commit is contained in:
Michael Cook (mackal) 2015-08-13 22:30:49 -04:00
parent 1fc23beb78
commit fe0758c984
5 changed files with 64 additions and 58 deletions

View File

@ -113,7 +113,8 @@ const char *QuestEventSubroutines[_LargestEventID] = {
"EVENT_LEAVE_AREA", "EVENT_LEAVE_AREA",
"EVENT_RESPAWN", "EVENT_RESPAWN",
"EVENT_DEATH_COMPLETE", "EVENT_DEATH_COMPLETE",
"EVENT_UNHANDLED_OPCODE" "EVENT_UNHANDLED_OPCODE",
"EVENT_TICK"
}; };
PerlembParser::PerlembParser() : perl(nullptr) { PerlembParser::PerlembParser() : perl(nullptr) {

View File

@ -82,6 +82,7 @@ typedef enum {
EVENT_RESPAWN, EVENT_RESPAWN,
EVENT_DEATH_COMPLETE, EVENT_DEATH_COMPLETE,
EVENT_UNHANDLED_OPCODE, EVENT_UNHANDLED_OPCODE,
EVENT_TICK,
_LargestEventID _LargestEventID
} QuestEventID; } QuestEventID;

View File

@ -1713,7 +1713,8 @@ luabind::scope lua_register_events() {
luabind::value("enter_area", static_cast<int>(EVENT_ENTER_AREA)), luabind::value("enter_area", static_cast<int>(EVENT_ENTER_AREA)),
luabind::value("leave_area", static_cast<int>(EVENT_LEAVE_AREA)), luabind::value("leave_area", static_cast<int>(EVENT_LEAVE_AREA)),
luabind::value("death_complete", static_cast<int>(EVENT_DEATH_COMPLETE)), luabind::value("death_complete", static_cast<int>(EVENT_DEATH_COMPLETE)),
luabind::value("unhandled_opcode", static_cast<int>(EVENT_UNHANDLED_OPCODE)) luabind::value("unhandled_opcode", static_cast<int>(EVENT_UNHANDLED_OPCODE)),
luabind::value("tick", static_cast<int>(EVENT_TICK))
]; ];
} }

View File

@ -116,7 +116,8 @@ const char *LuaEvents[_LargestEventID] = {
"event_leave_area", "event_leave_area",
"event_respawn", "event_respawn",
"event_death_complete", "event_death_complete",
"event_unhandled_opcode" "event_unhandled_opcode",
"event_tick"
}; };
extern Zone *zone; extern Zone *zone;

View File

@ -37,6 +37,7 @@
#include "string_ids.h" #include "string_ids.h"
#include "spawn2.h" #include "spawn2.h"
#include "zone.h" #include "zone.h"
#include "quest_parser_collection.h"
#include <cctype> #include <cctype>
#include <stdio.h> #include <stdio.h>
@ -601,6 +602,7 @@ bool NPC::Process()
if(tic_timer.Check()) if(tic_timer.Check())
{ {
parse->EventNPC(EVENT_TICK, this, nullptr, "", 0);
BuffProcess(); BuffProcess();
if(curfp) if(curfp)