Compare commits

..

10 Commits

16 changed files with 2981 additions and 3039 deletions
+2 -5
View File
@@ -4,13 +4,10 @@
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/mysql",
"/usr/local/include",
"/usr/include",
"/usr/include/lua5.1"
"/usr/include/mysql"
],
"defines": [],
"compilerPath": "/usr/bin/c++",
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17"
}
-2
View File
@@ -1,8 +1,6 @@
// system use
N(OP_ExploreUnknown),
// start (please add new opcodes in descending order and re-order any name changes where applicable)
N(OP_0x0193),
N(OP_0x0347),
N(OP_AAAction),
N(OP_AAExpUpdate),
N(OP_AcceptNewTask),
+102 -102
View File
@@ -37,35 +37,35 @@
values [catname] -> show the values of all rules in the specified category/
*/
const char *RuleManager::s_categoryNames[_CatCount+1] = {
const char* RuleManager::s_categoryNames[_CatCount + 1] = {
#define RULE_CATEGORY(catname) \
#catname ,
#include "ruletypes.h"
"InvalidCategory"
};
const RuleManager::RuleInfo RuleManager::s_RuleInfo[_IntRuleCount+_RealRuleCount+_BoolRuleCount+1] = {
const RuleManager::RuleInfo RuleManager::s_RuleInfo[_IntRuleCount + _RealRuleCount + _BoolRuleCount + 1] = {
/* this is done in three steps so we can reliably get to them by index*/
#define RULE_INT(cat, rule, default_value, notes) \
{ #cat ":" #rule, Category__##cat, IntRule, Int__##rule, notes },
{ #cat ":" #rule, Category__##cat, IntRule, Int__##cat__##rule, notes },
#include "ruletypes.h"
#define RULE_REAL(cat, rule, default_value, notes) \
{ #cat ":" #rule, Category__##cat, RealRule, Real__##rule, notes },
{ #cat ":" #rule, Category__##cat, RealRule, Real__##cat__##rule, notes },
#include "ruletypes.h"
#define RULE_BOOL(cat, rule, default_value, notes) \
{ #cat ":" #rule, Category__##cat, BoolRule, Bool__##rule, notes },
{ #cat ":" #rule, Category__##cat, BoolRule, Bool__##cat__##rule, notes },
#include "ruletypes.h"
{ "Invalid Rule", _CatCount, IntRule }
};
RuleManager::RuleManager()
: m_activeRuleset(0),
: m_activeRuleset(0),
m_activeName("default")
{
ResetRules(false);
}
RuleManager::CategoryType RuleManager::FindCategory(const char *catname) {
RuleManager::CategoryType RuleManager::FindCategory(const char* catname) {
int i;
for (i = 0; i < _CatCount; i++) {
if (strcasecmp(catname, s_categoryNames[i]) == 0)
@@ -74,7 +74,7 @@ RuleManager::CategoryType RuleManager::FindCategory(const char *catname) {
return(InvalidCategory);
}
bool RuleManager::ListRules(const char *catname, std::vector<const char *> &into) {
bool RuleManager::ListRules(const char* catname, std::vector<const char*>& into) {
CategoryType cat = InvalidCategory;
if (catname != nullptr) {
cat = FindCategory(catname);
@@ -86,7 +86,7 @@ bool RuleManager::ListRules(const char *catname, std::vector<const char *> &into
int i;
int rule_count = CountRules();
for (i = 0; i < rule_count; i++) {
const RuleInfo &rule = s_RuleInfo[i];
const RuleInfo& rule = s_RuleInfo[i];
if (catname == nullptr || cat == rule.category) {
into.push_back(rule.name);
}
@@ -94,7 +94,7 @@ bool RuleManager::ListRules(const char *catname, std::vector<const char *> &into
return(true);
}
bool RuleManager::ListCategories(std::vector<const char *> &into) {
bool RuleManager::ListCategories(std::vector<const char*>& into) {
int i;
for (i = 0; i < _CatCount; i++) {
into.push_back(s_categoryNames[i]);
@@ -102,24 +102,24 @@ bool RuleManager::ListCategories(std::vector<const char *> &into) {
return(true);
}
bool RuleManager::GetRule(const char *rule_name, std::string &return_value) {
bool RuleManager::GetRule(const char* rule_name, std::string& return_value) {
RuleType type;
uint16 index;
if (!_FindRule(rule_name, type, index))
return false;
char tmp[255] = "";
switch(type) {
case IntRule:
sprintf(tmp, "%i", m_RuleIntValues[index]);
break;
case RealRule:
sprintf(tmp, "%f", m_RuleRealValues[index]);
break;
case BoolRule:
std::string tmp_val = m_RuleBoolValues[index] ? "true" : "false";
sprintf(tmp, "%s", tmp_val.c_str());
break;
switch (type) {
case IntRule:
sprintf(tmp, "%i", m_RuleIntValues[index]);
break;
case RealRule:
sprintf(tmp, "%f", m_RuleRealValues[index]);
break;
case BoolRule:
std::string tmp_val = m_RuleBoolValues[index] ? "true" : "false";
sprintf(tmp, "%s", tmp_val.c_str());
break;
}
return_value = tmp;
@@ -127,13 +127,13 @@ bool RuleManager::GetRule(const char *rule_name, std::string &return_value) {
return true;
}
bool RuleManager::SetRule(const char *rule_name, const char *rule_value, Database *database, bool db_save, bool reload) {
if(rule_name == nullptr || rule_value == nullptr)
bool RuleManager::SetRule(const char* rule_name, const char* rule_value, Database* database, bool db_save, bool reload) {
if (rule_name == nullptr || rule_value == nullptr)
return(false);
RuleType type;
uint16 index;
if(!_FindRule(rule_name, type, index))
if (!_FindRule(rule_name, type, index))
return(false);
if (reload) {
@@ -143,26 +143,26 @@ bool RuleManager::SetRule(const char *rule_name, const char *rule_value, Databas
return(false);
}
switch(type) {
case IntRule:
m_RuleIntValues[index] = atoi(rule_value);
LogRules("Set rule [{}] to value [{}]", rule_name, m_RuleIntValues[index]);
break;
case RealRule:
m_RuleRealValues[index] = atof(rule_value);
LogRules("Set rule [{}] to value [{}]", rule_name, m_RuleRealValues[index]);
break;
case BoolRule:
uint32 val = 0;
if (!strcasecmp(rule_value, "on") || !strcasecmp(rule_value, "true") || !strcasecmp(rule_value, "yes") || !strcasecmp(rule_value, "enabled") || !strcmp(rule_value, "1"))
val = 1;
switch (type) {
case IntRule:
m_RuleIntValues[index] = atoi(rule_value);
LogRules("Set rule [{}] to value [{}]", rule_name, m_RuleIntValues[index]);
break;
case RealRule:
m_RuleRealValues[index] = atof(rule_value);
LogRules("Set rule [{}] to value [{}]", rule_name, m_RuleRealValues[index]);
break;
case BoolRule:
uint32 val = 0;
if (!strcasecmp(rule_value, "on") || !strcasecmp(rule_value, "true") || !strcasecmp(rule_value, "yes") || !strcasecmp(rule_value, "enabled") || !strcmp(rule_value, "1"))
val = 1;
m_RuleBoolValues[index] = val;
LogRules("Set rule [{}] to value [{}]", rule_name, m_RuleBoolValues[index] == 1 ? "true" : "false");
break;
m_RuleBoolValues[index] = val;
LogRules("Set rule [{}] to value [{}]", rule_name, m_RuleBoolValues[index] == 1 ? "true" : "false");
break;
}
if(db_save)
if (db_save)
_SaveRule(database, type, index);
return(true);
@@ -179,13 +179,13 @@ void RuleManager::ResetRules(bool reload) {
}
Log(Logs::Detail, Logs::Rules, "Resetting running rules to default values");
#define RULE_INT(cat, rule, default_value, notes) \
m_RuleIntValues[ Int__##rule ] = default_value;
#define RULE_REAL(cat, rule, default_value, notes) \
m_RuleRealValues[ Real__##rule ] = default_value;
#define RULE_BOOL(cat, rule, default_value, notes) \
m_RuleBoolValues[ Bool__##rule ] = default_value;
#include "ruletypes.h"
#define RULE_INT(cat, rule, default_value, notes) \
m_RuleIntValues[ Int__##cat__##rule ] = default_value;
#define RULE_REAL(cat, rule, default_value, notes) \
m_RuleRealValues[ Real__##cat__##rule ] = default_value;
#define RULE_BOOL(cat, rule, default_value, notes) \
m_RuleBoolValues[ Bool__##cat__##rule ] = default_value;
#include "ruletypes.h"
// restore these rules to their pre-reset values
if (reload) {
@@ -194,14 +194,14 @@ void RuleManager::ResetRules(bool reload) {
}
}
bool RuleManager::_FindRule(const char *rule_name, RuleType &type_into, uint16 &index_into) {
bool RuleManager::_FindRule(const char* rule_name, RuleType& type_into, uint16& index_into) {
if (rule_name == nullptr)
return(false);
int i;
int rule_count = CountRules();
for (i = 0; i < rule_count; i++) {
const RuleInfo &rule = s_RuleInfo[i];
const RuleInfo& rule = s_RuleInfo[i];
if (strcmp(rule_name, rule.name) == 0) {
type_into = rule.type;
index_into = rule.rule_index;
@@ -213,38 +213,38 @@ bool RuleManager::_FindRule(const char *rule_name, RuleType &type_into, uint16 &
}
//assumes index is valid!
const char *RuleManager::_GetRuleName(RuleType type, uint16 index) {
const char* RuleManager::_GetRuleName(RuleType type, uint16 index) {
switch (type) {
case IntRule:
return(s_RuleInfo[index].name);
case RealRule:
return(s_RuleInfo[index+_IntRuleCount].name);
return(s_RuleInfo[index + _IntRuleCount].name);
case BoolRule:
return(s_RuleInfo[index+_IntRuleCount+_RealRuleCount].name);
return(s_RuleInfo[index + _IntRuleCount + _RealRuleCount].name);
default:
break;
}
//should never happen
return(s_RuleInfo[_IntRuleCount+_RealRuleCount+_BoolRuleCount].name); // no need to create a string when one already exists...
return(s_RuleInfo[_IntRuleCount + _RealRuleCount + _BoolRuleCount].name); // no need to create a string when one already exists...
}
//assumes index is valid!
const std::string &RuleManager::_GetRuleNotes(RuleType type, uint16 index) {
const std::string& RuleManager::_GetRuleNotes(RuleType type, uint16 index) {
switch (type) {
case IntRule:
return(s_RuleInfo[index].notes);
case RealRule:
return(s_RuleInfo[index+_IntRuleCount].notes);
return(s_RuleInfo[index + _IntRuleCount].notes);
case BoolRule:
return(s_RuleInfo[index+_IntRuleCount+_RealRuleCount].notes);
return(s_RuleInfo[index + _IntRuleCount + _RealRuleCount].notes);
default:
break;
}
//should never happen
return(s_RuleInfo[_IntRuleCount+_RealRuleCount+_BoolRuleCount].notes);
return(s_RuleInfo[_IntRuleCount + _RealRuleCount + _BoolRuleCount].notes);
}
bool RuleManager::LoadRules(Database *database, const char *ruleset_name, bool reload) {
bool RuleManager::LoadRules(Database* database, const char* ruleset_name, bool reload) {
int ruleset_id = this->GetRulesetID(database, ruleset_name);
if (ruleset_id < 0) {
@@ -308,8 +308,8 @@ bool RuleManager::LoadRules(Database *database, const char *ruleset_name, bool r
return true;
}
void RuleManager::SaveRules(Database *database, const char *ruleset_name) {
void RuleManager::SaveRules(Database* database, const char* ruleset_name) {
if (ruleset_name != nullptr) {
//saving to a specific name
if (m_activeName != ruleset_name) {
@@ -340,43 +340,43 @@ void RuleManager::SaveRules(Database *database, const char *ruleset_name) {
}
}
void RuleManager::_SaveRule(Database *database, RuleType type, uint16 index) {
void RuleManager::_SaveRule(Database* database, RuleType type, uint16 index) {
char value_string[100];
if (type == IntRule && strcasecmp(_GetRuleName(type, index), "World:ExpansionSettings") == 0)
return;
if (type == BoolRule && strcasecmp(_GetRuleName(type, index), "World:UseClientBasedExpansionSettings") == 0)
return;
switch (type) {
case IntRule:
sprintf(value_string, "%d", m_RuleIntValues[index]);
break;
case RealRule:
sprintf(value_string, "%.13f", m_RuleRealValues[index]);
break;
case BoolRule:
sprintf(value_string, "%s", m_RuleBoolValues[index] ? "true" : "false");
break;
case IntRule:
sprintf(value_string, "%d", m_RuleIntValues[index]);
break;
case RealRule:
sprintf(value_string, "%.13f", m_RuleRealValues[index]);
break;
case BoolRule:
sprintf(value_string, "%s", m_RuleBoolValues[index] ? "true" : "false");
break;
}
std::string query = StringFormat(
"REPLACE INTO `rule_values`"
"(`ruleset_id`, `rule_name`, `rule_value`, `notes`)"
" VALUES('%d', '%s', '%s', '%s')",
m_activeRuleset,
_GetRuleName(type, index),
value_string,
EscapeString(_GetRuleNotes(type, index)).c_str()
"REPLACE INTO `rule_values`"
"(`ruleset_id`, `rule_name`, `rule_value`, `notes`)"
" VALUES('%d', '%s', '%s', '%s')",
m_activeRuleset,
_GetRuleName(type, index),
value_string,
EscapeString(_GetRuleNotes(type, index)).c_str()
);
database->QueryDatabase(query);
}
bool RuleManager::UpdateInjectedRules(Database *db, const char *ruleset_name, bool quiet_update)
bool RuleManager::UpdateInjectedRules(Database* db, const char* ruleset_name, bool quiet_update)
{
std::vector<std::string> database_data;
std::map<std::string, std::pair<std::string, const std::string *>> rule_data;
std::map<std::string, std::pair<std::string, const std::string*>> rule_data;
std::vector<std::tuple<int, std::string, std::string, std::string>> injected_rule_entries;
if (ruleset_name == nullptr) {
@@ -402,7 +402,7 @@ bool RuleManager::UpdateInjectedRules(Database *db, const char *ruleset_name, bo
}
// build rule data entries
for (const auto &ri_iter : s_RuleInfo) {
for (const auto& ri_iter : s_RuleInfo) {
if (strcasecmp(ri_iter.name, "Invalid Rule") == 0) {
continue;
}
@@ -431,9 +431,9 @@ bool RuleManager::UpdateInjectedRules(Database *db, const char *ruleset_name, bo
}
// build injected entries
for (const auto &rd_iter : rule_data) {
const auto &dd_iter = std::find(database_data.begin(), database_data.end(), rd_iter.first);
for (const auto& rd_iter : rule_data) {
const auto& dd_iter = std::find(database_data.begin(), database_data.end(), rd_iter.first);
if (dd_iter == database_data.end()) {
injected_rule_entries.push_back(
@@ -442,7 +442,7 @@ bool RuleManager::UpdateInjectedRules(Database *db, const char *ruleset_name, bo
rd_iter.first, // `rule_name`
rd_iter.second.first, // `rule_value`
EscapeString(*rd_iter.second.second) // `notes`
)
)
);
if (!quiet_update) {
@@ -481,11 +481,11 @@ bool RuleManager::UpdateInjectedRules(Database *db, const char *ruleset_name, bo
ruleset_id
);
}
return true;
}
bool RuleManager::UpdateOrphanedRules(Database *db, bool quiet_update)
bool RuleManager::UpdateOrphanedRules(Database* db, bool quiet_update)
{
std::vector<std::string> rule_data;
std::vector<std::string> orphaned_rule_entries;
@@ -499,7 +499,7 @@ bool RuleManager::UpdateOrphanedRules(Database *db, bool quiet_update)
}
// build rule data entries
for (const auto &ri_iter : s_RuleInfo) {
for (const auto& ri_iter : s_RuleInfo) {
if (strcasecmp(ri_iter.name, "Invalid Rule") == 0) {
continue;
}
@@ -509,8 +509,8 @@ bool RuleManager::UpdateOrphanedRules(Database *db, bool quiet_update)
// build orphaned entries
for (auto row : results) {
const auto &rd_iter = std::find(rule_data.begin(), rule_data.end(), row[0]);
const auto& rd_iter = std::find(rule_data.begin(), rule_data.end(), row[0]);
if (rd_iter == rule_data.end()) {
orphaned_rule_entries.push_back(std::string(row[0]));
@@ -526,7 +526,7 @@ bool RuleManager::UpdateOrphanedRules(Database *db, bool quiet_update)
if (orphaned_rule_entries.size()) {
std::string query (
std::string query(
fmt::format(
"DELETE FROM `rule_values` WHERE `rule_name` IN ({})",
implode(",", std::pair<char, char>('\'', '\''), orphaned_rule_entries)
@@ -539,11 +539,11 @@ bool RuleManager::UpdateOrphanedRules(Database *db, bool quiet_update)
LogInfo("[{}] Orphaned Rule(s) Deleted from [All Rulesets] (-1)", orphaned_rule_entries.size());
}
return true;
}
bool RuleManager::RestoreRuleNotes(Database *db)
bool RuleManager::RestoreRuleNotes(Database* db)
{
std::string query("SELECT `ruleset_id`, `rule_name`, `notes` FROM `rule_values`");
@@ -555,7 +555,7 @@ bool RuleManager::RestoreRuleNotes(Database *db)
int update_count = 0;
for (auto row = results.begin(); row != results.end(); ++row) {
auto rule = [](const char *rule_name) {
auto rule = [](const char* rule_name) {
for (auto rule_iter : s_RuleInfo) {
if (strcasecmp(rule_iter.name, rule_name) == 0) {
@@ -563,7 +563,7 @@ bool RuleManager::RestoreRuleNotes(Database *db)
}
}
return s_RuleInfo[_IntRuleCount+_RealRuleCount+_BoolRuleCount];
return s_RuleInfo[_IntRuleCount + _RealRuleCount + _BoolRuleCount];
}(row[1]);
if (strcasecmp(rule.name, row[1]) != 0) {
@@ -586,7 +586,7 @@ bool RuleManager::RestoreRuleNotes(Database *db)
if (!db->QueryDatabase(query).Success()) {
continue;
}
++update_count;
}
@@ -597,7 +597,7 @@ bool RuleManager::RestoreRuleNotes(Database *db)
return true;
}
int RuleManager::GetRulesetID(Database *database, const char *ruleset_name) {
int RuleManager::GetRulesetID(Database* database, const char* ruleset_name) {
uint32 len = static_cast<uint32>(strlen(ruleset_name));
auto rst = new char[2 * len + 1];
@@ -617,7 +617,7 @@ int RuleManager::GetRulesetID(Database *database, const char *ruleset_name) {
return atoi(row[0]);
}
int RuleManager::_FindOrCreateRuleset(Database *database, const char *in_ruleset_name) {
int RuleManager::_FindOrCreateRuleset(Database* database, const char* in_ruleset_name) {
int ruleset_id = GetRulesetID(database, in_ruleset_name);
if (ruleset_id >= 0)
@@ -636,7 +636,7 @@ int RuleManager::_FindOrCreateRuleset(Database *database, const char *in_ruleset
return results.LastInsertedID();
}
std::string RuleManager::GetRulesetName(Database *database, int ruleset_id) {
std::string RuleManager::GetRulesetName(Database* database, int ruleset_id) {
std::string query = StringFormat("SELECT name FROM rule_sets WHERE ruleset_id=%d", ruleset_id);
auto results = database->QueryDatabase(query);
if (!results.Success())
@@ -650,7 +650,7 @@ std::string RuleManager::GetRulesetName(Database *database, int ruleset_id) {
return row[0];
}
bool RuleManager::ListRulesets(Database *database, std::map<int, std::string> &into) {
bool RuleManager::ListRulesets(Database* database, std::map<int, std::string>& into) {
//start out with the default set which is always present.
into[0] = "default";
+46 -46
View File
@@ -30,11 +30,11 @@
//which makes it a global for now, but with instancing we will do exactly
//what we do with the zone global and just make it a member of core classes
#define RuleI(cat, rule) \
RuleManager::Instance()->GetIntRule( RuleManager::Int__##rule )
RuleManager::Instance()->GetIntRule( RuleManager::Int__##cat__##rule )
#define RuleR(cat, rule) \
RuleManager::Instance()->GetRealRule( RuleManager::Real__##rule )
RuleManager::Instance()->GetRealRule( RuleManager::Real__##cat__##rule )
#define RuleB(cat, rule) \
RuleManager::Instance()->GetBoolRule( RuleManager::Bool__##rule )
RuleManager::Instance()->GetBoolRule( RuleManager::Bool__##cat__##rule )
#include <vector>
@@ -49,30 +49,30 @@ class RuleManager {
public:
//generate our rule enums:
typedef enum {
#define RULE_INT(cat, rule, default_value, notes) \
Int__##rule,
#include "ruletypes.h"
#define RULE_INT(cat, rule, default_value, notes) \
Int__##cat__##rule,
#include "ruletypes.h"
_IntRuleCount
} IntType;
typedef enum {
#define RULE_REAL(cat, rule, default_value, notes) \
Real__##rule,
#include "ruletypes.h"
#define RULE_REAL(cat, rule, default_value, notes) \
Real__##cat__##rule,
#include "ruletypes.h"
_RealRuleCount
} RealType;
typedef enum {
#define RULE_BOOL(cat, rule, default_value, notes) \
Bool__##rule,
#include "ruletypes.h"
#define RULE_BOOL(cat, rule, default_value, notes) \
Bool__##cat__##rule,
#include "ruletypes.h"
_BoolRuleCount
} BoolType;
typedef enum {
#define RULE_CATEGORY(catname) \
#define RULE_CATEGORY(catname) \
Category__##catname,
#include "ruletypes.h"
#include "ruletypes.h"
_CatCount
} CategoryType;
@@ -86,39 +86,39 @@ public:
static const BoolType InvalidBool = _BoolRuleCount;
static const CategoryType InvalidCategory = _CatCount;
static const uint32 _RulesCount = _IntRuleCount+_RealRuleCount+_BoolRuleCount;
static const uint32 _RulesCount = _IntRuleCount + _RealRuleCount + _BoolRuleCount;
//fetch routines, you should generally use the Rule* macros instead of this
int32 GetIntRule (IntType t) const;
int32 GetIntRule(IntType t) const;
float GetRealRule(RealType t) const;
bool GetBoolRule(BoolType t) const;
//management routines
static const char *GetRuleName(IntType t) { return(s_RuleInfo[t].name); }
static const char *GetRuleName(RealType t) { return(s_RuleInfo[t+_IntRuleCount].name); }
static const char *GetRuleName(BoolType t) { return(s_RuleInfo[t+_IntRuleCount+_RealRuleCount].name); }
static const std::string &GetRuleNotes(IntType t) { return(s_RuleInfo[t].notes); }
static const std::string &GetRuleNotes(RealType t) { return(s_RuleInfo[t+_IntRuleCount].notes); }
static const std::string &GetRuleNotes(BoolType t) { return(s_RuleInfo[t+_IntRuleCount+_RealRuleCount].notes); }
static const char* GetRuleName(IntType t) { return(s_RuleInfo[t].name); }
static const char* GetRuleName(RealType t) { return(s_RuleInfo[t + _IntRuleCount].name); }
static const char* GetRuleName(BoolType t) { return(s_RuleInfo[t + _IntRuleCount + _RealRuleCount].name); }
static const std::string& GetRuleNotes(IntType t) { return(s_RuleInfo[t].notes); }
static const std::string& GetRuleNotes(RealType t) { return(s_RuleInfo[t + _IntRuleCount].notes); }
static const std::string& GetRuleNotes(BoolType t) { return(s_RuleInfo[t + _IntRuleCount + _RealRuleCount].notes); }
static uint32 CountRules() { return(_RulesCount); }
static CategoryType FindCategory(const char *catname);
bool ListRules(const char *catname, std::vector<const char *> &into);
bool ListCategories(std::vector<const char *> &into);
bool GetRule(const char *rule_name, std::string &ret_val);
bool SetRule(const char *rule_name, const char *rule_value, Database *db = nullptr, bool db_save = false, bool reload = false);
static CategoryType FindCategory(const char* catname);
bool ListRules(const char* catname, std::vector<const char*>& into);
bool ListCategories(std::vector<const char*>& into);
bool GetRule(const char* rule_name, std::string& ret_val);
bool SetRule(const char* rule_name, const char* rule_value, Database* db = nullptr, bool db_save = false, bool reload = false);
int GetActiveRulesetID() const { return(m_activeRuleset); }
const char *GetActiveRuleset() const { return(m_activeName.c_str()); }
static int GetRulesetID(Database *db, const char *rulesetname);
static std::string GetRulesetName(Database *db, int id);
static bool ListRulesets(Database *db, std::map<int, std::string> &into);
const char* GetActiveRuleset() const { return(m_activeName.c_str()); }
static int GetRulesetID(Database* db, const char* rulesetname);
static std::string GetRulesetName(Database* db, int id);
static bool ListRulesets(Database* db, std::map<int, std::string>& into);
void ResetRules(bool reload = false);
bool LoadRules(Database *db, const char *ruleset = nullptr, bool reload = false);
void SaveRules(Database *db, const char *ruleset = nullptr);
bool UpdateInjectedRules(Database *db, const char *ruleset_name, bool quiet_update = false);
bool UpdateOrphanedRules(Database *db, bool quiet_update = false);
bool RestoreRuleNotes(Database *db);
bool LoadRules(Database* db, const char* ruleset = nullptr, bool reload = false);
void SaveRules(Database* db, const char* ruleset = nullptr);
bool UpdateInjectedRules(Database* db, const char* ruleset_name, bool quiet_update = false);
bool UpdateOrphanedRules(Database* db, bool quiet_update = false);
bool RestoreRuleNotes(Database* db);
private:
RuleManager();
@@ -128,9 +128,9 @@ private:
int m_activeRuleset;
std::string m_activeName;
#ifdef WIN64
uint32 m_RuleIntValues [_IntRuleCount ];
uint32 m_RuleIntValues[_IntRuleCount];
#else
int m_RuleIntValues [_IntRuleCount ];
int m_RuleIntValues[_IntRuleCount];
#endif
float m_RuleRealValues[_RealRuleCount];
uint32 m_RuleBoolValues[_BoolRuleCount];
@@ -141,15 +141,15 @@ private:
BoolRule
} RuleType;
static bool _FindRule(const char *rule_name, RuleType &type_into, uint16 &index_into);
static const char *_GetRuleName(RuleType type, uint16 index);
static const std::string &_GetRuleNotes(RuleType type, uint16 index);
static int _FindOrCreateRuleset(Database *db, const char *ruleset);
void _SaveRule(Database *db, RuleType type, uint16 index);
static const char *s_categoryNames[];
static bool _FindRule(const char* rule_name, RuleType& type_into, uint16& index_into);
static const char* _GetRuleName(RuleType type, uint16 index);
static const std::string& _GetRuleNotes(RuleType type, uint16 index);
static int _FindOrCreateRuleset(Database* db, const char* ruleset);
void _SaveRule(Database* db, RuleType type, uint16 index);
static const char* s_categoryNames[];
typedef struct {
const char *name;
const char* name;
CategoryType category;
RuleType type;
uint16 rule_index; //index into its 'type' array
-13
View File
@@ -163,7 +163,6 @@ RULE_BOOL(Character, UseNoJunkFishing, false, "Disregards junk items when fishin
RULE_BOOL(Character, SoftDeletes, true, "When characters are deleted in character select, they are only soft deleted")
RULE_INT(Character, DefaultGuild, 0, "If not 0, new characters placed into the guild # indicated")
RULE_BOOL(Character, ProcessFearedProximity, false, "Processes proximity checks when feared")
RULE_INT(Character, PVPRespawnManaPercent, 100, "How much mana to respawn with")
RULE_CATEGORY_END()
RULE_CATEGORY(Mercs)
@@ -240,14 +239,6 @@ RULE_INT(World, ExpansionSettings, 16383, "Sets the expansion settings for the s
RULE_BOOL(World, UseClientBasedExpansionSettings, true, "If true it will overrule World, ExpansionSettings and set someone's expansion based on the client they're using")
RULE_INT(World, PVPSettings, 0, "Sets the PVP settings for the server. 1=Rallos Zek RuleSet, 2=Tallon/Vallon Zek Ruleset, 4=Sullon Zek Ruleset, 6=Discord Ruleset, anything above 6 is the Discord Ruleset without the no-drop restrictions removed. NOTE: edit IsAttackAllowed in Zone-table to accomodate for these rules")
RULE_INT(World, PVPMinLevel, 0, "Minimum level to pvp")
RULE_BOOL(World, PVPUseDeityBasedPVP, false, "In PvP, deity is used to determine if a player can attack another.")
RULE_BOOL(World, PVPUseTeamsBySizeBasedPVP, false, "In PVP, size of a race is used to determine if a player can attack another.")
RULE_INT(World, PVPLevelDifference, 0, "In PvP, if value is greater than 0, players with a difference greater than value will not be attackable")
RULE_INT(World, PVPLoseExperienceLevelDifference, 0, "In PvP, if value is greater than 0, players lose experience if killed by a player within level difference")
RULE_INT(World, PVPPetDamageMitigation, 100, "In PvP, pet damage is mitigated by this amount")
RULE_INT(World, PVPMeleeMitigation, 67, "In PvP, melee is mitigated by this amount")
RULE_INT(World, PVPSpellMitigation, 67, "In PvP, spells are mitigated by this amount")
RULE_INT(World, PVPRangedMitigation, 80, "In PvP, ranged attacks (archery/throwing) is mitigated by this amount")
RULE_BOOL (World, IsGMPetitionWindowEnabled, false, "Setting whether the GM petition window is available")
RULE_INT (World, FVNoDropFlag, 0, "Sets the Firiona Vie settings on the client, allowing trading of no-drop items. 1=for all players, 2=for GM only")
RULE_BOOL (World, IPLimitDisconnectAll, false, "Disconnect all current clients by IP if they go over the IP limit. This should allow people to quickly reconnect in the case of dead sessions waiting to timeout")
@@ -399,7 +390,6 @@ RULE_BOOL(Spells, AllowItemTGB, false, "Target group buff (/tgb) doesn't work wi
RULE_BOOL(Spells, NPCInnateProcOverride, true, "NPC innate procs override the target type to single target")
RULE_BOOL(Spells, OldRainTargets, false, "Use old incorrectly implemented maximum targets for rains")
RULE_BOOL(Spells, NPCSpellPush, false, "Enable spell push on NPCs")
RULE_INT(Spells, PVPRootBreakFromSpells, 75, "Chance for root to break when cast on by a client")
RULE_CATEGORY_END()
RULE_CATEGORY(Combat)
@@ -588,8 +578,6 @@ RULE_INT(Range, CriticalDamage, 80, "The packet range in which critical hit mess
RULE_INT(Range, MobCloseScanDistance, 600, "Close scan distance")
RULE_CATEGORY_END()
#ifdef BOTS
RULE_CATEGORY(Bots)
RULE_INT(Bots, BotExpansionSettings, 16383, "Sets the expansion settings for bot use. Defaults to all expansions enabled up to TSS")
RULE_BOOL(Bots, AllowCamelCaseNames, false, "Allows the use of 'MyBot' type names")
@@ -622,7 +610,6 @@ RULE_BOOL(Bots, AllowApplyPoisonCommand, true, "Allows the use of the bot comman
RULE_BOOL(Bots, AllowApplyPotionCommand, true, "Allows the use of the bot command 'applypotion'")
RULE_BOOL(Bots, RestrictApplyPotionToRogue, true, "Restricts the bot command 'applypotion' to rogue-usable potions (i.e., poisons)")
RULE_CATEGORY_END()
#endif
RULE_CATEGORY(Chat)
RULE_BOOL(Chat, ServerWideOOC, true, "Enable server wide ooc-chat")
+28 -2
View File
@@ -527,7 +527,22 @@ bool Mob::IsAttackAllowed(Mob *target, bool isSpellAttack)
c1 = mob1->CastToClient();
c2 = mob2->CastToClient();
return c1->CanPvP(c2);
if // if both are pvp they can fight
(
c1->GetPVP() &&
c2->GetPVP()
)
return true;
else if // if they're dueling they can go at it
(
c1->IsDueling() &&
c2->IsDueling() &&
c1->GetDuelTarget() == c2->GetID() &&
c2->GetDuelTarget() == c1->GetID()
)
return true;
else
return false;
}
else if(_NPC(mob2)) // client vs npc
{
@@ -683,7 +698,18 @@ bool Mob::IsBeneficialAllowed(Mob *target)
c1 = mob1->CastToClient();
c2 = mob2->CastToClient();
return c1->CanPvP(c2);
if(c1->GetPVP() == c2->GetPVP())
return true;
else if // if they're dueling they can heal each other too
(
c1->IsDueling() &&
c2->IsDueling() &&
c1->GetDuelTarget() == c2->GetID() &&
c2->GetDuelTarget() == c1->GetID()
)
return true;
else
return false;
}
else if(_NPC(mob2)) // client to npc
{
+13 -40
View File
@@ -1574,15 +1574,11 @@ void Client::Damage(Mob* other, int32 damage, uint16 spell_id, EQ::skills::Skill
//should this be applied to all damage? comments sound like some is for spell DMG
//patch notes on PVP reductions only mention archery/throwing ... not normal dmg
if (other && other->IsClient() && (other != this) && damage > 0) {
int PvPMitigation = RuleI(World, PVPMeleeMitigation);
if (attack_skill == EQ::skills::SkillAbjuration || //spells
attack_skill == EQ::skills::SkillAlteration ||
attack_skill == EQ::skills::SkillConjuration ||
attack_skill == EQ::skills::SkillDivination ||
attack_skill == EQ::skills::SkillEvocation) PvPMitigation = RuleI(World, PVPSpellMitigation);
if (attack_skill == EQ::skills::SkillArchery || //ranged
attack_skill == EQ::skills::SkillThrowing) PvPMitigation = RuleI(World, PVPRangedMitigation);
int PvPMitigation = 100;
if (attack_skill == EQ::skills::SkillArchery || attack_skill == EQ::skills::SkillThrowing)
PvPMitigation = 80;
else
PvPMitigation = 67;
damage = std::max((damage * PvPMitigation) / 100, 1);
}
@@ -1758,27 +1754,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, EQ::skills::Skill
{
if (killerMob->IsClient())
{
int pvpleveldifference = 0;
if (RuleI(World, PVPSettings) == 4)
pvpleveldifference = 5; //Sullon Zek
if (RuleI(World, PVPLoseExperienceLevelDifference) > 0)
pvpleveldifference = RuleI(World, PVPLoseExperienceLevelDifference);
if (pvpleveldifference > 0) {
int level_difference = 0;
if (GetLevel() > killerMob->GetLevel())
level_difference = GetLevel() - killerMob->GetLevel();
else
level_difference = killerMob->GetLevel() - GetLevel();
if (level_difference > pvpleveldifference)
exploss = 0;
}
else
{
exploss = 0;
}
exploss = 0;
}
else if (killerMob->GetOwner() && killerMob->GetOwner()->IsClient())
{
@@ -2092,11 +2068,14 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool
other->AddToHateList(this, hate);
if (other->IsClient() && IsPet() && GetOwner()->IsClient()) {
my_hit.damage_done = std::max(my_hit.damage_done * RuleI(World, PVPPetDamageMitigation) / 100, 1);
}
LogCombat("Final damage against [{}]: [{}]", other->GetName(), my_hit.damage_done);
if (other->IsClient() && IsPet() && GetOwner()->IsClient()) {
//pets do half damage to clients in pvp
my_hit.damage_done /= 2;
if (my_hit.damage_done < 1)
my_hit.damage_done = 1;
}
}
else {
my_hit.damage_done = DMG_INVULNERABLE;
@@ -4997,12 +4976,6 @@ bool Mob::TryRootFadeByDamage(int buffslot, Mob* attacker) {
if (IsDetrimentalSpell(spellbonuses.Root[1]) && spellbonuses.Root[1] != buffslot) {
int BreakChance = RuleI(Spells, RootBreakFromSpells);
if (attacker && attacker->IsClient() && IsClient()) {
if (RuleI(World, PVPSettings) > 0) BreakChance = 75; //All PVP servers is default 75% chance for root to break
if (RuleI(Spells, PVPRootBreakFromSpells) > 0) BreakChance = RuleI(Spells, PVPRootBreakFromSpells);
}
BreakChance -= BreakChance*buffs[spellbonuses.Root[1]].RootBreakChance / 100;
int level_diff = attacker->GetLevel() - GetLevel();
-79
View File
@@ -10009,83 +10009,4 @@ void Client::Fling(float value, float target_x, float target_y, float target_z,
outapp_fling->priority = 6;
FastQueuePacket(&outapp_fling);
}
}
//CanPvP returns true if provided player can attack this player
bool Client::CanPvP(Client *c) {
if (c == nullptr)
return false;
//Dueling overrides normal PvP logic
if (IsDueling() && c->IsDueling() && GetDuelTarget() == c->GetID() && c->GetDuelTarget() == GetID())
return true;
//If PVPLevelDifference is enabled, only allow PVP if players are of proper range
int rule_level_diff = 0;
if (RuleI(World, PVPSettings) == 4)
rule_level_diff = 100; //Sullon Zek rules can attack anyone of opposing deity.
if (RuleI(World, PVPLevelDifference) > 0)
rule_level_diff = RuleI(World, PVPLevelDifference);
if (rule_level_diff > 0) {
int level_diff = 0;
if (c->GetLevel() > GetLevel())
level_diff = c->GetLevel() - GetLevel();
else
level_diff = GetLevel() - c->GetLevel();
if (level_diff > rule_level_diff)
return false;
}
//players need to be proper level for pvp
int rule_min_level = 0;
if (RuleI(World, PVPSettings) == 4)
rule_min_level = 6;
if (RuleI(World, PVPMinLevel) > 0)
rule_min_level = RuleI(World, PVPMinLevel);
if (rule_min_level > 0 && (GetLevel() < rule_min_level || c->GetLevel() < rule_min_level))
return false;
//is deity pvp rule enabled? If so, if we're same alignment, don't allow pvp
if ((RuleI(World, PVPSettings) == 4 || RuleB(World, PVPUseDeityBasedPVP)) && GetAlignment() == c->GetAlignment())
return false;
//VZTZ Zek PVP Setting
if ((RuleI(World, PVPSettings) == 2 || RuleB(World, PVPUseTeamsBySizeBasedPVP)) && GetPVPRaceTeamBySize() == c->GetPVPRaceTeamBySize())
return false;
//Check if players are flagged pvp. This may need to be removed later
if (!GetPVP() || !c->GetPVP()) return false;
return true;
}
//GetAlignment returns 0 = neutral, 1 = good, 2 = evil, used for pvp sullon zek rules
int Client::GetAlignment() {
if (GetDeity() == EQ::deity::DeityErollisiMarr ||
GetDeity() == EQ::deity::DeityMithanielMarr ||
GetDeity() == EQ::deity::DeityRodcetNife ||
GetDeity() == EQ::deity::DeityQuellious ||
GetDeity() == EQ::deity::DeityTunare) return 1; //good
if (GetDeity() == EQ::deity::DeityBertoxxulous ||
GetDeity() == EQ::deity::DeityCazicThule ||
GetDeity() == EQ::deity::DeityInnoruuk ||
GetDeity() == EQ::deity::DeityRallosZek) return 2; //evil
return 0; //neutral
}
//GetPVPRaceSize returns based on racial divisions
int Client::GetPVPRaceTeamBySize() {
if (GetRace() == HUMAN || GetRace() == BARBARIAN || GetRace() == ERUDITE || GetRace() == DRAKKIN)
return 1;
if (GetRace() == GNOME || GetRace() == HALFLING || GetRace() == DWARF || GetRace() == FROGLOK)
return 2;
if (GetRace() == HIGH_ELF || GetRace() == WOOD_ELF || GetRace() == HALF_ELF || GetRace() == VAHSHIR)
return 3;
if (GetRace() == DARK_ELF || GetRace() == OGRE || GetRace() == TROLL || GetRace() == IKSAR)
return 4;
return 1;
}
+1 -4
View File
@@ -770,9 +770,6 @@ public:
bool TradeskillExecute(DBTradeskillRecipe_Struct *spec);
void CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float skillup_modifier, uint16 success_modifier, EQ::skills::SkillType tradeskill);
void InitInnates();
bool CanPvP(Client * c);
int GetAlignment();
int GetPVPRaceTeamBySize();
void GMKill();
inline bool IsMedding() const {return medding;}
@@ -906,7 +903,7 @@ public:
void IncStats(uint8 type,int16 increase_val);
void DropItem(int16 slot_id, bool recurse = true);
void DropItemQS(EQ::ItemInstance* inst, bool pickup);
int GetItemLinkHash(const EQ::ItemInstance* inst); // move to ItemData..or make use of the pre-calculated database field
void SendItemLink(const EQ::ItemInstance* inst, bool sendtoall=false);
+1184 -1189
View File
File diff suppressed because it is too large Load Diff
+313 -314
View File
@@ -1,315 +1,314 @@
/* Connecting OpCode Handlers */
void Handle_Connect_0x3e33(const EQApplicationPacket *app);
void Handle_Connect_OP_ApproveZone(const EQApplicationPacket *app);
void Handle_Connect_OP_ClientError(const EQApplicationPacket *app);
void Handle_Connect_OP_ClientReady(const EQApplicationPacket *app);
void Handle_Connect_OP_ClientUpdate(const EQApplicationPacket *app);
void Handle_Connect_OP_ReqClientSpawn(const EQApplicationPacket *app);
void Handle_Connect_OP_ReqNewZone(const EQApplicationPacket *app);
void Handle_Connect_OP_SendAAStats(const EQApplicationPacket *app);
void Handle_Connect_OP_SendAATable(const EQApplicationPacket *app);
void Handle_Connect_OP_SendExpZonein(const EQApplicationPacket *app);
void Handle_Connect_OP_SendGuildTributes(const EQApplicationPacket *app);
void Handle_Connect_OP_SendTributes(const EQApplicationPacket *app);
void Handle_Connect_OP_SetDataRate(const EQApplicationPacket *app);
void Handle_Connect_OP_SetServerFilter(const EQApplicationPacket *app);
void Handle_Connect_OP_SpawnAppearance(const EQApplicationPacket *app);
void Handle_Connect_OP_TGB(const EQApplicationPacket *app);
void Handle_Connect_OP_UpdateAA(const EQApplicationPacket *app);
void Handle_Connect_OP_WearChange(const EQApplicationPacket *app);
void Handle_Connect_OP_WorldObjectsSent(const EQApplicationPacket *app);
void Handle_Connect_OP_ZoneComplete(const EQApplicationPacket *app);
void Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app);
/* Connected opcode handlers*/
void Handle_0x0193(const EQApplicationPacket *app);
void Handle_0x01e7(const EQApplicationPacket *app);
void Handle_OP_AAAction(const EQApplicationPacket *app);
void Handle_OP_AcceptNewTask(const EQApplicationPacket *app);
void Handle_OP_AdventureInfoRequest(const EQApplicationPacket *app);
void Handle_OP_AdventureLeaderboardRequest(const EQApplicationPacket *app);
void Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app);
void Handle_OP_AdventureMerchantRequest(const EQApplicationPacket *app);
void Handle_OP_AdventureMerchantSell(const EQApplicationPacket *app);
void Handle_OP_AdventureRequest(const EQApplicationPacket *app);
void Handle_OP_AdventureStatsRequest(const EQApplicationPacket *app);
void Handle_OP_AggroMeterLockTarget(const EQApplicationPacket *app);
void Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket *app);
void Handle_OP_AltCurrencyPurchase(const EQApplicationPacket *app);
void Handle_OP_AltCurrencyReclaim(const EQApplicationPacket *app);
void Handle_OP_AltCurrencySell(const EQApplicationPacket *app);
void Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app);
void Handle_OP_Animation(const EQApplicationPacket *app);
void Handle_OP_ApplyPoison(const EQApplicationPacket *app);
void Handle_OP_Assist(const EQApplicationPacket *app);
void Handle_OP_AssistGroup(const EQApplicationPacket *app);
void Handle_OP_AugmentInfo(const EQApplicationPacket *app);
void Handle_OP_AugmentItem(const EQApplicationPacket *app);
void Handle_OP_AutoAttack(const EQApplicationPacket *app);
void Handle_OP_AutoAttack2(const EQApplicationPacket *app);
void Handle_OP_AutoFire(const EQApplicationPacket *app);
void Handle_OP_Bandolier(const EQApplicationPacket *app);
void Handle_OP_BankerChange(const EQApplicationPacket *app);
void Handle_OP_Barter(const EQApplicationPacket *app);
void Handle_OP_BazaarInspect(const EQApplicationPacket *app);
void Handle_OP_BazaarSearch(const EQApplicationPacket *app);
void Handle_OP_Begging(const EQApplicationPacket *app);
void Handle_OP_Bind_Wound(const EQApplicationPacket *app);
void Handle_OP_BlockedBuffs(const EQApplicationPacket *app);
void Handle_OP_BoardBoat(const EQApplicationPacket *app);
void Handle_OP_Buff(const EQApplicationPacket *app);
void Handle_OP_BuffRemoveRequest(const EQApplicationPacket *app);
void Handle_OP_Bug(const EQApplicationPacket *app);
void Handle_OP_Camp(const EQApplicationPacket *app);
void Handle_OP_CancelTask(const EQApplicationPacket *app);
void Handle_OP_CancelTrade(const EQApplicationPacket *app);
void Handle_OP_CastSpell(const EQApplicationPacket *app);
void Handle_OP_ChannelMessage(const EQApplicationPacket *app);
void Handle_OP_ClearBlockedBuffs(const EQApplicationPacket *app);
void Handle_OP_ClearNPCMarks(const EQApplicationPacket *app);
void Handle_OP_ClearSurname(const EQApplicationPacket *app);
void Handle_OP_ClickDoor(const EQApplicationPacket *app);
void Handle_OP_ClickObject(const EQApplicationPacket *app);
void Handle_OP_ClickObjectAction(const EQApplicationPacket *app);
void Handle_OP_ClientError(const EQApplicationPacket *app);
void Handle_OP_ClientTimeStamp(const EQApplicationPacket *app);
void Handle_OP_ClientUpdate(const EQApplicationPacket *app);
/* Connecting OpCode Handlers */
void Handle_Connect_0x3e33(const EQApplicationPacket* app);
void Handle_Connect_OP_ApproveZone(const EQApplicationPacket* app);
void Handle_Connect_OP_ClientError(const EQApplicationPacket* app);
void Handle_Connect_OP_ClientReady(const EQApplicationPacket* app);
void Handle_Connect_OP_ClientUpdate(const EQApplicationPacket* app);
void Handle_Connect_OP_ReqClientSpawn(const EQApplicationPacket* app);
void Handle_Connect_OP_ReqNewZone(const EQApplicationPacket* app);
void Handle_Connect_OP_SendAAStats(const EQApplicationPacket* app);
void Handle_Connect_OP_SendAATable(const EQApplicationPacket* app);
void Handle_Connect_OP_SendExpZonein(const EQApplicationPacket* app);
void Handle_Connect_OP_SendGuildTributes(const EQApplicationPacket* app);
void Handle_Connect_OP_SendTributes(const EQApplicationPacket* app);
void Handle_Connect_OP_SetDataRate(const EQApplicationPacket* app);
void Handle_Connect_OP_SetServerFilter(const EQApplicationPacket* app);
void Handle_Connect_OP_SpawnAppearance(const EQApplicationPacket* app);
void Handle_Connect_OP_TGB(const EQApplicationPacket* app);
void Handle_Connect_OP_UpdateAA(const EQApplicationPacket* app);
void Handle_Connect_OP_WearChange(const EQApplicationPacket* app);
void Handle_Connect_OP_WorldObjectsSent(const EQApplicationPacket* app);
void Handle_Connect_OP_ZoneComplete(const EQApplicationPacket* app);
void Handle_Connect_OP_ZoneEntry(const EQApplicationPacket* app);
/* Connected opcode handlers*/
void Handle_0x01e7(const EQApplicationPacket* app);
void Handle_OP_AAAction(const EQApplicationPacket* app);
void Handle_OP_AcceptNewTask(const EQApplicationPacket* app);
void Handle_OP_AdventureInfoRequest(const EQApplicationPacket* app);
void Handle_OP_AdventureLeaderboardRequest(const EQApplicationPacket* app);
void Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket* app);
void Handle_OP_AdventureMerchantRequest(const EQApplicationPacket* app);
void Handle_OP_AdventureMerchantSell(const EQApplicationPacket* app);
void Handle_OP_AdventureRequest(const EQApplicationPacket* app);
void Handle_OP_AdventureStatsRequest(const EQApplicationPacket* app);
void Handle_OP_AggroMeterLockTarget(const EQApplicationPacket* app);
void Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket* app);
void Handle_OP_AltCurrencyPurchase(const EQApplicationPacket* app);
void Handle_OP_AltCurrencyReclaim(const EQApplicationPacket* app);
void Handle_OP_AltCurrencySell(const EQApplicationPacket* app);
void Handle_OP_AltCurrencySellSelection(const EQApplicationPacket* app);
void Handle_OP_Animation(const EQApplicationPacket* app);
void Handle_OP_ApplyPoison(const EQApplicationPacket* app);
void Handle_OP_Assist(const EQApplicationPacket* app);
void Handle_OP_AssistGroup(const EQApplicationPacket* app);
void Handle_OP_AugmentInfo(const EQApplicationPacket* app);
void Handle_OP_AugmentItem(const EQApplicationPacket* app);
void Handle_OP_AutoAttack(const EQApplicationPacket* app);
void Handle_OP_AutoAttack2(const EQApplicationPacket* app);
void Handle_OP_AutoFire(const EQApplicationPacket* app);
void Handle_OP_Bandolier(const EQApplicationPacket* app);
void Handle_OP_BankerChange(const EQApplicationPacket* app);
void Handle_OP_Barter(const EQApplicationPacket* app);
void Handle_OP_BazaarInspect(const EQApplicationPacket* app);
void Handle_OP_BazaarSearch(const EQApplicationPacket* app);
void Handle_OP_Begging(const EQApplicationPacket* app);
void Handle_OP_Bind_Wound(const EQApplicationPacket* app);
void Handle_OP_BlockedBuffs(const EQApplicationPacket* app);
void Handle_OP_BoardBoat(const EQApplicationPacket* app);
void Handle_OP_Buff(const EQApplicationPacket* app);
void Handle_OP_BuffRemoveRequest(const EQApplicationPacket* app);
void Handle_OP_Bug(const EQApplicationPacket* app);
void Handle_OP_Camp(const EQApplicationPacket* app);
void Handle_OP_CancelTask(const EQApplicationPacket* app);
void Handle_OP_CancelTrade(const EQApplicationPacket* app);
void Handle_OP_CastSpell(const EQApplicationPacket* app);
void Handle_OP_ChannelMessage(const EQApplicationPacket* app);
void Handle_OP_ClearBlockedBuffs(const EQApplicationPacket* app);
void Handle_OP_ClearNPCMarks(const EQApplicationPacket* app);
void Handle_OP_ClearSurname(const EQApplicationPacket* app);
void Handle_OP_ClickDoor(const EQApplicationPacket* app);
void Handle_OP_ClickObject(const EQApplicationPacket* app);
void Handle_OP_ClickObjectAction(const EQApplicationPacket* app);
void Handle_OP_ClientError(const EQApplicationPacket* app);
void Handle_OP_ClientTimeStamp(const EQApplicationPacket* app);
void Handle_OP_ClientUpdate(const EQApplicationPacket* app);
// void Handle_OP_CloseContainer(const EQApplicationPacket *app);
void Handle_OP_CombatAbility(const EQApplicationPacket *app);
void Handle_OP_ConfirmDelete(const EQApplicationPacket *app);
void Handle_OP_Consent(const EQApplicationPacket *app);
void Handle_OP_ConsentDeny(const EQApplicationPacket *app);
void Handle_OP_Consider(const EQApplicationPacket *app);
void Handle_OP_ConsiderCorpse(const EQApplicationPacket *app);
void Handle_OP_Consume(const EQApplicationPacket *app);
void Handle_OP_ControlBoat(const EQApplicationPacket *app);
void Handle_OP_CorpseDrag(const EQApplicationPacket *app);
void Handle_OP_CorpseDrop(const EQApplicationPacket *app);
void Handle_OP_CrashDump(const EQApplicationPacket *app);
void Handle_OP_CreateObject(const EQApplicationPacket *app);
void Handle_OP_CrystalCreate(const EQApplicationPacket *app);
void Handle_OP_CrystalReclaim(const EQApplicationPacket *app);
void Handle_OP_Damage(const EQApplicationPacket *app);
void Handle_OP_Death(const EQApplicationPacket *app);
void Handle_OP_DelegateAbility(const EQApplicationPacket *app);
void Handle_OP_DeleteItem(const EQApplicationPacket *app);
void Handle_OP_DeleteSpawn(const EQApplicationPacket *app);
void Handle_OP_DeleteSpell(const EQApplicationPacket *app);
void Handle_OP_Disarm(const EQApplicationPacket *app);
void Handle_OP_DisarmTraps(const EQApplicationPacket *app);
void Handle_OP_DoGroupLeadershipAbility(const EQApplicationPacket *app);
void Handle_OP_DuelResponse(const EQApplicationPacket *app);
void Handle_OP_DuelResponse2(const EQApplicationPacket *app);
void Handle_OP_DumpName(const EQApplicationPacket *app);
void Handle_OP_Dye(const EQApplicationPacket *app);
void Handle_OP_DzAddPlayer(const EQApplicationPacket *app);
void Handle_OP_DzChooseZoneReply(const EQApplicationPacket *app);
void Handle_OP_DzExpeditionInviteResponse(const EQApplicationPacket *app);
void Handle_OP_DzListTimers(const EQApplicationPacket *app);
void Handle_OP_DzMakeLeader(const EQApplicationPacket *app);
void Handle_OP_DzPlayerList(const EQApplicationPacket *app);
void Handle_OP_DzRemovePlayer(const EQApplicationPacket *app);
void Handle_OP_DzSwapPlayer(const EQApplicationPacket *app);
void Handle_OP_DzQuit(const EQApplicationPacket *app);
void Handle_OP_Emote(const EQApplicationPacket *app);
void Handle_OP_EndLootRequest(const EQApplicationPacket *app);
void Handle_OP_EnvDamage(const EQApplicationPacket *app);
void Handle_OP_FaceChange(const EQApplicationPacket *app);
void Handle_OP_FeignDeath(const EQApplicationPacket *app);
void Handle_OP_FindPersonRequest(const EQApplicationPacket *app);
void Handle_OP_Fishing(const EQApplicationPacket *app);
void Handle_OP_Forage(const EQApplicationPacket *app);
void Handle_OP_FriendsWho(const EQApplicationPacket *app);
void Handle_OP_GetGuildMOTD(const EQApplicationPacket *app);
void Handle_OP_GetGuildsList(const EQApplicationPacket *app);
void Handle_OP_GMBecomeNPC(const EQApplicationPacket *app);
void Handle_OP_GMDelCorpse(const EQApplicationPacket *app);
void Handle_OP_GMEmoteZone(const EQApplicationPacket *app);
void Handle_OP_GMEndTraining(const EQApplicationPacket *app);
void Handle_OP_GMFind(const EQApplicationPacket *app);
void Handle_OP_GMGoto(const EQApplicationPacket *app);
void Handle_OP_GMHideMe(const EQApplicationPacket *app);
void Handle_OP_GMKick(const EQApplicationPacket *app);
void Handle_OP_GMKill(const EQApplicationPacket *app);
void Handle_OP_GMLastName(const EQApplicationPacket *app);
void Handle_OP_GMNameChange(const EQApplicationPacket *app);
void Handle_OP_GMSearchCorpse(const EQApplicationPacket *app);
void Handle_OP_GMServers(const EQApplicationPacket *app);
void Handle_OP_GMSummon(const EQApplicationPacket *app);
void Handle_OP_GMToggle(const EQApplicationPacket *app);
void Handle_OP_GMTraining(const EQApplicationPacket *app);
void Handle_OP_GMTrainSkill(const EQApplicationPacket *app);
void Handle_OP_GMZoneRequest(const EQApplicationPacket *app);
void Handle_OP_GMZoneRequest2(const EQApplicationPacket *app);
void Handle_OP_GroupAcknowledge(const EQApplicationPacket *app);
void Handle_OP_GroupCancelInvite(const EQApplicationPacket *app);
void Handle_OP_GroupDelete(const EQApplicationPacket *app);
void Handle_OP_GroupDisband(const EQApplicationPacket *app);
void Handle_OP_GroupFollow(const EQApplicationPacket *app);
void Handle_OP_GroupFollow2(const EQApplicationPacket *app);
void Handle_OP_GroupInvite(const EQApplicationPacket *app);
void Handle_OP_GroupInvite2(const EQApplicationPacket *app);
void Handle_OP_GroupMakeLeader(const EQApplicationPacket *app);
void Handle_OP_GroupMentor(const EQApplicationPacket *app);
void Handle_OP_GroupRoles(const EQApplicationPacket *app);
void Handle_OP_GroupUpdate(const EQApplicationPacket *app);
void Handle_OP_GuildBank(const EQApplicationPacket *app);
void Handle_OP_GuildCreate(const EQApplicationPacket *app);
void Handle_OP_GuildDelete(const EQApplicationPacket *app);
void Handle_OP_GuildDemote(const EQApplicationPacket *app);
void Handle_OP_GuildInvite(const EQApplicationPacket *app);
void Handle_OP_GuildInviteAccept(const EQApplicationPacket *app);
void Handle_OP_GuildLeader(const EQApplicationPacket *app);
void Handle_OP_GuildManageBanker(const EQApplicationPacket *app);
void Handle_OP_GuildPeace(const EQApplicationPacket *app);
void Handle_OP_GuildPromote(const EQApplicationPacket *app);
void Handle_OP_GuildPublicNote(const EQApplicationPacket *app);
void Handle_OP_GuildRemove(const EQApplicationPacket *app);
void Handle_OP_GuildStatus(const EQApplicationPacket *app);
void Handle_OP_GuildUpdateURLAndChannel(const EQApplicationPacket *app);
void Handle_OP_GuildWar(const EQApplicationPacket *app);
void Handle_OP_Heartbeat(const EQApplicationPacket *app);
void Handle_OP_Hide(const EQApplicationPacket *app);
void Handle_OP_HideCorpse(const EQApplicationPacket *app);
void Handle_OP_Ignore(const EQApplicationPacket *app);
void Handle_OP_Illusion(const EQApplicationPacket *app);
void Handle_OP_InspectAnswer(const EQApplicationPacket *app);
void Handle_OP_InspectMessageUpdate(const EQApplicationPacket *app);
void Handle_OP_InspectRequest(const EQApplicationPacket *app);
void Handle_OP_InstillDoubt(const EQApplicationPacket *app);
void Handle_OP_ItemLinkClick(const EQApplicationPacket *app);
void Handle_OP_ItemLinkResponse(const EQApplicationPacket *app);
void Handle_OP_ItemName(const EQApplicationPacket *app);
void Handle_OP_ItemPreview(const EQApplicationPacket *app);
void Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app);
void Handle_OP_Jump(const EQApplicationPacket *app);
void Handle_OP_KeyRing(const EQApplicationPacket *app);
void Handle_OP_KickPlayers(const EQApplicationPacket *app);
void Handle_OP_LDoNButton(const EQApplicationPacket *app);
void Handle_OP_LDoNDisarmTraps(const EQApplicationPacket *app);
void Handle_OP_LDoNInspect(const EQApplicationPacket *app);
void Handle_OP_LDoNOpen(const EQApplicationPacket *app);
void Handle_OP_LDoNPickLock(const EQApplicationPacket *app);
void Handle_OP_LDoNSenseTraps(const EQApplicationPacket *app);
void Handle_OP_LeadershipExpToggle(const EQApplicationPacket *app);
void Handle_OP_LeaveAdventure(const EQApplicationPacket *app);
void Handle_OP_LeaveBoat(const EQApplicationPacket *app);
void Handle_OP_LFGCommand(const EQApplicationPacket *app);
void Handle_OP_LFGGetMatchesRequest(const EQApplicationPacket *app);
void Handle_OP_LFGuild(const EQApplicationPacket *app);
void Handle_OP_LFPCommand(const EQApplicationPacket *app);
void Handle_OP_LFPGetMatchesRequest(const EQApplicationPacket *app);
void Handle_OP_LoadSpellSet(const EQApplicationPacket *app);
void Handle_OP_Logout(const EQApplicationPacket *app);
void Handle_OP_LootItem(const EQApplicationPacket *app);
void Handle_OP_LootRequest(const EQApplicationPacket *app);
void Handle_OP_ManaChange(const EQApplicationPacket *app);
void Handle_OP_Medding(const EQApplicationPacket *app);
void Handle_OP_MemorizeSpell(const EQApplicationPacket *app);
void Handle_OP_Mend(const EQApplicationPacket *app);
void Handle_OP_MercenaryCommand(const EQApplicationPacket *app);
void Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app);
void Handle_OP_MercenaryDataUpdateRequest(const EQApplicationPacket *app);
void Handle_OP_MercenaryDismiss(const EQApplicationPacket *app);
void Handle_OP_MercenaryHire(const EQApplicationPacket *app);
void Handle_OP_MercenarySuspendRequest(const EQApplicationPacket *app);
void Handle_OP_MercenaryTimerRequest(const EQApplicationPacket *app);
void Handle_OP_MoveCoin(const EQApplicationPacket *app);
void Handle_OP_MoveItem(const EQApplicationPacket *app);
void Handle_OP_MoveMultipleItems(const EQApplicationPacket *app);
void Handle_OP_OpenContainer(const EQApplicationPacket *app);
void Handle_OP_OpenGuildTributeMaster(const EQApplicationPacket *app);
void Handle_OP_OpenInventory(const EQApplicationPacket *app);
void Handle_OP_OpenTributeMaster(const EQApplicationPacket *app);
void Handle_OP_PDeletePetition(const EQApplicationPacket *app);
void Handle_OP_PetCommands(const EQApplicationPacket *app);
void Handle_OP_Petition(const EQApplicationPacket *app);
void Handle_OP_PetitionBug(const EQApplicationPacket *app);
void Handle_OP_PetitionCheckIn(const EQApplicationPacket *app);
void Handle_OP_PetitionCheckout(const EQApplicationPacket *app);
void Handle_OP_PetitionDelete(const EQApplicationPacket *app);
void Handle_OP_PetitionQue(const EQApplicationPacket *app);
void Handle_OP_PetitionRefresh(const EQApplicationPacket *app);
void Handle_OP_PetitionResolve(const EQApplicationPacket *app);
void Handle_OP_PetitionUnCheckout(const EQApplicationPacket *app);
void Handle_OP_PlayerStateAdd(const EQApplicationPacket *app);
void Handle_OP_PlayerStateRemove(const EQApplicationPacket *app);
void Handle_OP_PickPocket(const EQApplicationPacket *app);
void Handle_OP_PopupResponse(const EQApplicationPacket *app);
void Handle_OP_PotionBelt(const EQApplicationPacket *app);
void Handle_OP_PurchaseLeadershipAA(const EQApplicationPacket *app);
void Handle_OP_PVPLeaderBoardDetailsRequest(const EQApplicationPacket *app);
void Handle_OP_PVPLeaderBoardRequest(const EQApplicationPacket *app);
void Handle_OP_QueryUCSServerStatus(const EQApplicationPacket *app);
void Handle_OP_RaidCommand(const EQApplicationPacket *app);
void Handle_OP_RandomReq(const EQApplicationPacket *app);
void Handle_OP_ReadBook(const EQApplicationPacket *app);
void Handle_OP_RecipeAutoCombine(const EQApplicationPacket *app);
void Handle_OP_RecipeDetails(const EQApplicationPacket *app);
void Handle_OP_RecipesFavorite(const EQApplicationPacket *app);
void Handle_OP_RecipesSearch(const EQApplicationPacket *app);
void Handle_OP_ReloadUI(const EQApplicationPacket *app);
void Handle_OP_RemoveBlockedBuffs(const EQApplicationPacket *app);
void Handle_OP_RemoveTrap(const EQApplicationPacket *app);
void Handle_OP_Report(const EQApplicationPacket *app);
void Handle_OP_RequestDuel(const EQApplicationPacket *app);
void Handle_OP_RequestTitles(const EQApplicationPacket *app);
void Handle_OP_RespawnWindow(const EQApplicationPacket *app);
void Handle_OP_Rewind(const EQApplicationPacket *app);
void Handle_OP_RezzAnswer(const EQApplicationPacket *app);
void Handle_OP_Sacrifice(const EQApplicationPacket *app);
void Handle_OP_SafeFallSuccess(const EQApplicationPacket *app);
void Handle_OP_SafePoint(const EQApplicationPacket *app);
void Handle_OP_Save(const EQApplicationPacket *app);
void Handle_OP_SaveOnZoneReq(const EQApplicationPacket *app);
void Handle_OP_SelectTribute(const EQApplicationPacket *app);
void Handle_OP_SenseHeading(const EQApplicationPacket *app);
void Handle_OP_SenseTraps(const EQApplicationPacket *app);
void Handle_OP_SetGuildMOTD(const EQApplicationPacket *app);
void Handle_OP_SetRunMode(const EQApplicationPacket *app);
void Handle_OP_SetServerFilter(const EQApplicationPacket *app);
void Handle_OP_SetStartCity(const EQApplicationPacket *app);
void Handle_OP_SetTitle(const EQApplicationPacket *app);
void Handle_OP_Shielding(const EQApplicationPacket *app);
void Handle_OP_ShopEnd(const EQApplicationPacket *app);
void Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app);
void Handle_OP_ShopPlayerSell(const EQApplicationPacket *app);
void Handle_OP_ShopRequest(const EQApplicationPacket *app);
void Handle_OP_Sneak(const EQApplicationPacket *app);
void Handle_OP_SpawnAppearance(const EQApplicationPacket *app);
void Handle_OP_Split(const EQApplicationPacket *app);
void Handle_OP_Surname(const EQApplicationPacket *app);
void Handle_OP_SwapSpell(const EQApplicationPacket *app);
void Handle_OP_TargetCommand(const EQApplicationPacket *app);
void Handle_OP_TargetMouse(const EQApplicationPacket *app);
void Handle_OP_TaskHistoryRequest(const EQApplicationPacket *app);
void Handle_OP_Taunt(const EQApplicationPacket *app);
void Handle_OP_TestBuff(const EQApplicationPacket *app);
void Handle_OP_TGB(const EQApplicationPacket *app);
void Handle_OP_Track(const EQApplicationPacket *app);
void Handle_OP_TrackTarget(const EQApplicationPacket *app);
void Handle_OP_TrackUnknown(const EQApplicationPacket *app);
void Handle_OP_TradeAcceptClick(const EQApplicationPacket *app);
void Handle_OP_TradeBusy(const EQApplicationPacket *app);
void Handle_OP_Trader(const EQApplicationPacket *app);
void Handle_OP_TraderBuy(const EQApplicationPacket *app);
void Handle_OP_TradeRequest(const EQApplicationPacket *app);
void Handle_OP_TradeRequestAck(const EQApplicationPacket *app);
void Handle_OP_TraderShop(const EQApplicationPacket *app);
void Handle_OP_TradeSkillCombine(const EQApplicationPacket *app);
void Handle_OP_Translocate(const EQApplicationPacket *app);
void Handle_OP_TributeItem(const EQApplicationPacket *app);
void Handle_OP_TributeMoney(const EQApplicationPacket *app);
void Handle_OP_TributeNPC(const EQApplicationPacket *app);
void Handle_OP_TributeToggle(const EQApplicationPacket *app);
void Handle_OP_TributeUpdate(const EQApplicationPacket *app);
void Handle_OP_UpdateAura(const EQApplicationPacket *app);
void Handle_OP_VetClaimRequest(const EQApplicationPacket *app);
void Handle_OP_VoiceMacroIn(const EQApplicationPacket *app);
void Handle_OP_WearChange(const EQApplicationPacket *app);
void Handle_OP_WhoAllRequest(const EQApplicationPacket *app);
void Handle_OP_XTargetAutoAddHaters(const EQApplicationPacket *app);
void Handle_OP_XTargetOpen(const EQApplicationPacket *app);
void Handle_OP_XTargetRequest(const EQApplicationPacket *app);
void Handle_OP_YellForHelp(const EQApplicationPacket *app);
void Handle_OP_ZoneChange(const EQApplicationPacket *app);
void Handle_OP_ResetAA(const EQApplicationPacket *app);
void Handle_OP_CombatAbility(const EQApplicationPacket* app);
void Handle_OP_ConfirmDelete(const EQApplicationPacket* app);
void Handle_OP_Consent(const EQApplicationPacket* app);
void Handle_OP_ConsentDeny(const EQApplicationPacket* app);
void Handle_OP_Consider(const EQApplicationPacket* app);
void Handle_OP_ConsiderCorpse(const EQApplicationPacket* app);
void Handle_OP_Consume(const EQApplicationPacket* app);
void Handle_OP_ControlBoat(const EQApplicationPacket* app);
void Handle_OP_CorpseDrag(const EQApplicationPacket* app);
void Handle_OP_CorpseDrop(const EQApplicationPacket* app);
void Handle_OP_CrashDump(const EQApplicationPacket* app);
void Handle_OP_CreateObject(const EQApplicationPacket* app);
void Handle_OP_CrystalCreate(const EQApplicationPacket* app);
void Handle_OP_CrystalReclaim(const EQApplicationPacket* app);
void Handle_OP_Damage(const EQApplicationPacket* app);
void Handle_OP_Death(const EQApplicationPacket* app);
void Handle_OP_DelegateAbility(const EQApplicationPacket* app);
void Handle_OP_DeleteItem(const EQApplicationPacket* app);
void Handle_OP_DeleteSpawn(const EQApplicationPacket* app);
void Handle_OP_DeleteSpell(const EQApplicationPacket* app);
void Handle_OP_Disarm(const EQApplicationPacket* app);
void Handle_OP_DisarmTraps(const EQApplicationPacket* app);
void Handle_OP_DoGroupLeadershipAbility(const EQApplicationPacket* app);
void Handle_OP_DuelResponse(const EQApplicationPacket* app);
void Handle_OP_DuelResponse2(const EQApplicationPacket* app);
void Handle_OP_DumpName(const EQApplicationPacket* app);
void Handle_OP_Dye(const EQApplicationPacket* app);
void Handle_OP_DzAddPlayer(const EQApplicationPacket* app);
void Handle_OP_DzChooseZoneReply(const EQApplicationPacket* app);
void Handle_OP_DzExpeditionInviteResponse(const EQApplicationPacket* app);
void Handle_OP_DzListTimers(const EQApplicationPacket* app);
void Handle_OP_DzMakeLeader(const EQApplicationPacket* app);
void Handle_OP_DzPlayerList(const EQApplicationPacket* app);
void Handle_OP_DzRemovePlayer(const EQApplicationPacket* app);
void Handle_OP_DzSwapPlayer(const EQApplicationPacket* app);
void Handle_OP_DzQuit(const EQApplicationPacket* app);
void Handle_OP_Emote(const EQApplicationPacket* app);
void Handle_OP_EndLootRequest(const EQApplicationPacket* app);
void Handle_OP_EnvDamage(const EQApplicationPacket* app);
void Handle_OP_FaceChange(const EQApplicationPacket* app);
void Handle_OP_FeignDeath(const EQApplicationPacket* app);
void Handle_OP_FindPersonRequest(const EQApplicationPacket* app);
void Handle_OP_Fishing(const EQApplicationPacket* app);
void Handle_OP_Forage(const EQApplicationPacket* app);
void Handle_OP_FriendsWho(const EQApplicationPacket* app);
void Handle_OP_GetGuildMOTD(const EQApplicationPacket* app);
void Handle_OP_GetGuildsList(const EQApplicationPacket* app);
void Handle_OP_GMBecomeNPC(const EQApplicationPacket* app);
void Handle_OP_GMDelCorpse(const EQApplicationPacket* app);
void Handle_OP_GMEmoteZone(const EQApplicationPacket* app);
void Handle_OP_GMEndTraining(const EQApplicationPacket* app);
void Handle_OP_GMFind(const EQApplicationPacket* app);
void Handle_OP_GMGoto(const EQApplicationPacket* app);
void Handle_OP_GMHideMe(const EQApplicationPacket* app);
void Handle_OP_GMKick(const EQApplicationPacket* app);
void Handle_OP_GMKill(const EQApplicationPacket* app);
void Handle_OP_GMLastName(const EQApplicationPacket* app);
void Handle_OP_GMNameChange(const EQApplicationPacket* app);
void Handle_OP_GMSearchCorpse(const EQApplicationPacket* app);
void Handle_OP_GMServers(const EQApplicationPacket* app);
void Handle_OP_GMSummon(const EQApplicationPacket* app);
void Handle_OP_GMToggle(const EQApplicationPacket* app);
void Handle_OP_GMTraining(const EQApplicationPacket* app);
void Handle_OP_GMTrainSkill(const EQApplicationPacket* app);
void Handle_OP_GMZoneRequest(const EQApplicationPacket* app);
void Handle_OP_GMZoneRequest2(const EQApplicationPacket* app);
void Handle_OP_GroupAcknowledge(const EQApplicationPacket* app);
void Handle_OP_GroupCancelInvite(const EQApplicationPacket* app);
void Handle_OP_GroupDelete(const EQApplicationPacket* app);
void Handle_OP_GroupDisband(const EQApplicationPacket* app);
void Handle_OP_GroupFollow(const EQApplicationPacket* app);
void Handle_OP_GroupFollow2(const EQApplicationPacket* app);
void Handle_OP_GroupInvite(const EQApplicationPacket* app);
void Handle_OP_GroupInvite2(const EQApplicationPacket* app);
void Handle_OP_GroupMakeLeader(const EQApplicationPacket* app);
void Handle_OP_GroupMentor(const EQApplicationPacket* app);
void Handle_OP_GroupRoles(const EQApplicationPacket* app);
void Handle_OP_GroupUpdate(const EQApplicationPacket* app);
void Handle_OP_GuildBank(const EQApplicationPacket* app);
void Handle_OP_GuildCreate(const EQApplicationPacket* app);
void Handle_OP_GuildDelete(const EQApplicationPacket* app);
void Handle_OP_GuildDemote(const EQApplicationPacket* app);
void Handle_OP_GuildInvite(const EQApplicationPacket* app);
void Handle_OP_GuildInviteAccept(const EQApplicationPacket* app);
void Handle_OP_GuildLeader(const EQApplicationPacket* app);
void Handle_OP_GuildManageBanker(const EQApplicationPacket* app);
void Handle_OP_GuildPeace(const EQApplicationPacket* app);
void Handle_OP_GuildPromote(const EQApplicationPacket* app);
void Handle_OP_GuildPublicNote(const EQApplicationPacket* app);
void Handle_OP_GuildRemove(const EQApplicationPacket* app);
void Handle_OP_GuildStatus(const EQApplicationPacket* app);
void Handle_OP_GuildUpdateURLAndChannel(const EQApplicationPacket* app);
void Handle_OP_GuildWar(const EQApplicationPacket* app);
void Handle_OP_Heartbeat(const EQApplicationPacket* app);
void Handle_OP_Hide(const EQApplicationPacket* app);
void Handle_OP_HideCorpse(const EQApplicationPacket* app);
void Handle_OP_Ignore(const EQApplicationPacket* app);
void Handle_OP_Illusion(const EQApplicationPacket* app);
void Handle_OP_InspectAnswer(const EQApplicationPacket* app);
void Handle_OP_InspectMessageUpdate(const EQApplicationPacket* app);
void Handle_OP_InspectRequest(const EQApplicationPacket* app);
void Handle_OP_InstillDoubt(const EQApplicationPacket* app);
void Handle_OP_ItemLinkClick(const EQApplicationPacket* app);
void Handle_OP_ItemLinkResponse(const EQApplicationPacket* app);
void Handle_OP_ItemName(const EQApplicationPacket* app);
void Handle_OP_ItemPreview(const EQApplicationPacket* app);
void Handle_OP_ItemVerifyRequest(const EQApplicationPacket* app);
void Handle_OP_Jump(const EQApplicationPacket* app);
void Handle_OP_KeyRing(const EQApplicationPacket* app);
void Handle_OP_KickPlayers(const EQApplicationPacket* app);
void Handle_OP_LDoNButton(const EQApplicationPacket* app);
void Handle_OP_LDoNDisarmTraps(const EQApplicationPacket* app);
void Handle_OP_LDoNInspect(const EQApplicationPacket* app);
void Handle_OP_LDoNOpen(const EQApplicationPacket* app);
void Handle_OP_LDoNPickLock(const EQApplicationPacket* app);
void Handle_OP_LDoNSenseTraps(const EQApplicationPacket* app);
void Handle_OP_LeadershipExpToggle(const EQApplicationPacket* app);
void Handle_OP_LeaveAdventure(const EQApplicationPacket* app);
void Handle_OP_LeaveBoat(const EQApplicationPacket* app);
void Handle_OP_LFGCommand(const EQApplicationPacket* app);
void Handle_OP_LFGGetMatchesRequest(const EQApplicationPacket* app);
void Handle_OP_LFGuild(const EQApplicationPacket* app);
void Handle_OP_LFPCommand(const EQApplicationPacket* app);
void Handle_OP_LFPGetMatchesRequest(const EQApplicationPacket* app);
void Handle_OP_LoadSpellSet(const EQApplicationPacket* app);
void Handle_OP_Logout(const EQApplicationPacket* app);
void Handle_OP_LootItem(const EQApplicationPacket* app);
void Handle_OP_LootRequest(const EQApplicationPacket* app);
void Handle_OP_ManaChange(const EQApplicationPacket* app);
void Handle_OP_Medding(const EQApplicationPacket* app);
void Handle_OP_MemorizeSpell(const EQApplicationPacket* app);
void Handle_OP_Mend(const EQApplicationPacket* app);
void Handle_OP_MercenaryCommand(const EQApplicationPacket* app);
void Handle_OP_MercenaryDataRequest(const EQApplicationPacket* app);
void Handle_OP_MercenaryDataUpdateRequest(const EQApplicationPacket* app);
void Handle_OP_MercenaryDismiss(const EQApplicationPacket* app);
void Handle_OP_MercenaryHire(const EQApplicationPacket* app);
void Handle_OP_MercenarySuspendRequest(const EQApplicationPacket* app);
void Handle_OP_MercenaryTimerRequest(const EQApplicationPacket* app);
void Handle_OP_MoveCoin(const EQApplicationPacket* app);
void Handle_OP_MoveItem(const EQApplicationPacket* app);
void Handle_OP_MoveMultipleItems(const EQApplicationPacket* app);
void Handle_OP_OpenContainer(const EQApplicationPacket* app);
void Handle_OP_OpenGuildTributeMaster(const EQApplicationPacket* app);
void Handle_OP_OpenInventory(const EQApplicationPacket* app);
void Handle_OP_OpenTributeMaster(const EQApplicationPacket* app);
void Handle_OP_PDeletePetition(const EQApplicationPacket* app);
void Handle_OP_PetCommands(const EQApplicationPacket* app);
void Handle_OP_Petition(const EQApplicationPacket* app);
void Handle_OP_PetitionBug(const EQApplicationPacket* app);
void Handle_OP_PetitionCheckIn(const EQApplicationPacket* app);
void Handle_OP_PetitionCheckout(const EQApplicationPacket* app);
void Handle_OP_PetitionDelete(const EQApplicationPacket* app);
void Handle_OP_PetitionQue(const EQApplicationPacket* app);
void Handle_OP_PetitionRefresh(const EQApplicationPacket* app);
void Handle_OP_PetitionResolve(const EQApplicationPacket* app);
void Handle_OP_PetitionUnCheckout(const EQApplicationPacket* app);
void Handle_OP_PlayerStateAdd(const EQApplicationPacket* app);
void Handle_OP_PlayerStateRemove(const EQApplicationPacket* app);
void Handle_OP_PickPocket(const EQApplicationPacket* app);
void Handle_OP_PopupResponse(const EQApplicationPacket* app);
void Handle_OP_PotionBelt(const EQApplicationPacket* app);
void Handle_OP_PurchaseLeadershipAA(const EQApplicationPacket* app);
void Handle_OP_PVPLeaderBoardDetailsRequest(const EQApplicationPacket* app);
void Handle_OP_PVPLeaderBoardRequest(const EQApplicationPacket* app);
void Handle_OP_QueryUCSServerStatus(const EQApplicationPacket* app);
void Handle_OP_RaidCommand(const EQApplicationPacket* app);
void Handle_OP_RandomReq(const EQApplicationPacket* app);
void Handle_OP_ReadBook(const EQApplicationPacket* app);
void Handle_OP_RecipeAutoCombine(const EQApplicationPacket* app);
void Handle_OP_RecipeDetails(const EQApplicationPacket* app);
void Handle_OP_RecipesFavorite(const EQApplicationPacket* app);
void Handle_OP_RecipesSearch(const EQApplicationPacket* app);
void Handle_OP_ReloadUI(const EQApplicationPacket* app);
void Handle_OP_RemoveBlockedBuffs(const EQApplicationPacket* app);
void Handle_OP_RemoveTrap(const EQApplicationPacket* app);
void Handle_OP_Report(const EQApplicationPacket* app);
void Handle_OP_RequestDuel(const EQApplicationPacket* app);
void Handle_OP_RequestTitles(const EQApplicationPacket* app);
void Handle_OP_RespawnWindow(const EQApplicationPacket* app);
void Handle_OP_Rewind(const EQApplicationPacket* app);
void Handle_OP_RezzAnswer(const EQApplicationPacket* app);
void Handle_OP_Sacrifice(const EQApplicationPacket* app);
void Handle_OP_SafeFallSuccess(const EQApplicationPacket* app);
void Handle_OP_SafePoint(const EQApplicationPacket* app);
void Handle_OP_Save(const EQApplicationPacket* app);
void Handle_OP_SaveOnZoneReq(const EQApplicationPacket* app);
void Handle_OP_SelectTribute(const EQApplicationPacket* app);
void Handle_OP_SenseHeading(const EQApplicationPacket* app);
void Handle_OP_SenseTraps(const EQApplicationPacket* app);
void Handle_OP_SetGuildMOTD(const EQApplicationPacket* app);
void Handle_OP_SetRunMode(const EQApplicationPacket* app);
void Handle_OP_SetServerFilter(const EQApplicationPacket* app);
void Handle_OP_SetStartCity(const EQApplicationPacket* app);
void Handle_OP_SetTitle(const EQApplicationPacket* app);
void Handle_OP_Shielding(const EQApplicationPacket* app);
void Handle_OP_ShopEnd(const EQApplicationPacket* app);
void Handle_OP_ShopPlayerBuy(const EQApplicationPacket* app);
void Handle_OP_ShopPlayerSell(const EQApplicationPacket* app);
void Handle_OP_ShopRequest(const EQApplicationPacket* app);
void Handle_OP_Sneak(const EQApplicationPacket* app);
void Handle_OP_SpawnAppearance(const EQApplicationPacket* app);
void Handle_OP_Split(const EQApplicationPacket* app);
void Handle_OP_Surname(const EQApplicationPacket* app);
void Handle_OP_SwapSpell(const EQApplicationPacket* app);
void Handle_OP_TargetCommand(const EQApplicationPacket* app);
void Handle_OP_TargetMouse(const EQApplicationPacket* app);
void Handle_OP_TaskHistoryRequest(const EQApplicationPacket* app);
void Handle_OP_Taunt(const EQApplicationPacket* app);
void Handle_OP_TestBuff(const EQApplicationPacket* app);
void Handle_OP_TGB(const EQApplicationPacket* app);
void Handle_OP_Track(const EQApplicationPacket* app);
void Handle_OP_TrackTarget(const EQApplicationPacket* app);
void Handle_OP_TrackUnknown(const EQApplicationPacket* app);
void Handle_OP_TradeAcceptClick(const EQApplicationPacket* app);
void Handle_OP_TradeBusy(const EQApplicationPacket* app);
void Handle_OP_Trader(const EQApplicationPacket* app);
void Handle_OP_TraderBuy(const EQApplicationPacket* app);
void Handle_OP_TradeRequest(const EQApplicationPacket* app);
void Handle_OP_TradeRequestAck(const EQApplicationPacket* app);
void Handle_OP_TraderShop(const EQApplicationPacket* app);
void Handle_OP_TradeSkillCombine(const EQApplicationPacket* app);
void Handle_OP_Translocate(const EQApplicationPacket* app);
void Handle_OP_TributeItem(const EQApplicationPacket* app);
void Handle_OP_TributeMoney(const EQApplicationPacket* app);
void Handle_OP_TributeNPC(const EQApplicationPacket* app);
void Handle_OP_TributeToggle(const EQApplicationPacket* app);
void Handle_OP_TributeUpdate(const EQApplicationPacket* app);
void Handle_OP_UpdateAura(const EQApplicationPacket* app);
void Handle_OP_VetClaimRequest(const EQApplicationPacket* app);
void Handle_OP_VoiceMacroIn(const EQApplicationPacket* app);
void Handle_OP_WearChange(const EQApplicationPacket* app);
void Handle_OP_WhoAllRequest(const EQApplicationPacket* app);
void Handle_OP_XTargetAutoAddHaters(const EQApplicationPacket* app);
void Handle_OP_XTargetOpen(const EQApplicationPacket* app);
void Handle_OP_XTargetRequest(const EQApplicationPacket* app);
void Handle_OP_YellForHelp(const EQApplicationPacket* app);
void Handle_OP_ZoneChange(const EQApplicationPacket* app);
void Handle_OP_ResetAA(const EQApplicationPacket* app);
+1 -10
View File
@@ -2077,16 +2077,7 @@ void Client::HandleRespawnFromHover(uint32 Option)
CalcBonuses();
SetHP(GetMaxHP());
if (GetPVP()) {
int mana_pct = 100;
if (RuleI(World, PVPSettings) > 0)
mana_pct = 0; //All PVP servers spawn you with zero mana
if (RuleI(Character, PVPRespawnManaPercent) != 100) //override mana if it's not 100%
mana_pct = RuleI(Character, PVPRespawnManaPercent);
SetMana(std::max(GetMaxMana() * mana_pct / 100, 0));
} else {
SetMana(GetMaxMana());
}
SetMana(GetMaxMana());
SetEndurance(GetMaxEndurance());
m_Position.x = chosen->x;
+1 -1
View File
@@ -1589,7 +1589,7 @@ int Lua_Client::CalcATK() {
return self->CalcATK();
}
void Lua_Client::FilteredMessage(Mob *sender, uint32 type, int filter, const char *message)
void Lua_Client::FilteredMessage(Lua_Mob sender, uint32 type, int filter, const char *message)
{
Lua_Safe_Call_Void();
self->FilteredMessage(sender, type, (eqFilterType)filter, message);
+1 -1
View File
@@ -326,7 +326,7 @@ public:
bool IsDead();
int CalcCurrentWeight();
int CalcATK();
void FilteredMessage(Mob *sender, uint32 type, int filter, const char* message);
void FilteredMessage(Lua_Mob sender, uint32 type, int filter, const char* message);
void EnableAreaHPRegen(int value);
void DisableAreaHPRegen();
void EnableAreaManaRegen(int value);
+724 -691
View File
File diff suppressed because it is too large Load Diff
+565 -540
View File
File diff suppressed because it is too large Load Diff