CALLSET_ENTRY (rocket, dev_rocket_kick_attempt) { if (in_live_game) { /* Wait until the skill shot has finished */ while (skill_shot_enabled || deff_get_active () == DEFF_SKILL_SHOT_MADE || task_find_gid (GID_SKILL_SWITCH_TRIGGER)) { task_sleep (TIME_500MS); } if (!multi_ball_play ()) leff_start (LEFF_ROCKET); sound_send (SND_ROCKET_KICK_REVVING); deff_start (DEFF_ROCKET); task_sleep (TIME_500MS); task_create_gid (0, rocket_kick_sound); } }
CALLSET_ENTRY (outhole, sw_outhole) { if (in_live_game) { if (ballsave_test_active ()) { /* Start a timer so we grab the ball after its * fired to help the player */ timer_restart_free (GID_BALL_LAUNCH_DEATH, TIME_6S); } /* Start a timer to check if 3 balls drain quickly */ if (!timer_find_gid (GID_MULTIDRAIN) && !ballsave_test_active ()) { multidrain_count = 0; if (multi_ball_play ()) timer_restart_free (GID_MULTIDRAIN, TIME_7S); } if (timer_find_gid (GID_MULTIDRAIN)) { /* There are 6 balls installed normally */ bounded_increment (multidrain_count, 6); if (multidrain_count >= 3) multidrain_awarded = TRUE; } /* Whoops, lost the powerball before getting it in the gumball */ if (!multi_ball_play () && global_flag_test (GLOBAL_FLAG_POWERBALL_IN_PLAY) && !ballsave_test_active ()) { sound_send (SND_NOOOOOOOO); powerball_death = TRUE; task_sleep (TIME_500MS); } deff_start (DEFF_BALL_EXPLODE); leff_start (LEFF_STROBE_UP); } }
/** * An optimized form of leff_stop() followed by leff_start(). * * If the task is already running, then the lamps do not need to be * freed and re-allocated; the task just needs to be restarted. */ void leff_restart (leffnum_t id) { task_gid_t gid; const leff_t *leff; gid = leff_gid_find_by_id (id); if (gid == GID_NULL) { leff_start (id); return; } dbprintf ("leff_restart %d\n", id); leff = &leff_table[id]; task_kill_gid (gid); page_push (MD_PAGE); lamp_set_subtract (leff_data_set, leff_get_set (leff)); page_pop (); leff_create_task (leff, gid); #ifdef DEBUG_LEFFS leff_dump (); #endif }
void check_multiball_requirements(void) { //if requirements met for next mb - light left loop shot to start mb //Fortress Multiball = 1 ball min needs to be frozen //Museum Multiball = 2 ball min needs to be frozen //Cryoprison Multiball = 3 ball min needs to be frozen //Wasteland Multiball = 4 ball min needs to be frozen if (NumBallsFrozen > (NumMBsDone % 4) ) { // % is modulus multiball_light_on();//goto orbits.c flag_on(FLAG_IS_MULTIBALL_ENABLED); if ( (lock_SoundCounter++ % 2) == 0 )//check if even sound_start (ST_SPEECH, SPCH_MULTIBALL_ACTIVATED, SL_4S, PRI_GAME_QUICK5); else sound_start (ST_SPEECH, SPCH_SHOOT_LEFT_LOOP, SL_4S, PRI_GAME_QUICK5); } //end of if (NumBallsFrozen > (NumMBsDone % 4) ) if (system_config.disable_shaker == NO) { if (system_config.extra_shaker == YES) shaker_start (SHAKER_HALF_ON, 2); else shaker_start (SHAKER_ONE_QUARTER_ON, 2); }//end of shaker call leff_start(LEFF_FREEZE); deff_start (DEFF_FREEZE_EFFECT); }//end of function
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); } } }
//called from /common/replay.c CALLSET_ENTRY (top_popper, award_extra_ball_effect) { leff_start (LEFF_TOP_POPPER); deff_start (DEFF_EXTRA_BALL_EFFECT); }//end of function
void top_popper_video_mode_finished (void) { leff_start (LEFF_TOP_POPPER); sol_request_async(SOL_TOP_POPPER); }//end of function
void jets_mode_init (void) { score_zero (jets_frenzy_total); lamplist_apply (LAMPLIST_JETS_ENTER, lamp_off); leff_start (LEFF_JETS_COMPLETED); }
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
void rules_deff (void) { music_disable (); leff_stop_all (); rule_begin (); triac_disable (TRIAC_GI_MASK); rule_msg ("BACK TO THE ZONE", "", "HOW TO PLAY", ""); rules_sleep_sec (5); rule_complete (); rule_begin (); rule_msg ("SPIRALAWARD", "EITHER LEFT INLANE STARTS", "A 3 SECOND TIMER", ""); task_create_gid1 (GID_RULES_LEFF, rules_spiralaward_leff); rules_sleep_sec (6); rule_complete (); rule_begin (); rule_msg ("SPIRALAWARD", "SHOOT A RIGHT LOOP TO COLLECT", "A RANDOM AWARD" , "20M FOR COLLECTING ALL"); task_create_gid1 (GID_RULES_LEFF, rules_spiralaward2_leff); rules_sleep_sec (5); rule_complete (); lamplist_apply (LAMPLIST_SPIRAL_AWARDS, lamp_flash_off); lamp_tristate_off (LM_RIGHT_SPIRAL); lamp_tristate_off (LM_RIGHT_POWERBALL); rule_begin (); rule_msg ("ROLLOVERS", "USE FLIPPER BUTTONS TO STEP", "INLANE LIGHTS", "1M FOR COLLECTING ALL"); task_create_gid1 (GID_RULES_LEFF, rules_rollover_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("SUPER SKILL MB", "SHOOT LEFT RAMP", "AND HIT SKILL SHOT", "DURING MULTIBALL"); task_create_gid1 (GID_RULES_LEFF, rules_sssmb_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("CHAOS MULTIBALL", "HIT CLOCK TO LIGHT JACKPOTS", "JACKPOTS MOVE", "AROUND THE TABLE"); task_create_gid1 (GID_RULES_LEFF, rules_chaosmb_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("FASTLOCK", "SHOOT FAST LOOPS TO", "BUILD UP JACKPOTS", "HIT LOCK TO COLLECT"); task_create_gid1 (GID_RULES_LEFF, rules_fastlock_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("HITCHHIKER", "SHOOT THE HOLE BETWEEN", "THE FLASHING LAMPS", "TO SCORE A HITCHHIKER"); task_create_gid1 (GID_RULES_LEFF, rules_hitchhiker_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("POWERFIELD", "HITCHHIKERS UNLOCK", "THE RIGHT RAMP", "TO THE POWERFIELD"); task_create_gid1 (GID_RULES_LEFF, rules_ramp_battle_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("POWERFIELD", "PRESS THE FLIPPER BUTTONS", "TO SHOOT THE BALL INTO", "THE TOP OF THE POWERFIELD"); task_create_gid1 (GID_RULES_LEFF, rules_powerfield_leff); rules_sleep_sec (9); triac_disable (GI_POWERFIELD); rule_complete (); rule_begin (); rule_msg ("DOINK MODE", "SHOOT THE LEFT RAMP", "FROM THE RIGHT INLANE", "TO START DOINK MODE"); task_create_gid1 (GID_RULES_LEFF, rules_doinks_leff); rules_sleep_sec (9); rule_msg ("DOINK MODE", "HIT THE FLIPPER BUTTONS", "WHILST THE BALL IS BEING HELD", "TO SCORE POINTS"); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("ODDCHANGE", "HITTING THE YELLOW", "TARGETS RANDOMLY BUILDS", "THE ODDCHANGE POT"); task_create_gid1 (GID_RULES_LEFF, rules_oddchange1_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("ODDCHANGE", "HIT THE PIANO OR", "THE SLOT MACHINE WHEN", "UNLIT TO COLLECT"); task_create_gid1 (GID_RULES_LEFF, rules_oddchange2_leff); rules_sleep_sec (9); rule_complete (); rule_begin (); rule_msg ("THANKS", "WE HOPE YOU", "ENJOY PLAYING","WWW.ODDCHANGE.COM/FREEWPC"); rules_sleep_sec (4); rule_complete (); music_enable (); leff_start (LEFF_AMODE); deff_exit (); }
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
void turn_off_gi (void) { gi_off = TRUE; leff_start(LEFF_TURN_OFF_GI); }// end of function