Merge branch 'master' of github.com:EQEmu/Server

This commit is contained in:
KimLS
2014-01-16 13:08:24 -08:00
63 changed files with 893 additions and 657 deletions
+2 -2
View File
@@ -1103,7 +1103,7 @@ void Client::SendAATimers() {
PTimerList::iterator c,e;
c = p_timers.begin();
e = p_timers.end();
for(; c != e; c++) {
for(; c != e; ++c) {
PersistentTimer *cur = c->second;
if(cur->GetType() < pTimerAAStart || cur->GetType() > pTimerAAEnd)
continue; //not an AA timer
@@ -1510,7 +1510,7 @@ void Client::ResetAA(){
aa[i]->value = 0;
}
std::map<uint32,uint8>::iterator itr;
for(itr=aa_points.begin();itr!=aa_points.end();itr++)
for(itr=aa_points.begin();itr!=aa_points.end();++itr)
aa_points[itr->first] = 0;
for(int i = 0; i < _maxLeaderAA; ++i)
+15 -27
View File
@@ -934,26 +934,20 @@ void Client::AI_Process()
else
{
if(AIfeignremember_timer->Check()) {
std::set<uint32>::iterator RememberedCharID, tmp;
RememberedCharID=feign_memory_list.begin();
bool got_one = false;
while(RememberedCharID != feign_memory_list.end()) {
std::set<uint32>::iterator RememberedCharID;
RememberedCharID = feign_memory_list.begin();
while (RememberedCharID != feign_memory_list.end()) {
Client* remember_client = entity_list.GetClientByCharID(*RememberedCharID);
if(remember_client == nullptr) {
if (remember_client == nullptr) {
//they are gone now...
tmp = RememberedCharID;
RememberedCharID++;
feign_memory_list.erase(tmp);
RememberedCharID = feign_memory_list.erase(RememberedCharID);
} else if (!remember_client->GetFeigned()) {
AddToHateList(remember_client->CastToMob(),1);
tmp = RememberedCharID;
RememberedCharID++;
feign_memory_list.erase(tmp);
got_one = true;
RememberedCharID = feign_memory_list.erase(RememberedCharID);
break;
} else {
//they are still feigned, carry on...
RememberedCharID++;
++RememberedCharID;
}
}
}
@@ -1405,26 +1399,20 @@ void Mob::AI_Process() {
// EverHood - 6/14/06
// Improved Feign Death Memory
// check to see if any of our previous feigned targets have gotten up.
std::set<uint32>::iterator RememberedCharID, tmp;
RememberedCharID=feign_memory_list.begin();
bool got_one = false;
while(RememberedCharID != feign_memory_list.end()) {
std::set<uint32>::iterator RememberedCharID;
RememberedCharID = feign_memory_list.begin();
while (RememberedCharID != feign_memory_list.end()) {
Client* remember_client = entity_list.GetClientByCharID(*RememberedCharID);
if(remember_client == nullptr) {
if (remember_client == nullptr) {
//they are gone now...
tmp = RememberedCharID;
RememberedCharID++;
feign_memory_list.erase(tmp);
RememberedCharID = feign_memory_list.erase(RememberedCharID);
} else if (!remember_client->GetFeigned()) {
AddToHateList(remember_client->CastToMob(),1);
tmp = RememberedCharID;
RememberedCharID++;
feign_memory_list.erase(tmp);
got_one = true;
RememberedCharID = feign_memory_list.erase(RememberedCharID);
break;
} else {
//they are still feigned, carry on...
RememberedCharID++;
++RememberedCharID;
}
}
}
@@ -2406,7 +2394,7 @@ void NPC::RemoveSpellFromNPCList(int16 spell_id)
iter = AIspells.erase(iter);
continue;
}
iter++;
++iter;
}
}
+23 -23
View File
@@ -50,7 +50,7 @@ void QuestParserCollection::AddVar(std::string name, std::string val) {
std::list<QuestInterface*>::iterator iter = _load_precedence.begin();
while(iter != _load_precedence.end()) {
(*iter)->AddVar(name, val);
iter++;
++iter;
}
}
@@ -58,7 +58,7 @@ void QuestParserCollection::Init() {
std::list<QuestInterface*>::iterator iter = _load_precedence.begin();
while(iter != _load_precedence.end()) {
(*iter)->Init();
iter++;
++iter;
}
}
@@ -78,7 +78,7 @@ void QuestParserCollection::ReloadQuests(bool reset_timers) {
std::list<QuestInterface*>::iterator iter = _load_precedence.begin();
while(iter != _load_precedence.end()) {
(*iter)->ReloadQuests();
iter++;
++iter;
}
}
@@ -469,7 +469,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
return (*iter);
}
iter++;
++iter;
}
//second look for /quests/zone/npcname.ext (precedence)
@@ -503,7 +503,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
return (*iter);
}
iter++;
++iter;
}
//third look for /quests/global/npcid.ext (precedence)
@@ -524,7 +524,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
return (*iter);
}
iter++;
++iter;
}
//fourth look for /quests/global/npcname.ext (precedence)
@@ -545,7 +545,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
return (*iter);
}
iter++;
++iter;
}
//fifth look for /quests/zone/default.ext (precedence)
@@ -566,7 +566,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
return (*iter);
}
iter++;
++iter;
}
//last look for /quests/global/default.ext (precedence)
@@ -587,7 +587,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
return (*iter);
}
iter++;
++iter;
}
return nullptr;
@@ -620,8 +620,8 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
return (*iter);
}
iter++;
}
++iter;
}
//second look for /quests/zone/player.ext (precedence)
filename = "quests/";
@@ -642,7 +642,7 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
return (*iter);
}
iter++;
++iter;
}
//third look for /quests/global/player.ext (precedence)
@@ -663,7 +663,7 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
return (*iter);
}
iter++;
++iter;
}
return nullptr;
@@ -691,7 +691,7 @@ QuestInterface *QuestParserCollection::GetQIByGlobalNPCQuest(std::string &filena
return (*iter);
}
iter++;
++iter;
}
return nullptr;
@@ -719,7 +719,7 @@ QuestInterface *QuestParserCollection::GetQIByGlobalPlayerQuest(std::string &fil
return (*iter);
}
iter++;
++iter;
}
return nullptr;
@@ -747,7 +747,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
return (*iter);
}
iter++;
++iter;
}
//second look for /quests/global/spells/spell_id.ext (precedence)
@@ -769,7 +769,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
return (*iter);
}
iter++;
++iter;
}
//third look for /quests/zone/spells/default.ext (precedence)
@@ -790,7 +790,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
return (*iter);
}
iter++;
++iter;
}
//last look for /quests/global/spells/default.ext (precedence)
@@ -811,7 +811,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
return (*iter);
}
iter++;
++iter;
}
return nullptr;
@@ -839,7 +839,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
return (*iter);
}
iter++;
++iter;
}
//second look for /quests/global/items/item_script.ext (precedence)
@@ -861,7 +861,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
return (*iter);
}
iter++;
++iter;
}
//third look for /quests/zone/items/default.ext (precedence)
@@ -882,7 +882,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
return (*iter);
}
iter++;
++iter;
}
//last look for /quests/global/items/default.ext (precedence)
@@ -903,7 +903,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
return (*iter);
}
iter++;
++iter;
}
return nullptr;
+1 -1
View File
@@ -189,7 +189,7 @@ void NPC::DescribeAggro(Client *towho, Mob *mob, bool verbose) {
cur = faction_list.begin();
end = faction_list.end();
bool res = false;
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
struct NPCFaction* fac = *cur;
if ((int32)fac->factionID == mob_primary) {
if (fac->npc_value > 0) {
+66 -33
View File
@@ -3116,29 +3116,6 @@ int Mob::GetMonkHandToHandDelay(void)
}
}
int32 Mob::ReduceAllDamage(int32 damage)
{
if(damage <= 0)
return damage;
int32 slot = -1;
if (spellbonuses.SpellOnAmtDmgTaken[2]){
slot = spellbonuses.SpellOnAmtDmgTaken[1];
if (slot >= 0) {
if(damage > buffs[slot].melee_rune) {
if(!TryFadeEffect(slot))
BuffFadeBySlot(slot);
}
else{
buffs[slot].melee_rune = (buffs[slot].melee_rune - damage);
CheckHitsRemaining(slot);
}
}
}
return(damage);
}
int32 Mob::ReduceDamage(int32 damage)
{
@@ -3157,16 +3134,16 @@ int32 Mob::ReduceDamage(int32 damage)
}
//Only mitigate if damage is above the minimium specified.
if (spellbonuses.MitigateMeleeRuneSP[0]){
slot = spellbonuses.MitigateMeleeRuneSP[1];
if (spellbonuses.MeleeThresholdGuard[0]){
slot = spellbonuses.MeleeThresholdGuard[1];
if (slot >= 0 && (damage > spellbonuses.MitigateMeleeRuneSP[2]))
if (slot >= 0 && (damage > spellbonuses.MeleeThresholdGuard[2]))
{
DisableMeleeRune = true;
int damage_to_reduce = damage * spellbonuses.MitigateMeleeRuneSP[0] / 100;
int damage_to_reduce = damage * spellbonuses.MeleeThresholdGuard[0] / 100;
if(damage_to_reduce > buffs[slot].melee_rune)
{
mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MitigateMeleeDamageSP %d damage negated, %d"
mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MeleeThresholdGuard %d damage negated, %d"
" damage remaining, fading buff.", damage_to_reduce, buffs[slot].melee_rune);
damage -= damage_to_reduce;
if(!TryFadeEffect(slot))
@@ -3175,7 +3152,7 @@ int32 Mob::ReduceDamage(int32 damage)
}
else
{
mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MitigateMeleeDamageSP %d damage negated, %d"
mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MeleeThresholdGuard %d damage negated, %d"
" damage remaining.", damage_to_reduce, buffs[slot].melee_rune);
buffs[slot].melee_rune = (buffs[slot].melee_rune - damage_to_reduce);
damage -= damage_to_reduce;
@@ -3211,6 +3188,21 @@ int32 Mob::ReduceDamage(int32 damage)
}
}
if (spellbonuses.TriggerMeleeThreshold[2]){
slot = spellbonuses.TriggerMeleeThreshold[1];
if (slot >= 0) {
if(damage > buffs[slot].melee_rune) {
if(!TryFadeEffect(slot))
BuffFadeBySlot(slot);
}
else{
buffs[slot].melee_rune = (buffs[slot].melee_rune - damage);
CheckHitsRemaining(slot);
}
}
}
if(damage < 1)
return -6;
@@ -3238,6 +3230,7 @@ int32 Mob::AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTi
if(damage <= 0)
return damage;
bool DisableSpellRune = false;
int32 slot = -1;
// See if we block the spell outright first
@@ -3259,8 +3252,34 @@ int32 Mob::AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTi
// Reduce damage by the Spell Shielding first so that the runes don't take the raw damage.
damage -= (damage * itembonuses.SpellShield / 100);
//Only mitigate if damage is above the minimium specified.
if (spellbonuses.SpellThresholdGuard[0]){
slot = spellbonuses.SpellThresholdGuard[1];
if (slot >= 0 && (damage > spellbonuses.MeleeThresholdGuard[2]))
{
DisableSpellRune = true;
int damage_to_reduce = damage * spellbonuses.SpellThresholdGuard[0] / 100;
if(damage_to_reduce > buffs[slot].magic_rune)
{
damage -= damage_to_reduce;
if(!TryFadeEffect(slot))
BuffFadeBySlot(slot);
//UpdateRuneFlags();
}
else
{
buffs[slot].melee_rune = (buffs[slot].magic_rune - damage_to_reduce);
damage -= damage_to_reduce;
CheckHitsRemaining(slot);
}
}
}
// Do runes now.
if (spellbonuses.MitigateSpellRune[0]){
if (spellbonuses.MitigateSpellRune[0] && !DisableSpellRune){
slot = spellbonuses.MitigateSpellRune[1];
if(slot >= 0)
{
@@ -3286,6 +3305,21 @@ int32 Mob::AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTi
}
}
if (spellbonuses.TriggerSpellThreshold[2]){
slot = spellbonuses.TriggerSpellThreshold[1];
if (slot >= 0) {
if(damage > buffs[slot].magic_rune) {
if(!TryFadeEffect(slot))
BuffFadeBySlot(slot);
}
else{
buffs[slot].melee_rune = (buffs[slot].magic_rune - damage);
CheckHitsRemaining(slot);
}
}
}
if(damage < 1)
return 0;
@@ -3378,9 +3412,9 @@ bool Client::CheckDoubleAttack(bool tripleAttack) {
return false;
}
bool Client::CheckArcheryDoubleAttack() {
bool Client::CheckDoubleRangedAttack() {
int16 chance = spellbonuses.ArcheryDoubleAttack + itembonuses.ArcheryDoubleAttack + aabonuses.ArcheryDoubleAttack;
int16 chance = spellbonuses.DoubleRangedAttack + itembonuses.DoubleRangedAttack + aabonuses.DoubleRangedAttack;
if(chance && (MakeRandomInt(0, 100) < chance))
return true;
@@ -3493,7 +3527,6 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons
}
//final damage has been determined.
ReduceAllDamage(damage);
SetHP(GetHP() - damage);
if(HasDied()) {
+79 -28
View File
@@ -851,8 +851,8 @@ void Client::ApplyAABonuses(uint32 aaid, uint32 slots, StatBonuses* newbon)
case SE_ArcheryDamageModifier:
newbon->ArcheryDamageModifier += base1;
break;
case SE_ArcheryDoubleAttack:
newbon->ArcheryDoubleAttack += base1;
case SE_DoubleRangedAttack:
newbon->DoubleRangedAttack += base1;
break;
case SE_DamageShield:
newbon->DamageShield += base1;
@@ -1982,16 +1982,26 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
newbon->DotCritDmgIncrease += effect_value;
break;
case SE_CriticalHealChance2:
case SE_CriticalHealChance:
newbon->CriticalHealChance += effect_value;
break;
case SE_CriticalHealOverTime2:
case SE_CriticalHealOverTime:
newbon->CriticalHealOverTime += effect_value;
break;
case SE_CriticalHealDecay:
newbon->CriticalHealDecay = true;
break;
case SE_CriticalRegenDecay:
newbon->CriticalRegenDecay = true;
break;
case SE_CriticalDotDecay:
newbon->CriticalDotDecay = true;
break;
case SE_MitigateDamageShield:
{
if (effect_value < 0)
@@ -2173,12 +2183,22 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
}
case SE_MitigateMeleeDamageSP:
case SE_MeleeThresholdGuard:
{
if (newbon->MitigateMeleeRuneSP[0] < effect_value){
newbon->MitigateMeleeRuneSP[0] = effect_value;
newbon->MitigateMeleeRuneSP[1] = buffslot;
newbon->MitigateMeleeRuneSP[2] = spells[spell_id].base2[i];
if (newbon->MeleeThresholdGuard[0] < effect_value){
newbon->MeleeThresholdGuard[0] = effect_value;
newbon->MeleeThresholdGuard[1] = buffslot;
newbon->MeleeThresholdGuard[2] = spells[spell_id].base2[i];
}
break;
}
case SE_SpellThresholdGuard:
{
if (newbon->SpellThresholdGuard[0] < effect_value){
newbon->SpellThresholdGuard[0] = effect_value;
newbon->SpellThresholdGuard[1] = buffslot;
newbon->SpellThresholdGuard[2] = spells[spell_id].base2[i];
}
break;
}
@@ -2201,12 +2221,22 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
break;
}
case SE_SpellOnAmtDmgTaken:
case SE_TriggerMeleeThreshold:
{
if (newbon->SpellOnAmtDmgTaken[2] < spells[spell_id].base2[i]){
newbon->SpellOnAmtDmgTaken[0] = effect_value;
newbon->SpellOnAmtDmgTaken[1] = buffslot;
newbon->SpellOnAmtDmgTaken[2] = spells[spell_id].base2[i];
if (newbon->TriggerMeleeThreshold[2] < spells[spell_id].base2[i]){
newbon->TriggerMeleeThreshold[0] = effect_value;
newbon->TriggerMeleeThreshold[1] = buffslot;
newbon->TriggerMeleeThreshold[2] = spells[spell_id].base2[i];
}
break;
}
case SE_TriggerSpellThreshold:
{
if (newbon->TriggerSpellThreshold[2] < spells[spell_id].base2[i]){
newbon->TriggerSpellThreshold[0] = effect_value;
newbon->TriggerSpellThreshold[1] = buffslot;
newbon->TriggerSpellThreshold[2] = spells[spell_id].base2[i];
}
break;
}
@@ -2285,8 +2315,8 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
newbon->ArcheryDamageModifier += effect_value;
break;
case SE_ArcheryDoubleAttack:
newbon->ArcheryDoubleAttack += effect_value;
case SE_DoubleRangedAttack:
newbon->DoubleRangedAttack += effect_value;
break;
case SE_SecondaryDmgInc:
@@ -2732,14 +2762,18 @@ uint8 Mob::IsFocusEffect(uint16 spell_id,int effect_index, bool AA,uint32 aa_eff
return focusImprovedDamage2;
case SE_Empathy:
return focusAdditionalDamage;
case SE_ReduceHeal:
return focusReduceHeal;
case SE_FcHealAmtIncoming:
return focusFcHealAmtIncoming;
case SE_HealRate2:
return focusHealRate;
case SE_IncreaseSpellPower:
return focusSpellEffectiveness;
case SE_IncreaseNumHits:
return focusIncreaseNumHits;
case SE_FcLimitUse:
return focusFcLimitUse;
case SE_FcMute:
return focusFcMute;
case SE_CriticalHealRate:
return focusCriticalHealRate;
case SE_AdditionalHeal2:
@@ -3318,14 +3352,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
itembonuses.DotCritDmgIncrease = effect_value;
break;
case SE_CriticalHealChance2:
case SE_CriticalHealChance:
spellbonuses.CriticalHealChance = effect_value;
aabonuses.CriticalHealChance = effect_value;
itembonuses.CriticalHealChance = effect_value;
break;
case SE_CriticalHealOverTime2:
case SE_CriticalHealOverTime:
spellbonuses.CriticalHealOverTime = effect_value;
aabonuses.CriticalHealOverTime = effect_value;
@@ -3458,10 +3490,16 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
spellbonuses.MitigateMeleeRune[1] = -1;
break;
case SE_MitigateMeleeDamageSP:
spellbonuses.MitigateMeleeRuneSP[0] = effect_value;
spellbonuses.MitigateMeleeRuneSP[1] = -1;
spellbonuses.MitigateMeleeRuneSP[1] = effect_value;
case SE_MeleeThresholdGuard:
spellbonuses.MeleeThresholdGuard[0] = effect_value;
spellbonuses.MeleeThresholdGuard[1] = -1;
spellbonuses.MeleeThresholdGuard[1] = effect_value;
break;
case SE_SpellThresholdGuard:
spellbonuses.SpellThresholdGuard[0] = effect_value;
spellbonuses.SpellThresholdGuard[1] = -1;
spellbonuses.SpellThresholdGuard[1] = effect_value;
break;
case SE_MitigateSpellDamage:
@@ -3698,10 +3736,10 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
aabonuses.SlayUndead[1] = effect_value;
break;
case SE_ArcheryDoubleAttack:
spellbonuses.ArcheryDoubleAttack = effect_value;
aabonuses.ArcheryDoubleAttack = effect_value;
itembonuses.ArcheryDoubleAttack = effect_value;
case SE_DoubleRangedAttack:
spellbonuses.DoubleRangedAttack = effect_value;
aabonuses.DoubleRangedAttack = effect_value;
itembonuses.DoubleRangedAttack = effect_value;
break;
case SE_ShieldEquipHateMod:
@@ -3718,6 +3756,19 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
itembonuses.ShieldEquipDmgMod[0] = effect_value;
itembonuses.ShieldEquipDmgMod[1] = effect_value;
break;
case SE_TriggerMeleeThreshold:
spellbonuses.TriggerMeleeThreshold[0] = effect_value;
spellbonuses.TriggerMeleeThreshold[1] = effect_value;
spellbonuses.TriggerMeleeThreshold[2] = effect_value;
break;
case SE_TriggerSpellThreshold:
spellbonuses.TriggerSpellThreshold[0] = effect_value;
spellbonuses.TriggerSpellThreshold[1] = effect_value;
spellbonuses.TriggerSpellThreshold[2] = effect_value;
break;
}
}
}
+29 -29
View File
@@ -4774,7 +4774,7 @@ void Bot::LoadAndSpawnAllZonedBots(Client* botOwner) {
std::list<uint32> ActiveBots = Bot::GetGroupedBotsByGroupId(botOwner->GetGroup()->GetID(), &errorMessage);
if(errorMessage.empty() && !ActiveBots.empty()) {
for(std::list<uint32>::iterator itr = ActiveBots.begin(); itr != ActiveBots.end(); itr++) {
for(std::list<uint32>::iterator itr = ActiveBots.begin(); itr != ActiveBots.end(); ++itr) {
Bot* activeBot = Bot::LoadBot(*itr, &errorMessage);
if(!errorMessage.empty()) {
@@ -8812,7 +8812,7 @@ void Bot::BotOrderCampAll(Client* c) {
if(c) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); ++botListItr) {
(*botListItr)->Camp();
}
}
@@ -11196,7 +11196,7 @@ Bot* Bot::GetBotByBotClientOwnerAndBotName(Client* c, std::string botName) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
if(!BotList.empty()) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); ++botListItr) {
if(std::string((*botListItr)->GetCleanName()) == botName) {
Result = (*botListItr);
break;
@@ -11255,7 +11255,7 @@ void Bot::ProcessClientZoneChange(Client* botOwner) {
if(botOwner) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(botOwner->CharacterID());
for(std::list<Bot*>::iterator itr = BotList.begin(); itr != BotList.end(); itr++) {
for(std::list<Bot*>::iterator itr = BotList.begin(); itr != BotList.end(); ++itr) {
Bot* tempBot = *itr;
if(tempBot) {
@@ -11960,7 +11960,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
}
if(!AvailableBots.empty()) {
for(std::list<BotsAvailableList>::iterator TempAvailableBotsList = AvailableBots.begin(); TempAvailableBotsList != AvailableBots.end(); TempAvailableBotsList++) {
for(std::list<BotsAvailableList>::iterator TempAvailableBotsList = AvailableBots.begin(); TempAvailableBotsList != AvailableBots.end(); ++TempAvailableBotsList) {
if(!listAll && TempAvailableBotsList->BotClass != iClass)
continue;
@@ -12004,7 +12004,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
std::list<Bot*> spawnedBots = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
if(!spawnedBots.empty()) {
for(std::list<Bot*>::iterator botsListItr = spawnedBots.begin(); botsListItr != spawnedBots.end(); botsListItr++) {
for(std::list<Bot*>::iterator botsListItr = spawnedBots.begin(); botsListItr != spawnedBots.end(); ++botsListItr) {
Bot* tempBot = *botsListItr;
if(tempBot) {
if(tempBot->GetClass() != WARRIOR && tempBot->GetClass() != MONK && tempBot->GetClass() != BARD && tempBot->GetClass() != BERSERKER && tempBot->GetClass() != ROGUE)
@@ -14719,7 +14719,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
}
if(!botGroupList.empty()) {
for(std::list<BotGroupList>::iterator botGroupListItr = botGroupList.begin(); botGroupListItr != botGroupList.end(); botGroupListItr++) {
for(std::list<BotGroupList>::iterator botGroupListItr = botGroupList.begin(); botGroupListItr != botGroupList.end(); ++botGroupListItr) {
c->Message(0, "Bot Group Name: %s -- Bot Group Leader: %s", botGroupListItr->BotGroupName.c_str(), botGroupListItr->BotGroupLeaderName.c_str());
}
}
@@ -14859,7 +14859,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
}
std::list<BotGroup>::iterator botGroupItr = botGroup.begin();
for(botGroupItr; botGroupItr != botGroup.end(); botGroupItr++) {
for(botGroupItr; botGroupItr != botGroup.end(); ++botGroupItr) {
// Don't try to re-spawn the botgroup's leader.
if(botGroupItr->BotID == botGroupLeader->GetBotID()) { continue; }
@@ -15195,7 +15195,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
std::list<Bot*> spawnedBots = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
if(!spawnedBots.empty()) {
for(std::list<Bot*>::iterator botsListItr = spawnedBots.begin(); botsListItr != spawnedBots.end(); botsListItr++) {
for(std::list<Bot*>::iterator botsListItr = spawnedBots.begin(); botsListItr != spawnedBots.end(); ++botsListItr) {
Bot* tempBot = *botsListItr;
if(tempBot) {
tempBot->SetGroupMessagesOn(groupMessages);
@@ -15545,7 +15545,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
return;
}
Mob* target;
Mob* target = nullptr;
std::string targetName = std::string(sep->arg[4]);
if(!targetName.empty())
@@ -15635,7 +15635,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
if(!strcasecmp(sep->arg[3], "all")) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); ++botListItr) {
Bot* leaderBot = *botListItr;
if(leaderBot->GetInHealRotation() && leaderBot->GetHealRotationLeader() == leaderBot) {
//start all heal rotations
@@ -15644,7 +15644,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
rotationMemberList = GetBotsInHealRotation(leaderBot);
for(std::list<Bot*>::iterator rotationMemberItr = rotationMemberList.begin(); rotationMemberItr != rotationMemberList.end(); rotationMemberItr++) {
for(std::list<Bot*>::iterator rotationMemberItr = rotationMemberList.begin(); rotationMemberItr != rotationMemberList.end(); ++rotationMemberItr) {
Bot* tempBot = *rotationMemberItr;
if(tempBot) {
@@ -15681,7 +15681,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
botList = GetBotsInHealRotation(leaderBot);
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot) {
@@ -15712,7 +15712,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
if(!strcasecmp(sep->arg[3], "all")) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); ++botListItr) {
Bot* leaderBot = *botListItr;
if(leaderBot->GetInHealRotation() && leaderBot->GetHealRotationLeader() == leaderBot) {
//start all heal rotations
@@ -15720,7 +15720,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
rotationMemberList = GetBotsInHealRotation(leaderBot);
for(std::list<Bot*>::iterator rotationMemberItr = rotationMemberList.begin(); rotationMemberItr != rotationMemberList.end(); rotationMemberItr++) {
for(std::list<Bot*>::iterator rotationMemberItr = rotationMemberList.begin(); rotationMemberItr != rotationMemberList.end(); ++rotationMemberItr) {
Bot* tempBot = *rotationMemberItr;
if(tempBot) {
@@ -15753,7 +15753,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
botList = GetBotsInHealRotation(leaderBot);
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot->GetBotOwnerCharacterID() == c->CharacterID()) {
@@ -15785,7 +15785,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
if(!strcasecmp(sep->arg[3], "all")) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot->GetInHealRotation() && tempBot->GetHealRotationLeader() == tempBot) {
//list leaders and number of bots per rotation
@@ -15816,7 +15816,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
c->Message(0, "Bot Heal Rotation- Leader: %s", leaderBot->GetCleanName());
c->Message(0, "Bot Heal Rotation- Timer: %1.1f", ((float)leaderBot->GetHealRotationTimer()/1000.0f));
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot->GetBotOwnerCharacterID() == c->CharacterID()) {
@@ -15874,7 +15874,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
botList = GetBotsInHealRotation(leaderBot);
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot->GetBotOwnerCharacterID() == c->CharacterID())
@@ -15922,7 +15922,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
botList = GetBotsInHealRotation(leaderBot);
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot->GetBotOwnerCharacterID() == c->CharacterID())
@@ -16238,7 +16238,7 @@ Bot* EntityList::GetBotByBotID(uint32 botID) {
Bot* Result = 0;
if(botID > 0) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot->GetBotID() == botID) {
@@ -16255,7 +16255,7 @@ Bot* EntityList::GetBotByBotName(std::string botName) {
Bot* Result = 0;
if(!botName.empty()) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && std::string(tempBot->GetName()) == botName) {
@@ -16303,7 +16303,7 @@ std::list<Bot*> EntityList::GetBotsByBotOwnerCharacterID(uint32 botOwnerCharacte
std::list<Bot*> Result;
if(botOwnerCharacterID > 0) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot->GetBotOwnerCharacterID() == botOwnerCharacterID)
@@ -16366,7 +16366,7 @@ bool EntityList::RemoveBot(uint16 entityID) {
bool Result = false;
if(entityID > 0) {
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); botListItr++)
for(std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); ++botListItr)
{
Bot* tempBot = *botListItr;
@@ -16920,7 +16920,7 @@ bool Bot::AddHealRotationMember( Bot* healer ) {
std::list<Bot*> botList = GetBotsInHealRotation(this);
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot)
@@ -16968,7 +16968,7 @@ bool Bot::RemoveHealRotationMember( Bot* healer ) {
//update rotation data
std::list<Bot*> botList = GetBotsInHealRotation(leader);
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot) {
@@ -17043,7 +17043,7 @@ bool Bot::AddHealRotationTarget( Mob* target ) {
_healRotationTargets[i] = target->GetID();
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot && tempBot != this) {
@@ -17081,7 +17081,7 @@ bool Bot::RemoveHealRotationTarget( Mob* target ) {
index = i;
removed = true;
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = botList.begin(); botListItr != botList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot)
@@ -17220,7 +17220,7 @@ void Bot::BotHealRotationsClear(Client* c) {
if(c) {
std::list<Bot*> BotList = entity_list.GetBotsByBotOwnerCharacterID(c->CharacterID());
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); botListItr++) {
for(std::list<Bot*>::iterator botListItr = BotList.begin(); botListItr != BotList.end(); ++botListItr) {
Bot* tempBot = *botListItr;
if(tempBot->GetInHealRotation()) {
//clear all heal rotation data for bots in a heal rotation
+21 -21
View File
@@ -301,7 +301,7 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint16 iSpellTypes) {
if (tar->DontBuffMeBefore() < Timer::GetCurrentTime()) {
std::list<BotSpell> buffSpellList = GetBotSpellsBySpellType(this, SpellType_Buff);
for(std::list<BotSpell>::iterator itr = buffSpellList.begin(); itr != buffSpellList.end(); itr++) {
for(std::list<BotSpell>::iterator itr = buffSpellList.begin(); itr != buffSpellList.end(); ++itr) {
BotSpell selectedBotSpell = *itr;
if(selectedBotSpell.SpellId == 0)
@@ -560,7 +560,7 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint16 iSpellTypes) {
std::list<BotSpell> inCombatBuffList = GetBotSpellsBySpellType(this, SpellType_InCombatBuff);
for(std::list<BotSpell>::iterator itr = inCombatBuffList.begin(); itr != inCombatBuffList.end(); itr++) {
for(std::list<BotSpell>::iterator itr = inCombatBuffList.begin(); itr != inCombatBuffList.end(); ++itr) {
BotSpell selectedBotSpell = *itr;
if(selectedBotSpell.SpellId == 0)
@@ -588,7 +588,7 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint16 iSpellTypes) {
if (tar->DontBuffMeBefore() < Timer::GetCurrentTime()) {
std::list<BotSpell> inCombatBuffList = GetBotSpellsBySpellType(this, SpellType_InCombatBuff);
for(std::list<BotSpell>::iterator itr = inCombatBuffList.begin(); itr != inCombatBuffList.end(); itr++) {
for(std::list<BotSpell>::iterator itr = inCombatBuffList.begin(); itr != inCombatBuffList.end(); ++itr) {
BotSpell selectedBotSpell = *itr;
if(selectedBotSpell.SpellId == 0)
@@ -727,7 +727,7 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint16 iSpellTypes) {
const int maxDotSelect = 5;
int dotSelectCounter = 0;
for(std::list<BotSpell>::iterator itr = dotList.begin(); itr != dotList.end(); itr++) {
for(std::list<BotSpell>::iterator itr = dotList.begin(); itr != dotList.end(); ++itr) {
BotSpell selectedBotSpell = *itr;
if(selectedBotSpell.SpellId == 0)
@@ -1450,7 +1450,7 @@ BotSpell Bot::GetBestBotSpellForFastHeal(Bot *botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_CurrentHP);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsFastHealSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1476,7 +1476,7 @@ BotSpell Bot::GetBestBotSpellForHealOverTime(Bot* botCaster) {
std::list<BotSpell> botHoTSpellList = GetBotSpellsForSpellEffect(botCaster, SE_HealOverTime);
std::vector<AISpells_Struct> botSpellList = botCaster->GetBotSpells();
for(std::list<BotSpell>::iterator botSpellListItr = botHoTSpellList.begin(); botSpellListItr != botHoTSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botHoTSpellList.begin(); botSpellListItr != botHoTSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsHealOverTimeSpell(botSpellListItr->SpellId)) {
@@ -1542,7 +1542,7 @@ BotSpell Bot::GetBestBotSpellForRegularSingleTargetHeal(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_CurrentHP);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsRegularSingleTargetHealSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1567,7 +1567,7 @@ BotSpell Bot::GetFirstBotSpellForSingleTargetHeal(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_CurrentHP);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if((IsRegularSingleTargetHealSpell(botSpellListItr->SpellId) || IsFastHealSpell(botSpellListItr->SpellId)) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1592,7 +1592,7 @@ BotSpell Bot::GetBestBotSpellForGroupHeal(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_CurrentHP);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsRegularGroupHealSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1618,7 +1618,7 @@ BotSpell Bot::GetBestBotSpellForGroupHealOverTime(Bot* botCaster) {
std::list<BotSpell> botHoTSpellList = GetBotSpellsForSpellEffect(botCaster, SE_HealOverTime);
std::vector<AISpells_Struct> botSpellList = botCaster->GetBotSpells();
for(std::list<BotSpell>::iterator botSpellListItr = botHoTSpellList.begin(); botSpellListItr != botHoTSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botHoTSpellList.begin(); botSpellListItr != botHoTSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsGroupHealOverTimeSpell(botSpellListItr->SpellId)) {
@@ -1654,7 +1654,7 @@ BotSpell Bot::GetBestBotSpellForGroupCompleteHeal(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_CompleteHeal);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsGroupCompleteHealSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1679,7 +1679,7 @@ BotSpell Bot::GetBestBotSpellForMez(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_Mez);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsMezSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1704,7 +1704,7 @@ BotSpell Bot::GetBestBotSpellForMagicBasedSlow(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_AttackSpeed);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsSlowSpell(botSpellListItr->SpellId) && spells[botSpellListItr->SpellId].resisttype == RESIST_MAGIC && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1729,7 +1729,7 @@ BotSpell Bot::GetBestBotSpellForDiseaseBasedSlow(Bot* botCaster) {
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffect(botCaster, SE_AttackSpeed);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsSlowSpell(botSpellListItr->SpellId) && spells[botSpellListItr->SpellId].resisttype == RESIST_DISEASE && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1752,7 +1752,7 @@ Mob* Bot::GetFirstIncomingMobToMez(Bot* botCaster, BotSpell botSpell) {
std::list<NPC*> npc_list;
entity_list.GetNPCList(npc_list);
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); itr++) {
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); ++itr) {
NPC* npc = *itr;
if(npc->DistNoRootNoZ(*botCaster) <= botCaster->GetActSpellRange(botSpell.SpellId, spells[botSpell.SpellId].range)) {
@@ -1792,7 +1792,7 @@ BotSpell Bot::GetBestBotMagicianPetSpell(Bot *botCaster) {
std::string petType = GetBotMagicianPetType(botCaster);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsSummonPetSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
if(!strncmp(spells[botSpellListItr->SpellId].teleport_zone, petType.c_str(), petType.length())) {
@@ -1901,7 +1901,7 @@ BotSpell Bot::GetBestBotSpellForNukeByTargetType(Bot* botCaster, SpellTargetType
if(botCaster) {
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffectAndTargetType(botCaster, SE_CurrentHP, targetType);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsPureNukeSpell(botSpellListItr->SpellId) && IsDamageSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex)) {
result.SpellId = botSpellListItr->SpellId;
@@ -1928,7 +1928,7 @@ BotSpell Bot::GetBestBotSpellForStunByTargetType(Bot* botCaster, SpellTargetType
{
std::list<BotSpell> botSpellList = GetBotSpellsForSpellEffectAndTargetType(botCaster, SE_Stun, targetType);
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++)
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr)
{
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsStunSpell(botSpellListItr->SpellId) && CheckSpellRecastTimers(botCaster, botSpellListItr->SpellIndex))
@@ -1967,7 +1967,7 @@ BotSpell Bot::GetBestBotWizardNukeSpellByTargetResists(Bot* botCaster, Mob* targ
firstWizardMagicNukeSpellFound.SpellIndex = 0;
firstWizardMagicNukeSpellFound.ManaCost = 0;
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); botSpellListItr++) {
for(std::list<BotSpell>::iterator botSpellListItr = botSpellList.begin(); botSpellListItr != botSpellList.end(); ++botSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
bool spellSelected = false;
@@ -2139,7 +2139,7 @@ BotSpell Bot::GetBestBotSpellForCure(Bot* botCaster, Mob *tar) {
//Check for group cure first
if(countNeedsCured > 2) {
for(std::list<BotSpell>::iterator itr = cureList.begin(); itr != cureList.end(); itr++) {
for(std::list<BotSpell>::iterator itr = cureList.begin(); itr != cureList.end(); ++itr) {
BotSpell selectedBotSpell = *itr;
if(IsGroupSpell(itr->SpellId) && CheckSpellRecastTimers(botCaster, itr->SpellIndex)) {
@@ -2176,7 +2176,7 @@ BotSpell Bot::GetBestBotSpellForCure(Bot* botCaster, Mob *tar) {
//no group cure for target- try to find single target spell
if(!spellSelected) {
for(std::list<BotSpell>::iterator itr = cureList.begin(); itr != cureList.end(); itr++) {
for(std::list<BotSpell>::iterator itr = cureList.begin(); itr != cureList.end(); ++itr) {
BotSpell selectedBotSpell = *itr;
if(CheckSpellRecastTimers(botCaster, itr->SpellIndex)) {
+9 -9
View File
@@ -4748,7 +4748,7 @@ void Client::ShowSkillsWindow()
Skills[SkillName[i]] = (SkillUseTypes)i;
// print out all available skills
for(it = Skills.begin(); it != Skills.end(); it++) {
for(it = Skills.begin(); it != Skills.end(); ++it) {
if(GetSkill(it->second) > 0 || MaxSkill(it->second) > 0) {
WindowText += it->first;
// line up the values
@@ -5142,7 +5142,7 @@ void Client::SendRewards()
{
break;
}
iter++;
++iter;
}
if(iter != zone->VeteranRewards.end())
@@ -5232,7 +5232,7 @@ bool Client::TryReward(uint32 claim_id)
{
break;
}
iter++;
++iter;
}
if(iter == zone->VeteranRewards.end())
@@ -6606,7 +6606,7 @@ void Client::SendStatsWindow(Client* client, bool use_window)
for(std::map <uint32, int32>::iterator iter = item_faction_bonuses.begin();
iter != item_faction_bonuses.end();
iter++)
++iter)
{
memset(&faction_buf, 0, sizeof(faction_buf));
@@ -6728,7 +6728,7 @@ void Client::SendAltCurrencies() {
altc->entries[i].stack_size = 1000;
}
i++;
iter++;
++iter;
}
FastQueuePacket(&outapp);
@@ -6776,7 +6776,7 @@ void Client::SendAlternateCurrencyValues()
std::list<AltCurrencyDefinition_Struct>::iterator iter = zone->AlternateCurrencies.begin();
while(iter != zone->AlternateCurrencies.end()) {
SendAlternateCurrencyValue((*iter).id, false);
iter++;
++iter;
}
}
@@ -7215,7 +7215,7 @@ void Client::SendMercPersonalInfo()
mdus->MercData[i].Stances[stanceindex].StanceIndex = stanceindex;
mdus->MercData[i].Stances[stanceindex].Stance = (iter->StanceID);
stanceindex++;
iter++;
++iter;
}
}
@@ -7281,7 +7281,7 @@ void Client::SendMercPersonalInfo()
mml->Mercs[i].Stances[stanceindex].StanceIndex = stanceindex;
mml->Mercs[i].Stances[stanceindex].Stance = (iter->StanceID);
stanceindex++;
iter++;
++iter;
}
}
FastQueuePacket(&outapp);
@@ -7898,7 +7898,7 @@ bool Client::RemoveRespawnOption(std::string option_name)
opt = &(*itr);
if (opt->name.compare(option_name) == 0)
{
respawn_options.erase(itr);
itr = respawn_options.erase(itr);
had = true;
//could be more with the same name, so keep going...
}
+2 -2
View File
@@ -819,7 +819,7 @@ public:
void LinkDead();
void Insight(uint32 t_id);
bool CheckDoubleAttack(bool tripleAttack = false);
bool CheckArcheryDoubleAttack();
bool CheckDoubleRangedAttack();
//remove charges/multiple objects from inventory:
//bool DecreaseByType(uint32 type, uint8 amt);
@@ -830,7 +830,7 @@ public:
void RemoveDuplicateLore(bool client_update = true);
void MoveSlotNotAllowed(bool client_update = true);
virtual void RangedAttack(Mob* other, bool CanDoubleAttack = false);
virtual void ThrowingAttack(Mob* other);
virtual void ThrowingAttack(Mob* other, bool CanDoubleAttack = false);
void DoClassAttacks(Mob *ca_target, uint16 skill = -1, bool IsRiposte=false);
void SetZoneFlag(uint32 zone_id);
+3 -3
View File
@@ -38,7 +38,7 @@ void ClientLogs::subscribe(EQEMuLog::LogIDs id, Client *c) {
std::vector<Client *>::iterator cur,end;
cur = entries[id].begin();
end = entries[id].end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(*cur == c) {
printf("%s was allready subscribed to %d\n", c->GetName(), id);
return;
@@ -58,7 +58,7 @@ void ClientLogs::unsubscribe(EQEMuLog::LogIDs id, Client *c) {
std::vector<Client *>::iterator cur,end;
cur = entries[id].begin();
end = entries[id].end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(*cur == c) {
entries[id].erase(cur);
return;
@@ -97,7 +97,7 @@ void ClientLogs::msg(EQEMuLog::LogIDs id, const char *buf) {
std::vector<Client *>::iterator cur,end;
cur = entries[id].begin();
end = entries[id].end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(!(*cur)->InZone())
continue;
(*cur)->Message(CLIENT_LOG_CHANNEL, buf);
+18 -18
View File
@@ -2215,7 +2215,7 @@ void Client::Handle_OP_AdventureMerchantRequest(const EQApplicationPacket *app)
const Item_Struct *item = 0;
std::list<MerchantList> merlist = zone->merchanttable[merchantid];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin();itr != merlist.end() && count<255;itr++){
for(itr = merlist.begin();itr != merlist.end() && count<255;++itr){
const MerchantList &ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -2311,7 +2311,7 @@ void Client::Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app)
std::list<MerchantList> merlist = zone->merchanttable[merchantid];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin();itr != merlist.end();itr++){
for(itr = merlist.begin();itr != merlist.end();++itr){
MerchantList ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -5505,7 +5505,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app)
uint32 item_id = 0;
std::list<MerchantList> merlist = zone->merchanttable[merchantid];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin();itr != merlist.end();itr++){
for(itr = merlist.begin();itr != merlist.end();++itr){
MerchantList ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -5527,7 +5527,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app)
std::list<TempMerchantList> tmp_merlist = zone->tmpmerchanttable[tmp->GetNPCTypeID()];
std::list<TempMerchantList>::const_iterator tmp_itr;
TempMerchantList ml;
for(tmp_itr = tmp_merlist.begin();tmp_itr != tmp_merlist.end();tmp_itr++){
for(tmp_itr = tmp_merlist.begin();tmp_itr != tmp_merlist.end();++tmp_itr){
ml = *tmp_itr;
if(mp->itemslot == ml.slot){
item_id = ml.item;
@@ -9220,7 +9220,7 @@ bool Client::FinishConnState2(DBAsyncWork* dbaw) {
// Send stuff on the cursor which isnt sent in bulk
iter_queue it;
for (it=m_inv.cursor_begin();it!=m_inv.cursor_end();it++) {
for (it=m_inv.cursor_begin();it!=m_inv.cursor_end();++it) {
// First item cursor is sent in bulk inventory packet
if (it==m_inv.cursor_begin())
continue;
@@ -12544,7 +12544,7 @@ void Client::Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket *app
found = true;
break;
}
altc_iter++;
++altc_iter;
}
if(!found) {
@@ -12560,7 +12560,7 @@ void Client::Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket *app
std::list<MerchantList> merlist = zone->merchanttable[merchant_id];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin(); itr != merlist.end() && count < 255; itr++){
for(itr = merlist.begin(); itr != merlist.end() && count < 255; ++itr){
const MerchantList &ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -12627,7 +12627,7 @@ void Client::Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app)
bool found = false;
std::list<MerchantList> merlist = zone->merchanttable[merchant_id];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin(); itr != merlist.end(); itr++) {
for(itr = merlist.begin(); itr != merlist.end(); ++itr) {
MerchantList ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -12689,7 +12689,7 @@ void Client::Handle_OP_AltCurrencyPurchase(const EQApplicationPacket *app) {
bool found = false;
std::list<MerchantList> merlist = zone->merchanttable[merchant_id];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin(); itr != merlist.end(); itr++) {
for(itr = merlist.begin(); itr != merlist.end(); ++itr) {
MerchantList ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -12751,7 +12751,7 @@ void Client::Handle_OP_AltCurrencyReclaim(const EQApplicationPacket *app) {
if((*iter).id == reclaim->currency_id) {
item_id = (*iter).item_id;
}
iter++;
++iter;
}
if(item_id == 0) {
@@ -12806,7 +12806,7 @@ void Client::Handle_OP_AltCurrencySell(const EQApplicationPacket *app) {
bool found = false;
std::list<MerchantList> merlist = zone->merchanttable[merchant_id];
std::list<MerchantList>::const_iterator itr;
for(itr = merlist.begin(); itr != merlist.end(); itr++) {
for(itr = merlist.begin(); itr != merlist.end(); ++itr) {
MerchantList ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -13498,10 +13498,10 @@ void Client::Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app)
int i = 0;
int StanceCount = 0;
for(std::list<MercData>::iterator mercListItr = mercDataList.begin(); mercListItr != mercDataList.end(); mercListItr++)
for(std::list<MercData>::iterator mercListItr = mercDataList.begin(); mercListItr != mercDataList.end(); ++mercListItr)
{
std::list<MercStanceInfo>::iterator siter = zone->merc_stance_list[mercListItr->MercTemplateID].begin();
for(siter = zone->merc_stance_list[mercListItr->MercTemplateID].begin(); siter != zone->merc_stance_list[mercListItr->MercTemplateID].end(); siter++)
for(siter = zone->merc_stance_list[mercListItr->MercTemplateID].begin(); siter != zone->merc_stance_list[mercListItr->MercTemplateID].end(); ++siter)
{
StanceCount++;
}
@@ -13513,7 +13513,7 @@ void Client::Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app)
mml->MercTypeCount = mercTypeCount;
if(mercTypeCount > 0)
{
for(std::list<MercType>::iterator mercTypeListItr = mercTypeList.begin(); mercTypeListItr != mercTypeList.end(); mercTypeListItr++) {
for(std::list<MercType>::iterator mercTypeListItr = mercTypeList.begin(); mercTypeListItr != mercTypeList.end(); ++mercTypeListItr) {
mml->MercGrades[i] = mercTypeListItr->Type; // DBStringID for Type
i++;
}
@@ -13523,7 +13523,7 @@ void Client::Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app)
if(mercCount > 0)
{
i = 0;
for(std::list<MercData>::iterator mercListIter = mercDataList.begin(); mercListIter != mercDataList.end(); mercListIter++)
for(std::list<MercData>::iterator mercListIter = mercDataList.begin(); mercListIter != mercDataList.end(); ++mercListIter)
{
mml->Mercs[i].MercID = mercListIter->MercTemplateID;
mml->Mercs[i].MercType = mercListIter->MercType;
@@ -13540,7 +13540,7 @@ void Client::Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app)
mml->Mercs[i].MercUnk02 = 1;
int mercStanceCount = 0;
std::list<MercStanceInfo>::iterator iter = zone->merc_stance_list[mercListIter->MercTemplateID].begin();
for(iter = zone->merc_stance_list[mercListIter->MercTemplateID].begin(); iter != zone->merc_stance_list[mercListIter->MercTemplateID].end(); iter++)
for(iter = zone->merc_stance_list[mercListIter->MercTemplateID].begin(); iter != zone->merc_stance_list[mercListIter->MercTemplateID].end(); ++iter)
{
mercStanceCount++;
}
@@ -13557,7 +13557,7 @@ void Client::Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app)
mml->Mercs[i].Stances[stanceindex].StanceIndex = stanceindex;
mml->Mercs[i].Stances[stanceindex].Stance = (iter2->StanceID);
stanceindex++;
iter2++;
++iter2;
}
}
i++;
@@ -13692,7 +13692,7 @@ void Client::Handle_OP_MercenaryCommand(const EQApplicationPacket *app)
std::list<MercStanceInfo>::iterator iter = mercStanceList.begin();
while(iter != mercStanceList.end()) {
numStances++;
iter++;
++iter;
}
MercTemplate* mercTemplate = zone->GetMercTemplate(GetMerc()->GetMercTemplateID());
+4 -4
View File
@@ -303,7 +303,7 @@ bool Client::Process() {
if(CheckLosFN(GetTarget())){
//client has built in los check, but auto fire does not.. done last.
RangedAttack(GetTarget());
if (CheckArcheryDoubleAttack())
if (CheckDoubleRangedAttack())
RangedAttack(GetTarget(), true);
}
else
@@ -904,7 +904,7 @@ void Client::BulkSendInventoryItems() {
EQApplicationPacket* outapp = new EQApplicationPacket(OP_CharInventory, size);
uchar* ptr = outapp->pBuffer;
for(itr = ser_items.begin(); itr != ser_items.end(); itr++){
for(itr = ser_items.begin(); itr != ser_items.end(); ++itr){
int length = itr->second.length();
if(length > 5) {
memcpy(ptr, itr->second.c_str(), length);
@@ -978,7 +978,7 @@ void Client::BulkSendMerchantInventory(int merchant_id, int npcid) {
uint32 i=1;
uint8 handychance = 0;
for(itr = merlist.begin();itr != merlist.end() && i<numItemSlots;itr++){
for (itr = merlist.begin(); itr != merlist.end() && i < numItemSlots; ++itr) {
MerchantList ml = *itr;
if(GetLevel() < ml.level_required) {
continue;
@@ -1027,7 +1027,7 @@ void Client::BulkSendMerchantInventory(int merchant_id, int npcid) {
}
std::list<TempMerchantList> origtmp_merlist = zone->tmpmerchanttable[npcid];
tmp_merlist.clear();
for(tmp_itr = origtmp_merlist.begin();tmp_itr != origtmp_merlist.end() && i<numItemSlots;tmp_itr++){
for(tmp_itr = origtmp_merlist.begin();tmp_itr != origtmp_merlist.end() && i<numItemSlots;++tmp_itr){
TempMerchantList ml = *tmp_itr;
item=database.GetItem(ml.item);
ml.slot=i;
+8 -8
View File
@@ -461,7 +461,7 @@ int command_init(void) {
std::map<std::string,uint8> command_settings;
std::map<std::string,uint8>::iterator itr;
database.GetCommandSettings(command_settings);
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if ((itr=command_settings.find(cur->first))!=command_settings.end())
{
cur->second->access = itr->second;
@@ -526,7 +526,7 @@ int command_add(const char *command_string, const char *desc, int access, CmdFun
std::map<std::string, CommandRecord *>::iterator cur,end,del;
cur = commandlist.begin();
end = commandlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(cur->second->function == function) {
int r;
for(r = 1; r < CMDALIASES; r++) {
@@ -782,7 +782,7 @@ void command_help(Client *c, const Seperator *sep)
cur = commandlist.begin();
end = commandlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(sep->arg[1][0]) {
if(cur->first.find(sep->arg[1]) == std::string::npos) {
continue;
@@ -2961,7 +2961,7 @@ void command_peekinv(Client *c, const Seperator *sep)
}
}
else {
for(it=client->GetInv().cursor_begin();it!=client->GetInv().cursor_end();it++,i++) {
for(it=client->GetInv().cursor_begin();it!=client->GetInv().cursor_end();++it,i++) {
const ItemInst* inst = *it;
item = (inst) ? inst->GetItem() : nullptr;
if (c->GetClientVersion() >= EQClientSoF)
@@ -8299,7 +8299,7 @@ void command_rules(Client *c, const Seperator *sep) {
std::map<int, std::string>::iterator cur, end;
cur = sets.begin();
end = sets.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
c->Message(0, "(%d) %s", cur->first, cur->second.c_str());
}
} else if(!strcasecmp(sep->arg[1], "reload")) {
@@ -8398,7 +8398,7 @@ void command_rules(Client *c, const Seperator *sep) {
std::vector<const char *>::iterator cur, end;
cur = rule_list.begin();
end = rule_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
c->Message(0, " %s", *cur);
}
} else if(sep->argnum == 2) {
@@ -8414,7 +8414,7 @@ void command_rules(Client *c, const Seperator *sep) {
std::vector<const char *>::iterator cur, end;
cur = rule_list.begin();
end = rule_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
c->Message(0, " %s", *cur);
}
} else {
@@ -8437,7 +8437,7 @@ void command_rules(Client *c, const Seperator *sep) {
std::vector<const char *>::iterator cur, end;
cur = rule_list.begin();
end = rule_list.end();
for(std::string tmp_value; cur != end; cur++) {
for(std::string tmp_value; cur != end; ++cur) {
if (RuleManager::Instance()->GetRule(*cur, tmp_value))
c->Message(0, " %s - %s", *cur, tmp_value.c_str());
}
+11 -4
View File
@@ -73,9 +73,11 @@ typedef enum { //focus types
focusBlockNextSpell,
focusHealRate,
focusAdditionalDamage,
focusReduceHeal,
focusFcHealAmtIncoming,
focusSpellEffectiveness,
focusIncreaseNumHits,
focusFcLimitUse,
focusFcMute,
focusCriticalHealRate,
focusAdditionalHeal2,
focusAdditionalHeal,
@@ -251,7 +253,7 @@ struct StatBonuses {
int16 DualWieldChance; //i
int16 DoubleAttackChance; //i
int16 TripleAttackChance; //i
int16 ArcheryDoubleAttack; //i
int16 DoubleRangedAttack; //i
int16 ResistSpellChance; //i
int16 ResistFearChance; //i
bool Fearless; //i
@@ -310,12 +312,17 @@ struct StatBonuses {
int16 SkillDamageAmount2[HIGHEST_SKILL+2]; // Adds skill specific damage
uint16 NegateAttacks[2]; // 0 = bool HasEffect 1 = Buff Slot
uint16 MitigateMeleeRune[2]; // 0 = Mitigation value 1 = Buff Slot
uint16 MitigateMeleeRuneSP[3]; // 0 = Mitigation value 1 = Buff Slot 2 = Min damage to trigger.
uint16 MeleeThresholdGuard[3]; // 0 = Mitigation value 1 = Buff Slot 2 = Min damage to trigger.
uint16 SpellThresholdGuard[3]; // 0 = Mitigation value 1 = Buff Slot 2 = Min damage to trigger.
uint16 MitigateSpellRune[2]; // 0 = Mitigation value 1 = Buff Slot
uint32 SpellOnAmtDmgTaken[3]; // 0 = Spell Effect ID 1 = Buff slot 2 = Damage Amount to Trigger
uint32 TriggerMeleeThreshold[3]; // 0 = Spell Effect ID 1 = Buff slot 2 = Damage Amount to Trigger
uint32 TriggerSpellThreshold[3]; // 0 = Spell Effect ID 1 = Buff slot 2 = Damage Amount to Trigger
uint16 ManaAbsorbPercentDamage[2]; // 0 = Mitigation value 1 = Buff Slot
int16 ShieldBlock; // Chance to Shield Block
int16 BlockBehind; // Chance to Block Behind (with our without shield)
bool CriticalRegenDecay; // increase critical regen chance, decays based on spell level cast
bool CriticalHealDecay; // increase critical heal chance, decays based on spell level cast
bool CriticalDotDecay; // increase critical dot chance, decays based on spell level cast
//bool AbsorbMagicAtt; // Magic Rune *Need to be implemented for NegateEffect
//bool MeleeRune; // Melee Rune *Need to be implemented for NegateEffect
+13 -13
View File
@@ -389,7 +389,7 @@ Corpse::Corpse(Client* client, int32 in_rezexp)
// this was mainly for client profile state reflection..should match db player inventory entries now.
iter_queue it;
for(it=client->GetInv().cursor_begin(),i=8001; it!=client->GetInv().cursor_end(); it++,i++) {
for(it=client->GetInv().cursor_begin(),i=8001; it!=client->GetInv().cursor_end(); ++it,i++) {
item = *it;
if((item && (!client->IsBecomeNPC())) || (item && client->IsBecomeNPC() && !item->GetItem()->NoRent))
{
@@ -413,7 +413,7 @@ Corpse::Corpse(Client* client, int32 in_rezexp)
ss << " OR ";
}
ss << "slotid=" << (*iter);
iter++;
++iter;
}
ss << ")";
database.RunQuery(ss.str().c_str(), ss.str().length());
@@ -519,7 +519,7 @@ Corpse::~Corpse() {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
safe_delete(item);
}
@@ -598,7 +598,7 @@ bool Corpse::Save() {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
memcpy((char*) &dbpc->items[x++], (char*) item, sizeof(player_lootitem::ServerLootItem_Struct));
}
@@ -675,7 +675,7 @@ ServerLootItem_Struct* Corpse::GetItem(uint16 lootslot, ServerLootItem_Struct**
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if((*cur)->lootslot == lootslot)
{
sitem = *cur;
@@ -689,7 +689,7 @@ ServerLootItem_Struct* Corpse::GetItem(uint16 lootslot, ServerLootItem_Struct**
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
sitem2 = *cur;
if(sitem2->equipSlot >= bagstart && sitem2->equipSlot < bagstart + 10)
{
@@ -705,7 +705,7 @@ uint32 Corpse::GetWornItem(int16 equipSlot) const {
ItemList::const_iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
if (item->equipSlot == equipSlot)
{
@@ -725,7 +725,7 @@ void Corpse::RemoveItem(uint16 lootslot)
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* sitem = *cur;
if (sitem->lootslot == lootslot)
{
@@ -742,7 +742,7 @@ void Corpse::RemoveItem(ServerLootItem_Struct* item_data)
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* sitem = *cur;
if (sitem == item_data)
{
@@ -1006,7 +1006,7 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a
else if(client->GetClientVersion() == EQClientTitanium) { corpselootlimit = 31; }
else { corpselootlimit = 30; }
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item_data = *cur;
item_data->lootslot = 0xFFFF;
@@ -1046,7 +1046,7 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item_data = *cur;
item = database.GetItem(item_data->item_id);
LogFile->write(EQEMuLog::Debug, "Corpse Looting: %s was not sent to client loot window (corpse_dbid: %i, charname: %s(%s))", item->Name, GetDBID(), client->GetName(), client->GetGM() ? "GM" : "Owner");
@@ -1337,7 +1337,7 @@ void Corpse::QueryLoot(Client* to) {
else if (to->GetClientVersion() == EQClientTitanium) { corpselootlimit = 31; }
else { corpselootlimit = 30; }
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* sitem = *cur;
if (IsPlayerCorpse()) {
@@ -1403,7 +1403,7 @@ bool Corpse::Summon(Client* client, bool spell, bool CheckDistance)
{
bool consented = false;
std::list<std::string>::iterator itr;
for(itr = client->consent_list.begin(); itr != client->consent_list.end(); itr++)
for(itr = client->consent_list.begin(); itr != client->consent_list.end(); ++itr)
{
if(strcmp(this->GetOwnerName(), itr->c_str()) == 0)
{
+12 -2
View File
@@ -205,6 +205,9 @@ int32 Client::GetActDoTDamage(uint16 spell_id, int32 value) {
if (GetClass() == NECROMANCER && critChance > 0)
critChance += 5;
if (spellbonuses.CriticalDotDecay)
critChance += GetDecayEffectValue(spell_id, SE_CriticalDotDecay);
if (critChance > 0){
if (MakeRandomInt(0, 99) < critChance){
modifier += modifier*ratio/100;
@@ -237,7 +240,7 @@ int32 Client::Additional_Heal(uint16 spell_id)
heal_amt += GetFocusEffect(focusAdditionalHeal, spell_id);
heal_amt += GetFocusEffect(focusAdditionalHeal2, spell_id);
heal_amt -= GetFocusEffect(focusReduceHeal, spell_id);
heal_amt -= GetFocusEffect(focusFcHealAmtIncoming, spell_id);
if (heal_amt){
int duration = CalcBuffDuration(this, this, spell_id);
@@ -275,6 +278,9 @@ int32 Client::GetActSpellHealing(uint16 spell_id, int32 value) {
//Live AA - Healing Gift, Theft of Life
chance += itembonuses.CriticalHealChance + spellbonuses.CriticalHealChance + aabonuses.CriticalHealChance;
if (spellbonuses.CriticalRegenDecay)
chance += GetDecayEffectValue(spell_id, SE_CriticalHealDecay);
if(MakeRandomInt(0,99) < chance) {
entity_list.MessageClose(this, false, 100, MT_SpellCrits, "%s performs an exceptional heal! (%d)", GetName(), ((value * modifier / 50) + heal_amt*2));
@@ -286,7 +292,11 @@ int32 Client::GetActSpellHealing(uint16 spell_id, int32 value) {
}
// Hots
else {
chance += itembonuses.CriticalHealChance + spellbonuses.CriticalHealChance + aabonuses.CriticalHealChance;
chance += itembonuses.CriticalHealOverTime + spellbonuses.CriticalHealOverTime + aabonuses.CriticalHealOverTime;
if (spellbonuses.CriticalRegenDecay)
chance += GetDecayEffectValue(spell_id, SE_CriticalHealDecay);
if(MakeRandomInt(0,99) < chance)
return ((value * modifier / 50) + heal_amt*2);
}
+1 -1
View File
@@ -131,7 +131,7 @@ public:
hv_clear(hv);
// Iterate through key-value pairs, storing them in hash
for (it = vals.begin(); it != vals.end(); it++)
for (it = vals.begin(); it != vals.end(); ++it)
{
int keylen = static_cast<int>(it->first.length());
+16 -16
View File
@@ -348,7 +348,7 @@ void EntityList::CheckGroupList (const char *fname, const int fline)
{
std::list<Group *>::iterator it;
for (it = group_list.begin(); it != group_list.end(); it++)
for (it = group_list.begin(); it != group_list.end(); ++it)
{
if (*it == nullptr)
{
@@ -394,7 +394,7 @@ void EntityList::QueueToGroupsForNPCHealthAA(Mob* sender, const EQApplicationPac
while(iterator != group_list.end())
{
(*iterator)->QueueHPPacketsForNPCHealthAA(sender, app);
iterator++;
++iterator;
}
}
@@ -410,7 +410,7 @@ void EntityList::RaidProcess() {
{
count++;
(*iterator)->Process();
iterator++;
++iterator;
}
if(count == 0)
net.raid_timer.Disable();//No groups in list, disable until one is added
@@ -1938,7 +1938,7 @@ Group* EntityList::GetGroupByMob(Mob* mob)
if ((*iterator)->IsGroupMember(mob)) {
return *iterator;
}
iterator++;
++iterator;
}
#if EQDEBUG >= 5
CheckGroupList (__FILE__, __LINE__);
@@ -1956,7 +1956,7 @@ Group* EntityList::GetGroupByLeaderName(const char* leader){
if (!strcmp((*iterator)->GetLeaderName(), leader)) {
return *iterator;
}
iterator++;
++iterator;
}
#if EQDEBUG >= 5
CheckGroupList (__FILE__, __LINE__);
@@ -1973,7 +1973,7 @@ Group* EntityList::GetGroupByID(uint32 group_id){
if ((*iterator)->GetID() == group_id) {
return *iterator;
}
iterator++;
++iterator;
}
#if EQDEBUG >= 5
CheckGroupList (__FILE__, __LINE__);
@@ -1991,7 +1991,7 @@ Group* EntityList::GetGroupByClient(Client* client)
if ((*iterator)->IsGroupMember(client->CastToMob())) {
return *iterator;
}
iterator++;
++iterator;
}
#if EQDEBUG >= 5
CheckGroupList (__FILE__, __LINE__);
@@ -2011,7 +2011,7 @@ Raid* EntityList::GetRaidByLeaderName(const char *leader){
return *iterator;
}
}
iterator++;
++iterator;
}
return 0;
}
@@ -2025,7 +2025,7 @@ Raid* EntityList::GetRaidByID(uint32 id){
if ((*iterator)->GetID() == id) {
return *iterator;
}
iterator++;
++iterator;
}
return 0;
}
@@ -2045,7 +2045,7 @@ Raid* EntityList::GetRaidByClient(Client* client)
return *iterator;
}
}
iterator++;
++iterator;
}
return 0;
}
@@ -2065,7 +2065,7 @@ Raid* EntityList::GetRaidByMob(Mob* mob) {
return *iterator;
}*/
}
iterator++;
++iterator;
}
return 0;
}
@@ -2507,7 +2507,7 @@ bool EntityList::RemoveGroup(uint32 delete_id){
#endif
return true;
}
iterator++;
++iterator;
}
#if EQDEBUG >= 5
CheckGroupList (__FILE__, __LINE__);
@@ -2526,7 +2526,7 @@ bool EntityList::RemoveRaid(uint32 delete_id){
raid_list.remove (*iterator);
return true;
}
iterator++;
++iterator;
}
return false;
}
@@ -3821,7 +3821,7 @@ bool EntityList::LimitCheckType(uint32 npc_type, int count) {
cur = npc_limit_list.begin();
end = npc_limit_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(cur->second.npc_type == npc_type) {
count--;
if(count == 0) {
@@ -3842,7 +3842,7 @@ bool EntityList::LimitCheckGroup(uint32 spawngroup_id, int count) {
cur = npc_limit_list.begin();
end = npc_limit_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(cur->second.spawngroup_id == spawngroup_id) {
count--;
if(count == 0) {
@@ -3864,7 +3864,7 @@ bool EntityList::LimitCheckBoth(uint32 npc_type, uint32 spawngroup_id, int group
cur = npc_limit_list.begin();
end = npc_limit_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(cur->second.npc_type == npc_type) {
type_count--;
if(type_count == 0) {
+3 -3
View File
@@ -177,7 +177,7 @@ uint8 *ZoneGuildManager::MakeGuildMembers(uint32 guild_id, const char *prefix_na
end = members.end();
uint32 name_len = 0;
uint32 note_len = 0;
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ci = *cur;
name_len += ci->char_name.length();
note_len += ci->public_note.length();
@@ -205,7 +205,7 @@ uint8 *ZoneGuildManager::MakeGuildMembers(uint32 guild_id, const char *prefix_na
cur = members.begin();
end = members.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ci = *cur;
//the order we set things here must match the struct
@@ -247,7 +247,7 @@ void ZoneGuildManager::ListGuilds(Client *c) const {
cur = m_guilds.begin();
end = m_guilds.end();
int r = 0;
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
leadername[0] = '\0';
database.GetCharName(cur->second->leader_char_id, leadername);
if (leadername[0] == '\0')
+32 -32
View File
@@ -2236,7 +2236,7 @@ bool Merc::AICastSpell(int8 iChance, int32 iSpellTypes) {
std::list<MercSpell> buffSpellList = GetMercSpellsBySpellType(this, SpellType_Buff);
for(std::list<MercSpell>::iterator itr = buffSpellList.begin(); itr != buffSpellList.end(); itr++) {
for(std::list<MercSpell>::iterator itr = buffSpellList.begin(); itr != buffSpellList.end(); ++itr) {
MercSpell selectedMercSpell = *itr;
if(!((spells[selectedMercSpell.spellid].targettype == ST_Target || spells[selectedMercSpell.spellid].targettype == ST_Pet ||
@@ -2396,7 +2396,7 @@ bool Merc::AICastSpell(int8 iChance, int32 iSpellTypes) {
std::list<MercSpell> buffSpellList = GetMercSpellsBySpellType(this, SpellType_InCombatBuff);
Mob* tar = this;
for(std::list<MercSpell>::iterator itr = buffSpellList.begin(); itr != buffSpellList.end(); itr++) {
for(std::list<MercSpell>::iterator itr = buffSpellList.begin(); itr != buffSpellList.end(); ++itr) {
MercSpell selectedMercSpell = *itr;
if(!(spells[selectedMercSpell.spellid].targettype == ST_Self)) {
@@ -2541,7 +2541,7 @@ void Merc::CheckHateList() {
std::list<NPC*> npc_list;
entity_list.GetNPCList(npc_list);
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); itr++) {
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); ++itr) {
NPC* npc = *itr;
float dist = npc->DistNoRootNoZ(*this);
int radius = RuleI(Mercs, AggroRadius);
@@ -2594,7 +2594,7 @@ bool Merc::CheckAENuke(Merc* caster, Mob* tar, uint16 spell_id, uint8 &numTarget
std::list<NPC*> npc_list;
entity_list.GetNPCList(npc_list);
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); itr++) {
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); ++itr) {
NPC* npc = *itr;
if(npc->DistNoRootNoZ(*tar) <= spells[spell_id].aoerange * spells[spell_id].aoerange) {
@@ -2868,7 +2868,7 @@ int32 Merc::Additional_Heal(uint16 spell_id)
heal_amt += GetFocusEffect(focusAdditionalHeal, spell_id);
heal_amt += GetFocusEffect(focusAdditionalHeal2, spell_id);
heal_amt -= GetFocusEffect(focusReduceHeal, spell_id);
heal_amt += GetFocusEffect(focusFcHealAmtIncoming, spell_id);
if (heal_amt){
int duration = CalcBuffDuration(this, this, spell_id);
@@ -3311,7 +3311,7 @@ MercSpell Merc::GetBestMercSpellForVeryFastHeal(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CurrentHP);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsVeryFastHealSpell(mercSpellListItr->spellid)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3343,7 +3343,7 @@ MercSpell Merc::GetBestMercSpellForFastHeal(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CurrentHP);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsFastHealSpell(mercSpellListItr->spellid)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3375,7 +3375,7 @@ MercSpell Merc::GetBestMercSpellForHealOverTime(Merc* caster) {
if(caster) {
std::list<MercSpell> mercHoTSpellList = GetMercSpellsForSpellEffect(caster, SE_HealOverTime);
for(std::list<MercSpell>::iterator mercSpellListItr = mercHoTSpellList.begin(); mercSpellListItr != mercHoTSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercHoTSpellList.begin(); mercSpellListItr != mercHoTSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsHealOverTimeSpell(mercSpellListItr->spellid)) {
@@ -3415,7 +3415,7 @@ MercSpell Merc::GetBestMercSpellForPercentageHeal(Merc* caster) {
if(caster && caster->AI_HasSpells()) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CurrentHP);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsCompleteHealSpell(mercSpellListItr->spellid)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3447,7 +3447,7 @@ MercSpell Merc::GetBestMercSpellForRegularSingleTargetHeal(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CurrentHP);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsRegularSingleTargetHealSpell(mercSpellListItr->spellid)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3479,7 +3479,7 @@ MercSpell Merc::GetFirstMercSpellForSingleTargetHeal(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CurrentHP);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if((IsRegularSingleTargetHealSpell(mercSpellListItr->spellid)
|| IsFastHealSpell(mercSpellListItr->spellid))
@@ -3512,7 +3512,7 @@ MercSpell Merc::GetBestMercSpellForGroupHeal(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CurrentHP);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsRegularGroupHealSpell(mercSpellListItr->spellid)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3544,7 +3544,7 @@ MercSpell Merc::GetBestMercSpellForGroupHealOverTime(Merc* caster) {
if(caster) {
std::list<MercSpell> mercHoTSpellList = GetMercSpellsForSpellEffect(caster, SE_HealOverTime);
for(std::list<MercSpell>::iterator mercSpellListItr = mercHoTSpellList.begin(); mercSpellListItr != mercHoTSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercHoTSpellList.begin(); mercSpellListItr != mercHoTSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsGroupHealOverTimeSpell(mercSpellListItr->spellid)) {
@@ -3584,7 +3584,7 @@ MercSpell Merc::GetBestMercSpellForGroupCompleteHeal(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_CompleteHeal);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsGroupCompleteHealSpell(mercSpellListItr->spellid)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3616,7 +3616,7 @@ MercSpell Merc::GetBestMercSpellForAETaunt(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_Taunt);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if((spells[mercSpellListItr->spellid].targettype == ST_AECaster
|| spells[mercSpellListItr->spellid].targettype == ST_AETarget
@@ -3650,7 +3650,7 @@ MercSpell Merc::GetBestMercSpellForTaunt(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_Taunt);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if((spells[mercSpellListItr->spellid].targettype == ST_Target)
&& CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3682,7 +3682,7 @@ MercSpell Merc::GetBestMercSpellForHate(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_Calm);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
result.spellid = mercSpellListItr->spellid;
@@ -3738,7 +3738,7 @@ MercSpell Merc::GetBestMercSpellForCure(Merc* caster, Mob *tar) {
//Check for group cure first
if(countNeedsCured > 2) {
for(std::list<MercSpell>::iterator itr = cureList.begin(); itr != cureList.end(); itr++) {
for(std::list<MercSpell>::iterator itr = cureList.begin(); itr != cureList.end(); ++itr) {
MercSpell selectedMercSpell = *itr;
if(IsGroupSpell(itr->spellid) && CheckSpellRecastTimers(caster, itr->spellid)) {
@@ -3778,7 +3778,7 @@ MercSpell Merc::GetBestMercSpellForCure(Merc* caster, Mob *tar) {
//no group cure for target- try to find single target spell
if(!spellSelected) {
for(std::list<MercSpell>::iterator itr = cureList.begin(); itr != cureList.end(); itr++) {
for(std::list<MercSpell>::iterator itr = cureList.begin(); itr != cureList.end(); ++itr) {
MercSpell selectedMercSpell = *itr;
if(CheckSpellRecastTimers(caster, itr->spellid)) {
@@ -3834,7 +3834,7 @@ MercSpell Merc::GetBestMercSpellForStun(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsForSpellEffect(caster, SE_Stun);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
result.spellid = mercSpellListItr->spellid;
@@ -3929,7 +3929,7 @@ MercSpell Merc::GetBestMercSpellForTargetedAENuke(Merc* caster, Mob* tar) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsBySpellType(caster, SpellType_Nuke);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsAENukeSpell(mercSpellListItr->spellid) && !IsAERainNukeSpell(mercSpellListItr->spellid)
&& !IsPBAENukeSpell(mercSpellListItr->spellid) && CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -3980,7 +3980,7 @@ MercSpell Merc::GetBestMercSpellForPBAENuke(Merc* caster, Mob* tar) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsBySpellType(caster, SpellType_Nuke);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsPBAENukeSpell(mercSpellListItr->spellid) && CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
uint8 numTargets = 0;
@@ -4030,7 +4030,7 @@ MercSpell Merc::GetBestMercSpellForAERainNuke(Merc* caster, Mob* tar) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsBySpellType(caster, SpellType_Nuke);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsAERainNukeSpell(mercSpellListItr->spellid) && MakeRandomInt(1, 100) <= castChance && CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
uint8 numTargets = 0;
@@ -4068,7 +4068,7 @@ MercSpell Merc::GetBestMercSpellForNuke(Merc* caster) {
if(caster) {
std::list<MercSpell> mercSpellList = GetMercSpellsBySpellType(caster, SpellType_Nuke);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsPureNukeSpell(mercSpellListItr->spellid) && !IsAENukeSpell(mercSpellListItr->spellid)
&& MakeRandomInt(1, 100) <= castChance && CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -4111,7 +4111,7 @@ MercSpell Merc::GetBestMercSpellForNukeByTargetResists(Merc* caster, Mob* target
std::list<MercSpell> mercSpellList = GetMercSpellsBySpellType(caster, SpellType_Nuke);
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); mercSpellListItr++) {
for(std::list<MercSpell>::iterator mercSpellListItr = mercSpellList.begin(); mercSpellListItr != mercSpellList.end(); ++mercSpellListItr) {
// Assuming all the spells have been loaded into this list by level and in descending order
if(IsPureNukeSpell(mercSpellListItr->spellid) && !IsAENukeSpell(mercSpellListItr->spellid) && CheckSpellRecastTimers(caster, mercSpellListItr->spellid)) {
@@ -4350,7 +4350,7 @@ bool Merc::CheckAETaunt() {
std::list<NPC*> npc_list;
entity_list.GetNPCList(npc_list);
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); itr++) {
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); ++itr) {
NPC* npc = *itr;
float dist = npc->DistNoRootNoZ(*this);
int range = GetActSpellRange(mercSpell.spellid, spells[mercSpell.spellid].range);
@@ -4436,7 +4436,7 @@ bool Merc::CheckConfidence() {
std::list<NPC*> npc_list;
entity_list.GetNPCList(npc_list);
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); itr++) {
for(std::list<NPC*>::iterator itr = npc_list.begin(); itr != npc_list.end(); ++itr) {
NPC* mob = *itr;
float ConRating = 1.0;
int CurrentCon = 0;
@@ -4920,7 +4920,7 @@ bool Merc::LoadMercSpells() {
int16 attack_proc_spell = -1;
int8 proc_chance = 0;
for (std::list<MercSpellEntry>::iterator mercSpellEntryItr = spellList.begin(); mercSpellEntryItr != spellList.end(); mercSpellEntryItr++) {
for (std::list<MercSpellEntry>::iterator mercSpellEntryItr = spellList.begin(); mercSpellEntryItr != spellList.end(); ++mercSpellEntryItr) {
if (proficiency_id == mercSpellEntryItr->proficiencyid && GetLevel() >= mercSpellEntryItr->minlevel && GetLevel() <= mercSpellEntryItr->maxlevel && mercSpellEntryItr->spellid > 0) {
MercSpell mercSpell;
@@ -5932,7 +5932,7 @@ int NPC::GetNumMercTypes(uint32 clientVersion)
int count = 0;
std::list<MercType> mercTypeList = GetMercTypesList();
for(std::list<MercType>::iterator mercTypeListItr = mercTypeList.begin(); mercTypeListItr != mercTypeList.end(); mercTypeListItr++) {
for(std::list<MercType>::iterator mercTypeListItr = mercTypeList.begin(); mercTypeListItr != mercTypeList.end(); ++mercTypeListItr) {
if(mercTypeListItr->ClientVersion <= clientVersion)
count++;
}
@@ -5945,7 +5945,7 @@ int NPC::GetNumMercs(uint32 clientVersion)
int count = 0;
std::list<MercData> mercDataList = GetMercsList();
for(std::list<MercData>::iterator mercListItr = mercDataList.begin(); mercListItr != mercDataList.end(); mercListItr++) {
for(std::list<MercData>::iterator mercListItr = mercDataList.begin(); mercListItr != mercDataList.end(); ++mercListItr) {
if(mercListItr->ClientVersion <= clientVersion)
count++;
}
@@ -5957,7 +5957,7 @@ std::list<MercType> NPC::GetMercTypesList(uint32 clientVersion) {
std::list<MercType> result;
if(GetNumMercTypes() > 0) {
for(std::list<MercType>::iterator mercTypeListItr = mercTypeList.begin(); mercTypeListItr != mercTypeList.end(); mercTypeListItr++) {
for(std::list<MercType>::iterator mercTypeListItr = mercTypeList.begin(); mercTypeListItr != mercTypeList.end(); ++mercTypeListItr) {
if(mercTypeListItr->ClientVersion <= clientVersion) {
MercType mercType;
mercType.Type = mercTypeListItr->Type;
@@ -5974,7 +5974,7 @@ std::list<MercData> NPC::GetMercsList(uint32 clientVersion) {
std::list<MercData> result;
if(GetNumMercs() > 0) {
for(std::list<MercData>::iterator mercListItr = mercDataList.begin(); mercListItr != mercDataList.end(); mercListItr++) {
for(std::list<MercData>::iterator mercListItr = mercDataList.begin(); mercListItr != mercDataList.end(); ++mercListItr) {
if(mercListItr->ClientVersion <= clientVersion) {
MercTemplate *merc_template = zone->GetMercTemplate(mercListItr->MercTemplateID);
+42 -7
View File
@@ -3458,7 +3458,7 @@ bool Mob::TryFadeEffect(int slot)
for(int i = 0; i < EFFECT_COUNT; i++)
{
if (spells[buffs[slot].spellid].effectid[i] == SE_CastOnWearoff || spells[buffs[slot].spellid].effectid[i] == SE_EffectOnFade
|| spells[buffs[slot].spellid].effectid[i] == SE_SpellOnAmtDmgTaken)
|| spells[buffs[slot].spellid].effectid[i] == SE_TriggerMeleeThreshold)
{
uint16 spell_id = spells[buffs[slot].spellid].base[i];
BuffFadeBySlot(slot);
@@ -4611,10 +4611,10 @@ int Mob::SlowMitigation(bool slow_msg, Mob *caster, int slow_value)
if ((int_slow_mitigation > 0.0f) && (int_slow_mitigation < 26.0f))
caster->Message(262, "Your spell was mostly successful");
else if ((int_slow_mitigation > 26.0f) && (int_slow_mitigation < 74.0f))
else if ((int_slow_mitigation >= 26.0f) && (int_slow_mitigation < 74.0f))
caster->Message(262, "Your spell was partially successful");
else if ((int_slow_mitigation > 74.0f) && (int_slow_mitigation < 101.0f))
else if ((int_slow_mitigation >= 74.0f) && (int_slow_mitigation < 101.0f))
caster->Message(262, "Your spell was slightly successful");
}
return 0;
@@ -4657,9 +4657,6 @@ bool Mob::PassLimitToSkill(uint16 spell_id, uint16 skill) {
if (!IsValidSpell(spell_id))
return false;
if (!IsEffectInSpell(spell_id, SE_LimitToSkill))
return false;
for (int i = 0; i < EFFECT_COUNT; i++) {
if (spells[spell_id].effectid[i] == SE_LimitToSkill){
if (spells[spell_id].base[i] == skill){
@@ -4670,6 +4667,44 @@ bool Mob::PassLimitToSkill(uint16 spell_id, uint16 skill) {
return false;
}
int8 Mob::GetDecayEffectValue(uint16 spell_id, uint16 spelleffect) {
if (!IsValidSpell(spell_id))
return false;
int spell_level = spells[spell_id].classes[(GetClass()%16) - 1];
int effect_value = 0;
int lvlModifier = 100;
int buff_count = GetMaxTotalSlots();
for (int slot = 0; slot < buff_count; slot++){
if (IsValidSpell(buffs[slot].spellid)){
for (int i = 0; i < EFFECT_COUNT; i++){
if(spells[buffs[slot].spellid].effectid[i] == spelleffect) {
int critchance = spells[buffs[slot].spellid].base[i];
int decay = spells[buffs[slot].spellid].base2[i];
int lvldiff = spell_level - spells[buffs[slot].spellid].max[i];
if(lvldiff > 0 && decay > 0)
{
lvlModifier -= decay*lvldiff;
if (lvlModifier > 0){
critchance = (critchance*lvlModifier)/100;
effect_value += critchance;
}
}
else
effect_value += critchance;
}
}
}
}
return effect_value;
}
// Faction Mods for Alliance type spells
void Mob::AddFactionBonus(uint32 pFactionID,int32 bonus) {
std::map <uint32, int32> :: const_iterator faction_bonus;
@@ -4732,7 +4767,7 @@ int32 Mob::GetItemFactionBonus(uint32 pFactionID) {
void Mob::ClearItemFactionBonuses() {
std::map <uint32, int32> :: iterator itr;
for(itr = item_faction_bonuses.begin(); itr != item_faction_bonuses.end(); itr++)
for(itr = item_faction_bonuses.begin(); itr != item_faction_bonuses.end(); ++itr)
{
item_faction_bonuses.erase(itr->first);
}
+1 -1
View File
@@ -570,6 +570,7 @@ public:
bool CanBlockSpell() const { return(spellbonuses.BlockNextSpell); }
bool DoHPToManaCovert(uint16 mana_cost = 0);
int32 ApplySpellEffectiveness(Mob* caster, int16 spell_id, int32 value, bool IsBard = false);
int8 GetDecayEffectValue(uint16 spell_id, uint16 spelleffect);
void ModSkillDmgTaken(SkillUseTypes skill_num, int value);
int16 GetModSkillDmgTaken(const SkillUseTypes skill_num);
@@ -655,7 +656,6 @@ public:
int32 ReduceDamage(int32 damage);
int32 AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTic, Mob* attacker);
int32 ReduceAllDamage(int32 damage);
virtual void DoSpecialAttackDamage(Mob *who, SkillUseTypes skill, int32 max_damage, int32 min_damage = 1, int32 hate_override = -1, int ReuseTime = 10, bool HitChance=false);
virtual void DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon=nullptr, const Item_Struct* item=nullptr, uint16 weapon_damage=0, int16 chance_mod=0,int16 focus=0);
+10 -14
View File
@@ -280,12 +280,8 @@ NPC::NPC(const NPCType* d, Spawn2* in_respawn, float x, float y, float z, float
trap_list = trap_ent_iter->second;
if(trap_list.size() > 0)
{
uint16 count = MakeRandomInt(0, (trap_list.size()-1));
std::list<LDoNTrapTemplate*>::iterator trap_list_iter = trap_list.begin();
for(int x = 0; x < count; ++x)
{
trap_list_iter++;
}
std::advance(trap_list_iter, MakeRandomInt(0, trap_list.size() - 1));
LDoNTrapTemplate* tt = (*trap_list_iter);
if(tt)
{
@@ -374,7 +370,7 @@ NPC::~NPC()
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
safe_delete(item);
}
@@ -385,7 +381,7 @@ NPC::~NPC()
std::list<struct NPCFaction*>::iterator cur,end;
cur = faction_list.begin();
end = faction_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
struct NPCFaction* fac = *cur;
safe_delete(fac);
}
@@ -424,7 +420,7 @@ ServerLootItem_Struct* NPC::GetItem(int slot_id) {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
if (item->equipSlot == slot_id) {
return item;
@@ -437,7 +433,7 @@ void NPC::RemoveItem(uint32 item_id, uint16 quantity, uint16 slot) {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
if (item->item_id == item_id && slot <= 0 && quantity <= 0) {
itemlist.erase(cur);
@@ -477,7 +473,7 @@ void NPC::CheckMinMaxLevel(Mob *them)
cur = itemlist.erase(cur);
continue;
}
cur++;
++cur;
}
}
@@ -486,7 +482,7 @@ void NPC::ClearItemList() {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
ServerLootItem_Struct* item = *cur;
safe_delete(item);
}
@@ -500,7 +496,7 @@ void NPC::QueryLoot(Client* to) {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
const Item_Struct* item = database.GetItem((*cur)->item_id);
if (item)
if (to->GetClientVersion() >= EQClientRoF)
@@ -1286,7 +1282,7 @@ void NPC::PickPocket(Client* thief) {
ItemList::iterator cur,end;
cur = itemlist.begin();
end = itemlist.end();
for(; cur != end && x < 49; cur++) {
for(; cur != end && x < 49; ++cur) {
ServerLootItem_Struct* citem = *cur;
const Item_Struct* item = database.GetItem(citem->item_id);
if (item)
@@ -2351,7 +2347,7 @@ FACTION_VALUE NPC::CheckNPCFactionAlly(int32 other_faction) {
std::list<struct NPCFaction*>::iterator cur,end;
cur = faction_list.begin();
end = faction_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
struct NPCFaction* fac = *cur;
if ((int32)fac->factionID == other_faction) {
if (fac->npc_value > 0)
+2 -2
View File
@@ -1324,12 +1324,12 @@ void Client::SendPathPacket(std::vector<FindPerson_Point> &points) {
cur = points.begin();
end = points.end();
unsigned int r;
for(r = 0; cur != end; cur++, r++) {
for(r = 0; cur != end; ++cur, r++) {
fpr->path[r] = *cur;
}
//put the last element into the destination field
cur--;
--cur;
fpr->path[r] = *cur;
fpr->dest = *cur;
+75 -84
View File
@@ -114,7 +114,7 @@ QuestManager::~QuestManager() {
}
void QuestManager::Process() {
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end, tmp;
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
end = QTimerList.end();
while (cur != end) {
@@ -122,8 +122,7 @@ void QuestManager::Process() {
if(entity_list.IsMobInZone(cur->mob)) {
if(cur->mob->IsNPC()) {
parse->EventNPC(EVENT_TIMER, cur->mob->CastToNPC(), nullptr, cur->name, 0);
}
else {
} else {
//this is inheriently unsafe if we ever make it so more than npc/client start timers
parse->EventPlayer(EVENT_TIMER, cur->mob->CastToClient(), cur->name, 0);
}
@@ -133,13 +132,10 @@ void QuestManager::Process() {
cur = QTimerList.begin();
end = QTimerList.end(); //dunno if this is needed, cant hurt...
} else {
tmp = cur;
tmp++;
QTimerList.erase(cur);
cur = tmp;
cur = QTimerList.erase(cur);
}
} else
cur++;
++cur;
}
auto cur_iter = STimerList.begin();
@@ -168,18 +164,14 @@ void QuestManager::EndQuest() {
running_quest run = quests_running_.top();
if(run.depop_npc && run.owner->IsNPC()) {
//clear out any timers for them...
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end, tmp;
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
end = QTimerList.end();
while (cur != end) {
if(cur->mob == run.owner) {
tmp = cur;
tmp++;
QTimerList.erase(cur);
cur = tmp;
} else {
cur++;
}
if (cur->mob == run.owner)
cur = QTimerList.erase(cur);
else
++cur;
}
run.owner->Depop();
@@ -462,7 +454,7 @@ void QuestManager::settimer(const char *timer_name, int seconds) {
cur->Timer_.Start(seconds * 1000, false);
return;
}
cur++;
++cur;
}
QTimerList.push_back(QuestTimer(seconds * 1000, owner, timer_name));
@@ -486,7 +478,7 @@ void QuestManager::settimerMS(const char *timer_name, int milliseconds) {
cur->Timer_.Start(milliseconds, false);
return;
}
cur++;
++cur;
}
QTimerList.push_back(QuestTimer(milliseconds, owner, timer_name));
@@ -495,7 +487,7 @@ void QuestManager::settimerMS(const char *timer_name, int milliseconds) {
void QuestManager::stoptimer(const char *timer_name) {
QuestManagerCurrentQuestVars();
if(questitem) {
if (questitem) {
questitem->StopTimer(timer_name);
return;
}
@@ -503,14 +495,12 @@ void QuestManager::stoptimer(const char *timer_name) {
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end;
end = QTimerList.end();
while (cur != end)
{
if(cur->mob && cur->mob == owner && cur->name == timer_name)
{
while (cur != end) {
if (cur->mob && cur->mob == owner && cur->name == timer_name) {
QTimerList.erase(cur);
return;
}
cur++;
++cur;
}
}
@@ -525,19 +515,11 @@ void QuestManager::stopalltimers() {
std::list<QuestTimer>::iterator cur = QTimerList.begin(), end, tmp;
end = QTimerList.end();
while (cur != end)
{
while (cur != end) {
if(cur->mob && cur->mob == owner)
{
tmp = cur;
tmp++;
QTimerList.erase(cur);
cur = tmp;
}
cur = QTimerList.erase(cur);
else
{
cur++;
}
++cur;
}
}
@@ -666,31 +648,31 @@ void QuestManager::repopzone() {
void QuestManager::settarget(const char *type, int target_id) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
Mob* tmp = nullptr;
if (!strcasecmp(type,"npctype")) {
if (!strcasecmp(type,"npctype"))
tmp = entity_list.GetMobByNpcTypeID(target_id);
}
else if (!strcasecmp(type, "entity")) {
else if (!strcasecmp(type, "entity"))
tmp = entity_list.GetMob(target_id);
}
if(tmp != nullptr) {
if (tmp != nullptr)
owner->SetTarget(tmp);
}
}
void QuestManager::follow(int entity_id, int distance) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
owner->SetFollowID(entity_id);
owner->SetFollowDistance(distance * distance);
}
void QuestManager::sfollow() {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (owner == nullptr || !owner->IsNPC())
return;
owner->SetFollowID(0);
}
@@ -1104,25 +1086,26 @@ void QuestManager::setallskill(int value) {
void QuestManager::attack(const char *client_name) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
Client* getclient = entity_list.GetClientByName(client_name);
if(getclient && owner->IsAttackAllowed(getclient)) {
if (getclient && owner->IsAttackAllowed(getclient))
owner->AddToHateList(getclient,1);
} else {
else
owner->Say("I am unable to attack %s.", client_name);
}
}
void QuestManager::attacknpc(int npc_entity_id) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
Mob *it = entity_list.GetMob(npc_entity_id);
if(it && owner->IsAttackAllowed(it)) {
if (it && owner->IsAttackAllowed(it)) {
owner->AddToHateList(it,1);
} else {
if(it)
if (it)
owner->Say("I am unable to attack %s.", it->GetName());
else
owner->Say("I am unable to locate NPC entity %i", npc_entity_id);
@@ -1131,13 +1114,14 @@ void QuestManager::attacknpc(int npc_entity_id) {
void QuestManager::attacknpctype(int npc_type_id) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
Mob *it = entity_list.GetMobByNpcTypeID(npc_type_id);
if(it && owner->IsAttackAllowed(it)) {
if (it && owner->IsAttackAllowed(it)) {
owner->AddToHateList(it,1);
} else {
if(it)
if (it)
owner->Say("I am unable to attack %s.", it->GetName());
else
owner->Say("I am unable to locate NPC type %i", npc_type_id);
@@ -1194,7 +1178,7 @@ void QuestManager::CreateGuild(const char *guild_name, const char *leader) {
uint32 tmp = guild_mgr.FindGuildByLeader(cid);
if (tmp != GUILD_NONE) {
sprintf(hString, "Guild Creation: Error: %s already is the leader of DB# %i '%s'.", leader, tmp, guild_mgr.GetGuildName(tmp));
sprintf(hString, "Guild Creation: Error: %s already is the leader of DB# %u '%s'.", leader, tmp, guild_mgr.GetGuildName(tmp));
worldserver.SendEmoteMessage(0, 0, 80, 15, "%s", hString);
}
else {
@@ -1202,7 +1186,7 @@ void QuestManager::CreateGuild(const char *guild_name, const char *leader) {
if (gid == GUILD_NONE)
worldserver.SendEmoteMessage(0, 0, 80, 15, "%s", "Guild Creation: Guild creation failed");
else {
sprintf(hString, "Guild Creation: Guild created: Leader: %i, number %i: %s", cid, gid, leader);
sprintf(hString, "Guild Creation: Guild created: Leader: %u, number %u: %s", cid, gid, leader);
worldserver.SendEmoteMessage(0, 0, 80, 15, "%s", hString);
if(!guild_mgr.SetGuild(cid, gid, GUILD_LEADER))
worldserver.SendEmoteMessage(0, 0, 80, 15, "%s", "Unable to set guild leader's guild in the database. Your going to have to run #guild set");
@@ -1218,12 +1202,15 @@ void QuestManager::settime(uint8 new_hour, uint8 new_min) {
void QuestManager::itemlink(int item_id) {
QuestManagerCurrentQuestVars();
const ItemInst* inst = database.CreateItem(item_id);
char* link = 0;
if (initiator->MakeItemLink(link, inst))
initiator->Message(0, "%s tells you, %c%s%s%c", owner->GetCleanName(), 0x12, link, inst->GetItem()->Name, 0x12);
safe_delete_array(link);
safe_delete(inst);
if (initiator) {
const ItemInst* inst = database.CreateItem(item_id);
char* link = 0;
if (initiator->MakeItemLink(link, inst))
initiator->Message(0, "%s tells you, %c%s%s%c", owner->GetCleanName(),
0x12, link, inst->GetItem()->Name, 0x12);
safe_delete_array(link);
safe_delete(inst);
}
}
void QuestManager::signalwith(int npc_id, int signal_id, int wait_ms) {
@@ -1504,36 +1491,41 @@ void QuestManager::rebind(int zoneid, float x, float y, float z) {
void QuestManager::start(int32 wp) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
owner->CastToNPC()->AssignWaypoints(wp);
}
void QuestManager::stop() {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
owner->CastToNPC()->StopWandering();
}
void QuestManager::pause(int duration) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
owner->CastToNPC()->PauseWandering(duration);
}
void QuestManager::moveto(float x, float y, float z, float h, bool saveguardspot) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
owner->CastToNPC()->MoveTo(x, y, z, h, saveguardspot);
}
void QuestManager::resume() {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
owner->CastToNPC()->ResumeWandering();
}
@@ -1557,22 +1549,21 @@ void QuestManager::addldonloss(int32 losses, uint32 theme) {
void QuestManager::setnexthpevent(int at) {
QuestManagerCurrentQuestVars();
owner->SetNextHPEvent( at );
if (owner)
owner->SetNextHPEvent(at);
}
void QuestManager::setnextinchpevent(int at) {
QuestManagerCurrentQuestVars();
owner->SetNextIncHPEvent( at );
if (owner)
owner->SetNextIncHPEvent(at);
}
void QuestManager::respawn(int npc_type, int grid) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
//char tempa[100];
float x,y,z,h;
if ( !owner )
return;
x = owner->GetX();
y = owner->GetY();
@@ -1599,7 +1590,7 @@ void QuestManager::respawn(int npc_type, int grid) {
void QuestManager::set_proximity(float minx, float maxx, float miny, float maxy, float minz, float maxz) {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if (!owner || !owner->IsNPC())
return;
entity_list.AddProximity(owner->CastToNPC());
@@ -1614,8 +1605,9 @@ void QuestManager::set_proximity(float minx, float maxx, float miny, float maxy,
void QuestManager::clear_proximity() {
QuestManagerCurrentQuestVars();
if(!owner->IsNPC())
if(!owner || !owner->IsNPC())
return;
entity_list.RemoveProximity(owner->GetID());
safe_delete(owner->CastToNPC()->proximity);
}
@@ -1694,7 +1686,7 @@ void QuestManager::toggle_spawn_event(int event_id, bool enable, bool reset_base
bool QuestManager::has_zone_flag(int zone_id) {
QuestManagerCurrentQuestVars();
return(initiator->HasZoneFlag(zone_id));
return initiator ? initiator->HasZoneFlag(zone_id) : false;
}
void QuestManager::set_zone_flag(int zone_id) {
@@ -2453,18 +2445,17 @@ uint32 QuestManager::MerchantCountItem(uint32 NPCid, uint32 itemid) {
const Item_Struct* item = nullptr;
item = database.GetItem(itemid);
if (!item) return 0; // likewise, if it isn't a valid item, the merchant doesn't have any
if (!item)
return 0; // if it isn't a valid item, the merchant doesn't have any
// look for the item in the merchant's temporary list
std::list<TempMerchantList> MerchList = zone->tmpmerchanttable[NPCid];
std::list<TempMerchantList>::const_iterator itr;
TempMerchantList ml;
uint32 Quant = 0;
for(itr = MerchList.begin(); itr != MerchList.end(); itr++){
ml = *itr;
if (ml.item == itemid) { // if this is the item we're looking for
Quant = ml.charges;
for (itr = MerchList.begin(); itr != MerchList.end(); ++itr) {
if (itr->item == itemid) { // if this is the item we're looking for
Quant = itr->charges;
break;
}
}
@@ -2776,7 +2767,7 @@ void QuestManager::enabletitle(int titleset) {
bool QuestManager::checktitle(int titleset) {
QuestManagerCurrentQuestVars();
return initiator->CheckTitle(titleset);
return initiator ? initiator->CheckTitle(titleset) : false;
}
void QuestManager::removetitle(int titleset) {
+5 -5
View File
@@ -566,7 +566,7 @@ void SpawnConditionManager::Process() {
std::vector<SpawnEvent>::iterator cur,end;
cur = spawn_events.begin();
end = spawn_events.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEvent &cevent = *cur;
if(!cevent.enabled)
@@ -827,7 +827,7 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in
cur = spawn_events.begin();
end = spawn_events.end();
bool ran;
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEvent &cevent = *cur;
if(!cevent.enabled)
@@ -875,7 +875,7 @@ void SpawnConditionManager::FindNearestEvent() {
cur = spawn_events.begin();
end = spawn_events.end();
int next_id = -1;
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEvent &cevent = *cur;
if(!cevent.enabled)
@@ -983,7 +983,7 @@ void SpawnConditionManager::ReloadEvent(uint32 event_id) {
std::vector<SpawnEvent>::iterator cur,end;
cur = spawn_events.begin();
end = spawn_events.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEvent &cevent = *cur;
if(cevent.id == event_id) {
@@ -1026,7 +1026,7 @@ void SpawnConditionManager::ToggleEvent(uint32 event_id, bool enabled, bool rese
std::vector<SpawnEvent>::iterator cur,end;
cur = spawn_events.begin();
end = spawn_events.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEvent &cevent = *cur;
if(cevent.id == event_id) {
+4 -4
View File
@@ -64,7 +64,7 @@ uint32 SpawnGroup::GetNPCType() {
std::list<SpawnEntry*> possible;
cur = list_.begin();
end = list_.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEntry *se = *cur;
//check limits on this spawn group and npc type
@@ -83,7 +83,7 @@ uint32 SpawnGroup::GetNPCType() {
cur = possible.begin();
end = possible.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEntry *se = *cur;
if (roll < se->chance) {
npcType = se->NPCType;
@@ -104,7 +104,7 @@ SpawnGroup::~SpawnGroup() {
std::list<SpawnEntry*>::iterator cur,end;
cur = list_.begin();
end = list_.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnEntry* tmp = *cur;
safe_delete(tmp);
}
@@ -115,7 +115,7 @@ SpawnGroupList::~SpawnGroupList() {
std::map<uint32, SpawnGroup*>::iterator cur,end;
cur = groups.begin();
end = groups.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
SpawnGroup* tmp = cur->second;
safe_delete(tmp);
}
+5 -4
View File
@@ -197,14 +197,15 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
if (ca_atk->m_skill == SkillThrowing) {
SetAttackTimer();
ThrowingAttack(GetTarget());
if (CheckDoubleRangedAttack())
RangedAttack(GetTarget(), true);
return;
}
//ranged attack (archery)
if (ca_atk->m_skill == SkillArchery) {
SetAttackTimer();
RangedAttack(GetTarget());
bool test = CheckArcheryDoubleAttack();
if (CheckArcheryDoubleAttack())
if (CheckDoubleRangedAttack())
RangedAttack(GetTarget(), true);
return;
}
@@ -1119,12 +1120,12 @@ uint16 Mob::GetThrownDamage(int16 wDmg, int32& TotalDmg, int& minDmg)
return MaxDmg;
}
void Client::ThrowingAttack(Mob* other) { //old was 51
void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51
//conditions to use an attack checked before we are called
//make sure the attack and ranged timers are up
//if the ranged timer is disabled, then they have no ranged weapon and shouldent be attacking anyhow
if((attack_timer.Enabled() && !attack_timer.Check(false)) || (ranged_timer.Enabled() && !ranged_timer.Check())) {
if((!CanDoubleAttack && (attack_timer.Enabled() && !attack_timer.Check(false)) || (ranged_timer.Enabled() && !ranged_timer.Check()))) {
mlog(COMBAT__RANGED, "Throwing attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime());
// The server and client timers are not exact matches currently, so this would spam too often if enabled
//Message(0, "Error: Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime());
+142 -30
View File
@@ -178,8 +178,10 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
int numhit = spells[spell_id].numhits;
if (caster && caster->IsClient())
if (caster && caster->IsClient()){
numhit += numhit*caster->CastToClient()->GetFocusEffect(focusFcLimitUse, spell_id)/100;
numhit += caster->CastToClient()->GetFocusEffect(focusIncreaseNumHits, spell_id);
}
buffs[buffslot].numhits = numhit;
}
@@ -1221,6 +1223,8 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
int charges;
if (item->Stackable)
charges = (spell.formula[i] > item->StackSize) ? item->StackSize : spell.formula[i];
else if (item->MaxCharges) // mod rods etc
charges = item->MaxCharges;
else
charges = 1;
@@ -1261,6 +1265,8 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
if (item->Stackable)
charges = (spell.formula[i] > item->StackSize) ? item->StackSize : spell.formula[i];
else if (item->MaxCharges) // mod rods, not sure if there are actual examples of this for IntoBag
charges = item->MaxCharges;
else
charges = 1;
@@ -1364,12 +1370,18 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
break;
}
case SE_MitigateMeleeDamageSP:
case SE_MeleeThresholdGuard:
{
buffs[buffslot].melee_rune = spells[spell_id].max[i];
break;
}
case SE_SpellThresholdGuard:
{
buffs[buffslot].magic_rune = spells[spell_id].max[i];
break;
}
case SE_MitigateSpellDamage:
{
buffs[buffslot].magic_rune = GetPartialMagicRuneAmount(spell_id);
@@ -1377,12 +1389,18 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
break;
}
//Using the melee_rune variable, however it will be calculated for both spell and melee.
case SE_SpellOnAmtDmgTaken:
case SE_TriggerMeleeThreshold:
{
buffs[buffslot].melee_rune = spells[spell_id].base2[i];
break;
}
case SE_TriggerSpellThreshold:
{
buffs[buffslot].magic_rune = spells[spell_id].base2[i];
break;
}
case SE_Levitate:
{
@@ -2859,8 +2877,8 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
case SE_ImprovedDamage2:
case SE_AdditionalHeal2:
case SE_HealRate2:
case SE_CriticalHealChance2:
case SE_CriticalHealOverTime2:
case SE_CriticalHealDecay:
case SE_CriticalRegenDecay:
case SE_Empathy:
case SE_LimitSpellSkill:
case SE_MitigateDamageShield:
@@ -2904,12 +2922,15 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
case SE_CriticalHealRate:
case SE_IncreaseNumHits:
case SE_CastonFocusEffect:
case SE_ReduceHeal:
case SE_FcHealAmtIncoming:
case SE_IncreaseHitDmgTaken:
case SE_ArcheryDoubleAttack:
case SE_DoubleRangedAttack:
case SE_ShieldEquipHateMod:
case SE_ShieldEquipDmgMod:
case SE_TriggerOnValueAmount:
case SE_LimitRace:
case SE_FcLimitUse:
case SE_FcMute:
{
break;
}
@@ -3931,6 +3952,8 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
int lvldiff = 0;
bool LimitSpellSkill = false;
bool SpellSkill_Found = false;
bool LimitSpellEffect = false;
bool SpellEffect_Found = false;
uint32 effect = 0;
int32 base1 = 0;
int32 base2 = 0;
@@ -3963,6 +3986,10 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
if (LimitFound){
value = 0;
LimitFound = false;
LimitSpellSkill = false;
SpellSkill_Found = false;
LimitSpellEffect = false;
SpellEffect_Found = false;
}
else{
@@ -4031,14 +4058,13 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
LimitFound = true;
break;
case SE_LimitEffect:
// Exclude effect(any but this)
if(base1 < 0) {
if(IsEffectInSpell(spell_id,(base1*-1)))
// Exclude effect (any but this)
if (base1 < 0) {
if (IsEffectInSpell(spell_id, (base1 * -1)))
LimitFound = true;
}
else {
// Include effect(only this)
if(!IsEffectInSpell(spell_id,base1))
} else {
// Include effect (only this)
if (!IsEffectInSpell(spell_id, base1))
LimitFound = true;
}
break;
@@ -4110,6 +4136,15 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
LimitFound = true;
break;
case SE_LimitRace:
if (base1 != GetRace())
LimitFound = true;
break;
case SE_FfLimitUseMin:
if (base1 > spell.numhits)
LimitFound = true;
break;
//Handle Focus Effects
case SE_ImprovedDamage:
@@ -4284,9 +4319,9 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
break;
}
case SE_ReduceHeal:
case SE_FcHealAmtIncoming:
{
if(type == focusReduceHeal)
if(type == focusFcHealAmtIncoming)
value = base1;
break;
@@ -4347,17 +4382,36 @@ int16 Client::CalcAAFocus(focusType type, uint32 aa_ID, uint16 spell_id)
break;
}
//Check for spell skill limits.
if ((LimitSpellSkill) && (!SpellSkill_Found))
return 0;
case SE_FcLimitUse:
{
if(type == focusFcLimitUse)
value = base1;
break;
}
case SE_FcMute:
{
if(type == focusFcMute)
value = base1;
break;
}
}
}
if (LimitFound){
return 0;
}
if (LimitSpellSkill && !SpellSkill_Found)
LimitFound = true;
if (LimitSpellEffect && !SpellEffect_Found)
LimitFound = true;
if (LimitFound)
return 0;
return(value*lvlModifier/100);
}
@@ -4368,6 +4422,7 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
if(!IsValidSpell(focus_id) || !IsValidSpell(spell_id))
return 0;
const SPDat_Spell_Struct &focus_spell = spells[focus_id];
const SPDat_Spell_Struct &spell = spells[spell_id];
@@ -4377,6 +4432,8 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
int lvldiff = 0;
bool LimitSpellSkill = false;
bool SpellSkill_Found = false;
bool LimitSpellEffect = false;
bool SpellEffect_Found = false;
uint32 Caston_spell_id = 0;
for (int i = 0; i < EFFECT_COUNT; i++) {
@@ -4385,7 +4442,7 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
case SE_Blank:
break;
//check limits
case SE_LimitResist:{
if(focus_spell.base[i]){
if(spell.resisttype != focus_spell.base[i])
@@ -4465,10 +4522,17 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
return 0;
}
}
else if(!IsEffectInSpell(spell_id,focus_spell.base[i])){ //we limit this effect, must have
return 0;
}
//else if(!SpellEffect_Found && (!IsEffectInSpell(spell_id,focus_spell.base[i])){ //we limit this effect, must have
// return 0;
//}
}
if(focus_spell.base[i] >= 0){
LimitSpellEffect = true;
if (IsEffectInSpell(spell_id,focus_spell.base[i]))
SpellEffect_Found = true;
}
break;
@@ -4538,11 +4602,22 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
return 0;
break;
case SE_LimitRace:
if (focus_spell.base[i] != GetRace())
return 0;
break;
case SE_FfLimitUseMin:
if (focus_spell.base[i] > spell.numhits)
return 0;
break;
case SE_CastonFocusEffect:
if (focus_spell.base[i] > 0)
Caston_spell_id = focus_spell.base[i];
break;
//handle effects
case SE_ImprovedDamage:
// No Spell used this, its handled by different spell effect IDs.
@@ -4764,9 +4839,9 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
break;
}
case SE_ReduceHeal:
case SE_FcHealAmtIncoming:
{
if(type == focusReduceHeal)
if(type == focusFcHealAmtIncoming)
value = focus_spell.base[i];
break;
@@ -4827,6 +4902,23 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
break;
}
case SE_FcLimitUse:
{
if(type == focusFcLimitUse)
value = focus_spell.base[i];
break;
}
case SE_FcMute:
{
if(type == focusFcMute)
value = focus_spell.base[i];
break;
}
#if EQDEBUG >= 6
//this spits up a lot of garbage when calculating spell focuses
//since they have all kinds of extra effects on them.
@@ -4836,9 +4928,12 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
}
}
//Check for spell skill limits.
if ((LimitSpellSkill) && (!SpellSkill_Found))
if (LimitSpellSkill && !SpellSkill_Found)
return 0;
if (LimitSpellEffect && !SpellEffect_Found)
return 0;
if (Caston_spell_id){
if(IsValidSpell(Caston_spell_id) && (Caston_spell_id != spell_id))
SpellFinished(Caston_spell_id, this, 10, 0, -1, spells[Caston_spell_id].ResistDiff);
@@ -5180,6 +5275,23 @@ int16 Client::GetFocusEffect(focusType type, uint16 spell_id) {
bool Mob::CheckHitsRemaining(uint32 buff_slot, bool when_spell_done, bool negate, uint16 type, uint16 spell_id,bool use_skill,uint16 skill)
{
/*
TO DO: Rewrite code so it checks for numhits by type not after each specified spell effect is triggered...
Field 175 = numhits type
1: [Incoming Hit Attempts] (323=SE_DefensiveProc, 172=SE_AvoidMeleeChance, 1=SE_ArmorClass, 40=SE_DivineAura)
2: [Outgoing Hit Attempts] (184=SE_DamageModifer, 185=SE_HitChance)
3: [Incoming Spells] (180=SE_ResistSpellChance, 296=SE_SpellVulnerability)
4: NONE
5: [Outgoing Hit Successes] (196=SE_SkillDamageAmount, 178=SE_MeleeLifetap, 121=SE_ReverseDS, ?373=SE_CastOnWearoff)
6: [Incoming Hit Successes] (59=SE_DamageShield, 197=SE_SkillDamageTaken, 162=define SE_MitigateMeleeDamage)
7: [Matching Spells] *When focus is triggered (focus effects)
8: [Incoming Hits or Spells] (329=SE_ManaAbsorbPercentDamage)
9: [Reflected Spells]
10: [Defensive Procs]
11: [Melee Procs]
*/
bool bDepleted = false;
//Effects: Cast: SE_ResistSpellChance, SE_Reflect, SE_SpellDamageShield
//Effects: Attack: SE_MeleeLifetap : SE_DamageShield, SE_AvoidMeleeChance, SE_SkillProc
+13 -2
View File
@@ -193,6 +193,17 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot,
return(false);
}
if(IsClient()){
int chance = CastToClient()->GetFocusEffect(focusFcMute, spell_id);
if (MakeRandomInt(0,99) < chance){
Message_StringID(13, SILENCED_STRING);
if(IsClient())
CastToClient()->SendSpellBarEnable(spell_id);
return(false);
}
}
if(IsDetrimentalSpell(spell_id) && !zone->CanDoCombat()){
Message_StringID(13, SPELL_WOULDNT_HOLD);
if(IsClient())
@@ -2047,7 +2058,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16
SpellOnTarget(spell_id, (*iter), false, true, resist_adjust);
}
}
iter++;
++iter;
}
break;
}
@@ -2929,7 +2940,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid
std::vector<int>::iterator cur, end;
cur = overwrite_slots.begin();
end = overwrite_slots.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
// strip spell
BuffFadeBySlot(*cur, false);
+7 -7
View File
@@ -829,7 +829,7 @@ void ClientTaskState::EnableTask(int CharID, int TaskCount, int *TaskList) {
// Our list of enabled tasks is sorted, so we can quit if we find a taskid higher than
// the one we are looking for.
if((*Iterator) > TaskList[i]) break;
Iterator++;
++Iterator;
}
if(AddTask) {
EnabledTasks.insert(Iterator, TaskList[i]);
@@ -890,7 +890,7 @@ void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) {
break;
}
if((*Iterator) > TaskList[i]) break;
Iterator++;
++Iterator;
}
if(RemoveTask) {
EnabledTasks.erase(Iterator);
@@ -947,7 +947,7 @@ bool ClientTaskState::IsTaskEnabled(int TaskID) {
while(Iterator != EnabledTasks.end()) {
if((*Iterator) == TaskID) return true;
if((*Iterator) > TaskID) break;
Iterator++;
++Iterator;
}
return false;
@@ -1021,7 +1021,7 @@ int TaskManager::FirstTaskInSet(int TaskSetID) {
while(Iterator != TaskSets[TaskSetID].end()) {
if((*Iterator) > 0)
return (*Iterator);
Iterator++;
++Iterator;
}
return 0;
@@ -1087,7 +1087,7 @@ void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, i
(IsTaskRepeatable((*Iterator)) || !state->IsTaskCompleted((*Iterator))))
TaskList[TaskListIndex++] = (*Iterator);
Iterator++;
++Iterator;
}
if(TaskListIndex > 0)
{
@@ -1497,7 +1497,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) {
ErasedElements++;
}
else
Iterator++;
++Iterator;
}
_log(TASKS__UPDATE, "Erased Element count is %i", ErasedElements);
if(ErasedElements) {
@@ -1570,7 +1570,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) {
ErasedElements++;
}
else
Iterator++;
++Iterator;
}
_log(TASKS__UPDATE, "Erased Element count is %i", ErasedElements);
if(ErasedElements) {
+1 -1
View File
@@ -165,7 +165,7 @@ std::string TitleManager::GetSuffix(int TitleID)
if((*Iterator).TitleID == TitleID)
return (*Iterator).Suffix;
Iterator++;
++Iterator;
}
return "";
+3 -3
View File
@@ -1082,7 +1082,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
if(RuleB(TaskSystem, EnableTaskSystem))
UpdateTasksForItem(ActivityTradeSkill, itr->first, itr->second);
itr++;
++itr;
}
return(true);
} else {
@@ -1103,7 +1103,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
while(itr != spec->onfail.end()) {
//should we check these arguments?
SummonItem(itr->first, itr->second);
itr++;
++itr;
}
// Rolls on each item, is possible to return everything
@@ -1116,7 +1116,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
for(sc = 0; sc < itr->second; sc++)
if(MakeRandomInt(0,99) < SalvageChance)
SummonItem(itr->first, 1);
itr++;
++itr;
}
}
+2 -2
View File
@@ -308,7 +308,7 @@ void Client::SendTributes() {
cur = tribute_list.begin();
end = tribute_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(cur->second.is_guild)
continue; //skip guild tributes here
int len = cur->second.name.length();
@@ -342,7 +342,7 @@ void Client::SendGuildTributes() {
cur = tribute_list.begin();
end = tribute_list.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
if(!cur->second.is_guild)
continue; //skip guild tributes here
int len = cur->second.name.length();
+5 -13
View File
@@ -73,7 +73,7 @@ void NPC::DisplayWaypointInfo(Client *c) {
std::vector<wplist>::iterator cur, end;
cur = Waypoints.begin();
end = Waypoints.end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
c->Message(0,"Waypoint %d: (%.2f,%.2f,%.2f,%.2f) pause %d",
cur->index,
cur->x,
@@ -272,12 +272,8 @@ void NPC::CalculateNewWaypoint()
std::list<wplist>::iterator iter = closest.begin();
if(closest.size() != 0)
{
int idx = MakeRandomInt(0, closest.size() - 1);
iter = closest.begin();
for(int i = 0; i < idx; ++i)
{
iter++;
}
std::advance(iter, MakeRandomInt(0, closest.size() - 1));
cur_wp = (*iter).index;
}
@@ -335,7 +331,7 @@ void NPC::CalculateNewWaypoint()
{
if(CheckLosFN((*iter).x, (*iter).y, (*iter).z, GetSize()))
{
iter++;
++iter;
}
else
{
@@ -345,12 +341,8 @@ void NPC::CalculateNewWaypoint()
if(closest.size() != 0)
{
int idx = MakeRandomInt(0, closest.size() - 1);
iter = closest.begin();
for(int i = 0; i < idx; ++i)
{
iter++;
}
std::advance(iter, MakeRandomInt(0, closest.size() - 1));
cur_wp = (*iter).index;
}
break;
@@ -406,7 +398,7 @@ void NPC::GetClosestWaypoint(std::list<wplist> &wp_list, int count, float m_x, f
for(int i = 0; i < count; ++i)
{
wp_list.push_back(Waypoints[(*iter).index]);
iter++;
++iter;
}
}
+6 -6
View File
@@ -341,7 +341,7 @@ int Zone::SaveTempItem(uint32 merchantid, uint32 npcid, uint32 item, int32 charg
std::list<MerchantList> merlist = merchanttable[merchantid];
std::list<MerchantList>::const_iterator itr;
uint32 i = 1;
for(itr = merlist.begin();itr != merlist.end();itr++){
for (itr = merlist.begin(); itr != merlist.end(); ++itr) {
MerchantList ml = *itr;
if(ml.item == item)
return 0;
@@ -357,7 +357,7 @@ int Zone::SaveTempItem(uint32 merchantid, uint32 npcid, uint32 item, int32 charg
TempMerchantList ml;
while(freeslot == 0 && !update_charges){
freeslot = i;
for(tmp_itr = tmp_merlist.begin();tmp_itr != tmp_merlist.end();tmp_itr++){
for (tmp_itr = tmp_merlist.begin(); tmp_itr != tmp_merlist.end(); ++tmp_itr) {
ml = *tmp_itr;
if(ml.item == item){
update_charges = true;
@@ -373,7 +373,7 @@ int Zone::SaveTempItem(uint32 merchantid, uint32 npcid, uint32 item, int32 charg
if(update_charges){
tmp_merlist.clear();
std::list<TempMerchantList> oldtmp_merlist = tmpmerchanttable[npcid];
for(tmp_itr = oldtmp_merlist.begin();tmp_itr != oldtmp_merlist.end();tmp_itr++){
for (tmp_itr = oldtmp_merlist.begin(); tmp_itr != oldtmp_merlist.end(); ++tmp_itr) {
TempMerchantList ml2 = *tmp_itr;
if(ml2.item != item)
tmp_merlist.push_back(ml2);
@@ -419,7 +419,7 @@ uint32 Zone::GetTempMerchantQuantity(uint32 NPCID, uint32 Slot) {
std::list<TempMerchantList> TmpMerchantList = tmpmerchanttable[NPCID];
std::list<TempMerchantList>::const_iterator Iterator;
for(Iterator = TmpMerchantList.begin(); Iterator != TmpMerchantList.end(); Iterator++)
for (Iterator = TmpMerchantList.begin(); Iterator != TmpMerchantList.end(); ++Iterator)
if((*Iterator).slot == Slot)
return (*Iterator).charges;
@@ -527,7 +527,7 @@ void Zone::LoadMerchantData_result(MYSQL_RES* result) {
found = true;
break;
}
iter++;
++iter;
}
if(found) {
@@ -617,7 +617,7 @@ void Zone::LoadMercTemplates(){
tempMercTemplate.Stances[i] = 0;
}
for(std::list<MercStanceInfo>::iterator mercStanceListItr = merc_stances.begin(); mercStanceListItr != merc_stances.end(); mercStanceListItr++) {
for (std::list<MercStanceInfo>::iterator mercStanceListItr = merc_stances.begin(); mercStanceListItr != merc_stances.end(); ++mercStanceListItr) {
if(mercStanceListItr->ClassID == tempMercTemplate.ClassID && mercStanceListItr->ProficiencyID == tempMercTemplate.ProficiencyID) {
zone->merc_stance_list[tempMercTemplate.MercTemplateID].push_back((*mercStanceListItr));
tempMercTemplate.Stances[stanceIndex] = mercStanceListItr->StanceID;
+2 -2
View File
@@ -3193,7 +3193,7 @@ bool ZoneDatabase::GetFactionIdsForNPC(uint32 nfl_id, std::list<struct NPCFactio
std::list<struct NPCFaction*>::iterator cur,end;
cur = faction_list->begin();
end = faction_list->end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
struct NPCFaction* tmp = *cur;
safe_delete(tmp);
}
@@ -3212,7 +3212,7 @@ bool ZoneDatabase::GetFactionIdsForNPC(uint32 nfl_id, std::list<struct NPCFactio
std::list<struct NPCFaction*>::iterator cur,end;
cur = faction_list->begin();
end = faction_list->end();
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
struct NPCFaction* tmp = *cur;
safe_delete(tmp);
}
+1 -1
View File
@@ -793,7 +793,7 @@ void Client::SendZoneFlagInfo(Client *to) const {
to->Message(0, "Flags for %s:", GetName());
for(; cur != end; cur++) {
for(; cur != end; ++cur) {
uint32 zoneid = *cur;
const char *short_name = database.GetZoneName(zoneid);