From 7566949b424a96188ae73454680ac6fbf250b438 Mon Sep 17 00:00:00 2001 From: madeline Date: Tue, 28 Apr 2026 06:21:41 -0700 Subject: [PATCH] fix friendly fire achievement --- src/d/actor/d_a_alink_damage.inc | 13 +++++++++++++ src/d/actor/d_a_obj_carry.cpp | 9 --------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/d/actor/d_a_alink_damage.inc b/src/d/actor/d_a_alink_damage.inc index ac5175e314..e095fc0393 100644 --- a/src/d/actor/d_a_alink_damage.inc +++ b/src/d/actor/d_a_alink_damage.inc @@ -8,6 +8,10 @@ #include "d/actor/d_a_horse.h" #include "d/actor/d_a_crod.h" #include "d/d_msg_object.h" +#ifdef TARGET_PC +#include "d/actor/d_a_obj_carry.h" +#include "dusk/achievements.h" +#endif #if DEBUG #include "d/d_s_menu.h" @@ -677,6 +681,15 @@ BOOL daAlink_c::checkDamageAction() { } setDamagePoint(dmg, at_mtrl == dCcD_MTRL_FIRE || at_mtrl == dCcD_MTRL_ICE, TRUE, 0); + +#ifdef TARGET_PC + if (tghit_ac_name == fpcNm_Obj_Carry_e) { + auto* carry = static_cast(tghit_ac); + if (carry->prm_chk_type_ironball() && carry->checkCannon()) { + dusk::AchievementSystem::get().signal("iron_ball_hit_player"); + } + } +#endif if (armor_no_dmg && at_mtrl != dCcD_MTRL_ELECTRIC && at_mtrl != dCcD_MTRL_ICE) { setGuardSe(var_r29); diff --git a/src/d/actor/d_a_obj_carry.cpp b/src/d/actor/d_a_obj_carry.cpp index b83f9cd82f..a8265f69f6 100644 --- a/src/d/actor/d_a_obj_carry.cpp +++ b/src/d/actor/d_a_obj_carry.cpp @@ -21,9 +21,6 @@ #include "d/d_lib.h" #include "d/d_debug_viewer.h" #include "f_op/f_op_kankyo_mng.h" -#ifdef TARGET_PC -#include "dusk/achievements.h" -#endif static const cM3dGCylS l_cyl_info[] = { { 0.0f, 0.0f, 0.0f, 30.0f, 100.0f }, @@ -3585,12 +3582,6 @@ bool daObjCarry_c::cc_damage_proc_ironball() { } } -#ifdef TARGET_PC - if (mCannon && mCyl.ChkAtHit() && mCyl.GetAtHitAc() == daPy_getPlayerActorClass()) { - dusk::AchievementSystem::get().signal("iron_ball_hit_player"); - } -#endif - return var_r26; }