#include "Client/Session.h" #include "Contents/EquipmentResourceMgr.h" #include "Contents/Jobs/JobId.h" #include "Utility/Text/FormatString.h" #include // OFFSET: 0x00E3D300 // FUNCTION: fn_24186 bool CSession::IsSecondJob(int job) { return job >= JT_RUNE_KNIGHT_2ND && job < JT_SECOND_JOB_END; } // OFFSET: 0x00E0A3A0 // FUNCTION: fn_23795 std::string CSession::GetBodyJobName(int job) { return this->m_bodyJobNames[job]; } // OFFSET: 0x00BAB850 // FUNCTION: fn_19753 std::string EquipmentResourceMgr::GetBodyResourceName(int type, int job, int sex, int costumeJob, int costume) { std::string result; std::string sexName; std::string jobName; const bool secondJob = g_session.IsSecondJob(costumeJob); const int spriteJob = g_session.GetSpriteJob(job, costumeJob, true); sexName = g_session.GetSexName(sex); jobName = g_session.GetBodyJobName(spriteJob); if (secondJob == true) { result = this->GetBodyRacePrefix(spriteJob + 3950) + FormatOwnedString("\\몸통\\%s\\costume_%d\\%s_%s_%d.%s", sexName.c_str(), 1, jobName.c_str(), sexName.c_str(), 1, g_equipmentResourceExtensions[type]); } else { result = this->GetBodyRacePrefix(spriteJob + 3950) + FormatOwnedString("\\몸통\\%s\\%s_%s.%s", sexName.c_str(), jobName.c_str(), sexName.c_str(), g_equipmentResourceExtensions[type]); } if (costume == 2) { std::size_t found = result.rfind("마도기어_"); if (found != std::string::npos) { result.replace(found, 9, "마도아머_", 9); } found = result.rfind("MEISTER_MADOGEAR1"); if (found != std::string::npos) { result.replace(found, 17, "MEISTER_MADOGEAR2", 17); } } return result; } // OFFSET: 0x00BABEF0 // FUNCTION: fn_19754 std::string EquipmentResourceMgr::GetBodyRacePrefix(int job) { if (g_session.IsDoramJob(job) == true) { return "도람족"; } return "인간족"; }