예제 #1
0
void prison_break_made (void) {
	++prison_break_mode_shots_made;
	score_add(prison_break_mode_score, prison_break_mode_last_score);
	score_add (prison_break_mode_score_total_score, prison_break_mode_last_score);
	score_long (prison_break_mode_last_score);
	deff_start (DEFF_PRISON_BREAK_HIT_EFFECT);//under /kernel/deff.c
}//end of function
예제 #2
0
파일: jets.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (jets, jet_hit)
{
//	task_recreate_gid (GID_JETS, jet_hit_task);
	//score_copy (temp_score, current_score);
	flasher_pulse (FLASH_RIGHT_HELMET);
	/* Make a sound, based on level */
	
	if (!free_timer_test (timer_jets_level_up))
		sound_send (jet_sounds[jets_level][jets_sound_index]);
	jets_sound_index++;
	if (jets_sound_index > 2)
		jets_sound_index = 0;
	
	if (timed_mode_running_p (&jets_frenzy_mode))
	{
		score (SC_500K);
	}
	else if (score_compare (total_jets_score, score_table[SC_500K]) >= 0)
	{
		timed_mode_begin (&jets_frenzy_mode);
		score (SC_500K);
		score_add (jets_frenzy_total, score_table[SC_500K]);

	}
	else
	{
		/* Score the hit, based on level */	
		score_add (total_jets_score, score_table[jets_hit_scores[jets_level]]);
		score_long (score_table[jets_hit_scores[jets_level]]);
		bounded_increment (jets_hit, 255);
		/* Level up if needed */
		if (jets_hit >= jets_needed[jets_level])
		{
			bounded_increment (jets_level, 4);
			score_long (score_table[jets_level_up_scores[jets_level]]);
			jets_hit = 0;
			free_timer_restart (timer_jets_level_up, TIME_2S);
			sound_send (SND_WHOOSH_UP_1);
		}
	
		if ((score_compare (total_jets_score, score_table[SC_250K]) >= 0) && !flag_test (FLAG_250K_JETS))
			callset_invoke (wheel_award_jets);
		deff_restart (DEFF_JET_HIT);
	}

}
예제 #3
0
파일: rules.c 프로젝트: Dmilo/freewpc
CALLSET_ENTRY (hurryup, trunk_hole_shot)
{
	if (hurryup_is_running ())
	{
		score_long (hurryup_value);
		fixed_ladder_advance (&hurryup_scoring);
	}
}
예제 #4
0
CALLSET_ENTRY (eject, dev_eyeball_eject_enter) {
	if (!in_game) {
		sol_request (SOL_EJECT);
		task_sleep (TIME_1S);
	}
	else {
			//HUXLEY MADE
			if ( !get_back_in_the_fridge_running()
				&&	!get_back_in_the_fridge_ending()
				&&	task_kill_gid(GID_LEFT_INLANE_MADE)  && !in_tilt) {
				is_normal_eject_killed = TRUE;
				huxley_made();
				return;
			}//end of huxley made

			//START VIDEO MODE
			else if (  (system_config.disable_kaboom  == NO || system_config.disable_simon_says == NO || system_config.disable_shooter == NO)
					&&	flag_test (FLAG_VIDEO_MODE_ENABLED)
					&&  !in_tilt
					&&	!get_back_in_the_fridge_running()
					&&	!get_back_in_the_fridge_ending()
					&& !get_fortress_running ()
					&& !get_museum_running ()
					&& !get_cryoprison_running ()
					&& !get_wasteland_running ()
					&& !get_demotime_running ()
					&& !is_frenzy_running () ) {       //this is here since starting frenzy dumps ball into eject hole
					switch (get_next_video_mode() ) {
							case 0: start_kaboom(); 		break;
							case 1: start_simon_says(); 	break;
							case 2: start_shooter(); 		break;
							}//end of switch
							combo_rehit_check (); //check to see if enough combos to relight video mode
							//we just returned from video mode so flash the lights before you fire the coil
							leff_start (LEFF_EJECT);
							task_sleep (TIME_500MS);

							sol_request (SOL_EJECT); //request to fire the eject sol
							task_create_gid1 (GID_EJECT_1, eject_switch_task);
							ball_search_monitor_start ();
							task_sleep (TIME_300MS);
			}//end of start video mode

			//NORMAL RETINA SCAN
			else if (!is_normal_eject_killed ) {
					if (!in_tilt) {
						score (EJECT_SCORE);
						//100k per jet hit here
						if (jet_shots_made > 0) {
							score_zero (temp_score);//zero out temp score
							score_add (temp_score, score_table[SC_100K]);//multiply 100K by jet count
							score_mul (temp_score, jet_shots_made);//multiply 100K by jet count
							score_long (temp_score); //add temp score to player's score
						}//end of if

						if (retina_scan_multiplier == 2)	{
							sound_start(ST_SPEECH, SPCH_DOUBLE_RETINA_SCAN, SL_4S, PRI_GAME_QUICK4);
							score (EJECT_SCORE);
							score_long (temp_score); //add temp score to player's score
						}

						leff_start (LEFF_EJECT);
						sound_start (ST_SAMPLE, RETINA_SCAN_LONG, SL_4S, PRI_GAME_QUICK1);
						deff_start (DEFF_EJECT_EFFECT);
						task_sleep (TIME_300MS);
					}//end of not in tilt
						sol_request (SOL_EJECT); //request to fire the eject sol
						task_create_gid1 (GID_EJECT_1, eject_switch_task);//this is a 2 second ball save timer for eject coil
			}//end of else !is_normal_eject_killed = FALSE
	}//end of else in game
}//end of function
예제 #5
0
CALLSET_ENTRY (eject, dev_eyeball_eject_enter) {
	//HUXLEY MADE
	if ( !flag_test(FLAG_BACK_IN_THE_FRIDGE_RUNNING)
		&&	task_kill_gid(GID_LEFT_INLANE_MADE) ) {
//		flag_on(FLAG_KILL_NORMAL_EJECT);
		huxley_made();
		return;
//		task_sleep (TIME_300MS);//give time for huxley to catch up
	}

	//START VIDEO MODE
	else if (  !flag_test(FLAG_BACK_IN_THE_FRIDGE_RUNNING)
			&& !flag_test(FLAG_IS_FORTRESS_MB_RUNNING)
			&& !flag_test(FLAG_IS_MUSEUM_MB_RUNNING)
			&& !flag_test(FLAG_IS_CRYOPRISON_MB_RUNNING)
			&& !flag_test(FLAG_IS_WASTELAND_MB_RUNNING)
			&& !flag_test(FLAG_IS_DEMOTIME_RUNNING)
			&&	flag_test (FLAG_VIDEO_MODE_ENABLED) ) {
//						flag_on(FLAG_KILL_NORMAL_EJECT);
						start_video_mode(3);

						sound_start (ST_ANY, SPCH_PLAYER_TWO, SL_1S, PRI_GAME_QUICK5);
						task_sleep (TIME_500MS);
						task_sleep (TIME_500MS);
						task_sleep (TIME_500MS);
						task_sleep (TIME_500MS);


						combo_rehit_check (); //check to see if enough combos to relight video mode
						sol_request (SOL_EJECT); //request to fire the eject sol
						ball_search_monitor_start ();
//						return;
						task_sleep (TIME_300MS);
	}//end of start video mode

	//NORMAL RETINA SCAN
	else //if (!flag_test(FLAG_KILL_NORMAL_EJECT) )
	{
						leff_start (LEFF_EJECT);

						sound_start (ST_SAMPLE, RETINA_SCAN_LONG, SL_4S, PRI_GAME_QUICK1);
						score (EJECT_SCORE);
						//100k per jet hit here
						if (jet_shots_made > 0) {
							score_zero (temp_score);//zero out temp score
							score_add (temp_score, score_table[SC_100K]);//multiply 100K by jet count
							score_mul (temp_score, jet_shots_made);//multiply 100K by jet count
							score_long (temp_score); //add temp score to player's score
						}//end of if

						if (retina_scan_multiplier == 2)	{
							sound_start(ST_SPEECH, SPCH_DOUBLE_RETINA_SCAN, SL_4S, PRI_GAME_QUICK5);
							score (EJECT_SCORE);
							score_long (temp_score); //add temp score to player's score
						}

						deff_start (DEFF_EJECT_EFFECT);
						task_sleep_sec (1);

						sol_request (SOL_EJECT); //request to fire the eject sol
	}//end of else !flag_test(FLAG_KILL_NORMAL_EJECT)
}//end of function
예제 #6
0
CALLSET_ENTRY (multiball, score_super_jackpot)
{
	score_long (super_jackpot_value);
	deff_start (DEFF_SUPER_JACKPOT);
	global_flag_off (GLOBAL_FLAG_SUPER_JACKPOT_LIT);
}