mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-03 13:22:28 +00:00
Performance: Changed RampageArray to be a vector of IDs
This commit is contained in:
parent
85f2b46fe9
commit
169b9161b9
@ -1997,59 +1997,54 @@ bool Mob::Flurry(ExtraAttackOptions *opts)
|
|||||||
|
|
||||||
bool Mob::AddRampage(Mob *mob)
|
bool Mob::AddRampage(Mob *mob)
|
||||||
{
|
{
|
||||||
if(!mob)
|
if (!mob)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!GetSpecialAbility(SPECATK_RAMPAGE))
|
if (!GetSpecialAbility(SPECATK_RAMPAGE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (int i = 0; i < RampageArray.size(); i++)
|
for (int i = 0; i < RampageArray.size(); i++) {
|
||||||
{
|
// if Entity ID is already on the list don't add it again
|
||||||
// if name is already on the list dont add it again
|
if (mob->GetID() == RampageArray[i])
|
||||||
if (strcasecmp(mob->GetName(), RampageArray[i].c_str()) == 0)
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
std::string r_name = mob->GetName();
|
RampageArray.push_back(mob->GetID());
|
||||||
RampageArray.push_back(r_name);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mob::ClearRampage(){
|
void Mob::ClearRampage()
|
||||||
|
{
|
||||||
RampageArray.clear();
|
RampageArray.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Mob::Rampage(ExtraAttackOptions *opts)
|
bool Mob::Rampage(ExtraAttackOptions *opts)
|
||||||
{
|
{
|
||||||
int index_hit = 0;
|
int index_hit = 0;
|
||||||
if (!IsPet()) {
|
if (!IsPet())
|
||||||
entity_list.MessageClose_StringID(this, true, 200, MT_NPCRampage, NPC_RAMPAGE, GetCleanName());
|
entity_list.MessageClose_StringID(this, true, 200, MT_NPCRampage, NPC_RAMPAGE, GetCleanName());
|
||||||
} else {
|
else
|
||||||
entity_list.MessageClose_StringID(this, true, 200, MT_PetFlurry, NPC_RAMPAGE, GetCleanName());
|
entity_list.MessageClose_StringID(this, true, 200, MT_PetFlurry, NPC_RAMPAGE, GetCleanName());
|
||||||
}
|
|
||||||
|
|
||||||
int rampage_targets = GetSpecialAbilityParam(SPECATK_RAMPAGE, 1);
|
int rampage_targets = GetSpecialAbilityParam(SPECATK_RAMPAGE, 1);
|
||||||
rampage_targets = rampage_targets > 0 ? rampage_targets : RuleI(Combat, MaxRampageTargets);
|
rampage_targets = rampage_targets > 0 ? rampage_targets : RuleI(Combat, MaxRampageTargets);
|
||||||
for (int i = 0; i < RampageArray.size(); i++)
|
for (int i = 0; i < RampageArray.size(); i++) {
|
||||||
{
|
if (index_hit >= rampage_targets)
|
||||||
if(index_hit >= rampage_targets)
|
|
||||||
break;
|
break;
|
||||||
// range is important
|
// range is important
|
||||||
Mob *m_target = entity_list.GetMob(RampageArray[i].c_str());
|
Mob *m_target = entity_list.GetMob(RampageArray[i]);
|
||||||
if(m_target)
|
if (m_target) {
|
||||||
{
|
if (m_target == GetTarget())
|
||||||
if(m_target == GetTarget())
|
|
||||||
continue;
|
continue;
|
||||||
if (CombatRange(m_target))
|
if (CombatRange(m_target)) {
|
||||||
{
|
|
||||||
Attack(m_target, 13, false, false, false, opts);
|
Attack(m_target, 13, false, false, false, opts);
|
||||||
index_hit++;
|
index_hit++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(index_hit < rampage_targets) {
|
if (index_hit < rampage_targets)
|
||||||
Attack(GetTarget(), 13, false, false, false, opts);
|
Attack(GetTarget(), 13, false, false, false, opts);
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -880,7 +880,7 @@ protected:
|
|||||||
bool IsFullHP;
|
bool IsFullHP;
|
||||||
bool moved;
|
bool moved;
|
||||||
|
|
||||||
std::vector<std::string> RampageArray;
|
std::vector<uint16> RampageArray;
|
||||||
std::map<std::string, std::string> m_EntityVariables;
|
std::map<std::string, std::string> m_EntityVariables;
|
||||||
|
|
||||||
int16 SkillDmgTaken_Mod[HIGHEST_SKILL+2];
|
int16 SkillDmgTaken_Mod[HIGHEST_SKILL+2];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user