mirror of
https://github.com/EQEmu/Server.git
synced 2026-08-30 05:28:13 +00:00
[Quest API] Add Timer related methods to Mobs in Perl/Lua (#3133)
* [Quest API] Add Timer related methods to Mobs in Perl/Lua # Perl - Add `quest::ispausedtimer(timer_name)`. - Add `quest::pausetimer(timer_name)`. - Add `quest::resumetimer(timer_name)`. - Add `$mob->GetRemainingTimeMS(timer_name)`. - Add `$mob->GetTimerDurationMS(timer_name)`. - Add `$mob->HasTimer(timer_name)`. - Add `$mob->IsPausedTimer(timer_name)`. - Add `$mob->PauseTimer(timer_name)`. - Add `$mob->ResumeTimer(timer_name)`. - Add `$mob->SetTimer(timer_name)`. - Add `$mob->SetTimerMS(timer_name)`. - Add `$mob->StopTimer(timer_name)`. # Lua - Add `mob:GetRemainingTimeMS(timer_name)`. - Add `mob:GetTimerDurationMS(timer_name)`. - Add `mob:HasTimer(timer_name)`. - Add `mob:IsPausedTimer(timer_name)`. - Add `mob:PauseTimer(timer_name)`. - Add `mob:ResumeTimer(timer_name)`. - Add `mob:SetTimer(timer_name)`. - Add `mob:SetTimerMS(timer_name)`. - Add `mob:StopTimer(timer_name)`. # Notes - The mob-based methods allow operators to loop entity list or whatever to set, stop, resume, pause, etc for timers. * StopAllTimers() * Update questmgr.cpp
This commit is contained in:
+54
-57
@@ -458,7 +458,7 @@ void QuestManager::ZoneRaid(const char *zone_name) {
|
||||
}
|
||||
}
|
||||
|
||||
void QuestManager::settimer(const char *timer_name, int seconds) {
|
||||
void QuestManager::settimer(const char* timer_name, int seconds, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
if(questitem) {
|
||||
@@ -469,9 +469,11 @@ void QuestManager::settimer(const char *timer_name, int seconds) {
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
|
||||
end = QTimerList.end();
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
while (cur != end) {
|
||||
if(cur->mob && cur->mob == owner && cur->name == timer_name)
|
||||
{
|
||||
if (cur->mob && cur->mob == m && cur->name == timer_name) {
|
||||
cur->Timer_.Enable();
|
||||
cur->Timer_.Start(seconds * 1000, false);
|
||||
return;
|
||||
@@ -482,7 +484,7 @@ void QuestManager::settimer(const char *timer_name, int seconds) {
|
||||
QTimerList.push_back(QuestTimer(seconds * 1000, owner, timer_name));
|
||||
}
|
||||
|
||||
void QuestManager::settimerMS(const char *timer_name, int milliseconds) {
|
||||
void QuestManager::settimerMS(const char* timer_name, int milliseconds) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
if(questitem) {
|
||||
@@ -506,13 +508,13 @@ void QuestManager::settimerMS(const char *timer_name, int milliseconds) {
|
||||
QTimerList.push_back(QuestTimer(milliseconds, owner, timer_name));
|
||||
}
|
||||
|
||||
void QuestManager::settimerMS(const char *timer_name, int milliseconds, EQ::ItemInstance *inst) {
|
||||
void QuestManager::settimerMS(const char* timer_name, int milliseconds, EQ::ItemInstance *inst) {
|
||||
if (inst) {
|
||||
inst->SetTimer(timer_name, milliseconds);
|
||||
}
|
||||
}
|
||||
|
||||
void QuestManager::settimerMS(const char *timer_name, int milliseconds, Mob *mob) {
|
||||
void QuestManager::settimerMS(const char* timer_name, int milliseconds, Mob *mob) {
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
|
||||
end = QTimerList.end();
|
||||
@@ -529,7 +531,7 @@ void QuestManager::settimerMS(const char *timer_name, int milliseconds, Mob *mob
|
||||
QTimerList.push_back(QuestTimer(milliseconds, mob, timer_name));
|
||||
}
|
||||
|
||||
void QuestManager::stoptimer(const char *timer_name) {
|
||||
void QuestManager::stoptimer(const char* timer_name) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
if (questitem) {
|
||||
@@ -549,13 +551,13 @@ void QuestManager::stoptimer(const char *timer_name) {
|
||||
}
|
||||
}
|
||||
|
||||
void QuestManager::stoptimer(const char *timer_name, EQ::ItemInstance *inst) {
|
||||
void QuestManager::stoptimer(const char* timer_name, EQ::ItemInstance *inst) {
|
||||
if (inst) {
|
||||
inst->StopTimer(timer_name);
|
||||
}
|
||||
}
|
||||
|
||||
void QuestManager::stoptimer(const char *timer_name, Mob *mob) {
|
||||
void QuestManager::stoptimer(const char* timer_name, Mob *mob) {
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
|
||||
end = QTimerList.end();
|
||||
@@ -605,7 +607,7 @@ void QuestManager::stopalltimers(Mob *mob) {
|
||||
}
|
||||
}
|
||||
|
||||
void QuestManager::pausetimer(const char *timer_name) {
|
||||
void QuestManager::pausetimer(const char* timer_name, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
@@ -613,11 +615,11 @@ void QuestManager::pausetimer(const char *timer_name) {
|
||||
PausedTimer pt;
|
||||
uint32 milliseconds = 0;
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
pend = PTimerList.end();
|
||||
while (pcur != pend)
|
||||
{
|
||||
if (pcur->owner && pcur->owner == owner && pcur->name == timer_name)
|
||||
{
|
||||
while (pcur != pend) {
|
||||
if (pcur->owner && pcur->owner == m && pcur->name == timer_name) {
|
||||
LogQuests("Timer [{}] is already paused for [{}]. Returning", timer_name, owner->GetName());
|
||||
return;
|
||||
}
|
||||
@@ -625,10 +627,8 @@ void QuestManager::pausetimer(const char *timer_name) {
|
||||
}
|
||||
|
||||
end = QTimerList.end();
|
||||
while (cur != end)
|
||||
{
|
||||
if (cur->mob && cur->mob == owner && cur->name == timer_name)
|
||||
{
|
||||
while (cur != end) {
|
||||
if (cur->mob && cur->mob == m && cur->name == timer_name) {
|
||||
milliseconds = cur->Timer_.GetRemainingTime();
|
||||
QTimerList.erase(cur);
|
||||
break;
|
||||
@@ -644,7 +644,7 @@ void QuestManager::pausetimer(const char *timer_name) {
|
||||
PTimerList.push_back(pt);
|
||||
}
|
||||
|
||||
void QuestManager::resumetimer(const char *timer_name) {
|
||||
void QuestManager::resumetimer(const char* timer_name, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
@@ -652,11 +652,11 @@ void QuestManager::resumetimer(const char *timer_name) {
|
||||
PausedTimer pt;
|
||||
uint32 milliseconds = 0;
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
pend = PTimerList.end();
|
||||
while (pcur != pend)
|
||||
{
|
||||
if (pcur->owner && pcur->owner == owner && pcur->name == timer_name)
|
||||
{
|
||||
while (pcur != pend) {
|
||||
if (pcur->owner && pcur->owner == m && pcur->name == timer_name) {
|
||||
milliseconds = pcur->time;
|
||||
PTimerList.erase(pcur);
|
||||
break;
|
||||
@@ -664,40 +664,40 @@ void QuestManager::resumetimer(const char *timer_name) {
|
||||
++pcur;
|
||||
}
|
||||
|
||||
if (milliseconds == 0)
|
||||
{
|
||||
if (milliseconds == 0) {
|
||||
LogQuests("Paused timer [{}] not found or has expired. Returning", timer_name);
|
||||
return;
|
||||
}
|
||||
|
||||
end = QTimerList.end();
|
||||
while (cur != end)
|
||||
{
|
||||
if (cur->mob && cur->mob == owner && cur->name == timer_name)
|
||||
{
|
||||
while (cur != end) {
|
||||
if (cur->mob && cur->mob == m && cur->name == timer_name) {
|
||||
cur->Timer_.Enable();
|
||||
cur->Timer_.Start(milliseconds, false);
|
||||
LogQuests("Resuming timer [{}] for [{}] with [{}] ms remaining", timer_name, owner->GetName(), milliseconds);
|
||||
LogQuests("Resuming timer [{}] for [{}] with [{}] ms remaining",
|
||||
timer_name,
|
||||
owner->GetName(),
|
||||
milliseconds);
|
||||
return;
|
||||
}
|
||||
++cur;
|
||||
}
|
||||
|
||||
QTimerList.push_back(QuestTimer(milliseconds, owner, timer_name));
|
||||
QTimerList.push_back(QuestTimer(milliseconds, m, timer_name));
|
||||
LogQuests("Creating a new timer and resuming [{}] for [{}] with [{}] ms remaining", timer_name, owner->GetName(), milliseconds);
|
||||
|
||||
}
|
||||
|
||||
bool QuestManager::ispausedtimer(const char *timer_name) {
|
||||
bool QuestManager::ispausedtimer(const char* timer_name, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
std::list<PausedTimer>::iterator pcur = PTimerList.begin(), pend;
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
pend = PTimerList.end();
|
||||
while (pcur != pend)
|
||||
{
|
||||
if (pcur->owner && pcur->owner == owner && pcur->name == timer_name)
|
||||
{
|
||||
while (pcur != pend) {
|
||||
if (pcur->owner && pcur->owner == m && pcur->name == timer_name) {
|
||||
return true;
|
||||
}
|
||||
++pcur;
|
||||
@@ -706,18 +706,17 @@ bool QuestManager::ispausedtimer(const char *timer_name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool QuestManager::hastimer(const char *timer_name) {
|
||||
bool QuestManager::hastimer(const char* timer_name, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
end = QTimerList.end();
|
||||
while (cur != end)
|
||||
{
|
||||
if (cur->mob && cur->mob == owner && cur->name == timer_name)
|
||||
{
|
||||
if (cur->Timer_.Enabled())
|
||||
{
|
||||
while (cur != end) {
|
||||
if (cur->mob && cur->mob == m && cur->name == timer_name) {
|
||||
if (cur->Timer_.Enabled()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -726,18 +725,17 @@ bool QuestManager::hastimer(const char *timer_name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 QuestManager::getremainingtimeMS(const char *timer_name) {
|
||||
uint32 QuestManager::getremainingtimeMS(const char* timer_name, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
end = QTimerList.end();
|
||||
while (cur != end)
|
||||
{
|
||||
if (cur->mob && cur->mob == owner && cur->name == timer_name)
|
||||
{
|
||||
if (cur->Timer_.Enabled())
|
||||
{
|
||||
while (cur != end) {
|
||||
if (cur->mob && cur->mob == m && cur->name == timer_name) {
|
||||
if (cur->Timer_.Enabled()) {
|
||||
return cur->Timer_.GetRemainingTime();
|
||||
}
|
||||
}
|
||||
@@ -746,18 +744,17 @@ uint32 QuestManager::getremainingtimeMS(const char *timer_name) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32 QuestManager::gettimerdurationMS(const char *timer_name) {
|
||||
uint32 QuestManager::gettimerdurationMS(const char* timer_name, Mob* mob) {
|
||||
QuestManagerCurrentQuestVars();
|
||||
|
||||
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
|
||||
|
||||
const auto m = mob ? mob : owner;
|
||||
|
||||
end = QTimerList.end();
|
||||
while (cur != end)
|
||||
{
|
||||
if (cur->mob && cur->mob == owner && cur->name == timer_name)
|
||||
{
|
||||
if (cur->Timer_.Enabled())
|
||||
{
|
||||
while (cur != end) {
|
||||
if (cur->mob && cur->mob == m && cur->name == timer_name) {
|
||||
if (cur->Timer_.Enabled()) {
|
||||
return cur->Timer_.GetDuration();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user