mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-24 09:28:21 +00:00
Add bot and bot pet checks to various spells, auras and targeting checks that were missing.
This commit is contained in:
+5
-5
@@ -2811,7 +2811,7 @@ bool NPC::Death(Mob* killer_mob, int64 damage, uint16 spell, EQ::skills::SkillTy
|
|||||||
const uint32 con_level = give_exp->GetLevelCon(GetLevel());
|
const uint32 con_level = give_exp->GetLevelCon(GetLevel());
|
||||||
|
|
||||||
if (con_level != ConsiderColor::Gray) {
|
if (con_level != ConsiderColor::Gray) {
|
||||||
if (!GetOwner() || (GetOwner() && !GetOwner()->IsClient())) {
|
if (!GetOwner() || (GetOwner() && !GetOwner()->IsOfClientBot())) {
|
||||||
give_exp_client->AddEXP(ExpSource::Kill, final_exp, con_level, false, this);
|
give_exp_client->AddEXP(ExpSource::Kill, final_exp, con_level, false, this);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -6486,7 +6486,7 @@ void Mob::CommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraAttac
|
|||||||
int mod = GetSpecialAbilityParam(SpecialAbility::Rampage, 2);
|
int mod = GetSpecialAbilityParam(SpecialAbility::Rampage, 2);
|
||||||
if (mod > 0)
|
if (mod > 0)
|
||||||
spec_mod = mod;
|
spec_mod = mod;
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
//SE_PC_Pet_Rampage SPA 464 on pet, damage modifier
|
//SE_PC_Pet_Rampage SPA 464 on pet, damage modifier
|
||||||
int spell_mod = spellbonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
int spell_mod = spellbonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
||||||
if (spell_mod > spec_mod)
|
if (spell_mod > spec_mod)
|
||||||
@@ -6497,7 +6497,7 @@ void Mob::CommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraAttac
|
|||||||
int mod = GetSpecialAbilityParam(SpecialAbility::AreaRampage, 2);
|
int mod = GetSpecialAbilityParam(SpecialAbility::AreaRampage, 2);
|
||||||
if (mod > 0)
|
if (mod > 0)
|
||||||
spec_mod = mod;
|
spec_mod = mod;
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
//SE_PC_Pet_AE_Rampage SPA 465 on pet, damage modifier
|
//SE_PC_Pet_AE_Rampage SPA 465 on pet, damage modifier
|
||||||
int spell_mod = spellbonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
int spell_mod = spellbonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
||||||
if (spell_mod > spec_mod)
|
if (spell_mod > spec_mod)
|
||||||
@@ -6929,7 +6929,7 @@ void Mob::DoMainHandAttackRounds(Mob *target, ExtraAttackOptions *opts, bool ram
|
|||||||
Attack(target, EQ::invslot::slotPrimary, false, false, false, opts);
|
Attack(target, EQ::invslot::slotPrimary, false, false, false, opts);
|
||||||
if (CanThisClassDoubleAttack() && CheckDoubleAttack()) {
|
if (CanThisClassDoubleAttack() && CheckDoubleAttack()) {
|
||||||
Attack(target, EQ::invslot::slotPrimary, false, false, false, opts);
|
Attack(target, EQ::invslot::slotPrimary, false, false, false, opts);
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
int chance = spellbonuses.PC_Pet_Flurry + itembonuses.PC_Pet_Flurry + aabonuses.PC_Pet_Flurry;
|
int chance = spellbonuses.PC_Pet_Flurry + itembonuses.PC_Pet_Flurry + aabonuses.PC_Pet_Flurry;
|
||||||
if (chance && zone->random.Roll(chance)) {
|
if (chance && zone->random.Roll(chance)) {
|
||||||
Flurry(nullptr);
|
Flurry(nullptr);
|
||||||
@@ -6990,7 +6990,7 @@ void Mob::DoOffHandAttackRounds(Mob *target, ExtraAttackOptions *opts, bool ramp
|
|||||||
if (CanThisClassDoubleAttack() && GetLevel() > 35 && CheckDoubleAttack() && !rampage) {
|
if (CanThisClassDoubleAttack() && GetLevel() > 35 && CheckDoubleAttack() && !rampage) {
|
||||||
Attack(target, EQ::invslot::slotSecondary, false, false, false, opts);
|
Attack(target, EQ::invslot::slotSecondary, false, false, false, opts);
|
||||||
|
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
int chance = spellbonuses.PC_Pet_Flurry + itembonuses.PC_Pet_Flurry + aabonuses.PC_Pet_Flurry;
|
int chance = spellbonuses.PC_Pet_Flurry + itembonuses.PC_Pet_Flurry + aabonuses.PC_Pet_Flurry;
|
||||||
if (chance && zone->random.Roll(chance)) {
|
if (chance && zone->random.Roll(chance)) {
|
||||||
Flurry(nullptr);
|
Flurry(nullptr);
|
||||||
|
|||||||
+17
-17
@@ -81,7 +81,7 @@ void Aura::ProcessOnAllFriendlies(Mob *owner)
|
|||||||
if (!mob) {
|
if (!mob) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (mob->IsClient() || mob->IsPetOwnerClient() || mob->IsMerc() || mob->IsBot()) {
|
if (mob->IsOfClientBotMerc() || mob->IsPetOwnerOfClientBot()) {
|
||||||
auto it = casted_on.find(mob->GetID());
|
auto it = casted_on.find(mob->GetID());
|
||||||
|
|
||||||
if (it != casted_on.end()) { // we are already on the list, let's check for removal
|
if (it != casted_on.end()) { // we are already on the list, let's check for removal
|
||||||
@@ -131,7 +131,7 @@ void Aura::ProcessOnAllGroupMembers(Mob *owner)
|
|||||||
std::set<int> delayed_remove;
|
std::set<int> delayed_remove;
|
||||||
bool is_buff = IsBuffSpell(spell_id); // non-buff spells don't cast on enter
|
bool is_buff = IsBuffSpell(spell_id); // non-buff spells don't cast on enter
|
||||||
|
|
||||||
if (owner->IsRaidGrouped() && owner->IsClient()) { // currently raids are just client, but safety check
|
if (owner->IsRaidGrouped() && owner->IsOfClientBot()) { // currently raids are just client, but safety check
|
||||||
auto raid = owner->GetRaid();
|
auto raid = owner->GetRaid();
|
||||||
if (raid == nullptr) { // well shit
|
if (raid == nullptr) { // well shit
|
||||||
owner->RemoveAura(GetID(), false, true);
|
owner->RemoveAura(GetID(), false, true);
|
||||||
@@ -198,17 +198,17 @@ void Aura::ProcessOnAllGroupMembers(Mob *owner)
|
|||||||
auto it = casted_on.find(mob->GetID());
|
auto it = casted_on.find(mob->GetID());
|
||||||
if (it != casted_on.end()) {
|
if (it != casted_on.end()) {
|
||||||
// verify still good!
|
// verify still good!
|
||||||
if (mob->IsClient()) {
|
if (mob->IsOfClientBot()) {
|
||||||
if (!verify_raid_client(mob->CastToClient())) {
|
if (!verify_raid_client(mob->CastToClient())) {
|
||||||
delayed_remove.insert(mob->GetID());
|
delayed_remove.insert(mob->GetID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mob->IsPet() && mob->IsPetOwnerClient() && mob->GetOwner()) {
|
else if (mob->IsPet() && mob->IsPetOwnerOfClientBot() && mob->GetOwner()) {
|
||||||
if (!verify_raid_client_pet(mob)) {
|
if (!verify_raid_client_pet(mob)) {
|
||||||
delayed_remove.insert(mob->GetID());
|
delayed_remove.insert(mob->GetID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mob->IsNPC() && mob->IsPetOwnerClient()) {
|
else if (mob->IsNPC() && mob->IsPetOwnerOfClientBot()) {
|
||||||
auto npc = mob->CastToNPC();
|
auto npc = mob->CastToNPC();
|
||||||
if (!verify_raid_client_swarm(npc)) {
|
if (!verify_raid_client_swarm(npc)) {
|
||||||
delayed_remove.insert(mob->GetID());
|
delayed_remove.insert(mob->GetID());
|
||||||
@@ -216,19 +216,19 @@ void Aura::ProcessOnAllGroupMembers(Mob *owner)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // we're not on it!
|
else { // we're not on it!
|
||||||
if (mob->IsClient() && verify_raid_client(mob->CastToClient())) {
|
if (mob->IsOfClientBot() && verify_raid_client(mob->CastToClient())) {
|
||||||
casted_on.insert(mob->GetID());
|
casted_on.insert(mob->GetID());
|
||||||
if (is_buff) {
|
if (is_buff) {
|
||||||
SpellFinished(spell_id, mob);
|
SpellFinished(spell_id, mob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mob->IsPet() && mob->IsPetOwnerClient() && mob->GetOwner() && verify_raid_client_pet(mob)) {
|
else if (mob->IsPet() && mob->IsPetOwnerOfClientBot() && mob->GetOwner() && verify_raid_client_pet(mob)) {
|
||||||
casted_on.insert(mob->GetID());
|
casted_on.insert(mob->GetID());
|
||||||
if (is_buff) {
|
if (is_buff) {
|
||||||
SpellFinished(spell_id, mob);
|
SpellFinished(spell_id, mob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mob->IsNPC() && mob->IsPetOwnerClient()) {
|
else if (mob->IsNPC() && mob->IsPetOwnerOfClientBot()) {
|
||||||
auto npc = mob->CastToNPC();
|
auto npc = mob->CastToNPC();
|
||||||
if (verify_raid_client_swarm(npc)) {
|
if (verify_raid_client_swarm(npc)) {
|
||||||
casted_on.insert(mob->GetID());
|
casted_on.insert(mob->GetID());
|
||||||
@@ -376,7 +376,7 @@ void Aura::ProcessOnGroupMembersPets(Mob *owner)
|
|||||||
auto group_member = owner->GetOwnerOrSelf();
|
auto group_member = owner->GetOwnerOrSelf();
|
||||||
|
|
||||||
if (group_member->IsRaidGrouped() &&
|
if (group_member->IsRaidGrouped() &&
|
||||||
group_member->IsClient()) { // currently raids are just client, but safety check
|
group_member->IsOfClientBot()) { // currently raids are just client, but safety check
|
||||||
auto raid = group_member->GetRaid();
|
auto raid = group_member->GetRaid();
|
||||||
if (raid == nullptr) { // well shit
|
if (raid == nullptr) { // well shit
|
||||||
owner->RemoveAura(GetID(), false, true);
|
owner->RemoveAura(GetID(), false, true);
|
||||||
@@ -428,12 +428,12 @@ void Aura::ProcessOnGroupMembersPets(Mob *owner)
|
|||||||
auto it = casted_on.find(mob->GetID());
|
auto it = casted_on.find(mob->GetID());
|
||||||
if (it != casted_on.end()) {
|
if (it != casted_on.end()) {
|
||||||
// verify still good!
|
// verify still good!
|
||||||
if (mob->IsPet() && mob->IsPetOwnerClient() && mob->GetOwner()) {
|
if (mob->IsPet() && mob->IsPetOwnerOfClientBot() && mob->GetOwner()) {
|
||||||
if (!verify_raid_client_pet(mob)) {
|
if (!verify_raid_client_pet(mob)) {
|
||||||
delayed_remove.insert(mob->GetID());
|
delayed_remove.insert(mob->GetID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mob->IsNPC() && mob->IsPetOwnerClient()) {
|
else if (mob->IsNPC() && mob->IsPetOwnerOfClientBot()) {
|
||||||
auto npc = mob->CastToNPC();
|
auto npc = mob->CastToNPC();
|
||||||
if (!verify_raid_client_swarm(npc)) {
|
if (!verify_raid_client_swarm(npc)) {
|
||||||
delayed_remove.insert(mob->GetID());
|
delayed_remove.insert(mob->GetID());
|
||||||
@@ -441,16 +441,16 @@ void Aura::ProcessOnGroupMembersPets(Mob *owner)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // we're not on it!
|
else { // we're not on it!
|
||||||
if (mob->IsClient()) {
|
if (mob->IsOfClientBot()) {
|
||||||
continue; // never hit client
|
continue; // never hit client
|
||||||
}
|
}
|
||||||
else if (mob->IsPet() && mob->IsPetOwnerClient() && mob->GetOwner() && verify_raid_client_pet(mob)) {
|
else if (mob->IsPet() && mob->IsPetOwnerOfClientBot() && mob->GetOwner() && verify_raid_client_pet(mob)) {
|
||||||
casted_on.insert(mob->GetID());
|
casted_on.insert(mob->GetID());
|
||||||
if (is_buff) {
|
if (is_buff) {
|
||||||
SpellFinished(spell_id, mob);
|
SpellFinished(spell_id, mob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mob->IsNPC() && mob->IsPetOwnerClient()) {
|
else if (mob->IsNPC() && mob->IsPetOwnerOfClientBot()) {
|
||||||
auto npc = mob->CastToNPC();
|
auto npc = mob->CastToNPC();
|
||||||
if (verify_raid_client_swarm(npc)) {
|
if (verify_raid_client_swarm(npc)) {
|
||||||
casted_on.insert(mob->GetID());
|
casted_on.insert(mob->GetID());
|
||||||
@@ -499,7 +499,7 @@ void Aura::ProcessOnGroupMembersPets(Mob *owner)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // not on, check if we should be!
|
else { // not on, check if we should be!
|
||||||
if (mob->IsClient()) {
|
if (mob->IsOfClientBot()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (mob->IsPet() && verify_group_pet(mob)) {
|
else if (mob->IsPet() && verify_group_pet(mob)) {
|
||||||
@@ -690,7 +690,7 @@ void Aura::ProcessSpawns()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!e.second->IsClient()) {
|
if (!e.second->IsOfClientBot()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -800,7 +800,7 @@ bool Aura::ShouldISpawnFor(Client *c)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (owner->IsRaidGrouped() && owner->IsClient()) {
|
if (owner->IsRaidGrouped() && owner->IsOfClientBot()) {
|
||||||
auto raid = owner->GetRaid();
|
auto raid = owner->GetRaid();
|
||||||
if (raid == nullptr) {
|
if (raid == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
TODO bot rewrite:
|
TODO bot rewrite:
|
||||||
--go through IsPetOwnerClient checks for pets
|
--move togglehelm and bottoggleranged to new window format
|
||||||
--command cleanup (move to new help window, make more descriptive)
|
--command cleanup (move to new help window, make more descriptive)
|
||||||
--Add quest methods for functions
|
--Add quest methods for functions
|
||||||
*/
|
*/
|
||||||
|
|||||||
+2
-2
@@ -8807,10 +8807,10 @@ void Client::ProcessAggroMeter()
|
|||||||
|
|
||||||
// probably should have PVP rules ...
|
// probably should have PVP rules ...
|
||||||
if (cur_tar && cur_tar != this) {
|
if (cur_tar && cur_tar != this) {
|
||||||
if (cur_tar->IsNPC() && !cur_tar->IsPetOwnerClient() && cur_tar->GetID() != m_aggrometer.get_target_id()) {
|
if (cur_tar->IsNPC() && !cur_tar->IsPetOwnerOfClientBot() && cur_tar->GetID() != m_aggrometer.get_target_id()) {
|
||||||
m_aggrometer.set_target_id(cur_tar->GetID());
|
m_aggrometer.set_target_id(cur_tar->GetID());
|
||||||
send_targetinfo = true;
|
send_targetinfo = true;
|
||||||
} else if ((cur_tar->IsPetOwnerClient() || cur_tar->IsClient()) && cur_tar->GetTarget() && cur_tar->GetTarget()->GetID() != m_aggrometer.get_target_id()) {
|
} else if ((cur_tar->IsPetOwnerOfClientBot() || cur_tar->IsClient()) && cur_tar->GetTarget() && cur_tar->GetTarget()->GetID() != m_aggrometer.get_target_id()) {
|
||||||
m_aggrometer.set_target_id(cur_tar->GetTarget()->GetID());
|
m_aggrometer.set_target_id(cur_tar->GetTarget()->GetID());
|
||||||
send_targetinfo = true;
|
send_targetinfo = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15230,7 +15230,7 @@ void Client::Handle_OP_TargetMouse(const EQApplicationPacket *app)
|
|||||||
GetTarget()->IsTargeted(1);
|
GetTarget()->IsTargeted(1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (GetTarget()->IsPetOwnerClient())
|
else if (GetTarget()->IsPetOwnerOfClientBot())
|
||||||
{
|
{
|
||||||
GetTarget()->IsTargeted(1);
|
GetTarget()->IsTargeted(1);
|
||||||
return;
|
return;
|
||||||
|
|||||||
+1
-1
@@ -1142,7 +1142,7 @@ void EntityList::AESpell(
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spells[spell_id].target_type == ST_TargetAENoPlayersPets && current_mob->IsPetOwnerClient()) {
|
if (spells[spell_id].target_type == ST_TargetAENoPlayersPets && current_mob->IsPetOwnerOfClientBot()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -5549,7 +5549,7 @@ Mob *EntityList::GetClosestMobByBodyType(Mob *sender, uint8 BodyType, bool skip_
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Do not detect client pets
|
// Do not detect client pets
|
||||||
if (skip_client_pets && CurrentMob->IsPet() && CurrentMob->IsPetOwnerClient())
|
if (skip_client_pets && CurrentMob->IsPet() && CurrentMob->IsPetOwnerOfClientBot())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CurrentDistance = ((CurrentMob->GetY() - sender->GetY()) * (CurrentMob->GetY() - sender->GetY())) +
|
CurrentDistance = ((CurrentMob->GetY() - sender->GetY()) * (CurrentMob->GetY() - sender->GetY())) +
|
||||||
|
|||||||
+1
-1
@@ -4891,7 +4891,7 @@ bool Mob::HateSummon() {
|
|||||||
} else {
|
} else {
|
||||||
bool target_is_client_pet = (
|
bool target_is_client_pet = (
|
||||||
target->IsPet() &&
|
target->IsPet() &&
|
||||||
target->IsPetOwnerClient()
|
target->IsPetOwnerOfClientBot()
|
||||||
);
|
);
|
||||||
bool set_new_guard_spot = !(IsNPC() && target_is_client_pet);
|
bool set_new_guard_spot = !(IsNPC() && target_is_client_pet);
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -139,7 +139,7 @@ bool NPC::AICastSpell(Mob* tar, uint8 iChance, uint32 iSpellTypes, bool bInnates
|
|||||||
if (
|
if (
|
||||||
(spells[AIspells[i].spellid].target_type == ST_Target || tar == this)
|
(spells[AIspells[i].spellid].target_type == ST_Target || tar == this)
|
||||||
&& tar->DontHealMeBefore() < Timer::GetCurrentTime()
|
&& tar->DontHealMeBefore() < Timer::GetCurrentTime()
|
||||||
&& !(tar->IsPet() && tar->GetOwner()->IsClient()) //no buffing PC's pets
|
&& !(tar->IsPet() && tar->GetOwner()->IsOfClientBot()) //no buffing PC's pets
|
||||||
) {
|
) {
|
||||||
|
|
||||||
auto hp_ratio = tar->GetIntHPRatio();
|
auto hp_ratio = tar->GetIntHPRatio();
|
||||||
@@ -180,7 +180,7 @@ bool NPC::AICastSpell(Mob* tar, uint8 iChance, uint32 iSpellTypes, bool bInnates
|
|||||||
&& tar->DontBuffMeBefore() < Timer::GetCurrentTime()
|
&& tar->DontBuffMeBefore() < Timer::GetCurrentTime()
|
||||||
&& !tar->IsImmuneToSpell(AIspells[i].spellid, this)
|
&& !tar->IsImmuneToSpell(AIspells[i].spellid, this)
|
||||||
&& tar->CanBuffStack(AIspells[i].spellid, GetLevel(), true) >= 0
|
&& tar->CanBuffStack(AIspells[i].spellid, GetLevel(), true) >= 0
|
||||||
&& !(tar->IsPet() && tar->GetOwner()->IsClient() && this != tar) //no buffing PC's pets, but they can buff themself
|
&& !(tar->IsPet() && tar->GetOwner()->IsOfClientBot() && this != tar) //no buffing PC's pets, but they can buff themself
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if(!checked_los) {
|
if(!checked_los) {
|
||||||
@@ -1219,7 +1219,7 @@ void Mob::AI_Process() {
|
|||||||
|
|
||||||
|
|
||||||
//SE_PC_Pet_Rampage SPA 464 on pet, chance modifier
|
//SE_PC_Pet_Rampage SPA 464 on pet, chance modifier
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
int chance = spellbonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + itembonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + aabonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_CHANCE];
|
int chance = spellbonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + itembonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + aabonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_CHANCE];
|
||||||
if (chance && zone->random.Roll(chance)) {
|
if (chance && zone->random.Roll(chance)) {
|
||||||
Rampage(nullptr);
|
Rampage(nullptr);
|
||||||
@@ -1262,7 +1262,7 @@ void Mob::AI_Process() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//SE_PC_Pet_Rampage SPA 465 on pet, chance modifier
|
//SE_PC_Pet_Rampage SPA 465 on pet, chance modifier
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
int chance = spellbonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + itembonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + aabonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_CHANCE];
|
int chance = spellbonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + itembonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_CHANCE] + aabonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_CHANCE];
|
||||||
if (chance && zone->random.Roll(chance)) {
|
if (chance && zone->random.Roll(chance)) {
|
||||||
Rampage(nullptr);
|
Rampage(nullptr);
|
||||||
@@ -1945,8 +1945,8 @@ void Mob::StartEnrage()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(RuleB(NPC, LiveLikeEnrage) && !((IsPet() && !IsCharmed() && GetOwner() && GetOwner()->IsClient()) ||
|
if(RuleB(NPC, LiveLikeEnrage) && !((IsPet() && !IsCharmed() && GetOwner() && GetOwner()->IsOfClientBot()) ||
|
||||||
(CastToNPC()->GetSwarmOwner() && entity_list.GetMob(CastToNPC()->GetSwarmOwner())->IsClient()))) {
|
(CastToNPC()->GetSwarmOwner() && entity_list.GetMob(CastToNPC()->GetSwarmOwner())->IsOfClientBot()))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -555,7 +555,7 @@ void NPC::SetTarget(Mob* mob) {
|
|||||||
|
|
||||||
// either normal pet and owner is client or charmed pet and owner is client
|
// either normal pet and owner is client or charmed pet and owner is client
|
||||||
Mob *owner = nullptr;
|
Mob *owner = nullptr;
|
||||||
if (IsPet() && IsPetOwnerClient()) {
|
if (IsPet() && IsPetOwnerOfClientBot()) {
|
||||||
owner = GetOwner();
|
owner = GetOwner();
|
||||||
} else if (IsCharmed()) {
|
} else if (IsCharmed()) {
|
||||||
owner = GetOwner();
|
owner = GetOwner();
|
||||||
|
|||||||
+4
-4
@@ -2708,7 +2708,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, CastingSlot slot, in
|
|||||||
// it can affect up to 7 people if the targeted group is not our own
|
// it can affect up to 7 people if the targeted group is not our own
|
||||||
|
|
||||||
// Allow pets who cast group spells to affect the group.
|
// Allow pets who cast group spells to affect the group.
|
||||||
if (spell_target->IsPetOwnerClient() && IsPetOwnerClient()) {
|
if (spell_target->IsPetOwnerOfClientBot() && IsPetOwnerOfClientBot()) {
|
||||||
Mob* owner = spell_target->GetOwner();
|
Mob* owner = spell_target->GetOwner();
|
||||||
|
|
||||||
if (owner) {
|
if (owner) {
|
||||||
@@ -5389,7 +5389,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
|||||||
|
|
||||||
// JULY 24, 2002 changes
|
// JULY 24, 2002 changes
|
||||||
int level = GetLevel();
|
int level = GetLevel();
|
||||||
if (RuleB(Spells,July242002PetResists) && IsPetOwnerClient() && caster->IsNPC() && !caster->IsPetOwnerClient()) {
|
if (RuleB(Spells,July242002PetResists) && IsPetOwnerOfClientBot() && caster->IsNPC() && !caster->IsPetOwnerOfClientBot()) {
|
||||||
auto owner = GetOwner();
|
auto owner = GetOwner();
|
||||||
if (owner != nullptr) {
|
if (owner != nullptr) {
|
||||||
target_resist = std::max(target_resist, owner->GetResist(resist_type));
|
target_resist = std::max(target_resist, owner->GetResist(resist_type));
|
||||||
@@ -7029,7 +7029,7 @@ void Mob::BeamDirectional(uint16 spell_id, int16 resist_adjust)
|
|||||||
float b = (GetY() * dX - dY * GetX()) / (dX - GetX());
|
float b = (GetY() * dX - dY * GetX()) / (dX - GetX());
|
||||||
|
|
||||||
while (iter != targets_in_range.end()) {
|
while (iter != targets_in_range.end()) {
|
||||||
if (!(*iter) || (beneficial_targets && ((*iter)->IsNPC() && !(*iter)->IsPetOwnerClient())) ||
|
if (!(*iter) || (beneficial_targets && ((*iter)->IsNPC() && !(*iter)->IsPetOwnerOfClientBot())) ||
|
||||||
(*iter)->BehindMob(this, (*iter)->GetX(), (*iter)->GetY())) {
|
(*iter)->BehindMob(this, (*iter)->GetX(), (*iter)->GetY())) {
|
||||||
++iter;
|
++iter;
|
||||||
continue;
|
continue;
|
||||||
@@ -7113,7 +7113,7 @@ void Mob::ConeDirectional(uint16 spell_id, int16 resist_adjust)
|
|||||||
auto iter = targets_in_range.begin();
|
auto iter = targets_in_range.begin();
|
||||||
|
|
||||||
while (iter != targets_in_range.end()) {
|
while (iter != targets_in_range.end()) {
|
||||||
if (!(*iter) || (beneficial_targets && ((*iter)->IsNPC() && !(*iter)->IsPetOwnerClient()))) {
|
if (!(*iter) || (beneficial_targets && ((*iter)->IsNPC() && !(*iter)->IsPetOwnerOfClientBot()))) {
|
||||||
++iter;
|
++iter;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1556,7 +1556,7 @@ void Mob::TuneCommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraA
|
|||||||
int mod = GetSpecialAbilityParam(SpecialAbility::Rampage, 2);
|
int mod = GetSpecialAbilityParam(SpecialAbility::Rampage, 2);
|
||||||
if (mod > 0)
|
if (mod > 0)
|
||||||
spec_mod = mod;
|
spec_mod = mod;
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
//SE_PC_Pet_Rampage SPA 464 on pet, damage modifier
|
//SE_PC_Pet_Rampage SPA 464 on pet, damage modifier
|
||||||
int spell_mod = spellbonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
int spell_mod = spellbonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
||||||
if (spell_mod > spec_mod)
|
if (spell_mod > spec_mod)
|
||||||
@@ -1567,7 +1567,7 @@ void Mob::TuneCommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraA
|
|||||||
int mod = GetSpecialAbilityParam(SpecialAbility::AreaRampage, 2);
|
int mod = GetSpecialAbilityParam(SpecialAbility::AreaRampage, 2);
|
||||||
if (mod > 0)
|
if (mod > 0)
|
||||||
spec_mod = mod;
|
spec_mod = mod;
|
||||||
if ((IsPet() || IsTempPet()) && IsPetOwnerClient()) {
|
if ((IsPet() || IsTempPet()) && IsPetOwnerOfClientBot()) {
|
||||||
//SE_PC_Pet_AE_Rampage SPA 465 on pet, damage modifier
|
//SE_PC_Pet_AE_Rampage SPA 465 on pet, damage modifier
|
||||||
int spell_mod = spellbonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
int spell_mod = spellbonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + itembonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD] + aabonuses.PC_Pet_AE_Rampage[SBIndex::PET_RAMPAGE_DMG_MOD];
|
||||||
if (spell_mod > spec_mod)
|
if (spell_mod > spec_mod)
|
||||||
|
|||||||
Reference in New Issue
Block a user