Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions code/ship/afterburner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ static sound_handle Player_afterburner_loop_id; // identifies the looping afterb
static int Player_afterburner_loop_delay; // timestamp used to time the start of the looping afterburner sound
static int Player_disengage_timer;
static float Player_afterburner_vol;
static int Player_afterburner_start_time;
static TIMESTAMP Player_afterburner_start_time;


// ----------------------------------------------------------
Expand All @@ -53,7 +53,7 @@ void afterburner_level_init()
Player_disengage_timer = 1;
Player_afterburner_vol = AFTERBURNER_DEFAULT_VOL;
Player_afterburner_loop_id = sound_handle::invalid();
Player_afterburner_start_time = 0;
Player_afterburner_start_time = TIMESTAMP::invalid();
}

/**
Expand Down Expand Up @@ -88,9 +88,9 @@ void afterburners_start(object *objp)

shipp->flags.set(Ship::Ship_Flags::Attempting_to_afterburn);

int now = timer_get_milliseconds();

if (now - shipp->afterburner_last_end_time < (int)(sip->afterburner_cooldown_time * 1000.0f)) {
// Measured in mission time, so the delays last as long as specified under time compression or a pause.
// They start invalid, because the mission clock may still be near zero when the first mission begins.
if (shipp->afterburner_last_end_time.isFinite() && timestamp_since(shipp->afterburner_last_end_time) < (int)(sip->afterburner_cooldown_time * 1000.0f)) {

if ((objp->flags[Object::Object_Flags::Player_ship]) && (objp == Player_obj))
snd_play(gamesnd_get_game_sound(ship_get_sound(objp, GameSounds::ABURN_FAIL)));
Expand All @@ -101,7 +101,7 @@ void afterburners_start(object *objp)

if ( (objp->flags[Object::Object_Flags::Player_ship]) && (objp == Player_obj) ) {

if ( (now - Player_afterburner_start_time) < 1300 ) {
if ( Player_afterburner_start_time.isFinite() && timestamp_since(Player_afterburner_start_time) < 1300 ) {
snd_play( gamesnd_get_game_sound(ship_get_sound(objp, GameSounds::ABURN_FAIL)) );
return;
}
Expand Down Expand Up @@ -143,7 +143,7 @@ void afterburners_start(object *objp)
Ship_info[shipp->ship_info_index].animations.getAll(model_get_instance(shipp->model_instance_num), animation::ModelAnimationTriggerType::Afterburner).start(animation::ModelAnimationDirection::FWD);

if ( objp == Player_obj ) {
Player_afterburner_start_time = timer_get_milliseconds();
Player_afterburner_start_time = _timestamp();
Player_disengage_timer = 1;
Player_afterburner_vol = AFTERBURNER_DEFAULT_VOL;

Expand Down Expand Up @@ -330,7 +330,7 @@ void afterburners_stop(object *objp, int key_released)
return;
}

shipp->afterburner_last_end_time = timer_get_milliseconds();
shipp->afterburner_last_end_time = _timestamp();

if (scripting::hooks::OnAfterburnerEnd->isActive()) {
scripting::hooks::OnAfterburnerEnd->run(scripting::hooks::ShipSourceConditions{ shipp },
Expand Down
2 changes: 1 addition & 1 deletion code/ship/ship.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6970,7 +6970,7 @@ void ship::clear()

afterburner_fuel = 0.0f;
afterburner_last_engage_fuel = 0.0f;
afterburner_last_end_time = 0;
afterburner_last_end_time = TIMESTAMP::invalid();

cmeasure_count = 0;
current_cmeasure = -1;
Expand Down
2 changes: 1 addition & 1 deletion code/ship/ship.h
Original file line number Diff line number Diff line change
Expand Up @@ -756,7 +756,7 @@ class ship
float afterburner_fuel; // amount of afterburner fuel remaining (capacity is stored
// as afterburner_fuel_capacity in ship_info).
float afterburner_last_engage_fuel; // the fuel level when the afterburners were last engaged
int afterburner_last_end_time; // timestamp when the ship last stopped its afterburner
TIMESTAMP afterburner_last_end_time; // when the ship last stopped its afterburner

int cmeasure_count; // Number of charges of countermeasures this ship can hold.
int current_cmeasure; // Currently selected countermeasure.
Expand Down