diff --git a/README.md b/README.md index 5b17f0f..028ba66 100644 --- a/README.md +++ b/README.md @@ -31,16 +31,23 @@ graph TD GREEN_FLAG -- 50 laps all day --> LUX_MODE[/"Lap of Luxury Mode"/] GREEN_FLAG -- grand prix sequence --> GP_MODE[/"Grand Prix Mode"/] RANDOM1 -- fuel --> - PIT_CHECK{"Fuel, Oil or Tires need attention?"} - RANDOM1 -- tires --> PIT_CHECK - RANDOM1 -- oil --> PIT_CHECK + IS_NEED_PIT{"Fuel, Oil or Tires need attention?"} + RANDOM1 -- tires --> IS_NEED_PIT + RANDOM1 -- oil --> IS_NEED_PIT RANDOM1 -- bad luck --> BALL_DRAINS((("Ball Drains"))) - PIT_CHECK -- yes --> PIT - PIT_CHECK -- no --> GREEN_FLAG + IS_NEED_PIT -- yes --> PIT + IS_NEED_PIT -- no --> GREEN_FLAG GL_MODE --> GL_MULTI("Grooveline Multiball") LUX_MODE --> LUX_MULTI("Lap of Luxury Multiball") GP_MODE --> GP_MULTI("Grand Prix Multiball") GL_MULTI -- make 3 laps --> GL_MULTI_ADD_BALL("Add a Ball") + GL_MULTI --> + IS_RF_MODE_READY{"Red Flag Mode Ready?"} + LUX_MULTI --> IS_RF_MODE_READY + GP_MULTI --> IS_RF_MODE_READY + IS_RF_MODE_READY -- yes --> RF_MODE[/"Red Flag
(Wizard) Mode"/] + IS_RF_MODE_READY -- no --> GREEN_FLAG + RF_MODE --> RF_MULTI("Red Flag Multiball") ``` ### Production Machine Setup diff --git a/config/common.yaml b/config/common.yaml index e1874c3..a614e5e 100644 --- a/config/common.yaml +++ b/config/common.yaml @@ -1,6 +1,7 @@ #config_version=6 config: +- common/mpf.yaml - common/assets.yaml - common/ball_devices.yaml - common/coils.yaml diff --git a/modes/red_flag/config/mode.yaml b/modes/red_flag/config/mode.yaml index 75d7f6d..46a27ba 100644 --- a/modes/red_flag/config/mode.yaml +++ b/modes/red_flag/config/mode.yaml @@ -1,7 +1,8 @@ #config_version=6 mode: - # start_events: + start_events: + - sw_tag_hole_active{current_player.is_grooveline_completed > 0 and current_player.is_grand_prix_completed > 0 and current_player.is_luxury_completed > 0} # TODO after logicblock_red_flag_counter_complete stop_events: - multiball_red_flag_ended diff --git a/tests/test_red_flag_mode.py b/tests/test_red_flag_mode.py index d12e5b9..5a46148 100644 --- a/tests/test_red_flag_mode.py +++ b/tests/test_red_flag_mode.py @@ -1,3 +1,4 @@ +import random from tests.death_save_game_testing import DeathSaveGameTesting class TestRedFlagMode(DeathSaveGameTesting): @@ -49,7 +50,6 @@ def test_qualification(self): for i in range(2): self._drain_one_ball() self.advance_time_and_run(1) - #self.assertEqual(1, self.machine.playfield.balls) self.assertModeNotRunning("grand_prix") self.assertEqual( 1, self.machine.game.player.is_grand_prix_completed) @@ -60,4 +60,16 @@ def test_qualification(self): self.assertEqual(True, self.machine. \ counters["red_flag_counter"].check_complete()) - # TODO: final sequence for mode start here + # With all 3 qualifying modes completed, + # the red flag mode is started by entering + # ANY ONE OF THE HOLES on the playfield, so + # we select a random one here + holes = ["s_grand_hole", "s_prix_hole", "s_podium_hole"] + self.assertModeNotRunning("red_flag") + self.hit_and_release_switch(random.choice(holes)) + + # The red flag mode is started + self.advance_time_and_run(1) + self.assertModeRunning("red_flag") + self.assertEqual(True, + self.machine.multiballs["red_flag"].enabled) diff --git a/web/app.py b/web/app.py index aa58986..8024b09 100644 --- a/web/app.py +++ b/web/app.py @@ -10,6 +10,7 @@ '' app = Flask(__name__)