27 static int Player_afterburner_loop_id;
28 static int Player_afterburner_loop_delay;
29 static int Player_disengage_timer;
30 static float Player_afterburner_vol;
31 static int Player_afterburner_start_time;
39 #define MIN_AFTERBURNER_FUEL_TO_ENGAGE 10
41 #define AFTERBURNER_DEFAULT_VOL 0.5f // default starting volume (0.0f -> 1.0f)
42 #define AFTERBURNER_PERCENT_VOL_ATTENUATE 0.30f // % at which afterburner volume is reduced
43 #define AFTERBURNER_PERCENT_FOR_LOOP_SND 0.33f
44 #define AFTERBURNER_VOLUME_UPDATE 250 // consider changing afterburner volume every 100 ms
45 #define AFTERBURNER_LOOP_DELAY 200 // ms after engage, to start looping sound
47 #define DISENGAGE_TIME 1500 // time in ms to play faded loop sound when afterburner disengages
55 Player_disengage_timer = 1;
57 Player_afterburner_loop_id = -1;
58 Player_afterburner_start_time = 0;
95 if ( (now - Player_afterburner_start_time) < 1300 ) {
136 Player_disengage_timer = 1;
143 Player_afterburner_loop_delay = 0;
176 static int volume_chg_timer = 1;
203 if ( remaining <= 0 ) {
207 snd_set_volume( Player_afterburner_loop_id, remaining*Player_afterburner_vol);
211 if ( Player_disengage_timer != 1 ) {
223 float recharge_scale;
253 Player_afterburner_loop_delay = 0;
254 if ( Player_afterburner_loop_id == -1 ) {
256 snd_set_volume(Player_afterburner_loop_id, Player_afterburner_vol);
262 float percent_afterburner_left;
267 snd_set_volume(Player_afterburner_loop_id, Player_afterburner_vol);
297 nprintf((
"Warning",
"Ship type %s does not have afterburner capability\n", sip->
name));
316 if ( !key_released ) {
320 if ( Player_afterburner_loop_id > -1 ) {
334 if ( Player_afterburner_loop_id != -1 ) {
335 snd_stop(Player_afterburner_loop_id);
338 Player_afterburner_loop_id = -1;
339 Player_disengage_timer = 1;
340 Player_afterburner_loop_delay = 0;
bool model_anim_start_type(ship_subsys *pss, int animation_type, int subtype, int direction, bool instant)
int timestamp(int delta_ms)
#define MULTIPLAYER_CLIENT
void joy_ff_afterburn_on()
#define AFTERBURNER_DEFAULT_VOL
SCP_vector< game_snd > Snds
void afterburner_stop_sounds()
void joy_ff_afterburn_off()
float afterburner_fuel_capacity
#define CHA_AFTERBURNSTART
#define PF_AFTERBURNER_WAIT
script_state Script_system("FS2_Open Scripting")
void afterburners_stop(object *objp, int key_released)
void afterburners_update(object *objp, float fl_frametime)
#define ANIMATION_SUBTYPE_ALL
int timestamp_until(int stamp)
ai_profile_t * ai_profile
int ship_get_sound(object *objp, GameSoundsIndex id)
Returns a ship-specific sound index.
int snd_play_3d(game_snd *gs, vec3d *source_pos, vec3d *listen_pos, float radius, vec3d *source_vel, int looping, float vol_scale, int priority, vec3d *sound_fvec, float range_factor, int force, bool is_ambient)
void afterburner_level_init()
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
int engine_recharge_index
#define MIN_AFTERBURNER_FUEL_TO_ENGAGE
float afterburner_recharge_scale[NUM_SKILL_LEVELS]
float Energy_levels[NUM_ENERGY_LEVELS]
#define SND_PRIORITY_MUST_PLAY
#define AFTERBURNER_VOLUME_UPDATE
int RunCondition(int condition, char format='\0', void *data=NULL, class object *objp=NULL, int more_data=0)
void SetHookObjects(int num,...)
void afterburners_start(object *objp)
#define AFTERBURNER_PERCENT_VOL_ATTENUATE
int snd_play_looping(game_snd *gs, float pan, int start_loop, int stop_loop, float vol_scale, int scriptingUpdateVolume)
afterburner fail (no fuel when aburn pressed)
void RemHookVars(unsigned int num,...)
#define MULTIPLAYER_MASTER
void snd_set_volume(int sig, float volume)
SCP_vector< ship_info > Ship_info
#define SF2_AFTERBURNER_LOCKED
#define timestamp_elapsed(stamp)
#define AFTERBURNER_LOOP_DELAY
#define TRIGGER_TYPE_AFTERBURNER
#define PF_AFTERBURNER_ON
float afterburner_recover_rate
int timer_get_milliseconds()
#define AFTERBURNER_PERCENT_FOR_LOOP_SND
float afterburner_burn_rate
afterburner burn sound (looped)