Decompile 6 functions in Source/Contents/Skills/SkillActionDruid.cpp

Batch #17403 by Yommy: 0 byte-identical, 6 confirmed by peer review.

- fn_04472 CSkillAction_DR_BLOOD_HOWLING::OnSkillEffect: logic confirmed by peer review
- fn_04476 CSkillAction_DR_NOMERCY_CLAW::OnSkillEffect: logic confirmed by peer review
- fn_04485 CSkillAction_DR_ENRAGE_RAPTOR::OnSkillEffect: logic confirmed by peer review
- fn_04522 CSkillAction_DR_TRUTH_OF_EARTH::OnSkillEffect: logic confirmed by peer review
- fn_04540 CSkillAction_DR_CUTTING_WIND::OnSkillEffect: logic confirmed by peer review
- fn_04545 CSkillAction_DR_WIND_BOMB::OnSkillEffect: logic confirmed by peer review

Peer-reviewed-by: eAthena, bibinir
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
ragnarok-clanker 2026-11-11 22:25:54 +00:00
commit aaff504e6d

View file

@ -822,14 +822,16 @@ void CSkillAction_DR_TRUTH_OF_EARTH::OnSkillEffect(int level, CGameActor* source
return;
}
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId([] {
EffectLists* effects = g_effectMgr;
effects->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId([] {
constexpr auto bytesText = CRYPT_NAME("truth_of_earth", 0xC7912587FFF31B71ULL);
const auto& bytes = bytesText.data;
thread_local EncryptedName<sizeof(bytes), 0xC7912587FFF31B71ULL> name(bytes);
return name.Text();
}()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId([] {
effects = g_effectMgr;
effects->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId([] {
constexpr auto bytesText = CRYPT_NAME("truth_of_earth_bottom", 0x69D345DB950F336DULL);
const auto& bytes = bytesText.data;
thread_local EncryptedName<sizeof(bytes), 0x69D345DB950F336DULL> name(bytes);
@ -984,7 +986,8 @@ void CSkillAction_DR_CUTTING_WIND::OnSkillEffect(int level, CGameActor* source,
return;
}
if (CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId([] {
EffectLists* effects = g_effectMgr;
if (CEffect* effect = effects->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId([] {
constexpr auto bytesText = CRYPT_NAME("cutting_wind", 0x4F1791FB1503C713ULL);
const auto& bytes = bytesText.data;
thread_local EncryptedName<sizeof(bytes), 0x4F1791FB1503C713ULL> name(bytes);
@ -1043,7 +1046,8 @@ void CSkillAction_DR_WIND_BOMB::OnSkillEffect(int level, CGameActor* source, CGa
constexpr auto effectSourceText = CRYPT_NAME("wind_bomb_main", 0xD1538513DF975701ULL);
const auto& effectSource = effectSourceText.data;
thread_local EncryptedName<sizeof(effectSource), 0xD1538513DF975701ULL> effectName(effectSource);
if (CEffect* effect = g_effectMgr->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0)) {
EffectLists* effects = g_effectMgr;
if (CEffect* effect = effects->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0)) {
effect->SetDelay(300);
}
}
@ -1190,7 +1194,8 @@ void CSkillAction_DR_BLOOD_HOWLING::OnSkillEffect(int level, CGameActor* source,
constexpr auto effectSourceText = CRYPT_NAME("blood_howling", 0xD98F03A52D35636DULL);
const auto& effectSource = effectSourceText.data;
thread_local EncryptedName<sizeof(effectSource), 0xD98F03A52D35636DULL> effectName(effectSource);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
EffectLists* effects = g_effectMgr;
effects->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
}
// OFFSET: 0x006207B0
@ -1203,7 +1208,8 @@ void CSkillAction_DR_NOMERCY_CLAW::OnSkillEffect(int level, CGameActor* source,
constexpr auto effectSourceText = CRYPT_NAME("nomercy_claw", 0x0F0F8B6B8F9D19D1ULL);
const auto& effectSource = effectSourceText.data;
thread_local EncryptedName<sizeof(effectSource), 0x0F0F8B6B8F9D19D1ULL> effectName(effectSource);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
EffectLists* effects = g_effectMgr;
effects->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
}
// OFFSET: 0x006210B0
@ -1216,7 +1222,8 @@ void CSkillAction_DR_ENRAGE_RAPTOR::OnSkillEffect(int level, CGameActor* source,
constexpr auto effectSourceText = CRYPT_NAME("enrage_raptor", 0x812BE72BCD5707B7ULL);
const auto& effectSource = effectSourceText.data;
thread_local EncryptedName<sizeof(effectSource), 0x812BE72BCD5707B7ULL> effectName(effectSource);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
EffectLists* effects = g_effectMgr;
effects->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId(effectName.Text()), vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
}
// OFFSET: 0x00621370