mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
Merge with master
This commit is contained in:
@@ -186,6 +186,8 @@ SET(zone_headers
|
||||
|
||||
ADD_EXECUTABLE(zone ${zone_sources} ${zone_headers})
|
||||
|
||||
INSTALL(TARGETS zone RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
ADD_DEFINITIONS(-DZONE)
|
||||
|
||||
TARGET_LINK_LIBRARIES(zone Common ${PERL_LIBRARY} debug ${MySQL_LIBRARY_DEBUG} optimized ${MySQL_LIBRARY_RELEASE} ${ZLIB_LIBRARY} ${LUA_LIBRARY})
|
||||
|
||||
@@ -27,12 +27,10 @@ Child of the Mob class.
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#ifdef _WINDOWS
|
||||
#define snprintf _snprintf
|
||||
#if (_MSC_VER < 1500)
|
||||
#define snprintf _snprintf
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#endif
|
||||
|
||||
#include "masterentity.h"
|
||||
|
||||
+77
-2
@@ -1,6 +1,8 @@
|
||||
#include "../common/debug.h"
|
||||
#include "../common/StringUtil.h"
|
||||
#include "QGlobals.h"
|
||||
#include "masterentity.h"
|
||||
#include "zone.h"
|
||||
#include "zonedb.h"
|
||||
|
||||
void QGlobalCache::AddGlobal(uint32 id, QGlobal global)
|
||||
@@ -16,7 +18,9 @@ void QGlobalCache::RemoveGlobal(std::string name, uint32 npcID, uint32 charID, u
|
||||
{
|
||||
if(name.compare((*iter).name) == 0)
|
||||
{
|
||||
if((npcID == (*iter).npc_id || (*iter).npc_id == 0) && (charID == (*iter).char_id || (*iter).char_id == 0) && (zoneID == (*iter).zone_id || (*iter).zone_id == 0))
|
||||
if((npcID == (*iter).npc_id || (*iter).npc_id == 0) &&
|
||||
(charID == (*iter).char_id || (*iter).char_id == 0) &&
|
||||
(zoneID == (*iter).zone_id || (*iter).zone_id == 0))
|
||||
{
|
||||
qGlobalBucket.erase(iter);
|
||||
return;
|
||||
@@ -33,7 +37,8 @@ void QGlobalCache::Combine(std::list<QGlobal> &cacheA, std::list<QGlobal> cacheB
|
||||
{
|
||||
QGlobal cur = (*iter);
|
||||
|
||||
if((cur.npc_id == npcID || cur.npc_id == 0) && (cur.char_id == charID || cur.char_id == 0) && (cur.zone_id == zoneID || cur.zone_id == 0))
|
||||
if((cur.npc_id == npcID || cur.npc_id == 0) && (cur.char_id == charID || cur.char_id == 0) &&
|
||||
(cur.zone_id == zoneID || cur.zone_id == 0))
|
||||
{
|
||||
if(Timer::GetTimeSeconds() < cur.expdate)
|
||||
{
|
||||
@@ -44,6 +49,76 @@ void QGlobalCache::Combine(std::list<QGlobal> &cacheA, std::list<QGlobal> cacheB
|
||||
}
|
||||
}
|
||||
|
||||
void QGlobalCache::GetQGlobals(std::list<QGlobal> &globals, NPC *n, Client *c, Zone *z) {
|
||||
globals.clear();
|
||||
|
||||
QGlobalCache *npc_c = nullptr;
|
||||
QGlobalCache *char_c = nullptr;
|
||||
QGlobalCache *zone_c = nullptr;
|
||||
uint32 npc_id = 0;
|
||||
uint32 char_id = 0;
|
||||
uint32 zone_id = 0;
|
||||
|
||||
if(n) {
|
||||
npc_id = n->GetNPCTypeID();
|
||||
npc_c = n->GetQGlobals();
|
||||
}
|
||||
|
||||
if(c) {
|
||||
char_id = c->CharacterID();
|
||||
char_c = c->GetQGlobals();
|
||||
}
|
||||
|
||||
if(z) {
|
||||
zone_id = z->GetZoneID();
|
||||
zone_c = z->GetQGlobals();
|
||||
}
|
||||
|
||||
if(!npc_c && n) {
|
||||
npc_c = n->CreateQGlobals();
|
||||
npc_c->LoadByNPCID(npc_id);
|
||||
}
|
||||
|
||||
if(!char_c && c) {
|
||||
char_c = c->CreateQGlobals();
|
||||
char_c->LoadByCharID(char_id);
|
||||
}
|
||||
|
||||
if(!zone_c && z) {
|
||||
zone_c = z->CreateQGlobals();
|
||||
zone_c->LoadByZoneID(zone_id);
|
||||
zone_c->LoadByGlobalContext();
|
||||
}
|
||||
|
||||
if(npc_c) {
|
||||
QGlobalCache::Combine(globals, npc_c->GetBucket(), npc_id, char_id, zone_id);
|
||||
}
|
||||
|
||||
if(char_c) {
|
||||
QGlobalCache::Combine(globals, char_c->GetBucket(), npc_id, char_id, zone_id);
|
||||
}
|
||||
|
||||
if(zone_c) {
|
||||
QGlobalCache::Combine(globals, zone_c->GetBucket(), npc_id, char_id, zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
bool QGlobalCache::GetQGlobal(QGlobal &g, std::string name, NPC *n, Client *c, Zone *z) {
|
||||
std::list<QGlobal> globals;
|
||||
QGlobalCache::GetQGlobals(globals, n, c, z);
|
||||
|
||||
auto iter = globals.begin();
|
||||
while(iter != globals.end()) {
|
||||
if(iter->name.compare(name) == 0) {
|
||||
g = (*iter);
|
||||
return true;
|
||||
}
|
||||
++iter;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void QGlobalCache::PurgeExpiredGlobals()
|
||||
{
|
||||
if(!qGlobalBucket.size())
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
#include <stdlib.h>
|
||||
#include "../common/timer.h"
|
||||
|
||||
class NPC;
|
||||
class Client;
|
||||
class Zone;
|
||||
|
||||
struct QGlobal
|
||||
{
|
||||
QGlobal() { }
|
||||
@@ -29,6 +33,8 @@ public:
|
||||
|
||||
//assumes cacheA is already a valid or empty list and doesn't check for valid items.
|
||||
static void Combine(std::list<QGlobal> &cacheA, std::list<QGlobal> cacheB, uint32 npcID, uint32 charID, uint32 zoneID);
|
||||
static void GetQGlobals(std::list<QGlobal> &globals, NPC *n, Client *c, Zone *z);
|
||||
static bool GetQGlobal(QGlobal &g, std::string name, NPC *n, Client *c, Zone *z);
|
||||
|
||||
void PurgeExpiredGlobals();
|
||||
void LoadByNPCID(uint32 npcID); //npc
|
||||
|
||||
+6
-6
@@ -1442,7 +1442,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_
|
||||
killerMob->GetCleanName(), GetCleanName(), ConvertArray(damage, val1));
|
||||
}
|
||||
|
||||
int exploss;
|
||||
int exploss = 0;
|
||||
mlog(COMBAT__HITS, "Fatal blow dealt by %s with %d damage, spell %d, skill %d", killerMob ? killerMob->GetName() : "Unknown", damage, spell, attack_skill);
|
||||
|
||||
//
|
||||
@@ -1490,7 +1490,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_
|
||||
if (killerMob != nullptr)
|
||||
{
|
||||
if (killerMob->IsNPC()) {
|
||||
parse->EventNPC(EVENT_SLAY, killerMob->CastToNPC(), this, "", 0);
|
||||
parse->EventNPC(EVENT_SLAY, killerMob->CastToNPC(), this, "", 0);
|
||||
|
||||
mod_client_death_npc(killerMob);
|
||||
|
||||
@@ -2124,7 +2124,7 @@ bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
|
||||
/* Send the EVENT_KILLED_MERIT event for all raid members */
|
||||
for (int i = 0; i < MAX_RAID_MEMBERS; i++) {
|
||||
if (kr->members[i].member != nullptr) { // If Group Member is Client
|
||||
parse->EventNPC(EVENT_KILLED_MERIT, this, kr->members[i].member, "killed", 0);
|
||||
parse->EventNPC(EVENT_KILLED_MERIT, this, kr->members[i].member, "killed", 0);
|
||||
|
||||
mod_npc_killed_merit(kr->members[i].member);
|
||||
|
||||
@@ -2167,7 +2167,7 @@ bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
|
||||
for (int i = 0; i < MAX_GROUP_MEMBERS; i++) {
|
||||
if (kg->members[i] != nullptr && kg->members[i]->IsClient()) { // If Group Member is Client
|
||||
Client *c = kg->members[i]->CastToClient();
|
||||
parse->EventNPC(EVENT_KILLED_MERIT, this, c, "killed", 0);
|
||||
parse->EventNPC(EVENT_KILLED_MERIT, this, c, "killed", 0);
|
||||
|
||||
mod_npc_killed_merit(c);
|
||||
|
||||
@@ -2214,7 +2214,7 @@ bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
|
||||
}
|
||||
}
|
||||
/* Send the EVENT_KILLED_MERIT event */
|
||||
parse->EventNPC(EVENT_KILLED_MERIT, this, give_exp_client, "killed", 0);
|
||||
parse->EventNPC(EVENT_KILLED_MERIT, this, give_exp_client, "killed", 0);
|
||||
|
||||
mod_npc_killed_merit(give_exp_client);
|
||||
|
||||
@@ -4206,7 +4206,7 @@ void Mob::ApplyMeleeDamageBonus(uint16 skill, int32 &damage){
|
||||
|
||||
if(!RuleB(Combat, UseIntervalAC)){
|
||||
if(IsNPC()){ //across the board NPC damage bonuses.
|
||||
//only account for STR here, assume their base STR was factored into their DB damages
|
||||
//only account for STR here, assume their base STR was factored into their DB damages
|
||||
int dmgbonusmod = 0;
|
||||
dmgbonusmod += (100*(itembonuses.STR + spellbonuses.STR))/3;
|
||||
dmgbonusmod += (100*(spellbonuses.ATK + itembonuses.ATK))/5;
|
||||
|
||||
+5
-6
@@ -24,13 +24,12 @@ target to center around.
|
||||
*/
|
||||
|
||||
#include "../common/debug.h"
|
||||
|
||||
#ifdef _WINDOWS
|
||||
#define snprintf _snprintf
|
||||
#if (_MSC_VER < 1500)
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#define snprintf _snprintf
|
||||
#define vsnprintf _vsnprintf
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#endif
|
||||
|
||||
#include "masterentity.h"
|
||||
|
||||
+9
-13
@@ -26,19 +26,13 @@
|
||||
|
||||
// for windows compile
|
||||
#ifdef _WINDOWS
|
||||
#define abs64 _abs64
|
||||
#define snprintf _snprintf
|
||||
#if (_MSC_VER < 1500)
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#define abs64 _abs64
|
||||
#else
|
||||
#include <stdarg.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include "../common/unix.h"
|
||||
#define abs64 abs
|
||||
#include <stdarg.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include "../common/unix.h"
|
||||
#define abs64 abs
|
||||
#endif
|
||||
|
||||
extern volatile bool RunLoops;
|
||||
@@ -601,7 +595,7 @@ bool Client::Save(uint8 iCommitNow) {
|
||||
p_timers.Store(&database);
|
||||
|
||||
// printf("Dumping inventory on save:\n");
|
||||
// m_inv.dumpInventory();
|
||||
// m_inv.dumpEntireInventory();
|
||||
|
||||
SaveTaskState();
|
||||
if (iCommitNow <= 1) {
|
||||
@@ -7367,10 +7361,12 @@ FACTION_VALUE Client::GetFactionLevel(uint32 char_id, uint32 npc_id, uint32 p_ra
|
||||
if (IsInvisible(tnpc))
|
||||
return FACTION_INDIFFERENT;
|
||||
if (tnpc && tnpc->GetOwnerID() != 0) // pets con amiably to owner and indiff to rest
|
||||
{
|
||||
if (char_id == tnpc->GetOwner()->CastToClient()->CharacterID())
|
||||
return FACTION_AMIABLE;
|
||||
else
|
||||
return FACTION_INDIFFERENT;
|
||||
}
|
||||
|
||||
//First get the NPC's Primary faction
|
||||
if(pFaction > 0)
|
||||
|
||||
+18
-10
@@ -19,8 +19,6 @@
|
||||
#define CLIENT_H
|
||||
class Client;
|
||||
|
||||
|
||||
|
||||
#include "../common/timer.h"
|
||||
#include "../common/ptimer.h"
|
||||
#include "../common/emu_opcodes.h"
|
||||
@@ -30,29 +28,39 @@ class Client;
|
||||
#include "../common/EQPacket.h"
|
||||
#include "../common/linked_list.h"
|
||||
#include "../common/extprofile.h"
|
||||
#include "zonedb.h"
|
||||
#include "errno.h"
|
||||
#include "../common/classes.h"
|
||||
#include "../common/races.h"
|
||||
#include "../common/deity.h"
|
||||
#include "../common/seperator.h"
|
||||
#include "../common/Item.h"
|
||||
#include "../common/guilds.h"
|
||||
#include "../common/item_struct.h"
|
||||
#include "../common/clientversions.h"
|
||||
|
||||
#include "zonedb.h"
|
||||
#include "errno.h"
|
||||
#include "mob.h"
|
||||
#include "npc.h"
|
||||
#include "merc.h"
|
||||
#include "zone.h"
|
||||
#include "AA.h"
|
||||
#include "../common/seperator.h"
|
||||
#include "../common/Item.h"
|
||||
#include "updatemgr.h"
|
||||
#include "../common/guilds.h"
|
||||
#include "questmgr.h"
|
||||
#include "QGlobals.h"
|
||||
|
||||
#ifdef _WINDOWS
|
||||
// since windows defines these within windef.h (which windows.h include)
|
||||
// we are required to undefine these to use min and max from <algorithm>
|
||||
#undef min
|
||||
#undef max
|
||||
#endif
|
||||
|
||||
#include <float.h>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include "../common/item_struct.h"
|
||||
#include "../common/clientversions.h"
|
||||
#include "QGlobals.h"
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
#define CLIENT_TIMEOUT 90000
|
||||
#define CLIENT_LD_TIMEOUT 30000 // length of time client stays in zone after LDing
|
||||
#define TARGETING_RANGE 200 // range for /assist and /target
|
||||
|
||||
@@ -128,7 +128,7 @@ void ClientLogs::EQEmuIO_pva(EQEMuLog::LogIDs id, const char *prefix, const char
|
||||
if(fmt[0] == '\n' || fmt[0] == '\r')
|
||||
return; //skip new lines...
|
||||
char *buf = _buffer;
|
||||
int plen = snprintf(buf, MAX_CLIENT_LOG_MESSAGE_LENGTH, prefix);
|
||||
int plen = snprintf(buf, MAX_CLIENT_LOG_MESSAGE_LENGTH, "%s", prefix);
|
||||
buf += plen;
|
||||
vsnprintf(buf, MAX_CLIENT_LOG_MESSAGE_LENGTH-plen, fmt, ap);
|
||||
_buffer[MAX_CLIENT_LOG_MESSAGE_LENGTH] = '\0';
|
||||
|
||||
@@ -15,19 +15,21 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <algorithm>
|
||||
|
||||
#include "../common/debug.h"
|
||||
#include "masterentity.h"
|
||||
#include "worldserver.h"
|
||||
#include "zonedb.h"
|
||||
#include "../common/spdat.h"
|
||||
#include "../common/packet_dump.h"
|
||||
#include "../common/packet_functions.h"
|
||||
#include "petitions.h"
|
||||
#include "../common/serverinfo.h"
|
||||
#include "../common/ZoneNumbers.h"
|
||||
#include "../common/moremath.h"
|
||||
#include "../common/guilds.h"
|
||||
#include "../common/logsys.h"
|
||||
#include "masterentity.h"
|
||||
#include "worldserver.h"
|
||||
#include "zonedb.h"
|
||||
#include "petitions.h"
|
||||
#include "StringIDs.h"
|
||||
#include "NpcAI.h"
|
||||
|
||||
|
||||
+14
-13
@@ -3884,7 +3884,7 @@ void Client::Handle_OP_LDoNInspect(const EQApplicationPacket *app)
|
||||
void Client::Handle_OP_Dye(const EQApplicationPacket *app)
|
||||
{
|
||||
if(app->size!=sizeof(DyeStruct))
|
||||
printf("Wrong size of DyeStruct, Got: %i, Expected: %lu\n",app->size,sizeof(DyeStruct));
|
||||
printf("Wrong size of DyeStruct, Got: %i, Expected: %i\n",app->size,sizeof(DyeStruct));
|
||||
else{
|
||||
DyeStruct* dye = (DyeStruct*)app->pBuffer;
|
||||
DyeArmor(dye);
|
||||
@@ -3955,7 +3955,7 @@ void Client::Handle_OP_GuildPublicNote(const EQApplicationPacket *app)
|
||||
|
||||
if (app->size < sizeof(GuildUpdate_PublicNote)) {
|
||||
// client calls for a motd on login even if they arent in a guild
|
||||
printf("Error: app size of %i < size of OP_GuildPublicNote of %lu\n",app->size,sizeof(GuildUpdate_PublicNote));
|
||||
printf("Error: app size of %i < size of OP_GuildPublicNote of %i\n",app->size,sizeof(GuildUpdate_PublicNote));
|
||||
return;
|
||||
}
|
||||
GuildUpdate_PublicNote* gpn=(GuildUpdate_PublicNote*)app->pBuffer;
|
||||
@@ -4013,7 +4013,7 @@ void Client::Handle_OP_SetGuildMOTD(const EQApplicationPacket *app)
|
||||
|
||||
if (app->size != sizeof(GuildMOTD_Struct)) {
|
||||
// client calls for a motd on login even if they arent in a guild
|
||||
printf("Error: app size of %i != size of GuildMOTD_Struct of %lu\n",app->size,sizeof(GuildMOTD_Struct));
|
||||
printf("Error: app size of %i != size of GuildMOTD_Struct of %i\n",app->size,sizeof(GuildMOTD_Struct));
|
||||
return;
|
||||
}
|
||||
if(!IsInAGuild()) {
|
||||
@@ -4988,7 +4988,7 @@ void Client::Handle_OP_TradeAcceptClick(const EQApplicationPacket *app)
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket(OP_FinishTrade, 0);
|
||||
QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
if(with->IsNPC())
|
||||
if(with->IsNPC()) {
|
||||
// Audit trade to database for player trade stream
|
||||
if(RuleB(QueryServ, PlayerLogHandins)) {
|
||||
uint16 handin_count = 0;
|
||||
@@ -5008,6 +5008,7 @@ void Client::Handle_OP_TradeAcceptClick(const EQApplicationPacket *app)
|
||||
else {
|
||||
FinishTrade(with->CastToNPC());
|
||||
}
|
||||
}
|
||||
#ifdef BOTS
|
||||
else if(with->IsBot())
|
||||
with->CastToBot()->FinishTrade(this, Bot::BotTradeClientNormal);
|
||||
@@ -6916,7 +6917,7 @@ void Client::Handle_OP_DeleteSpell(const EQApplicationPacket *app)
|
||||
void Client::Handle_OP_LoadSpellSet(const EQApplicationPacket *app)
|
||||
{
|
||||
if(app->size!=sizeof(LoadSpellSet_Struct)) {
|
||||
printf("Wrong size of LoadSpellSet_Struct! Expected: %lu, Got: %i\n",sizeof(LoadSpellSet_Struct),app->size);
|
||||
printf("Wrong size of LoadSpellSet_Struct! Expected: %i, Got: %i\n",sizeof(LoadSpellSet_Struct),app->size);
|
||||
return;
|
||||
}
|
||||
int i;
|
||||
@@ -6931,7 +6932,7 @@ void Client::Handle_OP_LoadSpellSet(const EQApplicationPacket *app)
|
||||
void Client::Handle_OP_PetitionBug(const EQApplicationPacket *app)
|
||||
{
|
||||
if(app->size!=sizeof(PetitionBug_Struct))
|
||||
printf("Wrong size of BugStruct! Expected: %lu, Got: %i\n",sizeof(PetitionBug_Struct),app->size);
|
||||
printf("Wrong size of BugStruct! Expected: %i, Got: %i\n",sizeof(PetitionBug_Struct),app->size);
|
||||
else{
|
||||
Message(0, "Petition Bugs are not supported, please use /bug.");
|
||||
}
|
||||
@@ -6941,7 +6942,7 @@ void Client::Handle_OP_PetitionBug(const EQApplicationPacket *app)
|
||||
void Client::Handle_OP_Bug(const EQApplicationPacket *app)
|
||||
{
|
||||
if(app->size!=sizeof(BugStruct))
|
||||
printf("Wrong size of BugStruct got %d expected %lu!\n", app->size, sizeof(BugStruct));
|
||||
printf("Wrong size of BugStruct got %d expected %i!\n", app->size, sizeof(BugStruct));
|
||||
else{
|
||||
BugStruct* bug=(BugStruct*)app->pBuffer;
|
||||
database.UpdateBug(bug);
|
||||
@@ -8337,7 +8338,7 @@ void Client::Handle_OP_OpenTributeMaster(const EQApplicationPacket *app)
|
||||
_pkt(TRIBUTE__IN, app);
|
||||
|
||||
if(app->size != sizeof(StartTribute_Struct))
|
||||
printf("Error in OP_OpenTributeMaster. Expected size of: %lu, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
printf("Error in OP_OpenTributeMaster. Expected size of: %i, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
else {
|
||||
//Opens the tribute master window
|
||||
StartTribute_Struct* st = (StartTribute_Struct*)app->pBuffer;
|
||||
@@ -8362,7 +8363,7 @@ void Client::Handle_OP_OpenGuildTributeMaster(const EQApplicationPacket *app)
|
||||
_pkt(TRIBUTE__IN, app);
|
||||
|
||||
if(app->size != sizeof(StartTribute_Struct))
|
||||
printf("Error in OP_OpenGuildTributeMaster. Expected size of: %lu, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
printf("Error in OP_OpenGuildTributeMaster. Expected size of: %i, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
else {
|
||||
//Opens the guild tribute master window
|
||||
StartTribute_Struct* st = (StartTribute_Struct*)app->pBuffer;
|
||||
@@ -8388,7 +8389,7 @@ void Client::Handle_OP_TributeItem(const EQApplicationPacket *app)
|
||||
|
||||
//player donates an item...
|
||||
if(app->size != sizeof(TributeItem_Struct))
|
||||
printf("Error in OP_TributeItem. Expected size of: %lu, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
printf("Error in OP_TributeItem. Expected size of: %i, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
else {
|
||||
TributeItem_Struct* t = (TributeItem_Struct*)app->pBuffer;
|
||||
|
||||
@@ -8417,7 +8418,7 @@ void Client::Handle_OP_TributeMoney(const EQApplicationPacket *app)
|
||||
|
||||
//player donates money
|
||||
if(app->size != sizeof(TributeMoney_Struct))
|
||||
printf("Error in OP_TributeMoney. Expected size of: %lu, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
printf("Error in OP_TributeMoney. Expected size of: %i, but got: %i\n",sizeof(StartTribute_Struct),app->size);
|
||||
else {
|
||||
TributeMoney_Struct* t = (TributeMoney_Struct*)app->pBuffer;
|
||||
|
||||
@@ -8565,7 +8566,7 @@ void Client::Handle_OP_Ignore(const EQApplicationPacket *app)
|
||||
void Client::Handle_OP_FindPersonRequest(const EQApplicationPacket *app)
|
||||
{
|
||||
if(app->size != sizeof(FindPersonRequest_Struct))
|
||||
printf("Error in FindPersonRequest_Struct. Expected size of: %lu, but got: %i\n",sizeof(FindPersonRequest_Struct),app->size);
|
||||
printf("Error in FindPersonRequest_Struct. Expected size of: %i, but got: %i\n",sizeof(FindPersonRequest_Struct),app->size);
|
||||
else {
|
||||
FindPersonRequest_Struct* t = (FindPersonRequest_Struct*)app->pBuffer;
|
||||
|
||||
@@ -9173,7 +9174,7 @@ bool Client::FinishConnState2(DBAsyncWork* dbaw) {
|
||||
|
||||
#ifdef _EQDEBUG
|
||||
printf("Dumping inventory on load:\n");
|
||||
m_inv.dumpInventory();
|
||||
m_inv.dumpEntireInventory();
|
||||
#endif
|
||||
|
||||
//lost in current PP
|
||||
|
||||
+7
-5
@@ -1686,10 +1686,12 @@ void command_timezone(Client *c, const Seperator *sep)
|
||||
c->Message(13, "Current timezone is: %ih %im", zone->zone_time.getEQTimeZoneHr(), zone->zone_time.getEQTimeZoneMin());
|
||||
}
|
||||
else {
|
||||
if(sep->arg[2]=="")
|
||||
strcpy(sep->arg[2], "0");
|
||||
c->Message(13, "Setting timezone to %s h %s m", sep->arg[1], sep->arg[2]);
|
||||
uint32 ntz=(atoi(sep->arg[1])*60)+atoi(sep->arg[2]);
|
||||
uint8 hours = atoi(sep->arg[1]);
|
||||
uint8 minutes = atoi(sep->arg[2]);
|
||||
if(!sep->IsNumber(2))
|
||||
minutes = 0;
|
||||
c->Message(13, "Setting timezone to %i h %i m", hours, minutes);
|
||||
uint32 ntz=(hours*60)+minutes;
|
||||
zone->zone_time.setEQTimeZone(ntz);
|
||||
database.SetZoneTZ(zone->GetZoneID(), zone->GetInstanceVersion(), ntz);
|
||||
|
||||
@@ -3824,7 +3826,7 @@ void command_fixmob(Client *c, const Seperator *sep)
|
||||
{
|
||||
|
||||
uint32 Adjustment = 1; // Previous or Next
|
||||
char codeMove;
|
||||
char codeMove = 0;
|
||||
|
||||
if (sep->arg[2])
|
||||
{
|
||||
|
||||
@@ -1485,11 +1485,13 @@ void EntityList::RemoveFromTargets(Mob* mob, bool RemoveFromXTargets)
|
||||
m->RemoveFromHateList(mob);
|
||||
|
||||
if(RemoveFromXTargets)
|
||||
{
|
||||
if(m->IsClient())
|
||||
m->CastToClient()->RemoveXTarget(mob, false);
|
||||
// FadingMemories calls this function passing the client.
|
||||
else if(mob->IsClient())
|
||||
mob->CastToClient()->RemoveXTarget(m, false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -20,12 +20,13 @@
|
||||
|
||||
#include "../common/types.h"
|
||||
#include "../common/linked_list.h"
|
||||
#include "zonedb.h"
|
||||
#include "../common/eq_constants.h"
|
||||
#include "zonedump.h"
|
||||
#include "zonedbasync.h"
|
||||
#include "../common/servertalk.h"
|
||||
#include "../common/bodytypes.h"
|
||||
#include "../common/eq_constants.h"
|
||||
|
||||
#include "zonedb.h"
|
||||
#include "zonedump.h"
|
||||
#include "zonedbasync.h"
|
||||
#include "QGlobals.h"
|
||||
|
||||
// max number of newspawns to send per bulk packet
|
||||
|
||||
+2
-2
@@ -5009,7 +5009,7 @@ Merc* Merc::LoadMerc(Client *c, MercTemplate* merc_template, uint32 merchant_id,
|
||||
snprintf(c->GetEPP().merc_name, 64, "%s", c->GetMercInfo().merc_name);
|
||||
snprintf(npc_type->name, 64, "%s", c->GetMercInfo().merc_name);
|
||||
}
|
||||
uint8 gender;
|
||||
uint8 gender = 0;
|
||||
if(merchant_id > 0) {
|
||||
NPC* tar = entity_list.GetNPCByID(merchant_id);
|
||||
if(tar) {
|
||||
@@ -5533,7 +5533,7 @@ bool Merc::Suspend() {
|
||||
}
|
||||
|
||||
bool Merc::Unsuspend(bool setMaxStats) {
|
||||
Client* mercOwner;
|
||||
Client* mercOwner = nullptr;
|
||||
bool loaded = false;
|
||||
|
||||
if(GetMercOwner()) {
|
||||
|
||||
+4
-4
@@ -92,13 +92,13 @@ Mob::Mob(const char* in_name,
|
||||
mana_timer(2000),
|
||||
spellend_timer(0),
|
||||
rewind_timer(30000), //Timer used for determining amount of time between actual player position updates for /rewind.
|
||||
bindwound_timer(10000),
|
||||
stunned_timer(0),
|
||||
spun_timer(0),
|
||||
bardsong_timer(6000),
|
||||
flee_timer(FLEE_CHECK_TIMER),
|
||||
bindwound_timer(10000),
|
||||
gravity_timer(1000),
|
||||
viral_timer(0)
|
||||
viral_timer(0),
|
||||
flee_timer(FLEE_CHECK_TIMER)
|
||||
|
||||
{
|
||||
targeted = 0;
|
||||
@@ -879,7 +879,7 @@ void Mob::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho)
|
||||
|
||||
// Changing the first string made it vanish, so it has some significance.
|
||||
if(lastname)
|
||||
sprintf(ns->spawn.DestructibleModel, lastname);
|
||||
sprintf(ns->spawn.DestructibleModel, "%s", lastname);
|
||||
// Changing the second string made no visible difference
|
||||
sprintf(ns->spawn.DestructibleName2, "%s", ns->spawn.name);
|
||||
// Putting a string in the final one that was previously empty had no visible effect.
|
||||
|
||||
+9
-8
@@ -972,11 +972,6 @@ protected:
|
||||
Timer tic_timer;
|
||||
Timer mana_timer;
|
||||
|
||||
float rewind_x;
|
||||
float rewind_y;
|
||||
float rewind_z;
|
||||
Timer rewind_timer;
|
||||
|
||||
//spell casting vars
|
||||
Timer spellend_timer;
|
||||
uint16 casting_spell_id;
|
||||
@@ -995,6 +990,11 @@ protected:
|
||||
uint8 bardsong_slot;
|
||||
uint32 bardsong_target_id;
|
||||
|
||||
float rewind_x;
|
||||
float rewind_y;
|
||||
float rewind_z;
|
||||
Timer rewind_timer;
|
||||
|
||||
// Currently 3 max nimbus particle effects at a time
|
||||
uint32 nimbus_effect1;
|
||||
uint32 nimbus_effect2;
|
||||
@@ -1029,6 +1029,10 @@ protected:
|
||||
int16 rooted_mod; //Modifier to root break chance, defined when root is cast on a target.
|
||||
bool offhand;
|
||||
|
||||
// Bind wound
|
||||
Timer bindwound_timer;
|
||||
Mob* bindwound_target;
|
||||
|
||||
Timer stunned_timer;
|
||||
Timer spun_timer;
|
||||
Timer bardsong_timer;
|
||||
@@ -1111,9 +1115,6 @@ protected:
|
||||
uint32 pDontSnareMeBefore;
|
||||
uint32 pDontCureMeBefore;
|
||||
|
||||
// Bind wound
|
||||
Timer bindwound_timer;
|
||||
Mob* bindwound_target;
|
||||
// hp event
|
||||
int nexthpevent;
|
||||
int nextinchpevent;
|
||||
|
||||
+32
-34
@@ -1,4 +1,3 @@
|
||||
#define DONT_SHARED_OPCODES
|
||||
/* EQEMu: Everquest Server Emulator
|
||||
Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org)
|
||||
|
||||
@@ -16,34 +15,11 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define DONT_SHARED_OPCODES
|
||||
|
||||
#include "../common/debug.h"
|
||||
#include "../common/features.h"
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
#ifdef _CRTDBG_MAP_ALLOC
|
||||
#undef new
|
||||
#endif
|
||||
#include <fstream>
|
||||
#ifdef _CRTDBG_MAP_ALLOC
|
||||
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
|
||||
#endif
|
||||
#ifdef _WINDOWS
|
||||
#include <conio.h>
|
||||
#define snprintf _snprintf
|
||||
#if (_MSC_VER < 1500)
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#endif
|
||||
|
||||
volatile bool RunLoops = true;
|
||||
extern volatile bool ZoneLoaded;
|
||||
|
||||
#include "../common/queue.h"
|
||||
#include "../common/timer.h"
|
||||
#include "../common/EQStream.h"
|
||||
@@ -59,6 +35,7 @@ extern volatile bool ZoneLoaded;
|
||||
#include "../common/patches/patches.h"
|
||||
#include "../common/rulesys.h"
|
||||
#include "../common/MiscFunctions.h"
|
||||
#include "../common/StringUtil.h"
|
||||
#include "../common/platform.h"
|
||||
#include "../common/crash.h"
|
||||
#include "../common/ipc_mutex.h"
|
||||
@@ -66,6 +43,7 @@ extern volatile bool ZoneLoaded;
|
||||
#include "../common/eqemu_exception.h"
|
||||
#include "../common/spdat.h"
|
||||
|
||||
#include "ZoneConfig.h"
|
||||
#include "masterentity.h"
|
||||
#include "worldserver.h"
|
||||
#include "net.h"
|
||||
@@ -82,6 +60,33 @@ extern volatile bool ZoneLoaded;
|
||||
#include "client_logs.h"
|
||||
#include "questmgr.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef _CRTDBG_MAP_ALLOC
|
||||
#undef new
|
||||
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
|
||||
#endif
|
||||
|
||||
#ifdef _WINDOWS
|
||||
#include <conio.h>
|
||||
#include <process.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#include "../common/unix.h"
|
||||
#endif
|
||||
|
||||
volatile bool RunLoops = true;
|
||||
extern volatile bool ZoneLoaded;
|
||||
|
||||
|
||||
|
||||
TimeoutManager timeout_manager;
|
||||
NetConnection net;
|
||||
EntityList entity_list;
|
||||
@@ -102,13 +107,6 @@ const SPDat_Spell_Struct* spells;
|
||||
void LoadSpells(EQEmu::MemoryMappedFile **mmf);
|
||||
int32 SPDAT_RECORDS = -1;
|
||||
|
||||
#ifdef _WINDOWS
|
||||
#include <process.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#include "../common/unix.h"
|
||||
#endif
|
||||
|
||||
void Shutdown();
|
||||
extern void MapOpcodes();
|
||||
|
||||
|
||||
+2
-2
@@ -110,10 +110,10 @@ NPC::NPC(const NPCType* d, Spawn2* in_respawn, float x, float y, float z, float
|
||||
classattack_timer(1000),
|
||||
knightattack_timer(1000),
|
||||
assist_timer(AIassistcheck_delay),
|
||||
qglobal_purge_timer(30000),
|
||||
sendhpupdate_timer(1000),
|
||||
enraged_timer(1000),
|
||||
taunt_timer(TauntReuseTime * 1000),
|
||||
qglobal_purge_timer(30000)
|
||||
taunt_timer(TauntReuseTime * 1000)
|
||||
{
|
||||
//What is the point of this, since the names get mangled..
|
||||
Mob* mob = entity_list.GetMob(name);
|
||||
|
||||
+1
-1
@@ -130,7 +130,7 @@ void SpawnGroupList::AddSpawnGroup(SpawnGroup* newGroup) {
|
||||
|
||||
SpawnGroup* SpawnGroupList::GetSpawnGroup(uint32 in_id) {
|
||||
if(groups.count(in_id) != 1)
|
||||
return(false);
|
||||
return nullptr;
|
||||
return(groups[in_id]);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,17 +75,20 @@ void Mob::ApplySpecialAttackMod(SkillType skill, int32 &dmg, int32 &mindmg) {
|
||||
case ROUND_KICK:
|
||||
case KICK:
|
||||
item_slot = SLOT_FEET;
|
||||
break;
|
||||
break;
|
||||
|
||||
case BASH:
|
||||
item_slot = SLOT_SECONDARY;
|
||||
break;
|
||||
break;
|
||||
|
||||
case DRAGON_PUNCH:
|
||||
case EAGLE_STRIKE:
|
||||
case TIGER_CLAW:
|
||||
item_slot = SLOT_HANDS;
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (item_slot >= 0){
|
||||
|
||||
@@ -4484,12 +4484,13 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
|
||||
case SE_TriggerOnCast:
|
||||
{
|
||||
if(type == focusTriggerOnCast)
|
||||
|
||||
{
|
||||
if(MakeRandomInt(0, 100) <= focus_spell.base[i])
|
||||
value = focus_spell.base2[i];
|
||||
|
||||
else
|
||||
value = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -5102,7 +5103,7 @@ bool Mob::TryDivineSave()
|
||||
{
|
||||
SetHP(1);
|
||||
|
||||
uint16 EffectsToTry[] =
|
||||
int16 EffectsToTry[] =
|
||||
{
|
||||
aabonuses.DivineSaveChance[1],
|
||||
itembonuses.DivineSaveChance[1],
|
||||
|
||||
+3
-6
@@ -2483,10 +2483,8 @@ void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) {
|
||||
thd1 = (TaskHistoryReplyData1_Struct*)Ptr;
|
||||
thd1->ActivityType = Task->Activity[i].Type;
|
||||
Ptr = (char *)thd1 + sizeof(TaskHistoryReplyData1_Struct);
|
||||
sprintf(Ptr, Task->Activity[i].Text1);
|
||||
Ptr = Ptr + strlen(Ptr) + 1;
|
||||
sprintf(Ptr, Task->Activity[i].Text2);
|
||||
Ptr = Ptr + strlen(Ptr) + 1;
|
||||
VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].Text1);
|
||||
VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].Text2);
|
||||
thd2 = (TaskHistoryReplyData2_Struct*)Ptr;
|
||||
thd2->GoalCount = Task->Activity[i].GoalCount;
|
||||
thd2->unknown04 = 0xffffffff;
|
||||
@@ -2494,8 +2492,7 @@ void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) {
|
||||
thd2->ZoneID = Task->Activity[i].ZoneID;
|
||||
thd2->unknown16 = 0x00000000;
|
||||
Ptr = (char *)thd2 + sizeof(TaskHistoryReplyData2_Struct);
|
||||
sprintf(Ptr, Task->Activity[i].Text3);
|
||||
Ptr = Ptr + strlen(Ptr) + 1;
|
||||
VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].Text3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -2141,7 +2141,7 @@ void Client::ShowBuyLines(const EQApplicationPacket *app) {
|
||||
// This packet produces the SoandSo is browsing your Buy Lines message
|
||||
bb->Action = Barter_SellerBrowsing;
|
||||
|
||||
sprintf(bb->PlayerName, GetName());
|
||||
sprintf(bb->PlayerName, "%s", GetName());
|
||||
|
||||
Buyer->QueuePacket(outapp);
|
||||
|
||||
@@ -2707,7 +2707,7 @@ void Client::BuyerItemSearch(const EQApplicationPacket *app) {
|
||||
pdest = strstr(Name, Criteria);
|
||||
|
||||
if (pdest != nullptr) {
|
||||
sprintf(bisr->Results[Count].ItemName, item->Name);
|
||||
sprintf(bisr->Results[Count].ItemName, "%s", item->Name);
|
||||
bisr->Results[Count].ItemID = item->ID;
|
||||
bisr->Results[Count].Unknown068 = item->Icon;
|
||||
bisr->Results[Count].Unknown072 = 0x00000000;
|
||||
|
||||
+10
-13
@@ -25,21 +25,18 @@
|
||||
#include <map>
|
||||
|
||||
#ifdef _WINDOWS
|
||||
#include <windows.h>
|
||||
#include <winsock.h>
|
||||
#include <process.h>
|
||||
|
||||
#define snprintf _snprintf
|
||||
#if (_MSC_VER < 1500)
|
||||
#include <windows.h>
|
||||
#include <winsock.h>
|
||||
#include <process.h>
|
||||
#define snprintf _snprintf
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
#else
|
||||
#include <stdarg.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include "../common/unix.h"
|
||||
#include <stdarg.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include "../common/unix.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -94,6 +94,8 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
}
|
||||
else {
|
||||
@@ -247,6 +249,8 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) {
|
||||
LogFile->write(EQEMuLog::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%s'. Not near a zone point.", GetName(), target_zone_name);
|
||||
SendZoneCancel(zc);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
||||
//OK, now we should know where were going...
|
||||
|
||||
Reference in New Issue
Block a user