From 32a1d7c43e35ff39ece7dae8357193ce41a5e263 Mon Sep 17 00:00:00 2001 From: KimLS Date: Mon, 2 Dec 2024 23:36:13 -0800 Subject: [PATCH] -Exp update almost works, but inital at zonein is broken -MoveItem has opcode now but is not translating correctly. --- common/patches/laurion.cpp | 11 +++++++++++ common/patches/laurion_ops.h | 1 + utils/patches/patch_Laurion.conf | 2 +- zone/client.cpp | 10 +--------- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/common/patches/laurion.cpp b/common/patches/laurion.cpp index 94bd8f74d..d340bd598 100644 --- a/common/patches/laurion.cpp +++ b/common/patches/laurion.cpp @@ -2671,6 +2671,17 @@ namespace Laurion FINISH_ENCODE(); } + ENCODE(OP_ExpUpdate) + { + SETUP_DIRECT_ENCODE(ExpUpdate_Struct, structs::ExpUpdate_Struct); + + //later we should change the underlying server to use this more accurate value + //and encode the 330 in the other patches + eq->exp = emu->exp * 100000 / 330; + + FINISH_ENCODE(); + } + // DECODE methods DECODE(OP_EnterWorld) diff --git a/common/patches/laurion_ops.h b/common/patches/laurion_ops.h index b1950bc7f..4946bfcc2 100644 --- a/common/patches/laurion_ops.h +++ b/common/patches/laurion_ops.h @@ -31,6 +31,7 @@ E(OP_Damage) E(OP_Animation) E(OP_Death) E(OP_MoveItem) +E(OP_ExpUpdate) //list of packets we need to decode on the way in: D(OP_EnterWorld) D(OP_ZoneEntry) diff --git a/utils/patches/patch_Laurion.conf b/utils/patches/patch_Laurion.conf index 83d02608a..b22a189b4 100644 --- a/utils/patches/patch_Laurion.conf +++ b/utils/patches/patch_Laurion.conf @@ -253,7 +253,7 @@ OP_DeleteSpawn=0x7712 OP_AutoAttack=0x3f03 OP_AutoAttack2=0x1c31 OP_Consume=0x0000 -OP_MoveItem=0x0000 +OP_MoveItem=0x11e3 OP_MoveMultipleItems=0x0000 OP_DeleteItem=0x0000 OP_DeleteCharge=0x0000 diff --git a/zone/client.cpp b/zone/client.cpp index 9ab53c593..0b6d20b04 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -542,15 +542,7 @@ void Client::SendZoneInPackets() if (tmpxp1 != tmpxp2 && tmpxp1 != 0xFFFFFFFF && tmpxp2 != 0xFFFFFFFF) { float tmpxp = (float)((float)m_pp.exp - tmpxp2) / ((float)tmpxp1 - tmpxp2); - - //Laurion uses a more granular exp bar than other clients - if (m_ClientVersion >= EQ::versions::ClientVersion::Laurion) { - eu->exp = (uint32)(100000.0f * tmpxp); - } - else { - eu->exp = (uint32)(330.0f * tmpxp); - } - + eu->exp = (uint32)(330.0f * tmpxp); FastQueuePacket(&outapp); } else {