mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
optimization
This commit is contained in:
+5
-5
@@ -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);
|
||||
|
||||
if (defender->GetShielderID()) {
|
||||
if (defender->GetShielder()) {
|
||||
DoShieldDamageOnShielder(defender, hit.damage_done, hit.skill);
|
||||
hit.damage_done -= hit.damage_done * defender->GetShieldTargetMitigation() / 100; //Default shielded takes 50 pct damage
|
||||
}
|
||||
@@ -5295,20 +5295,20 @@ void Mob::DoShieldDamageOnShielder(Mob* shield_target, int hit_damage_done, EQ::
|
||||
return;
|
||||
}
|
||||
|
||||
Mob *shielder = entity_list.GetMob(shield_target->GetShielderID());
|
||||
Mob *shielder = shield_target->GetShielder();
|
||||
|
||||
if (!shielder) {
|
||||
return;
|
||||
}
|
||||
|
||||
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->SetShielerMaxDistance(0);
|
||||
shielder->shield_timer.Disable();
|
||||
shield_target->SetShielderID(0);
|
||||
shield_target->SetShielder(nullptr);
|
||||
shield_target->SetShieldTargetMitigation(0);
|
||||
return; //Too far away, no message is given thoughh.
|
||||
return; //Too far away, no message is given thoughh.
|
||||
}
|
||||
|
||||
int mitigation = shielder->GetShielderMitigation(); //Default shielder mitigates 25 pct of damage taken, this can be increased up to max 50 by equiping a shield item
|
||||
|
||||
@@ -12862,15 +12862,15 @@ void Client::Handle_OP_Shielding(const EQApplicationPacket *app)
|
||||
if (shield_target->GetID() == GetID()) { //Client will give message "You can not shield yourself"
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//You are a 'Shield Target' already have a 'Shielder'
|
||||
if (GetShielderID() || shield_target->GetShielderID()) {
|
||||
if (GetShielder() || shield_target->GetShielder()) {
|
||||
MessageString(Chat::White, ALREADY_SHIELDED);
|
||||
return;
|
||||
}
|
||||
|
||||
//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);
|
||||
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());
|
||||
|
||||
SetShieldTargetID(shield_target->GetID());
|
||||
SetShieldTarget(shield_target);
|
||||
SetShielderMitigation(25);
|
||||
SetShielerMaxDistance(shielder_max_distance);
|
||||
|
||||
shield_target->SetShielderID(GetID());
|
||||
shield_target->SetShielder(this);
|
||||
shield_target->SetShieldTargetMitigation(50);
|
||||
|
||||
//Calculate AA for adding time SPA 255 extend shield duration
|
||||
|
||||
+17
-17
@@ -377,8 +377,8 @@ Mob::Mob(
|
||||
inWater = false;
|
||||
|
||||
shield_timer.Disable();
|
||||
m_shield_target_id = 0;
|
||||
m_shielder_id = 0;
|
||||
m_shield_target = nullptr;
|
||||
m_shielder = nullptr;
|
||||
m_shield_target_mitigation = 0;
|
||||
m_shielder_mitigation = 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'
|
||||
if (GetShielderID() || shield_target->GetShielderID()) {
|
||||
if (GetShielder() || shield_target->GetShielder()) {
|
||||
|
||||
if (IsClient()) {
|
||||
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'
|
||||
if (GetShieldTargetID() || shield_target->GetShieldTargetID()) {
|
||||
if (GetShieldTarget() || shield_target->GetShieldTarget()) {
|
||||
|
||||
if (IsClient()) {
|
||||
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());
|
||||
|
||||
SetShieldTargetID(shield_target->GetID());
|
||||
SetShieldTarget(shield_target);
|
||||
SetShielderMitigation(shield_target_mitigation);
|
||||
SetShielerMaxDistance(max_shielder_distance);
|
||||
|
||||
shield_target->SetShielderID(GetID());
|
||||
shield_target->SetShielder(this);
|
||||
shield_target->SetShieldTargetMitigation(shield_target_mitigation);
|
||||
|
||||
shield_timer.Start(shield_duration);
|
||||
@@ -6249,14 +6249,14 @@ void Mob::ShieldAbility(uint32 target_id, int max_shielder_distance, int shield_
|
||||
|
||||
void Mob::ShieldAbilityFinish()
|
||||
{
|
||||
Mob* shield_target = entity_list.GetMob(GetShieldTargetID());
|
||||
Mob* shield_target = GetShieldTarget();
|
||||
|
||||
if (shield_target) {
|
||||
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);
|
||||
}
|
||||
SetShieldTargetID(0);
|
||||
SetShieldTarget(nullptr);
|
||||
SetShielderMitigation(0);
|
||||
SetShielerMaxDistance(0);
|
||||
shield_timer.Disable();
|
||||
@@ -6265,30 +6265,30 @@ void Mob::ShieldAbilityFinish()
|
||||
void Mob::ShieldAbilityClearVariables()
|
||||
{
|
||||
//If 'shield target' dies
|
||||
if (GetShielderID()){
|
||||
if (GetShielder()){
|
||||
|
||||
Mob* shielder = entity_list.GetMob(GetShielderID());
|
||||
Mob* shielder = GetShielder();
|
||||
|
||||
if (shielder) {
|
||||
shielder->SetShieldTargetID(0);
|
||||
shielder->SetShieldTarget(nullptr);
|
||||
shielder->SetShielderMitigation(0);
|
||||
shielder->SetShielerMaxDistance(0);
|
||||
shielder->shield_timer.Disable();
|
||||
}
|
||||
SetShielderID(0);
|
||||
SetShielder(nullptr);
|
||||
SetShieldTargetMitigation(0);
|
||||
}
|
||||
|
||||
//If 'shielder' dies
|
||||
if (GetShieldTargetID()) {
|
||||
if (GetShieldTarget()) {
|
||||
|
||||
Mob* shield_target = entity_list.GetMob(GetShieldTargetID());
|
||||
Mob* shield_target = GetShieldTarget();
|
||||
|
||||
if (shield_target) {
|
||||
shield_target->SetShielderID(0);
|
||||
shield_target->SetShielder(nullptr);
|
||||
shield_target->SetShieldTargetMitigation(0);
|
||||
}
|
||||
SetShieldTargetID(0);
|
||||
SetShieldTarget(nullptr);
|
||||
SetShielderMitigation(0);
|
||||
SetShielerMaxDistance(0);
|
||||
shield_timer.Disable();
|
||||
|
||||
+7
-6
@@ -1137,10 +1137,11 @@ public:
|
||||
void DoShieldDamageOnShielder(Mob* shield_target, int hit_damage_done, EQ::skills::SkillType skillInUse);
|
||||
void ShieldAbilityFinish();
|
||||
void ShieldAbilityClearVariables();
|
||||
inline uint32 GetShielderID() const { return m_shielder_id; }
|
||||
inline void SetShielderID(uint32 val) { m_shielder_id = val; }
|
||||
inline uint32 GetShieldTargetID() const { return m_shield_target_id; }
|
||||
inline void SetShieldTargetID(uint32 val) { m_shield_target_id = val; }
|
||||
|
||||
inline Mob* GetShielder() const { return m_shielder; }
|
||||
virtual void SetShielder(Mob* mob) { m_shielder = mob; }
|
||||
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 void SetShieldTargetMitigation(int val) { m_shield_target_mitigation = val; }
|
||||
inline int GetShielderMitigation() const { return m_shielder_mitigation; }
|
||||
@@ -1453,8 +1454,8 @@ protected:
|
||||
Timer focus_proc_limit_timer;
|
||||
|
||||
Timer shield_timer;
|
||||
uint32 m_shield_target_id;
|
||||
uint32 m_shielder_id;
|
||||
Mob* m_shield_target;
|
||||
Mob* m_shielder;
|
||||
int m_shield_target_mitigation;
|
||||
int m_shielder_mitigation;
|
||||
int m_shielder_max_distance;
|
||||
|
||||
Reference in New Issue
Block a user