Exemple #1
0
static inline void left_ramp_speech_subtask (void)
{
	switch (left_ramps)
	{
		default:
			break;
		case 3:
			sound_send (SND_MOST_UNUSUAL_CAMERA);
			break;
		case 6:
			sound_send (SND_THIS_IS_NO_ORDINARY_GUMBALL);
			break;
		case 10:
			if (can_award_extra_ball ())
				sound_send (SND_GET_THE_EXTRA_BALL);
			else
				sound_send (SND_TEN_MILLION_POINTS);
			break;
		case 20:	
			sound_send (SND_YES);
			break;
	}


}
Exemple #2
0
U8 rnd_eb_prob (void)
{
	if (!can_award_extra_ball ())
		return 0;
	if (flag_test (FLAG_RANDOM_EB_GIVEN))
		return 0;
	return 10;
}
Exemple #3
0
CALLSET_ENTRY (deadend, sw_dead_end)
{
//	device_switch_can_follow (dead_end, slot, TIME_2S + TIME_500MS);
//	event_can_follow (dead_end, camera, TIME_2S);
	timer_restart_free (GID_DEADEND_TO_SLOT, TIME_4S);
	//event_can_follow (camera_or_piano, slot_prox, TIME_5S);

	if (lamp_test (LM_DEAD_END))
	{
		leff_start (LEFF_RIGHT_LOOP);
		dead_end_count++;
		deff_start_sync (DEFF_DEAD_END);
		if (!flag_test (FLAG_SNAKE_READY) && single_ball_play ())
		{
			flag_on (FLAG_SNAKE_READY);
			deff_start_sync (DEFF_SNAKE_READY);
		}
		switch (dead_end_count)
		{
			case 1:
				score (SC_250K);
				timed_game_extend (15);
				break;
			case 2:
				score (SC_500K);
				timed_game_extend (20);
				break;
			case 3:
				timed_game_extend (30);
				if (extra_ball_lit_from_deadend == FALSE 
					&& can_award_extra_ball ())
				{
					score (SC_1M);
					light_easy_extra_ball ();
					extra_ball_lit_from_deadend = TRUE;
				}
				else
				{
					score (SC_10M);
				}
				dead_end_count = 0;
				break;
			default:
				score (SC_2M);
				timed_game_extend (30);
				break;
		}
		lamp_off (LM_DEAD_END);
	}
	else
	{
		deff_start (DEFF_INLANE_LIGHTS_DEAD_END);
		award_unlit_shot (SW_DEAD_END);
		score (SC_100K);
		sound_send (SND_TOWN_SQUARE_AWARD);
		timed_game_pause (TIME_3S);
	}
}
Exemple #4
0
void award_left_ramp (void)
{
	if (left_ramps == 3)
		cameras_lit++;
	else if (left_ramps == 6)
		gumball_enable_count++;
	else if (left_ramps == 10 && can_award_extra_ball ())
		light_easy_extra_ball ();
	else if (left_ramps == 10 && !can_award_extra_ball ())
		score (SC_10M);
	else if (left_ramps == 20)
	{
		score (SC_20M);
		left_ramps = 0;
	}
	else
		score (SC_250K);
}
Exemple #5
0
void sslot_award (void)
{
	sslot_award_index_stored = sslot_award_index;
	task_kill_gid (GID_SSLOT_AWARD_ROTATE);
	
	/* Don't allow awarding the eb if we can't do so */
	if (!can_award_extra_ball ())
	{
		/* Pick another until it's not an EB */
		while (sslot_award_index_stored == 0)
		{
			sslot_award_index_stored = random_scaled(5);
		}
	}

	switch (sslot_award_index_stored)
	{
		case 0:
			sound_send (SND_GET_THE_EXTRA_BALL);
			light_easy_extra_ball ();
			break;
		case 1:
			sound_send (SND_THIS_IS_NO_ORDINARY_GUMBALL);
			gumball_enable_count++;
			break;
		case 2:
			sound_send (SND_ARE_YOU_READY_TO_BATTLE);
			mpf_enable_count++;
			break;
		case 3:
			sound_send (SND_MOST_UNUSUAL_CAMERA);
			cameras_lit++;
			break;
		case 4:
			sound_send (SND_TEN_MILLION_POINTS);
			score (SC_10M);
			if (!lamp_test (LM_PANEL_10M))
			{
				lamp_on (LM_PANEL_10M);
				door_panels_started++;
			}
			break;
		case 5:
			sound_send (SND_SEE_WHAT_GREED);
			score (SC_5M);
			break;
		default:
			score (SC_5M);
	}

	deff_start (DEFF_SSLOT_AWARD);
	sound_send (SND_SLOT_PAYOUT);
	lamp_tristate_off (LM_SLOT_MACHINE);
}
Exemple #6
0
static void left_ramp_deff_subtask (void)
{
	psprintf ("1 LEFT RAMP", "%d LEFT RAMPS", left_ramps);
	font_render_string_center (&font_bitoutline, 64, 7, sprintf_buffer);

	if (left_ramps < 3)
		sprintf ("CAMERA AT 3");
	else if (left_ramps == 3)
	{
		sprintf ("CAMERA LIT");
	}
	else if (left_ramps < 6)
		sprintf ("GUMBALL AT 6");
	else if (left_ramps == 6)
	{
		sprintf ("GUMBALL LIT");
	}
	else if (left_ramps < 10 && can_award_extra_ball ())
		sprintf ("EXTRA BALL AT 10");
	else if (left_ramps < 10 && !can_award_extra_ball ())
		sprintf ("10M AT 10");
	else if (left_ramps == 10)
	{
		if (can_award_extra_ball ())
			sprintf ("EXTRA BALL LIT");
		else	
			sprintf ("10 MILLION");
	}
	else if (left_ramps > 10)
		sprintf ("20 MILLION AT 20");
	else if (left_ramps == 20)
	{
		sprintf ("20 MILLION");
	}
	else
		sprintf ("VROOOM");
}
Exemple #7
0
void determine_allowable_pitstop_awards(void) {
    memset(allowable_pitstop_awards, 1, sizeof (allowable_pitstop_awards));
    memset(selected_pitstop_awards, DISABLED_AWARD, sizeof(selected_pitstop_awards));

    if (in_live_game) {
        if (have_collected_all_cars()) {
            allowable_pitstop_awards[AWARD_CAR] = FALSE;
        }

        // TODO if bonus multiplier is already 8x disallow it
        // TODO if lock is already lit, disallow it.

        if (global_flag_test(GLOBAL_FLAG_DRAGRACE_ENABLED)) {
            allowable_pitstop_awards[AWARD_LITE_DRAGRACE] = FALSE;
        }

        if (!can_award_extra_ball()) {
            allowable_pitstop_awards[AWARD_EXTRA_BALL] = FALSE;
        }

        if (!zr1_mb_can_award_lite_lock()) {
            allowable_pitstop_awards[AWARD_LITE_LOCK] = FALSE;
        }

        if (kickback_enabled()) {
            allowable_pitstop_awards[AWARD_LITE_KICKBACK] = FALSE;
        }

        // TODO if we've still got more than PITSTOP_AWARD_ITEMS allowable then disable the last awarded thing
    }

#ifdef DEBUG_PITSTOP_AWARD
    for (pitstop_award = 0; pitstop_award < PITSTOP_AWARD_COUNT; pitstop_award++) {
        dbprintf("award: %s (%d) is %s\n",
                 pitstop_award_options_titles[pitstop_award],
                 pitstop_award,
                 allowable_pitstop_awards[pitstop_award] ? "ALLOWED" : "DISABLED"
                );
    }
#endif

    // select 4 random items from the list
    U8 pitstop_awards_selected;

#ifdef DEBUG_PITSTOP_AWARD
    dbprintf("choosing %d random items\n", PITSTOP_AWARD_ITEMS);
#endif

    for (pitstop_awards_selected = 0; pitstop_awards_selected < PITSTOP_AWARD_ITEMS; pitstop_awards_selected++) {
        do {
            pitstop_award = random_scaled(PITSTOP_AWARD_COUNT);
#ifdef DEBUG_PITSTOP_AWARD
            dbprintf("random (1): %d\n", pitstop_award);
#endif
        } while (allowable_pitstop_awards[pitstop_award] == FALSE || have_already_selected_possible_award(pitstop_award));
        selected_pitstop_awards[pitstop_awards_selected] = pitstop_award;
#ifdef DEBUG_PITSTOP_AWARD
        dbprintf("selected award: %s (%d)\n", pitstop_award_options_titles[pitstop_award], pitstop_award);
#endif
    }
}
Exemple #8
0
void dead_end_deff (void)
{
	dmd_alloc_low_clean();
	sound_send (SND_DEAD_END_SCREECH);
	dmd_sched_transition (&trans_scroll_left);	
	frame_draw (IMG_NEWCAR);
	dmd_show2 ();
	dmd_alloc_pair_clean ();
	U16 fno;
	sound_send (SND_DEAD_END_CRASH);
	for (fno = IMG_EXPLODE_START; fno < IMG_EXPLODE_END; fno += 2)
	{
		dmd_map_overlay ();
		dmd_clean_page_low ();
		
		U8 x = random_scaled (4);
		U8 y = random_scaled (4);
		psprintf ("1 DEAD END", "%d DEAD ENDS", dead_end_count);
		font_render_string_center (&font_fireball, 64+x, 7+y, sprintf_buffer);
	
		dmd_text_outline ();
		dmd_alloc_pair ();
		frame_draw (fno);
		dmd_overlay_outline ();
		dmd_show2 ();
		task_sleep (TIME_66MS);
	}

	dmd_alloc_pair_clean ();
	psprintf ("1 DEAD END", "%d DEAD ENDS", dead_end_count);
	font_render_string_center (&font_fireball, 64, 7, sprintf_buffer);
	
	if (extra_ball_lit_from_deadend == FALSE && can_award_extra_ball())
	{
		if (dead_end_count < 3 )
			sprintf ("EXTRA BALL AT 3");
		else if (dead_end_count == 3)
		{
			sound_send (SND_GET_THE_EXTRA_BALL);
			sprintf ("EXTRA BALL LIT");
		}
	}
	else if (dead_end_count < 3)
	{
		sprintf ("10M AT 3");
	}
	else if (dead_end_count == 3)
	{
		sprintf ("10 MILLION");
	}
	else
	{
		sprintf ("");
	}
	
	font_render_string_center (&font_nayupixel10, 64, 21, sprintf_buffer);
	dmd_copy_low_to_high ();
	dmd_show2 ();
	task_sleep_sec (2);
	deff_exit ();
}