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; } }
U8 rnd_eb_prob (void) { if (!can_award_extra_ball ()) return 0; if (flag_test (FLAG_RANDOM_EB_GIVEN)) return 0; return 10; }
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); } }
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); }
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); }
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"); }
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 } }
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 (); }