Decompile fn_21829 (CGameMode::ApplySkillUpdatePacket)
Batch #15966 by Yommy: 0 byte-identical, 1 confirmed by peer review. - fn_21829 CGameMode::ApplySkillUpdatePacket: logic confirmed by peer review Peer-reviewed-by: eAthena, bgamez23 Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
parent
f74ef08789
commit
ebdf746383
1 changed files with 10 additions and 20 deletions
|
|
@ -22,23 +22,17 @@ void CGameMode::ApplySkillUpdatePacket(const void* packet) {
|
|||
*reinterpret_cast<int*>(&this->equipmentRequestState[0x0C]) = 0;
|
||||
|
||||
const auto* bytes = static_cast<const unsigned char*>(packet);
|
||||
const auto opcode = Read<std::uint16_t>(bytes);
|
||||
const auto id = Read<std::uint16_t>(bytes + 2);
|
||||
CSkillInfo value;
|
||||
|
||||
switch (opcode) {
|
||||
case ID_ZC_SKILLINFO_UPDATE:
|
||||
value = g_session.m_skillBundle.Lookup(id);
|
||||
break;
|
||||
case ID_ZC_HOSKILLINFO_UPDATE:
|
||||
value = g_session.LookupHomunSkill(id);
|
||||
break;
|
||||
case ID_ZC_MER_SKILLINFO_UPDATE:
|
||||
value = g_session.LookupMercSkill(id);
|
||||
break;
|
||||
if (Read<std::uint16_t>(bytes) == ID_ZC_SKILLINFO_UPDATE) {
|
||||
value = g_session.m_skillBundle.Lookup(Read<std::uint16_t>(bytes + 2));
|
||||
} else if (Read<std::uint16_t>(bytes) == ID_ZC_HOSKILLINFO_UPDATE) {
|
||||
value = g_session.LookupHomunSkill(Read<std::uint16_t>(bytes + 2));
|
||||
} else if (Read<std::uint16_t>(bytes) == ID_ZC_MER_SKILLINFO_UPDATE) {
|
||||
value = g_session.LookupMercSkill(Read<std::uint16_t>(bytes + 2));
|
||||
}
|
||||
|
||||
value.id = id;
|
||||
value.id = Read<std::uint16_t>(bytes + 2);
|
||||
value.level = Read<std::int16_t>(bytes + 4);
|
||||
value.spCost = static_cast<std::int32_t>(Read<std::int16_t>(bytes + 6));
|
||||
value.upgradable = bytes[10];
|
||||
|
|
@ -46,16 +40,12 @@ void CGameMode::ApplySkillUpdatePacket(const void* packet) {
|
|||
value.apCost = value.UseApAmount(*g_session.m_hotkeyScript, value.level);
|
||||
g_session.m_skillBundle.ApplyLevelChange(value);
|
||||
|
||||
switch (opcode) {
|
||||
case ID_ZC_SKILLINFO_UPDATE:
|
||||
if (Read<std::uint16_t>(bytes) == ID_ZC_SKILLINFO_UPDATE) {
|
||||
g_session.UpdateSkill(value, 1, 0);
|
||||
break;
|
||||
case ID_ZC_HOSKILLINFO_UPDATE:
|
||||
} else if (Read<std::uint16_t>(bytes) == ID_ZC_HOSKILLINFO_UPDATE) {
|
||||
g_session.UpdateHomunSkill(value, 1);
|
||||
break;
|
||||
case ID_ZC_MER_SKILLINFO_UPDATE:
|
||||
} else if (Read<std::uint16_t>(bytes) == ID_ZC_MER_SKILLINFO_UPDATE) {
|
||||
g_session.UpdateMercSkill(value, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue