diff --git a/game/rooms/room03/esc/button.esc b/game/rooms/room03/esc/button.esc index 676e7d67..f04a0a9b 100755 --- a/game/rooms/room03/esc/button.esc +++ b/game/rooms/room03/esc/button.esc @@ -1,19 +1,21 @@ -:ready -set_state r3_button button_broken - - :look -say player "That button must activate the bridge, but it is broken." [button_broken] -say player "It should work now." [!button_broken] +say player "That button must activate the bridge, but it is broken." [r3_button_broken] +say player "It should work now." [!r3_button_broken] :push say player "I must USE this." + :use -> [!button_broken, !r3_bridge_closed] +# Button is fixed, bridge is open - close the bridge +> [!r3_button_broken, !r3_bridge_closed] + # Set the bridge state to closed. This will trigger the bridge animation. set_state r3_bridge bridge_close + # Make it so the player can cross the whole room enable_terrain bridge_closed set_global r3_bridge_closed true + # Make it so the right hand side of the screen is no longer an "item" you can + # look at to be told you can't reach it. set_interactive r3_right_platform false set_interactive r3_r_exit true # We start with the collision polygon on the right door disabled @@ -25,30 +27,29 @@ say player "I must USE this." custom r3_r_exit door_enabler enable_door stop -> [!button_broken, r3_bridge_closed] - set_state r3_bridge bridge_open - enable_terrain bridge_open - set_global r3_bridge_closed false - set_interactive r3_right_platform true - # Disable the door collision so it acts like part of the right - # platform again. - custom r3_r_exit door_enabler disable_door - stop +# Button is fixed, bridge is open. +> [!r3_button_broken, r3_bridge_closed] + say player "I don't want to close the bridge." -> [button_broken] +> [r3_button_broken] say player "The button is broken!" stop :talk -> [button_broken] +> [r3_button_broken] + # Disable input so that the player can't interrupt this sequence of events + accept_input SKIP say player "Please, will you repair yourself?" wait 1 + # Turn off the button's smoke animation set_state r3_button button_repaired - set_global button_broken false + set_global r3_button_broken false wait 1 say player "Oh, it worked!" + # Reenable input + accept_input ALL stop -> [!button_broken] +> [!r3_button_broken] say player "I better not talk to it any more, it might break again." diff --git a/game/rooms/room03/esc/right_platform.esc b/game/rooms/room03/esc/right_platform.esc index 564997ec..a35ba864 100755 --- a/game/rooms/room03/esc/right_platform.esc +++ b/game/rooms/room03/esc/right_platform.esc @@ -3,5 +3,6 @@ set_angle player 90 say player "That's the other side." :arrived -set_angle player 90 -say player "I can't reach it." +> [!r3_bridge_closed] + set_angle player 90 + say player "I can't reach it." diff --git a/game/rooms/room03/esc/room03_bridge.esc b/game/rooms/room03/esc/room03_bridge.esc index 0f26dca7..b796ad49 100644 --- a/game/rooms/room03/esc/room03_bridge.esc +++ b/game/rooms/room03/esc/room03_bridge.esc @@ -3,11 +3,14 @@ :setup +# If the room hasn't been visited previously, open the bridge and break the button > [!room3_visited] set_global room3_visited true + # Mark the bridge as open set_global r3_bridge_closed false - set_state r3_button button_broken - set_global button_broken true + # Set a global for the button state so we can write test logic for it + # This will start the animation with the check in the "ready:" state below. + set_global r3_button_broken true > [r3_bridge_closed] # Make set_state IMMEDIATE to reach the final frame immediately @@ -17,30 +20,51 @@ set_interactive r3_r_exit true # We use a custom function to enable the collision polygon on the door # to enable it to work as a door once the bridge is closed. + # You'll find the script in room3/Hotspots/r_door/door_enabler custom r3_r_exit door_enabler enable_door > [eq ESC_LAST_SCENE room2] teleport player r3_l_exit # Set player look down set_angle player 180 +# > [r3_button_broken] +# set_state r3_button button_broken stop + > [eq ESC_LAST_SCENE room4] + # Set the bridge closed and button fixed or else you cant get back to the left hand side + # if you started the game in room 4 + set_global r3_bridge_closed true + set_global r3_button_broken false + + # Turn off the button's smoke animation + #set_state r3_button button_repaired true + teleport player r3_r_exit + # Set the bridge state which will also run the bridge closing animation + set_state r3_bridge bridge_close true + # Enable the whole room terrain so the player can walk across the whole room + enable_terrain bridge_closed + # Don't make the right platform a separate object you can click. This is only valid when + # the bridge is open + set_interactive r3_right_platform false + set_interactive r3_r_exit true + # We use a custom function to enable the collision polygon on the door + # to enable it to work as a door once the bridge is closed. + custom r3_r_exit door_enabler enable_door # Set player look left set_angle player 270 - - # If bridge not closed - > [!r3_bridge_closed] - set_interactive r3_right_platform false stop - :ready +> [r3_button_broken] + # Mark the button as broken and play the smoke animation + set_state r3_button button_broken +> [!r3_button_broken] + # Turn off the button's smoke animation + set_state r3_button button_repaired true +> [r3_bridge_closed] + # This is for when you close the bridge then go back to room 2 + # Set the bridge closed -# DEBUG -#set_state r3_bridge bridge_close -#enable_terrain bridge_closed -#set_global bridge_closed true -#set_interactive r3_right_platform false -## /DEBUG - + set_global r3_bridge_closed true \ No newline at end of file diff --git a/game/rooms/room03/room03.tscn b/game/rooms/room03/room03.tscn index 613a0e2b..7bd19c4f 100644 --- a/game/rooms/room03/room03.tscn +++ b/game/rooms/room03/room03.tscn @@ -305,6 +305,7 @@ animations = null [node name="Particles2D" type="Particles2D" parent="r3_button"] position = Vector2( 374, 154 ) +emitting = false amount = 16 lifetime = 4.0 preprocess = 1.99