rodecomp/Source/Contents/PetStatus.cpp
ragnarok-clanker 4bce141e4c Decompile fn_23811 (CSession::GetPetHungryStateString)
Batch #1625 by eAthena: 0 byte-identical, 1 confirmed by peer review.

- fn_23811 CSession::GetPetHungryStateString: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
2026-10-28 19:45:56 +00:00

119 lines
2.5 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;
}