diff --git a/common/main/escort.h b/common/main/escort.h index b3669cfba..8544578e5 100644 --- a/common/main/escort.h +++ b/common/main/escort.h @@ -13,9 +13,8 @@ #pragma once #include "maths.h" - -#ifdef __cplusplus #include "fwd-object.h" +#include "fwd-vclip.h" #ifdef dsx namespace dsx { @@ -23,7 +22,7 @@ namespace dsx { static inline void detect_escort_goal_accomplished(const vmobjptridx_t &) { } -static inline void drop_stolen_items (const vcobjptr_t &) {} +static inline void drop_stolen_items (fvmsegptridx &, d_level_unique_object_state &, const d_vclip_array &, const object_base &) {} #elif defined(DXX_BUILD_DESCENT_II) #define GUIDEBOT_NAME_LEN 9 struct netgame_info; @@ -35,7 +34,7 @@ void set_escort_special_goal(d_unique_buddy_state &BuddyState, int key); void recreate_thief(uint8_t thief_id); void init_buddy_for_level(void); void invalidate_escort_goal(d_unique_buddy_state &); -void drop_stolen_items (vcobjptr_t); +void drop_stolen_items (fvmsegptridx &vmsegptridx, d_level_unique_object_state &LevelUniqueObjectState, const d_vclip_array &Vclip, const object_base &); unsigned check_warn_local_player_can_control_guidebot(fvcobjptr &vcobjptr, const d_unique_buddy_state &, const netgame_info &Netgame); enum escort_goal_t : uint8_t @@ -70,5 +69,3 @@ enum escort_goal_t : uint8_t #endif } #endif - -#endif diff --git a/d2x-rebirth/main/escort.cpp b/d2x-rebirth/main/escort.cpp index c0c2cd228..76c133d55 100644 --- a/d2x-rebirth/main/escort.cpp +++ b/d2x-rebirth/main/escort.cpp @@ -1842,15 +1842,15 @@ void init_thief_for_level(void) } // -------------------------------------------------------------------------------------------------------------- -void drop_stolen_items(const vcobjptr_t objp) +void drop_stolen_items(fvmsegptridx &vmsegptridx, d_level_unique_object_state &LevelUniqueObjectState, const d_vclip_array &Vclip, const object_base &objp) { auto &ThiefUniqueState = LevelUniqueObjectState.ThiefState; - const auto &&segp = vmsegptridx(objp->segnum); + const auto &&segp = vmsegptridx(objp.segnum); range_for (auto &i, ThiefUniqueState.Stolen_items) { if (i != 255) { - drop_powerup(Vclip, std::exchange(i, 255), 1, objp->mtype.phys_info.velocity, objp->pos, segp, true); + drop_powerup(Vclip, std::exchange(i, 255), 1, objp.mtype.phys_info.velocity, objp.pos, segp, true); } } diff --git a/similar/main/fireball.cpp b/similar/main/fireball.cpp index 561b5ec4b..a8705c054 100644 --- a/similar/main/fireball.cpp +++ b/similar/main/fireball.cpp @@ -1465,7 +1465,7 @@ void do_explosion_sequence(object &obj) } #if defined(DXX_BUILD_DESCENT_II) if (robot_is_thief(robptr)) - drop_stolen_items(del_obj); + drop_stolen_items(vmsegptridx, LevelUniqueObjectState, Vclip, del_obj); else if (robot_is_companion(robptr)) { DropBuddyMarker(del_obj); diff --git a/similar/main/multibot.cpp b/similar/main/multibot.cpp index ae2aa1de0..962e90978 100644 --- a/similar/main/multibot.cpp +++ b/similar/main/multibot.cpp @@ -959,7 +959,7 @@ int multi_explode_robot_sub(const vmobjptridx_t robot) multi_drop_robot_powerups(robot); } if (robot_is_thief(Robot_info[get_robot_id(robot)])) - drop_stolen_items(robot); + drop_stolen_items(vmsegptridx, LevelUniqueObjectState, Vclip, robot); if (Robot_info[get_robot_id(robot)].boss_flag) { if (!BossUniqueState.Boss_dying)