CALLSET_ENTRY (mpf, lamp_update) { lamplist_apply (LAMPLIST_MPF, lamp_off); lamplist_apply (LAMPLIST_MPF, lamp_flash_off); switch (mpf_level) { case 0: lamp_flash_on (LM_MPF_100K); break; case 1: lamp_on (LM_MPF_100K); lamp_flash_on (LM_MPF_200K); break; case 2: lamp_on (LM_MPF_100K); lamp_on (LM_MPF_200K); lamp_flash_on (LM_MPF_300K); break; case 3: lamp_flash_on (LM_MPF_100K); lamp_flash_on (LM_MPF_200K); lamp_flash_on (LM_MPF_300K); callset_invoke (head_enable_divert); break; default: break; } }
/* 'Dead End' Lane */ CALLSET_ENTRY (lanes, sw_right_inlane) { event_can_follow (left_or_right_inlane, either_outlane, TIME_1S); lamp_on (LM_RIGHT_INLANE); check_rollover (); score (SC_1K); /* Light Dead end if not lit */ lamp_on (LM_DEAD_END); timer_restart_free (GID_TNF_READY, TIME_4S); //event_can_follow (right_inlane, left_ramp, TIME_4S); }
void logic_headlamp(uint8_t state) { if (state) { /* headlamp switch on */ lamp_on(LAMP_HEADLAMP); lamp_on(LAMP_TAILLAMP); usart_send(PACK_WORDS(MSG_LAMP_HEADLAMP, ON)); } else { /* headlamp switch off */ lamp_off(LAMP_HEADLAMP); lamp_off(LAMP_TAILLAMP); usart_send(PACK_WORDS(MSG_LAMP_HEADLAMP, OFF)); } }
CALLSET_ENTRY (magic_spell, sw_ramp_targets) { score (SC_5K); if (magic_relight_ramp_count > 0) { if (--magic_relight_ramp_count == 0) { if (!lamp_test (LM_CENTER_MAGIC)) lamp_on (LM_CENTER_MAGIC); else if (!lamp_test (LM_RIGHT_MAGIC)) lamp_on (LM_RIGHT_MAGIC); } } }
CALLSET_ENTRY (jets, lamp_update) { if (!timed_mode_running_p (&jets_frenzy_mode)) { lamplist_apply (LAMPLIST_JETS_ENTER, lamp_off); if (score_compare (total_jets_score, score_table[SC_25K]) >= 0) lamp_on (LM_JETS_25K); if (score_compare (total_jets_score, score_table[SC_50K]) >= 0) lamp_on (LM_JETS_50K); if (score_compare (total_jets_score, score_table[SC_100K]) >= 0) lamp_on (LM_JETS_100K); if (score_compare (total_jets_score, score_table[SC_500K]) >= 0) lamp_on (LM_JETS_500K); } }
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); }
void logic_reverse(uint8_t state) { if (state) { /* reverse switch on */ lamp_on(LAMP_REVERSE); usart_send(PACK_WORDS(MSG_LAMP_REVERSE, ON)); } else { /* reverse switch off */ lamp_off(LAMP_REVERSE); usart_send(PACK_WORDS(MSG_LAMP_REVERSE, OFF)); } }
void logic_highbeam(uint8_t state) { if (state) { /* highbeam switch on */ lamp_on(LAMP_HIGHBEAM); usart_send(PACK_WORDS(MSG_LAMP_HIGHBEAM, ON)); } else { /* highbeam switch off */ lamp_off(LAMP_HIGHBEAM); usart_send(PACK_WORDS(MSG_LAMP_HIGHBEAM, OFF)); } }
void logic_brake(uint8_t state) { if (state) { /* brake switch on */ lamp_on(LAMP_BRAKE); usart_send(PACK_WORDS(MSG_LAMP_BRAKE, ON)); } else { /* brake switch off */ lamp_off(LAMP_BRAKE); usart_send(PACK_WORDS(MSG_LAMP_BRAKE, OFF)); } }
/* 'Light Slot Machine' Lane */ CALLSET_ENTRY (lanes, sw_left_inlane_2) { if (!lamp_test (LM_LEFT_INLANE2) && spiralaward_set_completed == FALSE) { callset_invoke(start_spiralaward_timer); } lamp_on (LM_LEFT_INLANE2); check_rollover (); score (SC_1K); event_can_follow (left_inlane_2, right_loop, TIME_3S); }
CALLSET_ENTRY (deadend, start_player) { /* Don't allow lighting extra ball if impossible * or if previously collected */ if (system_config.max_ebs == 0) extra_ball_lit_from_deadend = TRUE; else extra_ball_lit_from_deadend = FALSE; dead_end_count = 0; lamp_on (LM_DEAD_END); }
void logic_rturn(uint8_t state) { if (state) { /* right-turn switch on */ blinker_on(LAMP_RTURN); lamp_on(LAMP_RTURN); usart_send(PACK_WORDS(MSG_LAMP_RTURN, ON)); } else { /* right-turn switch off */ blinker_off(LAMP_RTURN); lamp_off(LAMP_RTURN); usart_send(PACK_WORDS(MSG_LAMP_RTURN, OFF)); } }
/* 'Light Spiral' Lane */ CALLSET_ENTRY (lanes, sw_left_inlane_1) { event_can_follow (left_or_right_inlane, either_outlane, TIME_1S); /* Start the spiralaward timer only if the lane has * just been lit */ if (!lamp_test (LM_LEFT_INLANE1) && spiralaward_set_completed == FALSE) { callset_invoke (start_spiralaward_timer); } lamp_on (LM_LEFT_INLANE1); check_rollover (); score (SC_1K); event_can_follow (left_inlane_1, right_loop, TIME_3S); }
void mute_and_pause_monitor (void) { flipper_hold_on (); lamp_on (LM_BUY_IN_BUTTON); kickout_lock (KLOCK_USER); music_disable (); callset_invoke (machine_paused); /* Timeout after 15 minutes */ U8 timeout = 180; /* = (60secs * 15)/5 */ while (--timeout != 0) { ball_search_timer_reset (); task_sleep_sec (5); } mute_and_pause_stop (); task_exit (); }
static inline void award_rollover_completed (void) { bounded_increment (rollover_count, 99); score (SC_1M); /* Hack as I can't be bothered to fix the sw_right_inlane on my table */ if (!lamp_test (LM_DEAD_END)) lamp_on (LM_DEAD_END); /* Increment cameras_lit every 4 rollovers */ if (rollover_count % 4 == 0) bounded_increment (cameras_lit, 99); /* Show animation */ deff_start (DEFF_ROLLOVER_COMPLETED); /* Turn off inlane lamps */ lamplist_apply (LAMPLIST_INLANES, lamp_off); lamplist_apply (LAMPLIST_INLANES, lamp_flash_on); task_sleep_sec (1); lamplist_apply (LAMPLIST_INLANES, lamp_flash_off); }
void bonusx_lane (U8 lamp) { if (lamp_test (lamp)) { score (SC_10K); } else { score (SC_50K); lamp_on (lamp); if (lamp_test (LM_ROLLOVER_1) && lamp_test (LM_ROLLOVER_2)) { bonusx_add (1); lamplist_apply (LAMPLIST_ROLLOVERS, lamp_off); sound_send (SND_TADA); deff_data_init (); deff_data_push (bonusx); deff_start (DEFF_BONUSX); leff_start (LEFF_BONUSX); } } }
void rules_deff (void) { music_disable (); music_set (MUS_RESTART_PLUNGER); sol_request (SOL_EYELIDS_OPEN); rule_begin (); rule_msg ("HOW TO PLAY", "FUNHOUSE"); task_create_gid1 (GID_RULES_LEFF, rules_flasher_leff); rule_complete (); rule_begin (); rule_msg ("ALL TARGETS", "ADVANCE CLOCK"); task_create_gid1 (GID_RULES_LEFF, rules_clock_leff); rule_complete (); rule_begin (); rule_msg ("REACH 11:30", "TO LIGHT LOCK"); fh_clock_set (11, TIME_30_MIN); lamp_tristate_flash (LM_LOCK); rule_complete (); rule_begin (); rule_msg ("LOCK BALL 1", "FOR 11:45"); fh_clock_set (11, TIME_45_MIN); lamp_tristate_flash (LM_LOCK); rule_complete (); rule_begin (); rule_msg ("LOCK BALL 2", " FOR 12:00"); fh_clock_set (12, TIME_0_MIN); lamp_tristate_flash (LM_MILLION); sol_request (SOL_EYELIDS_CLOSED); rule_complete (); rule_begin (); rule_msg ("WAKE RUDY", "FOR MULTIBALL"); sol_request (SOL_EYELIDS_OPEN); rule_complete (); rule_begin (); rule_msg ("SHOOT TRAP DOOR", "FOR JACKPOTS"); lamp_tristate_flash (LM_MILLION_PLUS); rule_complete (); rule_begin (); rule_msg ("SHOOT MIRROR TO", "COLLECT AWARDS"); lamplist_apply (LAMPLIST_MIRROR_AWARDS, lamp_flash_on); lamp_tristate_flash (LM_MIRROR_VALUE); rule_complete (); rule_begin (); rule_msg ("HIT RUDY TO", "RELIGHT MIRROR"); lamplist_apply (LAMPLIST_MIRROR_AWARDS, lamp_on); rule_complete (); rule_begin (); rule_msg ("BLUE TARGETS", "LIGHT THE STEPS"); lamplist_apply (LAMPLIST_STEP_TARGETS, lamp_flash_on); lamplist_apply (LAMPLIST_STEPS_AWARDS, lamp_flash_on); rule_complete (); rule_begin (); rule_msg ("SHOOT STEPS FROM", "LEFT PLUNGER"); lamplist_apply (LAMPLIST_STEPS_AWARDS, lamp_flash_on); lamp_tristate_flash (LM_STEPS_GATE_OPEN); lamp_tristate_flash (LM_RAMP_STEPS); rule_complete (); rule_begin (); rule_msg ("SHOOT LOOPS TO", "COLLECT GANGWAYS"); lamp_flash_on (LM_LEFT_GANGWAY); lamp_flash_on (LM_RIGHT_GANGWAY); lamplist_apply (LAMPLIST_GANGWAYS, lamp_on); rule_complete (); rule_begin (); rule_msg ("EXTRA BALLS LIT", "AT TOP LOOP"); lamp_on (LM_EXTRA_BALL); lamp_flash_on (LM_MIRROR_EX_BALL); lamp_flash_on (LM_GANGWAY_EX_BALL); lamp_flash_on (LM_STEPS_EB); rule_complete (); rule_begin (); rule_msg ("PLAY", "FUNHOUSE"); task_create_gid1 (GID_RULES_LEFF, rules_flasher_leff); task_create_gid1 (GID_RULES_LEFF, rules_clock_leff); rule_complete (); sol_request (SOL_EYELIDS_CLOSED); music_enable (); deff_exit (); }
void kickback_enable (void) { lamp_on(LM_KICKBACK_ARROW); kickback_driver_enable(); }