mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 10:31:29 +00:00
[Bug Fix] Hero forge armor bug on login and show helm toggle. (#4246)
* [Bug Fix] Hero forge armor bug on login and show helm toggle. * Merge in KayenEQ provided revert of original work around * Fix botched merge section.
This commit is contained in:
parent
a5e8a4c2cd
commit
d6b5a9d343
@ -278,8 +278,6 @@ Client::Client(EQStreamInterface *ieqs) : Mob(
|
|||||||
if (RuleI(World, PVPMinLevel) > 0 && level >= RuleI(World, PVPMinLevel) && m_pp.pvp == 0) SetPVP(true, false);
|
if (RuleI(World, PVPMinLevel) > 0 && level >= RuleI(World, PVPMinLevel) && m_pp.pvp == 0) SetPVP(true, false);
|
||||||
dynamiczone_removal_timer.Disable();
|
dynamiczone_removal_timer.Disable();
|
||||||
|
|
||||||
heroforge_wearchange_timer.Disable();
|
|
||||||
|
|
||||||
//for good measure:
|
//for good measure:
|
||||||
memset(&m_pp, 0, sizeof(m_pp));
|
memset(&m_pp, 0, sizeof(m_pp));
|
||||||
memset(&m_epp, 0, sizeof(m_epp));
|
memset(&m_epp, 0, sizeof(m_epp));
|
||||||
|
|||||||
@ -1953,8 +1953,6 @@ private:
|
|||||||
Timer task_request_timer;
|
Timer task_request_timer;
|
||||||
Timer pick_lock_timer;
|
Timer pick_lock_timer;
|
||||||
|
|
||||||
Timer heroforge_wearchange_timer;
|
|
||||||
|
|
||||||
glm::vec3 m_Proximity;
|
glm::vec3 m_Proximity;
|
||||||
glm::vec4 last_position_before_bulk_update;
|
glm::vec4 last_position_before_bulk_update;
|
||||||
|
|
||||||
|
|||||||
@ -757,8 +757,10 @@ void Client::CompleteConnect()
|
|||||||
|
|
||||||
entity_list.SendTraders(this);
|
entity_list.SendTraders(this);
|
||||||
|
|
||||||
Mob *pet = GetPet();
|
SendWearChangeAndLighting(EQ::textures::LastTexture);
|
||||||
|
Mob* pet = GetPet();
|
||||||
if (pet) {
|
if (pet) {
|
||||||
|
pet->SendWearChangeAndLighting(EQ::textures::LastTexture);
|
||||||
pet->SendPetBuffsToClient();
|
pet->SendPetBuffsToClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -951,8 +953,6 @@ void Client::CompleteConnect()
|
|||||||
safe_delete(p);
|
safe_delete(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
heroforge_wearchange_timer.Start(250);
|
|
||||||
|
|
||||||
RecordStats();
|
RecordStats();
|
||||||
AutoGrantAAPoints();
|
AutoGrantAAPoints();
|
||||||
|
|
||||||
@ -16011,11 +16011,11 @@ void Client::Handle_OP_WearChange(const EQApplicationPacket *app)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Hero Forge ID needs to be fixed here as RoF2 appears to send an incorrect value.
|
// Hero Forge ID needs to be fixed here as RoF2 appears to send an incorrect value.
|
||||||
if (wc->hero_forge_model != 0 && wc->wear_slot_id >= 0 && wc->wear_slot_id < EQ::textures::weaponPrimary)
|
if (wc->wear_slot_id >= 0 && wc->wear_slot_id < EQ::textures::weaponPrimary)
|
||||||
wc->hero_forge_model = GetHerosForgeModel(wc->wear_slot_id);
|
wc->hero_forge_model = GetHerosForgeModel(wc->wear_slot_id);
|
||||||
|
|
||||||
// we could maybe ignore this and just send our own from moveitem
|
// we could maybe ignore this and just send our own from moveitem
|
||||||
entity_list.QueueClients(this, app, true);
|
entity_list.QueueClients(this, app, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::Handle_OP_WhoAllRequest(const EQApplicationPacket *app)
|
void Client::Handle_OP_WhoAllRequest(const EQApplicationPacket *app)
|
||||||
|
|||||||
@ -213,25 +213,6 @@ bool Client::Process() {
|
|||||||
instalog = true;
|
instalog = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heroforge_wearchange_timer.Check()) {
|
|
||||||
/*
|
|
||||||
This addresses bug where on zone in heroforge models would not be sent to other clients when this was
|
|
||||||
in Client::CompleteConnect(). Sending after a small 250 ms delay after that function resolves the issue.
|
|
||||||
Unclear the underlying reason for this, if a better solution can be found then can move this back.
|
|
||||||
*/
|
|
||||||
if (queue_wearchange_slot >= 0) { //Resend slot from Client::SwapItem if heroforge item is swapped.
|
|
||||||
SendWearChange(static_cast<uint8>(queue_wearchange_slot));
|
|
||||||
}
|
|
||||||
else { //Send from Client::CompleteConnect()
|
|
||||||
SendWearChangeAndLighting(EQ::textures::LastTexture);
|
|
||||||
Mob *pet = GetPet();
|
|
||||||
if (pet) {
|
|
||||||
pet->SendWearChangeAndLighting(EQ::textures::LastTexture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
heroforge_wearchange_timer.Disable();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsStunned() && stunned_timer.Check())
|
if (IsStunned() && stunned_timer.Check())
|
||||||
Mob::UnStun();
|
Mob::UnStun();
|
||||||
|
|
||||||
|
|||||||
@ -2258,10 +2258,6 @@ bool Client::SwapItem(MoveItem_Struct* move_in) {
|
|||||||
if (dst_slot_id <= EQ::invslot::EQUIPMENT_END) {// on Titanium and ROF2 /showhelm works even if sending helm slot
|
if (dst_slot_id <= EQ::invslot::EQUIPMENT_END) {// on Titanium and ROF2 /showhelm works even if sending helm slot
|
||||||
SendWearChange(matslot);
|
SendWearChange(matslot);
|
||||||
}
|
}
|
||||||
// This is part of a bug fix to ensure heroforge graphics display to other clients in zone.
|
|
||||||
if (queue_wearchange_slot >= 0) {
|
|
||||||
heroforge_wearchange_timer.Start(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 7: Save change to the database
|
// Step 7: Save change to the database
|
||||||
if (src_slot_id == EQ::invslot::slotCursor) {
|
if (src_slot_id == EQ::invslot::slotCursor) {
|
||||||
|
|||||||
@ -506,8 +506,6 @@ Mob::Mob(
|
|||||||
use_double_melee_round_dmg_bonus = false;
|
use_double_melee_round_dmg_bonus = false;
|
||||||
dw_same_delay = 0;
|
dw_same_delay = 0;
|
||||||
|
|
||||||
queue_wearchange_slot = -1;
|
|
||||||
|
|
||||||
m_manual_follow = false;
|
m_manual_follow = false;
|
||||||
|
|
||||||
mob_close_scan_timer.Trigger();
|
mob_close_scan_timer.Trigger();
|
||||||
|
|||||||
@ -1668,8 +1668,6 @@ protected:
|
|||||||
int32 appearance_effects_id[MAX_APPEARANCE_EFFECTS];
|
int32 appearance_effects_id[MAX_APPEARANCE_EFFECTS];
|
||||||
int32 appearance_effects_slot[MAX_APPEARANCE_EFFECTS];
|
int32 appearance_effects_slot[MAX_APPEARANCE_EFFECTS];
|
||||||
|
|
||||||
int queue_wearchange_slot;
|
|
||||||
|
|
||||||
Timer shield_timer;
|
Timer shield_timer;
|
||||||
uint32 m_shield_target_id;
|
uint32 m_shield_target_id;
|
||||||
uint32 m_shielder_id;
|
uint32 m_shielder_id;
|
||||||
|
|||||||
@ -399,9 +399,6 @@ void Mob::SendWearChange(uint8 material_slot, Client *one_client)
|
|||||||
|
|
||||||
w->wear_slot_id = material_slot;
|
w->wear_slot_id = material_slot;
|
||||||
|
|
||||||
// Part of a bug fix to ensure heroforge models send to other clients in zone.
|
|
||||||
queue_wearchange_slot = w->hero_forge_model ? material_slot : -1;
|
|
||||||
|
|
||||||
if (!one_client) {
|
if (!one_client) {
|
||||||
entity_list.QueueClients(this, packet);
|
entity_list.QueueClients(this, packet);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user