mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-03 07:02:30 +00:00
More mob_info work
This commit is contained in:
parent
17ca995aa9
commit
4758c04e99
@ -72,6 +72,18 @@ const std::string str_tolower(std::string s)
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> split(std::string str_to_split, char delimiter)
|
||||||
|
{
|
||||||
|
std::stringstream ss(str_to_split);
|
||||||
|
std::string item;
|
||||||
|
std::vector<std::string> exploded_values;
|
||||||
|
while (std::getline(ss, item, delimiter)) {
|
||||||
|
exploded_values.push_back(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return exploded_values;
|
||||||
|
}
|
||||||
|
|
||||||
const std::string str_toupper(std::string s)
|
const std::string str_toupper(std::string s)
|
||||||
{
|
{
|
||||||
std::transform(
|
std::transform(
|
||||||
@ -85,16 +97,16 @@ const std::string ucfirst(std::string s)
|
|||||||
{
|
{
|
||||||
std::string output = s;
|
std::string output = s;
|
||||||
if (!s.empty())
|
if (!s.empty())
|
||||||
output[0] = static_cast<char>(toupper(s[0]));
|
output[0] = static_cast<char>(std::toupper(s[0]));
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string StringFormat(const char* format, ...)
|
const std::string StringFormat(const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
std::string output = vStringFormat(format,args);
|
std::string output = vStringFormat(format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
const std::string str_tolower(std::string s);
|
const std::string str_tolower(std::string s);
|
||||||
const std::string str_toupper(std::string s);
|
const std::string str_toupper(std::string s);
|
||||||
const std::string ucfirst(std::string s);
|
const std::string ucfirst(std::string s);
|
||||||
|
std::vector<std::string> split(std::string str_to_split, char delimiter);
|
||||||
const std::string StringFormat(const char* format, ...);
|
const std::string StringFormat(const char* format, ...);
|
||||||
const std::string vStringFormat(const char* format, va_list args);
|
const std::string vStringFormat(const char* format, va_list args);
|
||||||
std::vector<std::string> SplitString(const std::string &s, char delim);
|
std::vector<std::string> SplitString(const std::string &s, char delim);
|
||||||
|
|||||||
13
zone/mob.h
13
zone/mob.h
@ -486,6 +486,11 @@ public:
|
|||||||
inline virtual int32 GetINT() const { return INT + itembonuses.INT + spellbonuses.INT; }
|
inline virtual int32 GetINT() const { return INT + itembonuses.INT + spellbonuses.INT; }
|
||||||
inline virtual int32 GetWIS() const { return WIS + itembonuses.WIS + spellbonuses.WIS; }
|
inline virtual int32 GetWIS() const { return WIS + itembonuses.WIS + spellbonuses.WIS; }
|
||||||
inline virtual int32 GetCHA() const { return CHA + itembonuses.CHA + spellbonuses.CHA; }
|
inline virtual int32 GetCHA() const { return CHA + itembonuses.CHA + spellbonuses.CHA; }
|
||||||
|
inline virtual int32 GetHeroicMR() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicFR() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicDR() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicPR() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicCR() const { return 0; }
|
||||||
inline virtual int32 GetMR() const { return MR + itembonuses.MR + spellbonuses.MR; }
|
inline virtual int32 GetMR() const { return MR + itembonuses.MR + spellbonuses.MR; }
|
||||||
inline virtual int32 GetFR() const { return FR + itembonuses.FR + spellbonuses.FR; }
|
inline virtual int32 GetFR() const { return FR + itembonuses.FR + spellbonuses.FR; }
|
||||||
inline virtual int32 GetDR() const { return DR + itembonuses.DR + spellbonuses.DR; }
|
inline virtual int32 GetDR() const { return DR + itembonuses.DR + spellbonuses.DR; }
|
||||||
@ -499,6 +504,13 @@ public:
|
|||||||
inline StatBonuses* GetItemBonusesPtr() { return &itembonuses; }
|
inline StatBonuses* GetItemBonusesPtr() { return &itembonuses; }
|
||||||
inline StatBonuses* GetSpellBonusesPtr() { return &spellbonuses; }
|
inline StatBonuses* GetSpellBonusesPtr() { return &spellbonuses; }
|
||||||
inline StatBonuses* GetAABonusesPtr() { return &aabonuses; }
|
inline StatBonuses* GetAABonusesPtr() { return &aabonuses; }
|
||||||
|
inline virtual int32 GetHeroicSTR() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicSTA() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicDEX() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicAGI() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicINT() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicWIS() const { return 0; }
|
||||||
|
inline virtual int32 GetHeroicCHA() const { return 0; }
|
||||||
inline virtual int32 GetMaxSTR() const { return GetSTR(); }
|
inline virtual int32 GetMaxSTR() const { return GetSTR(); }
|
||||||
inline virtual int32 GetMaxSTA() const { return GetSTA(); }
|
inline virtual int32 GetMaxSTA() const { return GetSTA(); }
|
||||||
inline virtual int32 GetMaxDEX() const { return GetDEX(); }
|
inline virtual int32 GetMaxDEX() const { return GetDEX(); }
|
||||||
@ -518,6 +530,7 @@ public:
|
|||||||
inline int32 GetMaxMana() const { return max_mana; }
|
inline int32 GetMaxMana() const { return max_mana; }
|
||||||
inline int32 GetMana() const { return current_mana; }
|
inline int32 GetMana() const { return current_mana; }
|
||||||
virtual int32 GetEndurance() const { return 0; }
|
virtual int32 GetEndurance() const { return 0; }
|
||||||
|
virtual int32 GetMaxEndurance() const { return 0; }
|
||||||
virtual void SetEndurance(int32 newEnd) { return; }
|
virtual void SetEndurance(int32 newEnd) { return; }
|
||||||
int32 GetItemHPBonuses();
|
int32 GetItemHPBonuses();
|
||||||
int32 GetSpellHPBonuses();
|
int32 GetSpellHPBonuses();
|
||||||
|
|||||||
@ -23,10 +23,32 @@
|
|||||||
#include "../common/races.h"
|
#include "../common/races.h"
|
||||||
#include "../common/say_link.h"
|
#include "../common/say_link.h"
|
||||||
|
|
||||||
|
std::string commify(const std::string &number)
|
||||||
|
{
|
||||||
|
std::string temp_string;
|
||||||
|
|
||||||
|
auto string_length = static_cast<int>(number.length());
|
||||||
|
int i = 0;
|
||||||
|
for (i = string_length - 3; i >= 0; i -= 3) {
|
||||||
|
if (i > 0) {
|
||||||
|
temp_string = "," + number.substr(static_cast<unsigned long>(i), 3) + temp_string;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
temp_string = number.substr(static_cast<unsigned long>(i), 3) + temp_string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < 0) {
|
||||||
|
temp_string = number.substr(0, static_cast<unsigned long>(3 + i)) + temp_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
return temp_string;
|
||||||
|
}
|
||||||
|
|
||||||
inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribute)
|
inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribute)
|
||||||
{
|
{
|
||||||
if (attribute == "ac") {
|
if (attribute == "ac") {
|
||||||
return std::to_string(mob->GetAC());
|
return commify(std::to_string(mob->GetAC()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "atk") {
|
if (attribute == "atk") {
|
||||||
@ -39,71 +61,100 @@ inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribut
|
|||||||
endurance = mob->CastToClient()->GetEndurance();
|
endurance = mob->CastToClient()->GetEndurance();
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::to_string(endurance);
|
return commify(std::to_string(endurance));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "hp") {
|
if (attribute == "hp") {
|
||||||
return std::to_string(mob->GetHP());
|
return commify(std::to_string(mob->GetHP()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attribute == "hp_min_max") {
|
||||||
|
return commify(std::to_string(mob->GetHP())) + " / " + commify(std::to_string(mob->GetMaxHP())) + " (" +
|
||||||
|
std::to_string((int)mob->GetHPRatio()) + "%)";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "mana") {
|
if (attribute == "mana") {
|
||||||
return std::to_string(mob->GetMana());
|
return commify(std::to_string(mob->GetMana()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attribute == "mp_min_max") {
|
||||||
|
return commify(std::to_string(mob->GetMana())) + " / " + commify(std::to_string(mob->GetMaxMana())) + " (" +
|
||||||
|
std::to_string((int)mob->GetManaPercent()) + "%)";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attribute == "end_min_max") {
|
||||||
|
return commify(std::to_string(mob->GetEndurance())) + " / " + commify(std::to_string(mob->GetMaxEndurance())) + " (" +
|
||||||
|
std::to_string((int)mob->GetEndurancePercent()) + "%)";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "str") {
|
if (attribute == "str") {
|
||||||
return std::to_string(mob->GetSTR());
|
return commify(std::to_string(mob->GetSTR())) + " / " + commify(std::to_string(mob->GetMaxSTR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicSTR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "sta") {
|
if (attribute == "sta") {
|
||||||
return std::to_string(mob->GetSTA());
|
return commify(std::to_string(mob->GetSTA())) + " / " + commify(std::to_string(mob->GetMaxSTA())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicSTA()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "dex") {
|
if (attribute == "dex") {
|
||||||
return std::to_string(mob->GetDEX());
|
return commify(std::to_string(mob->GetDEX())) + " / " + commify(std::to_string(mob->GetMaxDEX())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicDEX()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "agi") {
|
if (attribute == "agi") {
|
||||||
return std::to_string(mob->GetAGI());
|
return commify(std::to_string(mob->GetAGI())) + " / " + commify(std::to_string(mob->GetMaxAGI())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicAGI()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "int") {
|
if (attribute == "int") {
|
||||||
return std::to_string(mob->GetINT());
|
return commify(std::to_string(mob->GetINT())) + " / " + commify(std::to_string(mob->GetMaxINT())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicINT()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "wis") {
|
if (attribute == "wis") {
|
||||||
return std::to_string(mob->GetWIS());
|
return commify(std::to_string(mob->GetWIS())) + " / " + commify(std::to_string(mob->GetMaxWIS())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicWIS()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "cha") {
|
if (attribute == "cha") {
|
||||||
return std::to_string(mob->GetCHA());
|
return commify(std::to_string(mob->GetCHA())) + " / " + commify(std::to_string(mob->GetMaxCHA())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicCHA()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "mr") {
|
if (attribute == "mr") {
|
||||||
return std::to_string(mob->GetMR());
|
return commify(std::to_string(mob->GetMR())) + " / " + commify(std::to_string(mob->GetMaxMR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicMR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "cr") {
|
if (attribute == "cr") {
|
||||||
return std::to_string(mob->GetCR());
|
return commify(std::to_string(mob->GetCR())) + " / " + commify(std::to_string(mob->GetMaxCR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicCR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "fr") {
|
if (attribute == "fr") {
|
||||||
return std::to_string(mob->GetFR());
|
return commify(std::to_string(mob->GetFR())) + " / " + commify(std::to_string(mob->GetMaxFR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicFR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "pr") {
|
if (attribute == "pr") {
|
||||||
return std::to_string(mob->GetPR());
|
return commify(std::to_string(mob->GetPR())) + " / " + commify(std::to_string(mob->GetMaxPR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicPR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "dr") {
|
if (attribute == "dr") {
|
||||||
return std::to_string(mob->GetDR());
|
return commify(std::to_string(mob->GetDR())) + " / " + commify(std::to_string(mob->GetMaxDR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicDR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "cr") {
|
if (attribute == "cr") {
|
||||||
return std::to_string(mob->GetCR());
|
return commify(std::to_string(mob->GetCR())) + " / " + commify(std::to_string(mob->GetMaxCR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicCR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "pr") {
|
if (attribute == "pr") {
|
||||||
return std::to_string(mob->GetPR());
|
return commify(std::to_string(mob->GetPR())) + " / " + commify(std::to_string(mob->GetMaxPR())) + " +" +
|
||||||
|
commify(std::to_string(mob->GetHeroicPR()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "cor") {
|
if (attribute == "cor") {
|
||||||
@ -118,8 +169,9 @@ inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribut
|
|||||||
return mob->GetCleanName();
|
return mob->GetCleanName();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "lastname") {
|
if (attribute == "surname") {
|
||||||
return mob->GetLastName();
|
std::string last_name = mob->GetLastName();
|
||||||
|
return (last_name.length() > 0 ? mob->GetLastName() : " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attribute == "race") {
|
if (attribute == "race") {
|
||||||
@ -134,6 +186,18 @@ inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribut
|
|||||||
return std::to_string(mob->GetLevel());
|
return std::to_string(mob->GetLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (attribute == "flymode") {
|
||||||
|
return std::to_string(mob->GetFlyMode());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attribute == "maxbuffslots") {
|
||||||
|
return std::to_string(mob->GetMaxBuffSlots());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attribute == "curbuffslots") {
|
||||||
|
return std::to_string(mob->GetCurrentBuffSlots());
|
||||||
|
}
|
||||||
|
|
||||||
if (mob->IsNPC()) {
|
if (mob->IsNPC()) {
|
||||||
NPC *npc = mob->CastToNPC();
|
NPC *npc = mob->CastToNPC();
|
||||||
|
|
||||||
@ -150,13 +214,13 @@ inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribut
|
|||||||
return std::to_string(npc->GetGender());
|
return std::to_string(npc->GetGender());
|
||||||
}
|
}
|
||||||
if (attribute == "size") {
|
if (attribute == "size") {
|
||||||
return std::to_string(npc->GetSize());
|
return std::to_string((int)npc->GetSize());
|
||||||
}
|
}
|
||||||
if (attribute == "runspeed") {
|
if (attribute == "runspeed") {
|
||||||
return std::to_string(npc->GetRunspeed());
|
return std::to_string((int)npc->GetRunspeed());
|
||||||
}
|
}
|
||||||
if (attribute == "walkspeed") {
|
if (attribute == "walkspeed") {
|
||||||
return std::to_string(npc->GetWalkspeed());
|
return std::to_string((int)npc->GetWalkspeed());
|
||||||
}
|
}
|
||||||
if (attribute == "spawngroup") {
|
if (attribute == "spawngroup") {
|
||||||
return std::to_string(npc->GetSp2());
|
return std::to_string(npc->GetSp2());
|
||||||
@ -167,6 +231,85 @@ inline std::string GetMobAttributeByString(Mob *mob, const std::string &attribut
|
|||||||
if (attribute == "emote") {
|
if (attribute == "emote") {
|
||||||
return std::to_string(npc->GetEmoteID());
|
return std::to_string(npc->GetEmoteID());
|
||||||
}
|
}
|
||||||
|
if (attribute == "seeInvis") {
|
||||||
|
return std::to_string(npc->SeeInvisible());
|
||||||
|
}
|
||||||
|
if (attribute == "seeInvisUndead") {
|
||||||
|
return std::to_string(npc->SeeInvisibleUndead());
|
||||||
|
}
|
||||||
|
if (attribute == "faction") {
|
||||||
|
return std::to_string(npc->GetNPCFactionID());
|
||||||
|
}
|
||||||
|
if (attribute == "loottable") {
|
||||||
|
return std::to_string(npc->GetLoottableID());
|
||||||
|
}
|
||||||
|
if (attribute == "primSkill") {
|
||||||
|
return std::to_string(npc->GetPrimSkill());
|
||||||
|
}
|
||||||
|
if (attribute == "secSkill") {
|
||||||
|
return std::to_string(npc->GetSecSkill());
|
||||||
|
}
|
||||||
|
if (attribute == "meleeTexture1") {
|
||||||
|
return std::to_string(npc->GetMeleeTexture1());
|
||||||
|
}
|
||||||
|
if (attribute == "meleeTexture2") {
|
||||||
|
return std::to_string(npc->GetMeleeTexture2());
|
||||||
|
}
|
||||||
|
if (attribute == "aggrorange") {
|
||||||
|
return std::to_string((int)npc->GetAggroRange());
|
||||||
|
}
|
||||||
|
if (attribute == "assistrange") {
|
||||||
|
return std::to_string((int)npc->GetAssistRange());
|
||||||
|
}
|
||||||
|
if (attribute == "findable") {
|
||||||
|
return std::to_string(npc->IsFindable());
|
||||||
|
}
|
||||||
|
if (attribute == "trackable") {
|
||||||
|
return std::to_string(npc->IsTrackable());
|
||||||
|
}
|
||||||
|
if (attribute == "spellsid") {
|
||||||
|
return std::to_string(npc->GetNPCSpellsID());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxMinX") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxMinX());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxMaxX") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxMaxX());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxMinY") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxMinY());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxMaxY") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxMaxY());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxMinDelay") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxMinDelay());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxDelay") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxDelay());
|
||||||
|
}
|
||||||
|
if (attribute == "roamboxDistance") {
|
||||||
|
return std::to_string((int)npc->GetRoamboxDistance());
|
||||||
|
}
|
||||||
|
if (attribute == "proximityMinX") {
|
||||||
|
return std::to_string((int)npc->GetProximityMinX());
|
||||||
|
}
|
||||||
|
if (attribute == "proximityMaxX") {
|
||||||
|
return std::to_string((int)npc->GetProximityMaxX());
|
||||||
|
}
|
||||||
|
if (attribute == "proximityMinY") {
|
||||||
|
return std::to_string((int)npc->GetProximityMinY());
|
||||||
|
}
|
||||||
|
if (attribute == "proximityMaxY") {
|
||||||
|
return std::to_string((int)npc->GetProximityMaxY());
|
||||||
|
}
|
||||||
|
if (attribute == "proximityMinZ") {
|
||||||
|
return std::to_string((int)npc->GetProximityMinZ());
|
||||||
|
}
|
||||||
|
if (attribute == "proximityMaxZ") {
|
||||||
|
return std::to_string((int)npc->GetProximityMaxZ());
|
||||||
|
}
|
||||||
|
|
||||||
npc->GetNPCEmote(npc->GetEmoteID(), 0);
|
npc->GetNPCEmote(npc->GetEmoteID(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,6 +366,11 @@ inline std::string WriteDisplayInfoSection(
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string attribute_name = attribute;
|
std::string attribute_name = attribute;
|
||||||
|
|
||||||
|
if (attribute_name.find('_') != std::string::npos) {
|
||||||
|
std::vector<std::string> split_string = split(attribute_name, '_');
|
||||||
|
attribute_name = split_string[0];
|
||||||
|
}
|
||||||
if (attribute_name.length() <= 3) {
|
if (attribute_name.length() <= 3) {
|
||||||
attribute_name = str_toupper(attribute_name);
|
attribute_name = str_toupper(attribute_name);
|
||||||
}
|
}
|
||||||
@ -289,32 +437,28 @@ void Mob::DisplayInfo(Mob *mob)
|
|||||||
// };
|
// };
|
||||||
|
|
||||||
if (this->IsClient()) {
|
if (this->IsClient()) {
|
||||||
std::string window_text = "*Drag / Maximize Window to see all info<br><br>";
|
std::string window_text = "<c \"#FFFF66\">*Drag window open vertically to see all</c><br>";
|
||||||
|
|
||||||
Client *client = this->CastToClient();
|
Client *client = this->CastToClient();
|
||||||
|
|
||||||
std::vector<std::string> who_attributes = {
|
std::vector<std::string> info_attributes = {
|
||||||
"name",
|
"name",
|
||||||
"lastname",
|
|
||||||
};
|
|
||||||
window_text += WriteDisplayInfoSection(mob, "Who", who_attributes, 1, false);
|
|
||||||
|
|
||||||
std::vector<std::string> type_attributes = {
|
|
||||||
"race",
|
"race",
|
||||||
|
"surname",
|
||||||
"class",
|
"class",
|
||||||
"type"
|
|
||||||
};
|
};
|
||||||
window_text += WriteDisplayInfoSection(mob, "Type", type_attributes, 3, true);
|
window_text += WriteDisplayInfoSection(mob, "Info", info_attributes, 1, false);
|
||||||
|
|
||||||
std::vector<std::string> basic_attributes = {
|
std::vector<std::string> basic_attributes = {
|
||||||
|
"type",
|
||||||
"level",
|
"level",
|
||||||
"hp",
|
"hp_min_max",
|
||||||
"mana",
|
|
||||||
"end",
|
|
||||||
"ac",
|
"ac",
|
||||||
"atk"
|
"mp_min_max",
|
||||||
|
"atk",
|
||||||
|
"end_min_max",
|
||||||
};
|
};
|
||||||
window_text += WriteDisplayInfoSection(mob, "Main", basic_attributes, 7, true);
|
window_text += WriteDisplayInfoSection(mob, "Main", basic_attributes, 1, false);
|
||||||
|
|
||||||
std::vector<std::string> stat_attributes = {
|
std::vector<std::string> stat_attributes = {
|
||||||
"str",
|
"str",
|
||||||
@ -325,7 +469,7 @@ void Mob::DisplayInfo(Mob *mob)
|
|||||||
"int",
|
"int",
|
||||||
"cha",
|
"cha",
|
||||||
};
|
};
|
||||||
window_text += WriteDisplayInfoSection(mob, "Statistics", stat_attributes, 7, true);
|
window_text += WriteDisplayInfoSection(mob, "Statistics", stat_attributes, 1, false);
|
||||||
|
|
||||||
std::vector<std::string> resist_attributes = {
|
std::vector<std::string> resist_attributes = {
|
||||||
"pr",
|
"pr",
|
||||||
@ -336,9 +480,11 @@ void Mob::DisplayInfo(Mob *mob)
|
|||||||
"cor",
|
"cor",
|
||||||
"phy",
|
"phy",
|
||||||
};
|
};
|
||||||
window_text += WriteDisplayInfoSection(mob, "Resists", resist_attributes, 7, true);
|
window_text += WriteDisplayInfoSection(mob, "Resists", resist_attributes, 1, false);
|
||||||
|
|
||||||
if (mob->IsNPC()) {
|
if (mob->IsNPC()) {
|
||||||
|
NPC *npc = mob->CastToNPC();
|
||||||
|
|
||||||
std::vector<std::string> npc_attributes = {
|
std::vector<std::string> npc_attributes = {
|
||||||
"npcid",
|
"npcid",
|
||||||
"texture",
|
"texture",
|
||||||
@ -350,13 +496,60 @@ void Mob::DisplayInfo(Mob *mob)
|
|||||||
"spawngroup",
|
"spawngroup",
|
||||||
"grid",
|
"grid",
|
||||||
"emote",
|
"emote",
|
||||||
|
"seeInvis",
|
||||||
|
"seeInvisUndead",
|
||||||
|
"faction",
|
||||||
|
"loottable",
|
||||||
|
"primSkill",
|
||||||
|
"secSkill",
|
||||||
|
"meleeTexture1",
|
||||||
|
"meleeTexture2",
|
||||||
|
"aggrorange",
|
||||||
|
"assistrange",
|
||||||
|
"findable",
|
||||||
|
"trackable",
|
||||||
|
"flymode",
|
||||||
|
"spellsid",
|
||||||
|
"curbuffslots",
|
||||||
|
"maxbuffslots",
|
||||||
};
|
};
|
||||||
window_text += WriteDisplayInfoSection(mob, "NPC Attributes", npc_attributes, 2, true);
|
|
||||||
|
window_text += WriteDisplayInfoSection(mob, "NPC Attributes", npc_attributes, 1, true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print Roambox
|
||||||
|
*/
|
||||||
|
if (npc->GetRoamboxMaxX() != 0 && npc->GetRoamboxMinX() != 0) {
|
||||||
|
std::vector<std::string> npc_roambox = {
|
||||||
|
"roamboxMinX",
|
||||||
|
"roamboxMaxX",
|
||||||
|
"roamboxMinY",
|
||||||
|
"roamboxMaxY",
|
||||||
|
"roamboxMinDelay",
|
||||||
|
"roamboxDelay",
|
||||||
|
"roamboxDistance",
|
||||||
|
};
|
||||||
|
|
||||||
|
window_text += WriteDisplayInfoSection(mob, "Roambox", npc_roambox, 1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (npc->proximity != nullptr) {
|
||||||
|
std::vector<std::string> npc_proximity = {
|
||||||
|
"proximityMinX",
|
||||||
|
"proximityMaxX",
|
||||||
|
"proximityMinY",
|
||||||
|
"proximityMaxY",
|
||||||
|
"proximityMinZ",
|
||||||
|
"proximityMaxZ",
|
||||||
|
};
|
||||||
|
|
||||||
|
window_text += WriteDisplayInfoSection(mob, "Proximity", npc_proximity, 1, true);
|
||||||
|
}
|
||||||
|
|
||||||
client->Message(0, " ");
|
client->Message(0, " ");
|
||||||
mob->CastToNPC()->QueryLoot(client);
|
npc->QueryLoot(client);
|
||||||
|
|
||||||
NPCCommandsMenu(client, mob->CastToNPC());
|
NPCCommandsMenu(client, npc);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "Window Length: " << window_text.length() << std::endl;
|
std::cout << "Window Length: " << window_text.length() << std::endl;
|
||||||
@ -369,7 +562,7 @@ void Mob::DisplayInfo(Mob *mob)
|
|||||||
EQEmu::popupresponse::MOB_INFO_DISMISS,
|
EQEmu::popupresponse::MOB_INFO_DISMISS,
|
||||||
0,
|
0,
|
||||||
100,
|
100,
|
||||||
10,
|
0,
|
||||||
"Snooze",
|
"Snooze",
|
||||||
"OK"
|
"OK"
|
||||||
);
|
);
|
||||||
|
|||||||
91
zone/npc.cpp
91
zone/npc.cpp
@ -383,6 +383,56 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi
|
|||||||
AISpellVar.idle_beneficial_chance = static_cast<uint8> (RuleI(Spells, AI_IdleBeneficialChance));
|
AISpellVar.idle_beneficial_chance = static_cast<uint8> (RuleI(Spells, AI_IdleBeneficialChance));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxMaxX() const
|
||||||
|
{
|
||||||
|
return roambox_max_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxMaxY() const
|
||||||
|
{
|
||||||
|
return roambox_max_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxMinX() const
|
||||||
|
{
|
||||||
|
return roambox_min_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxMinY() const
|
||||||
|
{
|
||||||
|
return roambox_min_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxDistance() const
|
||||||
|
{
|
||||||
|
return roambox_distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxDestinationX() const
|
||||||
|
{
|
||||||
|
return roambox_destination_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxDestinationY() const
|
||||||
|
{
|
||||||
|
return roambox_destination_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetRoamboxDestinationZ() const
|
||||||
|
{
|
||||||
|
return roambox_destination_z;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 NPC::GetRoamboxDelay() const
|
||||||
|
{
|
||||||
|
return roambox_delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 NPC::GetRoamboxMinDelay() const
|
||||||
|
{
|
||||||
|
return roambox_min_delay;
|
||||||
|
}
|
||||||
|
|
||||||
NPC::~NPC()
|
NPC::~NPC()
|
||||||
{
|
{
|
||||||
AI_Stop();
|
AI_Stop();
|
||||||
@ -2747,4 +2797,45 @@ void NPC::ModifyStatsOnCharm(bool bRemoved)
|
|||||||
// the rest of the stats aren't cached, so lets just do these two instead of full CalcBonuses()
|
// the rest of the stats aren't cached, so lets just do these two instead of full CalcBonuses()
|
||||||
SetAttackTimer();
|
SetAttackTimer();
|
||||||
CalcAC();
|
CalcAC();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16 NPC::GetMeleeTexture1() const
|
||||||
|
{
|
||||||
|
return d_melee_texture1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16 NPC::GetMeleeTexture2() const
|
||||||
|
{
|
||||||
|
return d_melee_texture2;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetProximityMinX()
|
||||||
|
{
|
||||||
|
return proximity->min_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetProximityMaxX()
|
||||||
|
{
|
||||||
|
return proximity->max_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetProximityMinY()
|
||||||
|
{
|
||||||
|
return proximity->min_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetProximityMaxY()
|
||||||
|
{
|
||||||
|
return proximity->max_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetProximityMinZ()
|
||||||
|
{
|
||||||
|
return proximity->min_z;
|
||||||
|
}
|
||||||
|
|
||||||
|
float NPC::GetProximityMaxZ()
|
||||||
|
{
|
||||||
|
return proximity->max_z;
|
||||||
}
|
}
|
||||||
24
zone/npc.h
24
zone/npc.h
@ -320,6 +320,9 @@ public:
|
|||||||
inline bool IsGuarding() const { return(m_GuardPoint.w != 0); }
|
inline bool IsGuarding() const { return(m_GuardPoint.w != 0); }
|
||||||
void SaveGuardSpotCharm();
|
void SaveGuardSpotCharm();
|
||||||
|
|
||||||
|
uint16 GetMeleeTexture1() const;
|
||||||
|
uint16 GetMeleeTexture2() const;
|
||||||
|
|
||||||
void RestoreGuardSpotCharm();
|
void RestoreGuardSpotCharm();
|
||||||
|
|
||||||
void AI_SetRoambox(
|
void AI_SetRoambox(
|
||||||
@ -349,6 +352,13 @@ public:
|
|||||||
inline const uint32 GetNPCSpellsID() const { return npc_spells_id; }
|
inline const uint32 GetNPCSpellsID() const { return npc_spells_id; }
|
||||||
inline const uint32 GetNPCSpellsEffectsID() const { return npc_spells_effects_id; }
|
inline const uint32 GetNPCSpellsEffectsID() const { return npc_spells_effects_id; }
|
||||||
|
|
||||||
|
float GetProximityMinX();
|
||||||
|
float GetProximityMaxX();
|
||||||
|
float GetProximityMinY();
|
||||||
|
float GetProximityMaxY();
|
||||||
|
float GetProximityMinZ();
|
||||||
|
float GetProximityMaxZ();
|
||||||
|
|
||||||
ItemList itemlist; //kathgar - why is this public? Doing other things or I would check the code
|
ItemList itemlist; //kathgar - why is this public? Doing other things or I would check the code
|
||||||
|
|
||||||
NPCProximity* proximity;
|
NPCProximity* proximity;
|
||||||
@ -443,6 +453,17 @@ public:
|
|||||||
|
|
||||||
bool IgnoreDespawn() { return ignore_despawn; }
|
bool IgnoreDespawn() { return ignore_despawn; }
|
||||||
|
|
||||||
|
float GetRoamboxMaxX() const;
|
||||||
|
float GetRoamboxMaxY() const;
|
||||||
|
float GetRoamboxMinX() const;
|
||||||
|
float GetRoamboxMinY() const;
|
||||||
|
float GetRoamboxDistance() const;
|
||||||
|
float GetRoamboxDestinationX() const;
|
||||||
|
float GetRoamboxDestinationY() const;
|
||||||
|
float GetRoamboxDestinationZ() const;
|
||||||
|
uint32 GetRoamboxDelay() const;
|
||||||
|
uint32 GetRoamboxMinDelay() const;
|
||||||
|
|
||||||
std::unique_ptr<Timer> AIautocastspell_timer;
|
std::unique_ptr<Timer> AIautocastspell_timer;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -557,7 +578,8 @@ protected:
|
|||||||
uint32 equipment[EQEmu::invslot::EQUIPMENT_COUNT]; //this is an array of item IDs
|
uint32 equipment[EQEmu::invslot::EQUIPMENT_COUNT]; //this is an array of item IDs
|
||||||
|
|
||||||
uint32 herosforgemodel; //this is the Hero Forge Armor Model (i.e 63 or 84 or 203)
|
uint32 herosforgemodel; //this is the Hero Forge Armor Model (i.e 63 or 84 or 203)
|
||||||
uint16 d_melee_texture1; //this is an item Material value
|
uint16 d_melee_texture1;
|
||||||
|
//this is an item Material value
|
||||||
uint16 d_melee_texture2; //this is an item Material value (offhand)
|
uint16 d_melee_texture2; //this is an item Material value (offhand)
|
||||||
const char* ammo_idfile; //this determines projectile graphic "IT###" (see item field 'idfile')
|
const char* ammo_idfile; //this determines projectile graphic "IT###" (see item field 'idfile')
|
||||||
uint8 prim_melee_type; //Sets the Primary Weapon attack message and animation
|
uint8 prim_melee_type; //Sets the Primary Weapon attack message and animation
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user