Requires PEQ's Lua Multitasking Module:
https://code.google.com/p/projecteqq...ad_manager.lua
This is an example of using multitasking through co-routines in Lua to make timer based scripts on unique npcs easier to write:
Code:
--Some_Crazy_Boss.lua
local ThreadManager = require("thread_manager");
local evt;
function ability_one()
evt.self:Emote("begins to cast something electrical");
ThreadManager:Wait(2.5);
evt.self:Shout("Feel the thunder!");
end
function ability_two()
evt.self:Emote("begins to cast something fiery");
ThreadManager:Wait(2.5);
evt.self:Shout("Feel the fire!");
end
function ability_three()
evt.self:Emote("begins to cast something cold");
ThreadManager:Wait(2.5);
evt.self:Shout("Feel the freeze!");
end
function swapped_abilities()
local i = 0;
while true do
if(i == 0) then
ability_one();
i = 1;
elseif(i == 1)
ability_two();
i = 2;
else
ability_three();
i = 0;
end
ThreadManager:Wait(15.0);
end
end
function predictable()
while true do
ThreadManager:Wait(10.0);
evt.self:Emote("begins to cast something predictable");
ThreadManager:Wait(2.5);
evt.self:Shout("Feel the Predictableness!");
end
end
function event_combat(e)
if(e.joined) then
eq.set_timer("heartbeat", 500);
ThreadManager:Clear();
ThreadManager:Create("Predictable", predictable);
ThreadManager:Create("Swapping", swapped_abilities);
else
eq.stop_timer("heartbeat");
ThreadManager:Clear();
end
end
function event_timer(e)
evt = e;
ThreadManager:Resume("Predictable");
ThreadManager:Resume("Swapping");
end