optimization

This commit is contained in:
KayenEQ
2021-08-13 19:45:11 -04:00
parent 3e046233b5
commit 27e11e758b
4 changed files with 34 additions and 33 deletions
+4 -4
View File
@@ -5281,7 +5281,7 @@ void Mob::CommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraAttac
hit.damage_done += (hit.damage_done * pct_damage_reduction / 100) + (defender->GetFcDamageAmtIncoming(this, 0, true, hit.skill)) + defender->GetPositionalDmgTakenAmt(this); hit.damage_done += (hit.damage_done * pct_damage_reduction / 100) + (defender->GetFcDamageAmtIncoming(this, 0, true, hit.skill)) + defender->GetPositionalDmgTakenAmt(this);
if (defender->GetShielderID()) { if (defender->GetShielder()) {
DoShieldDamageOnShielder(defender, hit.damage_done, hit.skill); DoShieldDamageOnShielder(defender, hit.damage_done, hit.skill);
hit.damage_done -= hit.damage_done * defender->GetShieldTargetMitigation() / 100; //Default shielded takes 50 pct damage hit.damage_done -= hit.damage_done * defender->GetShieldTargetMitigation() / 100; //Default shielded takes 50 pct damage
} }
@@ -5295,18 +5295,18 @@ void Mob::DoShieldDamageOnShielder(Mob* shield_target, int hit_damage_done, EQ::
return; return;
} }
Mob *shielder = entity_list.GetMob(shield_target->GetShielderID()); Mob *shielder = shield_target->GetShielder();
if (!shielder) { if (!shielder) {
return; return;
} }
if (shield_target->CalculateDistance(shielder->GetX(), shielder->GetY(), shielder->GetZ()) > static_cast<float>(shielder->GetMaxShielderDistance())) { if (shield_target->CalculateDistance(shielder->GetX(), shielder->GetY(), shielder->GetZ()) > static_cast<float>(shielder->GetMaxShielderDistance())) {
shielder->SetShieldTargetID(0); shielder->SetShieldTarget(nullptr);
shielder->SetShielderMitigation(0); shielder->SetShielderMitigation(0);
shielder->SetShielerMaxDistance(0); shielder->SetShielerMaxDistance(0);
shielder->shield_timer.Disable(); shielder->shield_timer.Disable();
shield_target->SetShielderID(0); shield_target->SetShielder(nullptr);
shield_target->SetShieldTargetMitigation(0); shield_target->SetShieldTargetMitigation(0);
return; //Too far away, no message is given thoughh. return; //Too far away, no message is given thoughh.
} }
+4 -4
View File
@@ -12864,13 +12864,13 @@ void Client::Handle_OP_Shielding(const EQApplicationPacket *app)
} }
//You are a 'Shield Target' already have a 'Shielder' //You are a 'Shield Target' already have a 'Shielder'
if (GetShielderID() || shield_target->GetShielderID()) { if (GetShielder() || shield_target->GetShielder()) {
MessageString(Chat::White, ALREADY_SHIELDED); MessageString(Chat::White, ALREADY_SHIELDED);
return; return;
} }
//You are being shielded or already have a 'Shield Target' //You are being shielded or already have a 'Shield Target'
if (GetShieldTargetID() || shield_target->GetShieldTargetID()) { if (GetShieldTarget() || shield_target->GetShieldTarget()) {
MessageString(Chat::White, ALREADY_SHIELDING); MessageString(Chat::White, ALREADY_SHIELDING);
return; return;
} }
@@ -12886,11 +12886,11 @@ void Client::Handle_OP_Shielding(const EQApplicationPacket *app)
entity_list.MessageCloseString(this, false, 100, 0, START_SHIELDING, GetName(), shield_target->GetName()); entity_list.MessageCloseString(this, false, 100, 0, START_SHIELDING, GetName(), shield_target->GetName());
SetShieldTargetID(shield_target->GetID()); SetShieldTarget(shield_target);
SetShielderMitigation(25); SetShielderMitigation(25);
SetShielerMaxDistance(shielder_max_distance); SetShielerMaxDistance(shielder_max_distance);
shield_target->SetShielderID(GetID()); shield_target->SetShielder(this);
shield_target->SetShieldTargetMitigation(50); shield_target->SetShieldTargetMitigation(50);
//Calculate AA for adding time SPA 255 extend shield duration //Calculate AA for adding time SPA 255 extend shield duration
+17 -17
View File
@@ -377,8 +377,8 @@ Mob::Mob(
inWater = false; inWater = false;
shield_timer.Disable(); shield_timer.Disable();
m_shield_target_id = 0; m_shield_target = nullptr;
m_shielder_id = 0; m_shielder = nullptr;
m_shield_target_mitigation = 0; m_shield_target_mitigation = 0;
m_shielder_mitigation = 0; m_shielder_mitigation = 0;
m_shielder_max_distance = 0; m_shielder_max_distance = 0;
@@ -6211,7 +6211,7 @@ void Mob::ShieldAbility(uint32 target_id, int max_shielder_distance, int shield_
} }
//You have a shielder, or your 'Shield Target' already has a 'Shielder' //You have a shielder, or your 'Shield Target' already has a 'Shielder'
if (GetShielderID() || shield_target->GetShielderID()) { if (GetShielder() || shield_target->GetShielder()) {
if (IsClient()) { if (IsClient()) {
MessageString(Chat::White, ALREADY_SHIELDED); MessageString(Chat::White, ALREADY_SHIELDED);
@@ -6220,7 +6220,7 @@ void Mob::ShieldAbility(uint32 target_id, int max_shielder_distance, int shield_
} }
//You are being shielded or already have a 'Shield Target' //You are being shielded or already have a 'Shield Target'
if (GetShieldTargetID() || shield_target->GetShieldTargetID()) { if (GetShieldTarget() || shield_target->GetShieldTarget()) {
if (IsClient()) { if (IsClient()) {
MessageString(Chat::White, ALREADY_SHIELDING); MessageString(Chat::White, ALREADY_SHIELDING);
@@ -6237,11 +6237,11 @@ void Mob::ShieldAbility(uint32 target_id, int max_shielder_distance, int shield_
entity_list.MessageCloseString(this, false, 100, 0, START_SHIELDING, GetCleanName(), shield_target->GetCleanName()); entity_list.MessageCloseString(this, false, 100, 0, START_SHIELDING, GetCleanName(), shield_target->GetCleanName());
SetShieldTargetID(shield_target->GetID()); SetShieldTarget(shield_target);
SetShielderMitigation(shield_target_mitigation); SetShielderMitigation(shield_target_mitigation);
SetShielerMaxDistance(max_shielder_distance); SetShielerMaxDistance(max_shielder_distance);
shield_target->SetShielderID(GetID()); shield_target->SetShielder(this);
shield_target->SetShieldTargetMitigation(shield_target_mitigation); shield_target->SetShieldTargetMitigation(shield_target_mitigation);
shield_timer.Start(shield_duration); shield_timer.Start(shield_duration);
@@ -6249,14 +6249,14 @@ void Mob::ShieldAbility(uint32 target_id, int max_shielder_distance, int shield_
void Mob::ShieldAbilityFinish() void Mob::ShieldAbilityFinish()
{ {
Mob* shield_target = entity_list.GetMob(GetShieldTargetID()); Mob* shield_target = GetShieldTarget();
if (shield_target) { if (shield_target) {
entity_list.MessageCloseString(this, false, 100, 0, END_SHIELDING, GetCleanName(), shield_target->GetCleanName()); entity_list.MessageCloseString(this, false, 100, 0, END_SHIELDING, GetCleanName(), shield_target->GetCleanName());
shield_target->SetShielderID(0); shield_target->SetShielder(nullptr);
shield_target->SetShieldTargetMitigation(0); shield_target->SetShieldTargetMitigation(0);
} }
SetShieldTargetID(0); SetShieldTarget(nullptr);
SetShielderMitigation(0); SetShielderMitigation(0);
SetShielerMaxDistance(0); SetShielerMaxDistance(0);
shield_timer.Disable(); shield_timer.Disable();
@@ -6265,30 +6265,30 @@ void Mob::ShieldAbilityFinish()
void Mob::ShieldAbilityClearVariables() void Mob::ShieldAbilityClearVariables()
{ {
//If 'shield target' dies //If 'shield target' dies
if (GetShielderID()){ if (GetShielder()){
Mob* shielder = entity_list.GetMob(GetShielderID()); Mob* shielder = GetShielder();
if (shielder) { if (shielder) {
shielder->SetShieldTargetID(0); shielder->SetShieldTarget(nullptr);
shielder->SetShielderMitigation(0); shielder->SetShielderMitigation(0);
shielder->SetShielerMaxDistance(0); shielder->SetShielerMaxDistance(0);
shielder->shield_timer.Disable(); shielder->shield_timer.Disable();
} }
SetShielderID(0); SetShielder(nullptr);
SetShieldTargetMitigation(0); SetShieldTargetMitigation(0);
} }
//If 'shielder' dies //If 'shielder' dies
if (GetShieldTargetID()) { if (GetShieldTarget()) {
Mob* shield_target = entity_list.GetMob(GetShieldTargetID()); Mob* shield_target = GetShieldTarget();
if (shield_target) { if (shield_target) {
shield_target->SetShielderID(0); shield_target->SetShielder(nullptr);
shield_target->SetShieldTargetMitigation(0); shield_target->SetShieldTargetMitigation(0);
} }
SetShieldTargetID(0); SetShieldTarget(nullptr);
SetShielderMitigation(0); SetShielderMitigation(0);
SetShielerMaxDistance(0); SetShielerMaxDistance(0);
shield_timer.Disable(); shield_timer.Disable();
+7 -6
View File
@@ -1137,10 +1137,11 @@ public:
void DoShieldDamageOnShielder(Mob* shield_target, int hit_damage_done, EQ::skills::SkillType skillInUse); void DoShieldDamageOnShielder(Mob* shield_target, int hit_damage_done, EQ::skills::SkillType skillInUse);
void ShieldAbilityFinish(); void ShieldAbilityFinish();
void ShieldAbilityClearVariables(); void ShieldAbilityClearVariables();
inline uint32 GetShielderID() const { return m_shielder_id; }
inline void SetShielderID(uint32 val) { m_shielder_id = val; } inline Mob* GetShielder() const { return m_shielder; }
inline uint32 GetShieldTargetID() const { return m_shield_target_id; } virtual void SetShielder(Mob* mob) { m_shielder = mob; }
inline void SetShieldTargetID(uint32 val) { m_shield_target_id = val; } inline Mob* GetShieldTarget() const { return m_shield_target; }
virtual void SetShieldTarget(Mob* mob) { m_shield_target = mob; }
inline int GetShieldTargetMitigation() const { return m_shield_target_mitigation; } inline int GetShieldTargetMitigation() const { return m_shield_target_mitigation; }
inline void SetShieldTargetMitigation(int val) { m_shield_target_mitigation = val; } inline void SetShieldTargetMitigation(int val) { m_shield_target_mitigation = val; }
inline int GetShielderMitigation() const { return m_shielder_mitigation; } inline int GetShielderMitigation() const { return m_shielder_mitigation; }
@@ -1453,8 +1454,8 @@ protected:
Timer focus_proc_limit_timer; Timer focus_proc_limit_timer;
Timer shield_timer; Timer shield_timer;
uint32 m_shield_target_id; Mob* m_shield_target;
uint32 m_shielder_id; Mob* m_shielder;
int m_shield_target_mitigation; int m_shield_target_mitigation;
int m_shielder_mitigation; int m_shielder_mitigation;
int m_shielder_max_distance; int m_shielder_max_distance;