mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
[Crash] Fix IsUnderwaterOnly crash where npc data references can be stale (#2830)
* [Crash] Fix IsUnderwaterOnly crash where npc data references can be stale * m_ prefix
This commit is contained in:
parent
34d21d4056
commit
c6eb12ac16
73
zone/npc.cpp
73
zone/npc.cpp
@ -160,42 +160,43 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi
|
|||||||
size = 5;
|
size = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
taunting = false;
|
taunting = false;
|
||||||
proximity = nullptr;
|
proximity = nullptr;
|
||||||
copper = 0;
|
copper = 0;
|
||||||
silver = 0;
|
silver = 0;
|
||||||
gold = 0;
|
gold = 0;
|
||||||
platinum = 0;
|
platinum = 0;
|
||||||
max_dmg = npc_type_data->max_dmg;
|
max_dmg = npc_type_data->max_dmg;
|
||||||
min_dmg = npc_type_data->min_dmg;
|
min_dmg = npc_type_data->min_dmg;
|
||||||
attack_count = npc_type_data->attack_count;
|
attack_count = npc_type_data->attack_count;
|
||||||
grid = 0;
|
grid = 0;
|
||||||
wp_m = 0;
|
wp_m = 0;
|
||||||
max_wp = 0;
|
max_wp = 0;
|
||||||
save_wp = 0;
|
save_wp = 0;
|
||||||
spawn_group_id = 0;
|
spawn_group_id = 0;
|
||||||
swarmInfoPtr = nullptr;
|
swarmInfoPtr = nullptr;
|
||||||
spellscale = npc_type_data->spellscale;
|
spellscale = npc_type_data->spellscale;
|
||||||
healscale = npc_type_data->healscale;
|
healscale = npc_type_data->healscale;
|
||||||
pAggroRange = npc_type_data->aggroradius;
|
pAggroRange = npc_type_data->aggroradius;
|
||||||
pAssistRange = npc_type_data->assistradius;
|
pAssistRange = npc_type_data->assistradius;
|
||||||
findable = npc_type_data->findable;
|
findable = npc_type_data->findable;
|
||||||
trackable = npc_type_data->trackable;
|
trackable = npc_type_data->trackable;
|
||||||
MR = npc_type_data->MR;
|
MR = npc_type_data->MR;
|
||||||
CR = npc_type_data->CR;
|
CR = npc_type_data->CR;
|
||||||
DR = npc_type_data->DR;
|
DR = npc_type_data->DR;
|
||||||
FR = npc_type_data->FR;
|
FR = npc_type_data->FR;
|
||||||
PR = npc_type_data->PR;
|
PR = npc_type_data->PR;
|
||||||
Corrup = npc_type_data->Corrup;
|
Corrup = npc_type_data->Corrup;
|
||||||
PhR = npc_type_data->PhR;
|
PhR = npc_type_data->PhR;
|
||||||
STR = npc_type_data->STR;
|
STR = npc_type_data->STR;
|
||||||
STA = npc_type_data->STA;
|
STA = npc_type_data->STA;
|
||||||
AGI = npc_type_data->AGI;
|
AGI = npc_type_data->AGI;
|
||||||
DEX = npc_type_data->DEX;
|
DEX = npc_type_data->DEX;
|
||||||
INT = npc_type_data->INT;
|
INT = npc_type_data->INT;
|
||||||
WIS = npc_type_data->WIS;
|
WIS = npc_type_data->WIS;
|
||||||
CHA = npc_type_data->CHA;
|
CHA = npc_type_data->CHA;
|
||||||
npc_mana = npc_type_data->Mana;
|
npc_mana = npc_type_data->Mana;
|
||||||
|
m_is_underwater_only = npc_type_data->underwater;
|
||||||
|
|
||||||
//quick fix of ordering if they screwed it up in the DB
|
//quick fix of ordering if they screwed it up in the DB
|
||||||
if (max_dmg < min_dmg) {
|
if (max_dmg < min_dmg) {
|
||||||
|
|||||||
@ -437,7 +437,7 @@ public:
|
|||||||
/* Only allows players that killed corpse to loot */
|
/* Only allows players that killed corpse to loot */
|
||||||
const bool HasPrivateCorpse() const { return NPCTypedata_ours ? NPCTypedata_ours->private_corpse : NPCTypedata->private_corpse; }
|
const bool HasPrivateCorpse() const { return NPCTypedata_ours ? NPCTypedata_ours->private_corpse : NPCTypedata->private_corpse; }
|
||||||
|
|
||||||
virtual const bool IsUnderwaterOnly() const { return NPCTypedata_ours ? NPCTypedata_ours->underwater : NPCTypedata->underwater; }
|
virtual const bool IsUnderwaterOnly() const { return m_is_underwater_only; }
|
||||||
const char* GetRawNPCTypeName() const { return NPCTypedata_ours ? NPCTypedata_ours->name : NPCTypedata->name; }
|
const char* GetRawNPCTypeName() const { return NPCTypedata_ours ? NPCTypedata_ours->name : NPCTypedata->name; }
|
||||||
|
|
||||||
virtual int GetKillExpMod() const { return NPCTypedata_ours ? NPCTypedata_ours->exp_mod : NPCTypedata->exp_mod; }
|
virtual int GetKillExpMod() const { return NPCTypedata_ours ? NPCTypedata_ours->exp_mod : NPCTypedata->exp_mod; }
|
||||||
@ -674,6 +674,8 @@ protected:
|
|||||||
QGlobalCache *qGlobals;
|
QGlobalCache *qGlobals;
|
||||||
uint32 adventure_template_id;
|
uint32 adventure_template_id;
|
||||||
|
|
||||||
|
bool m_is_underwater_only = false;
|
||||||
|
|
||||||
//mercenary stuff
|
//mercenary stuff
|
||||||
std::list<MercType> mercTypeList;
|
std::list<MercType> mercTypeList;
|
||||||
std::list<MercData> mercDataList;
|
std::list<MercData> mercDataList;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user