Conflicts:
	changelog.txt
This commit is contained in:
badcaptain 2013-03-22 00:07:22 -04:00
commit 9b1a18d9a3
10 changed files with 33 additions and 8 deletions

View File

@ -6,6 +6,9 @@ Bad_Captain: Fixed merc buffing bugs.
Bad_Captain: Added checks before dismissing merc to prevent possible bugged mercs.
Bad_Captain: Merged in Secret's merc memory leak fixes.
== 03/20/2013 ==
demonstar55: Fixed stacking issues with SE_Limit* (ex. Unholy Aura Discipline and Aura of Reverence)
== 03/18/2013 ==
Bad_Captain: Fixed zone crash due to merc focus effects & tribute.
Bad_Captain: Fixed merc aggro issues when client in melee range & spell recast timers.

View File

@ -3150,6 +3150,7 @@ ENCODE(OP_VetRewardsAvaliable)
unsigned char * __emu_buffer = inapp->pBuffer;
uint32 count = ((*p)->Size() / sizeof(InternalVeteranReward));
*p = NULL;
EQApplicationPacket *outapp_create = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(structs::VeteranReward)*count));
uchar *old_data = __emu_buffer;
@ -3174,7 +3175,7 @@ ENCODE(OP_VetRewardsAvaliable)
}
dest->FastQueuePacket(&outapp_create);
delete[] __emu_buffer;
delete inapp;
}
ENCODE(OP_WhoAllResponse)

View File

@ -2097,6 +2097,7 @@ ENCODE(OP_VetRewardsAvaliable)
unsigned char * __emu_buffer = inapp->pBuffer;
uint32 count = ((*p)->Size() / sizeof(InternalVeteranReward));
*p = NULL;
EQApplicationPacket *outapp_create = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(structs::VeteranReward)*count));
uchar *old_data = __emu_buffer;
@ -2121,7 +2122,7 @@ ENCODE(OP_VetRewardsAvaliable)
}
dest->FastQueuePacket(&outapp_create);
delete[] __emu_buffer;
delete inapp;
}
ENCODE(OP_WhoAllResponse)

View File

@ -1735,6 +1735,7 @@ ENCODE(OP_VetRewardsAvaliable)
unsigned char * __emu_buffer = inapp->pBuffer;
uint32 count = ((*p)->Size() / sizeof(InternalVeteranReward));
*p = NULL;
EQApplicationPacket *outapp_create = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(structs::VeteranReward)*count));
uchar *old_data = __emu_buffer;
@ -1759,7 +1760,7 @@ ENCODE(OP_VetRewardsAvaliable)
}
dest->FastQueuePacket(&outapp_create);
delete[] __emu_buffer;
delete inapp;
}
ENCODE(OP_DeleteSpawn) {

View File

@ -898,6 +898,7 @@ ENCODE(OP_VetRewardsAvaliable)
unsigned char * __emu_buffer = inapp->pBuffer;
uint32 count = ((*p)->Size() / sizeof(InternalVeteranReward));
*p = NULL;
EQApplicationPacket *outapp_create = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(structs::VeteranReward)*count));
uchar *old_data = __emu_buffer;
@ -916,7 +917,7 @@ ENCODE(OP_VetRewardsAvaliable)
}
dest->FastQueuePacket(&outapp_create);
delete[] __emu_buffer;
delete inapp;
}
ENCODE(OP_InspectAnswer) {

View File

@ -2157,6 +2157,7 @@ ENCODE(OP_VetRewardsAvaliable)
unsigned char * __emu_buffer = inapp->pBuffer;
uint32 count = ((*p)->Size() / sizeof(InternalVeteranReward));
*p = NULL;
EQApplicationPacket *outapp_create = new EQApplicationPacket(OP_VetRewardsAvaliable, (sizeof(structs::VeteranReward)*count));
uchar *old_data = __emu_buffer;
@ -2181,7 +2182,7 @@ ENCODE(OP_VetRewardsAvaliable)
}
dest->FastQueuePacket(&outapp_create);
delete[] __emu_buffer;
delete inapp;
}
ENCODE(OP_WhoAllResponse)

View File

@ -37,9 +37,11 @@ Merc::Merc(const NPCType* d, float x, float y, float z, float heading)
_baseFR = d->FR;
_basePR = d->PR;
_baseCorrup = d->Corrup;
_OwnerClientVersion = EQClientTitanium;
RestRegenHP = 0;
RestRegenMana = 0;
RestRegenEndurance = 0;
cur_end = 0;
_medding = false;
_suspended = false;
@ -2750,7 +2752,7 @@ int16 Merc::GetFocusEffect(focusType type, uint16 spell_id) {
int16 focus_max_real = 0;
//item focus
for(int x=0; x<=MAX_WORN_INVENTORY; x++)
for(int x =0; x < MAX_WORN_INVENTORY; ++x)
{
TempItem = NULL;
if (equipment[x] == 0)

View File

@ -274,7 +274,7 @@ Mob::Mob(const char* in_name,
memset(&itembonuses, 0, sizeof(StatBonuses));
memset(&spellbonuses, 0, sizeof(StatBonuses));
//memset(&aabonuses, 0, sizeof(StatBonuses)); //don't need this until we start using Client::CalcAABonuses()
memset(&aabonuses, 0, sizeof(StatBonuses));
spellbonuses.AggroRange = -1;
spellbonuses.AssistRange = -1;
pLastChange = 0;

View File

@ -2564,6 +2564,22 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
if(effect1 != effect2)
continue;
/*
Skip check if effect is SE_Limit*
skip checking effect2 since we know they are equal
*/
if(effect1 == SE_LimitMaxLevel ||
effect1 == SE_LimitResist ||
effect1 == SE_LimitTarget ||
effect1 == SE_LimitEffect ||
effect1 == SE_LimitSpellType ||
effect1 == SE_LimitSpell ||
effect1 == SE_LimitMinDur ||
effect1 == SE_LimitInstant ||
effect1 == SE_LimitMinLevel ||
effect1 == SE_LimitCastTime)
continue;
/*
If target is a npc and caster1 and caster2 exist
If Caster1 isn't the same as Caster2 and the effect is a DoT then ignore it.

View File

@ -1885,7 +1885,6 @@ void ZoneDatabase::LoadMercBuffs(Merc *merc) {
}
safe_delete_array(Query);
Query = 0;
if(errorMessage.empty() && BuffsLoaded) {
if(!database.RunQuery(Query, MakeAnyLenString(&Query, "DELETE FROM merc_buffs WHERE MercId = %u", merc->GetMercID()), TempErrorMessageBuffer)) {