diff --git a/Source/Client/Session.cpp b/Source/Client/Session.cpp index 0bb6aa92..0f5b9e37 100644 --- a/Source/Client/Session.cpp +++ b/Source/Client/Session.cpp @@ -1,4 +1,5 @@ #include "Client/Session.h" +#include "Contents/Jobs/JobId.h" #include "Network/TextEncoding.h" #include @@ -41,15 +42,15 @@ void CSession::ClearItemSelection() { // OFFSET: 0x00E3CFF0 // FUNCTION: fn_24179 -bool CSession::IsReducedSkill(int skillId) const { - switch (skillId) { - case 4217: - case 4218: - case 4219: - case 4220: - case 4221: - case 4308: - case 4315: +bool CSession::IsDoramJob(int job) const { + switch (job) { + case JT_TRIBE_DORAM: + case JT_DO_SUMMONER: + case JT_DO_CART_SUMMONER: + case JT_DO_SUMMONER_B: + case JT_DO_CART_SUMMONER_B: + case JT_SPIRIT_HANDLER: + case JT_SPIRIT_HANDLER_RIDING: return true; default: return false; diff --git a/Source/Client/Session.h b/Source/Client/Session.h index 38fbee6a..4e3d4ff4 100644 --- a/Source/Client/Session.h +++ b/Source/Client/Session.h @@ -219,7 +219,7 @@ public: void GetPetHungryStateString(int hunger, char* buffer); int GetPetEmotionNumber(int job, int action, int hungerLevel); void ClearItemSelection(); - bool IsReducedSkill(int skillId) const; + bool IsDoramJob(int job) const; char* ConvertTooltipText(const char* source, char* output) const; int MercSkillLevel(int skillId) const; int HomunSkillLevel(int skillId) const; diff --git a/Source/Contents/BodyResources.cpp b/Source/Contents/BodyResources.cpp index 8a4dd287..2455ae78 100644 --- a/Source/Contents/BodyResources.cpp +++ b/Source/Contents/BodyResources.cpp @@ -6,7 +6,7 @@ // OFFSET: 0x00BABEF0 // FUNCTION: fn_19754 std::string EquipmentResourceMgr::GetBodyRacePrefix(int job) { - if (g_session.IsReducedSkill(job) == true) { + if (g_session.IsDoramJob(job) == true) { return "도람족"; } return "인간족"; diff --git a/Source/Contents/Skills/ClientSkills.cpp b/Source/Contents/Skills/ClientSkills.cpp index c90d6e01..9636d879 100644 --- a/Source/Contents/Skills/ClientSkills.cpp +++ b/Source/Contents/Skills/ClientSkills.cpp @@ -1,6 +1,7 @@ #include "Contents/Skills/ClientSkills.h" #include "Client/Session.h" #include "Contents/ClientState.h" +#include "Contents/Jobs/JobId.h" #include "Script/LuaScript.h" #include "UI/Window/UIWindow.h" #include "UI/Window/UIWindowMgr.h" @@ -607,19 +608,21 @@ void CSession::ResetItems2B50() { // 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) { +float GetSkillFactor(int job) { + if ((job < JT_NOVICE_B || job > JT_THIEF_B) && job != JT_SUPERNOVICE_B && job != JT_SUPERNOVICE2_B && + static_cast(job - JT_KNIGHT_B) > JT_CHICKEN2_B - JT_KNIGHT_B && static_cast(job - JT_RUNE_KNIGHT_B) > JT_MADOGEAR_B - JT_RUNE_KNIGHT_B && + static_cast(job - JT_PORING_NOVICE_B) > JT_DOG_CHASER_B - JT_PORING_NOVICE_B && (job < JT_SHEEP_PRIEST_B || job > JT_PIG_BLACKSMITH_B) && + job != JT_PORING_SNOVICE2_B && static_cast(job - JT_PIG_MECHANIC_B) > JT_LION_CRUSADER_B - JT_PIG_MECHANIC_B && job != JT_DO_SUMMONER_B && + static_cast(job - JT_NINJA_B) > JT_STAR2_B - JT_NINJA_B && job != JT_STAR_EMPEROR_B && job != JT_SOUL_REAPER_B && job != JT_STAR2_EMPEROR_B && + job != JT_HAETAE_STAR_EMPEROR_B && job != JT_HAETAE_SOUL_REAPER_B && job != JT_DRUID_B && job != JT_KARNOS_B) { return 1.0f; } - if (g_session.IsReducedSkill(skillId)) { + if (g_session.IsDoramJob(job)) { return 0.8f; } - if ((skillId >= 4023 && skillId <= 4029) || skillId == 4045 || skillId == 4191) { + if ((job >= JT_NOVICE_B && job <= JT_THIEF_B) || job == JT_SUPERNOVICE_B || job == JT_SUPERNOVICE2_B) { return 0.75f; } diff --git a/Source/Contents/Skills/ClientSkills.h b/Source/Contents/Skills/ClientSkills.h index d719a05d..f35afdd6 100644 --- a/Source/Contents/Skills/ClientSkills.h +++ b/Source/Contents/Skills/ClientSkills.h @@ -66,10 +66,8 @@ struct ClientSkills { static_assert(sizeof(ActiveSkillEffect) == 28); #if defined(_WIN32) && !defined(_WIN64) static_assert(offsetof(ActiveSkillEffect, unknown_0018) == 0x18); -float GetSkillFactor(int skillId); - #endif -float GetSkillFactor(int skillId); +float GetSkillFactor(int job); #endif