diff --git a/Source/Client/Session.h b/Source/Client/Session.h index ce6116c0..4d1a4b62 100644 --- a/Source/Client/Session.h +++ b/Source/Client/Session.h @@ -134,6 +134,7 @@ public: NormalItemSlot& SkillHotkey(int index) { return reinterpret_cast(reinterpret_cast(this) + offsetof(CSession, unknown_06EB))[index]; } + void ResetItems2B50(); int GetPetFood(int job); void GetPetIllustName(int job, int, char* buffer); int GetPetJobByEggItem(int eggItemId); diff --git a/Source/Contents/Skills/ClientSkills.cpp b/Source/Contents/Skills/ClientSkills.cpp index c3d82366..c90d6e01 100644 --- a/Source/Contents/Skills/ClientSkills.cpp +++ b/Source/Contents/Skills/ClientSkills.cpp @@ -1,5 +1,6 @@ #include "Contents/Skills/ClientSkills.h" #include "Client/Session.h" +#include "Contents/ClientState.h" #include "Script/LuaScript.h" #include "UI/Window/UIWindow.h" #include "UI/Window/UIWindowMgr.h" @@ -593,3 +594,34 @@ void CSession::NotifyMercSkillWindows() { g_windowMgr.window_01E8->SendMsg(nullptr, 23, 0, 0, 0, 0); } } + +// OFFSET: 0x00E08260 +// FUNCTION: fn_23753 +void CSession::ResetItems2B50() { + for (int index = 0; index < 10; ++index) { + this->unknown_2B50[index].Reset(); + } + + RequestBasicInfoRefresh(); +} + +// OFFSET: 0x00E08B40 +// FUNCTION: fn_23770 +float GetSkillFactor(int skillId) { + if ((skillId < 4023 || skillId > 4029) && skillId != 4045 && skillId != 4191 && static_cast(skillId - 4030) > 0xE && + static_cast(skillId - 4096) > 0x10 && static_cast(skillId - 4158) > 0x18 && (skillId < 4194 || skillId > 4196) && + skillId != 4193 && static_cast(skillId - 4205) > 5 && skillId != 4220 && static_cast(skillId - 4222) > 0x10 && + skillId != 4241 && skillId != 4242 && skillId != 4244 && skillId != 4247 && skillId != 4248 && skillId != 4352 && skillId != 4354) { + return 1.0f; + } + + if (g_session.IsReducedSkill(skillId)) { + return 0.8f; + } + + if ((skillId >= 4023 && skillId <= 4029) || skillId == 4045 || skillId == 4191) { + return 0.75f; + } + + return 0.82f; +} diff --git a/Source/Contents/Skills/ClientSkills.h b/Source/Contents/Skills/ClientSkills.h index 2ee4e9f9..d719a05d 100644 --- a/Source/Contents/Skills/ClientSkills.h +++ b/Source/Contents/Skills/ClientSkills.h @@ -66,6 +66,10 @@ struct ClientSkills { static_assert(sizeof(ActiveSkillEffect) == 28); #if defined(_WIN32) && !defined(_WIN64) static_assert(offsetof(ActiveSkillEffect, unknown_0018) == 0x18); -#endif +float GetSkillFactor(int skillId); + +#endif + +float GetSkillFactor(int skillId); #endif