restore boss heart container bouncing physics

This commit is contained in:
gymnast86
2026-08-29 01:31:45 -07:00
parent 1944a797d9
commit 0231f8f0fa
5 changed files with 33 additions and 0 deletions
+1
View File
@@ -1478,6 +1478,7 @@ set(DUSK_FILES
src/dusk/mods/loader/prepatch.cpp
src/dusk/mods/loader/prepatch.hpp
src/dusk/mods/item.hpp
src/dusk/mods/item_actor.cpp
src/dusk/mods/item_checks.cpp
src/dusk/mods/item_gives.cpp
src/dusk/mods/log_buffer.cpp
+9
View File
@@ -99,6 +99,15 @@ int daObjLife_c::Create() {
mRotateSpeed = 7000;
#if TARGET_PC
// Restore speeds that were skipped if created from a boss with create instead of fastCreate
auto bossItemSpeeds = dusk::mods::get_boss_item_actor_speeds();
if (bossItemSpeeds.f != 0.f || bossItemSpeeds.y != 0.f) {
mOverrideHover = false;
speedF = bossItemSpeeds.f;
speed.y = bossItemSpeeds.y;
dusk::mods::set_boss_item_actor_speeds(0.f, 0.f);
}
if (mOverrideHover) {
fopAcM_SetGravity(this, 0.0f);
mRotateSpeed = 550;
+7
View File
@@ -58,6 +58,13 @@ uint32_t item_check_message(uint16_t group, uint32_t messageId);
bool item_give_queue_dispatching();
uint32_t item_give_queue_take_tag();
struct BossItemActorSpeeds {
f32 f;
f32 y;
};
void set_boss_item_actor_speeds(f32 f, f32 y);
BossItemActorSpeeds get_boss_item_actor_speeds();
namespace detail {
struct CommittedCheck {
uint8_t vanillaItem = 0;
+15
View File
@@ -0,0 +1,15 @@
#include "item.hpp"
namespace dusk::mods {
static BossItemActorSpeeds bossItemActorSpeeds{};
void set_boss_item_actor_speeds(f32 f, f32 y) {
bossItemActorSpeeds.f = f;
bossItemActorSpeeds.y = y;
}
BossItemActorSpeeds get_boss_item_actor_speeds() {
return bossItemActorSpeeds;
}
}
+1
View File
@@ -1621,6 +1621,7 @@ fpc_ProcID fopAcM_createItemForBoss(const cXyz* i_pos, int i_itemNo, int i_roomN
if (i_itemNo != originalItemNo) {
const u32 params = 0xFFFF0000 | param_8 << 8 | (i_itemNo & 0xFF);
dusk::mods::set_boss_item_actor_speeds(i_speedF, i_speedY);
return fopAcM_create(fpcNm_Obj_LifeContainer_e, params, i_pos, i_roomNo, i_angle,
i_scale, -1, giveTag, originalItemNo);
}