Emulate D1 bosses more accurately
Use D1 timing for gating, cloaking, and teleporting
This commit is contained in:
parent
49fd1f358e
commit
184be218b7
|
@ -122,9 +122,11 @@ namespace dsx {
|
|||
struct d_level_shared_boss_state : ::dcx::d_level_shared_boss_state
|
||||
{
|
||||
// Time between cloaks
|
||||
using D1_Boss_cloak_interval = std::integral_constant<fix, F1_0 * 10>;
|
||||
using D1_Boss_teleport_interval = std::integral_constant<fix, F1_0 * 8>;
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
static constexpr std::integral_constant<fix, F1_0 * 10> Boss_cloak_interval{};
|
||||
static constexpr std::integral_constant<fix, F1_0 * 8> Boss_teleport_interval{};
|
||||
static constexpr D1_Boss_cloak_interval Boss_cloak_interval{};
|
||||
static constexpr D1_Boss_teleport_interval Boss_teleport_interval{};
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
fix Boss_cloak_interval;
|
||||
fix Boss_teleport_interval;
|
||||
|
|
|
@ -596,25 +596,35 @@ void init_ai_objects(void)
|
|||
Boss_dying = 0;
|
||||
|
||||
const auto Difficulty_level = GameUniqueState.Difficulty_level;
|
||||
#define D1_Boss_gate_interval F1_0*5 - Difficulty_level*F1_0/2
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
GameUniqueState.Boss_gate_interval = F1_0*5 - Difficulty_level*F1_0/2;
|
||||
GameUniqueState.Boss_gate_interval = D1_Boss_gate_interval;
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
GameUniqueState.Boss_gate_interval = F1_0*4 - Difficulty_level*i2f(2)/3;
|
||||
|
||||
ai_do_cloak_stuff();
|
||||
|
||||
init_buddy_for_level();
|
||||
|
||||
if (Current_mission && (Current_level_num == Last_level))
|
||||
if (EMULATING_D1)
|
||||
{
|
||||
LevelSharedBossState.Boss_cloak_interval = d_level_shared_boss_state::D1_Boss_cloak_interval::value;
|
||||
LevelSharedBossState.Boss_teleport_interval = d_level_shared_boss_state::D1_Boss_teleport_interval::value;
|
||||
GameUniqueState.Boss_gate_interval = D1_Boss_gate_interval;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameUniqueState.Boss_gate_interval = F1_0*4 - Difficulty_level*i2f(2)/3;
|
||||
if (Current_level_num == Last_level)
|
||||
{
|
||||
LevelSharedBossState.Boss_teleport_interval = F1_0*10;
|
||||
LevelSharedBossState.Boss_cloak_interval = F1_0*15; // Time between cloaks
|
||||
} else
|
||||
{
|
||||
} else
|
||||
{
|
||||
LevelSharedBossState.Boss_teleport_interval = F1_0*7;
|
||||
LevelSharedBossState.Boss_cloak_interval = F1_0*10; // Time between cloaks
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#undef D1_Boss_gate_interval
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue