mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
(RicardoCampos) End looting before zoning.
This commit is contained in:
parent
3620ac4eaf
commit
5decde0af9
@ -5501,7 +5501,7 @@ void Client::Handle_OP_EndLootRequest(const EQApplicationPacket *app)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetLooting(false);
|
SetLooting(0);
|
||||||
|
|
||||||
Entity* entity = entity_list.GetID(*((uint16*)app->pBuffer));
|
Entity* entity = entity_list.GetID(*((uint16*)app->pBuffer));
|
||||||
if (entity == 0) {
|
if (entity == 0) {
|
||||||
@ -9343,8 +9343,6 @@ void Client::Handle_OP_LootRequest(const EQApplicationPacket *app)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetLooting(true);
|
|
||||||
|
|
||||||
Entity* ent = entity_list.GetID(*((uint32*)app->pBuffer));
|
Entity* ent = entity_list.GetID(*((uint32*)app->pBuffer));
|
||||||
if (ent == 0) {
|
if (ent == 0) {
|
||||||
Message(13, "Error: OP_LootRequest: Corpse not found (ent = 0)");
|
Message(13, "Error: OP_LootRequest: Corpse not found (ent = 0)");
|
||||||
@ -9353,6 +9351,7 @@ void Client::Handle_OP_LootRequest(const EQApplicationPacket *app)
|
|||||||
}
|
}
|
||||||
if (ent->IsCorpse())
|
if (ent->IsCorpse())
|
||||||
{
|
{
|
||||||
|
SetLooting(ent->GetID()); //store the entity we are looting
|
||||||
Corpse *ent_corpse = ent->CastToCorpse();
|
Corpse *ent_corpse = ent->CastToCorpse();
|
||||||
if (DistNoRootNoZ(ent_corpse->GetX(), ent_corpse->GetY()) > 625)
|
if (DistNoRootNoZ(ent_corpse->GetX(), ent_corpse->GetY()) > 625)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -264,7 +264,7 @@ Mob::Mob(const char* in_name,
|
|||||||
logging_enabled = false;
|
logging_enabled = false;
|
||||||
isgrouped = false;
|
isgrouped = false;
|
||||||
israidgrouped = false;
|
israidgrouped = false;
|
||||||
islooting = false;
|
entity_id_being_looted = 0;
|
||||||
_appearance = eaStanding;
|
_appearance = eaStanding;
|
||||||
pRunAnimSpeed = 0;
|
pRunAnimSpeed = 0;
|
||||||
|
|
||||||
|
|||||||
@ -801,8 +801,8 @@ public:
|
|||||||
void SetGrouped(bool v);
|
void SetGrouped(bool v);
|
||||||
inline bool IsRaidGrouped() const { return israidgrouped; }
|
inline bool IsRaidGrouped() const { return israidgrouped; }
|
||||||
void SetRaidGrouped(bool v);
|
void SetRaidGrouped(bool v);
|
||||||
inline bool IsLooting() const { return islooting; }
|
inline bool IsLooting() const { return entity_id_being_looted; }
|
||||||
void SetLooting(bool val) { islooting = val; }
|
void SetLooting(uint16 val) { entity_id_being_looted = val; }
|
||||||
|
|
||||||
bool CheckWillAggro(Mob *mob);
|
bool CheckWillAggro(Mob *mob);
|
||||||
|
|
||||||
@ -927,7 +927,7 @@ protected:
|
|||||||
bool isgrouped;
|
bool isgrouped;
|
||||||
bool israidgrouped;
|
bool israidgrouped;
|
||||||
bool pendinggroup;
|
bool pendinggroup;
|
||||||
bool islooting;
|
uint16 entity_id_being_looted; //the id of the entity being looted, 0 if not looting.
|
||||||
uint8 texture;
|
uint8 texture;
|
||||||
uint8 helmtexture;
|
uint8 helmtexture;
|
||||||
|
|
||||||
|
|||||||
@ -549,7 +549,33 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ReadyToZone) {
|
if (ReadyToZone)
|
||||||
|
{
|
||||||
|
//if client is looting, we need to send an end loot
|
||||||
|
if (IsLooting())
|
||||||
|
{
|
||||||
|
Entity* entity = entity_list.GetID(entity_id_being_looted);
|
||||||
|
if (entity == 0)
|
||||||
|
{
|
||||||
|
Message(13, "Error: OP_EndLootRequest: Corpse not found (ent = 0)");
|
||||||
|
if (GetClientVersion() >= EQClientSoD)
|
||||||
|
Corpse::SendEndLootErrorPacket(this);
|
||||||
|
else
|
||||||
|
Corpse::SendLootReqErrorPacket(this);
|
||||||
|
}
|
||||||
|
else if (!entity->IsCorpse())
|
||||||
|
{
|
||||||
|
Message(13, "Error: OP_EndLootRequest: Corpse not found (!entity->IsCorpse())");
|
||||||
|
Corpse::SendLootReqErrorPacket(this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Corpse::SendEndLootErrorPacket(this);
|
||||||
|
entity->CastToCorpse()->EndLoot(this, nullptr);
|
||||||
|
}
|
||||||
|
SetLooting(0);
|
||||||
|
}
|
||||||
|
|
||||||
zone_mode = zm;
|
zone_mode = zm;
|
||||||
if (zm == ZoneToBindPoint) {
|
if (zm == ZoneToBindPoint) {
|
||||||
EQApplicationPacket* outapp = new EQApplicationPacket(OP_ZonePlayerToBind, sizeof(ZonePlayerToBind_Struct) + iZoneNameLength);
|
EQApplicationPacket* outapp = new EQApplicationPacket(OP_ZonePlayerToBind, sizeof(ZonePlayerToBind_Struct) + iZoneNameLength);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user