rodecomp/Source/Contents/PetStatus.cpp
ragnarok-clanker 29eaccee96 Decompile 2 functions in Source/UI/Edit/UIEditCtrl.cpp, Source/Contents/PetStatus.cpp, ...
Batch #2900 by youko: 0 byte-identical, 2 confirmed by peer review.

- fn_23888 CSession::IsPetEgg: logic confirmed by peer review
- fn_13298 UIMerchantShopMakeWnd::GetItemAt: logic confirmed by peer review

Peer-reviewed-by: meitogi, willerthal, superintelligence
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-10-29 19:53:00 +00:00

125 lines
2.7 KiB
C++

#include "Client/Session.h"
#include <cstring>
// OFFSET: 0x00E0ADC0
// FUNCTION: fn_23806
int CSession::GetPetActionNumber(int hungerLevel, int friendlyLevel, int action) {
int number = this->m_petActionTable[hungerLevel][friendlyLevel][action];
if (number == -1) {
return -1;
}
return number * 10 + 2;
}
// OFFSET: 0x00E0AEB0
// FUNCTION: fn_23808
int CSession::GetPetFriendlyState(int friendly) {
if (friendly <= 100) {
return 0;
}
if (friendly <= 250) {
return 1;
}
if (friendly <= 750) {
return 2;
}
if (friendly <= 900) {
return 3;
}
return 4;
}
// OFFSET: 0x00E0AF00
// FUNCTION: fn_23809
void CSession::GetPetFriendlyStateString(int friendly, char* buffer) {
if (friendly >= 0) {
if (friendly <= 100) {
std::strcpy(buffer, "서먹서먹함");
return;
}
if (friendly <= 250) {
std::strcpy(buffer, "어색함");
return;
}
if (friendly <= 750) {
std::strcpy(buffer, "보통");
return;
}
if (friendly <= 900) {
std::strcpy(buffer, "친함");
return;
}
if (friendly <= 1000) {
std::strcpy(buffer, "절친함");
return;
}
}
std::strcpy(buffer, "저는 모릅니다아아아.");
}
// OFFSET: 0x00E0AFF0
// FUNCTION: fn_23810
int CSession::GetPetHungryState(int hunger) {
if (hunger >= 91 && hunger <= 100) {
return 4;
}
if (hunger >= 76 && hunger <= 90) {
return 3;
}
if (hunger >= 26 && hunger <= 75) {
return 2;
}
if (hunger >= 11 && hunger <= 25) {
return 1;
}
return 0;
}
// OFFSET: 0x00E0B040
// FUNCTION: fn_23811
void CSession::GetPetHungryStateString(int hunger, char* buffer) {
if (hunger >= 0) {
if (hunger <= 10) {
std::strcpy(buffer, "배고픔");
return;
}
if (hunger <= 25) {
std::strcpy(buffer, "출출함");
return;
}
if (hunger <= 75) {
std::strcpy(buffer, "보통");
return;
}
if (hunger <= 90) {
std::strcpy(buffer, "배부름");
return;
}
if (hunger <= 100) {
std::strcpy(buffer, "아주 배부름");
return;
}
}
const char unknown[] = {'\xB8', '\xF4', '\xB6', '\xF3', '\xBF', '\xE4', '.', '\0'};
std::memcpy(buffer, unknown, sizeof(unknown));
}
// OFFSET: 0x00E12830
// FUNCTION: fn_23817
int CSession::GetPetEmotionNumber(int job, int action, int hungerLevel) {
if (g_session.unknown_0E98 != g_session.unknown_5558) {
g_session.unknown_0E98 = g_session.unknown_5558;
}
return g_session.unknown_0E98 + ((job * 10 + action) * 10 + hungerLevel) * 10;
}
// OFFSET: 0x00E1DF60
// FUNCTION: fn_23888
int CSession::IsPetEgg(int itemId) const {
return static_cast<unsigned>(itemId - 9001) <= 498;
}