Fix /assist to only care about range to assistee

This commit is contained in:
Michael Cook (mackal) 2014-01-22 01:00:48 -05:00
parent cc02d94bdf
commit 3d47d912fd
2 changed files with 16 additions and 13 deletions

View File

@ -868,10 +868,12 @@ public:
void SetKnockBackExemption(bool v); void SetKnockBackExemption(bool v);
void SetPortExemption(bool v); void SetPortExemption(bool v);
void SetSenseExemption(bool v) { m_SenseExemption = v; } void SetSenseExemption(bool v) { m_SenseExemption = v; }
void SetAssistExemption(bool v) { m_AssistExemption = v; }
const bool IsShadowStepExempted() const { return m_ShadowStepExemption; } const bool IsShadowStepExempted() const { return m_ShadowStepExemption; }
const bool IsKnockBackExempted() const { return m_KnockBackExemption; } const bool IsKnockBackExempted() const { return m_KnockBackExemption; }
const bool IsPortExempted() const { return m_PortExemption; } const bool IsPortExempted() const { return m_PortExemption; }
const bool IsSenseExempted() const { return m_SenseExemption; } const bool IsSenseExempted() const { return m_SenseExemption; }
const bool IsAssistExempted() const { return m_AssistExemption; }
const bool GetGMSpeed() const { return (gmspeed > 0); } const bool GetGMSpeed() const { return (gmspeed > 0); }
void CheatDetected(CheatTypes CheatType, float x, float y, float z); void CheatDetected(CheatTypes CheatType, float x, float y, float z);
const bool IsMQExemptedArea(uint32 zoneID, float x, float y, float z) const; const bool IsMQExemptedArea(uint32 zoneID, float x, float y, float z) const;
@ -1449,6 +1451,7 @@ private:
bool m_KnockBackExemption; bool m_KnockBackExemption;
bool m_PortExemption; bool m_PortExemption;
bool m_SenseExemption; bool m_SenseExemption;
bool m_AssistExemption;
bool alternate_currency_loaded; bool alternate_currency_loaded;
std::map<uint32, uint32> alternate_currency; std::map<uint32, uint32> alternate_currency;
std::queue<std::pair<uint32, int32>> alternate_currency_queued_operations; std::queue<std::pair<uint32, int32>> alternate_currency_queued_operations;

View File

@ -1554,6 +1554,12 @@ void Client::Handle_OP_TargetCommand(const EQApplicationPacket *app)
SetSenseExemption(false); SetSenseExemption(false);
return; return;
} }
else if(IsAssistExempted())
{
GetTarget()->IsTargeted(1);
SetAssistExemption(false);
return;
}
else if(GetBindSightTarget()) else if(GetBindSightTarget())
{ {
if(GetBindSightTarget()->DistNoRoot(*GetTarget()) > (zone->newzone_data.maxclip*zone->newzone_data.maxclip)) if(GetBindSightTarget()->DistNoRoot(*GetTarget()) > (zone->newzone_data.maxclip*zone->newzone_data.maxclip))
@ -2747,21 +2753,15 @@ void Client::Handle_OP_Assist(const EQApplicationPacket *app)
EQApplicationPacket* outapp = app->Copy(); EQApplicationPacket* outapp = app->Copy();
eid = (EntityId_Struct*)outapp->pBuffer; eid = (EntityId_Struct*)outapp->pBuffer;
if (RuleB(Combat, AssistNoTargetSelf)) eid->entity_id = GetID(); if (RuleB(Combat, AssistNoTargetSelf))
if(entity && entity->IsMob()) eid->entity_id = GetID();
{ if (entity && entity->IsMob()) {
Mob *assistee = entity->CastToMob(); Mob *assistee = entity->CastToMob();
if(!assistee->IsInvisible(this) && assistee->GetTarget()) if (assistee->GetTarget()) {
{
Mob *new_target = assistee->GetTarget(); Mob *new_target = assistee->GetTarget();
if if (new_target && (GetGM() ||
( Dist(*assistee) <= TARGETING_RANGE)) {
new_target && SetAssistExemption(true);
!new_target->IsInvisible(this) &&
(GetGM() || (Dist(*assistee) <= TARGETING_RANGE &&
Dist(*new_target) <= TARGETING_RANGE))
)
{
eid->entity_id = new_target->GetID(); eid->entity_id = new_target->GetID();
} }
} }