From 7e3688fa637e4c399ed40ba8def5531fe33a07e7 Mon Sep 17 00:00:00 2001 From: Balloonpopper Date: Sat, 5 Mar 2022 14:57:56 +1100 Subject: [PATCH] feat: Updated room 9 graphics --- game/items/inventory/bottle.png | Bin 0 -> 373 bytes game/items/inventory/r9_bottle.tscn | 9 +- game/rooms/room09/button.png | Bin 0 -> 1267 bytes game/rooms/room09/closet/magical_closet.tscn | 138 ---- game/rooms/room09/esc/button_reset.esc | 27 +- game/rooms/room09/esc/closet_left.esc | 63 +- game/rooms/room09/esc/closet_middle.esc | 61 +- game/rooms/room09/esc/closet_right.esc | 65 +- game/rooms/room09/esc/right_exit.esc | 7 +- game/rooms/room09/esc/room09.esc | 57 +- game/rooms/room09/esc/stand.esc | 25 +- game/rooms/room09/locker_door_closed.png | Bin 0 -> 433 bytes game/rooms/room09/locker_door_opened.png | Bin 0 -> 280 bytes game/rooms/room09/locker_inside.png | Bin 0 -> 1556 bytes game/rooms/room09/right_door.png | Bin 0 -> 723 bytes game/rooms/room09/room09.tscn | 754 ++++++++++++++---- game/rooms/room09/room9background.png | Bin 0 -> 9851 bytes .../{room09 => room10}/button/button.tscn | 0 18 files changed, 888 insertions(+), 318 deletions(-) create mode 100644 game/items/inventory/bottle.png create mode 100644 game/rooms/room09/button.png delete mode 100644 game/rooms/room09/closet/magical_closet.tscn create mode 100644 game/rooms/room09/locker_door_closed.png create mode 100644 game/rooms/room09/locker_door_opened.png create mode 100644 game/rooms/room09/locker_inside.png create mode 100644 game/rooms/room09/right_door.png create mode 100644 game/rooms/room09/room9background.png rename game/rooms/{room09 => room10}/button/button.tscn (100%) diff --git a/game/items/inventory/bottle.png b/game/items/inventory/bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..87babddc8a48a86309db900ce45686bad15d9fe4 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^B0%iK!3-o58rZG^DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(ehe(g8jpt~D+$|2NgwC&f2O@S1Y6{?B6gUthlFY-HC?d`{b3C>ig4N;{&E$ zeU=pDH+5%{N!qRh=T;QU@chzt3k`kblK8NP_jrYn{|DhMeX(%`pW6~Ob+V=!c<$9$ z5yBDrMz~UaTb4=1(vq(;F2DQo-DJhyyWw6n&l)Drotz$IYobsex+019{E03t8|8Uk zqH`oBwtr<=n>?MhuHIg}d|xPY&nv6n|EKz<@W1~3k3qCg?55@aS4BXdF?hQAxvX*8o z|0J>k`J4qFk;M!Qe1}1p@p%4<6rh?8PZ!6KinzD4Pxnc?inRHcZarOgTdvy1c%p!J zK$w6cBmV@}Y`F&W#K|Y6Iz>I!Ox)zHBzQzxVI!Bfm|)W6PPJLyN&eM$)~%DSkKZxF z=Z$|} zlyCFf@v!~)gTw3deDaP4ed}~{dee9OaiHTQl|{FEAMeP!E+^m+q2xP7ShusUbDy=& zp17qz^*3$1mdo#%bN>0}NUPbpmrdezzGOX}qLi)teAT%q&Ys!AiTea)7v)tRvDDia z%KtyhjC22wsX5bbp7x%-jAMI5z%6VeczB2D_&280rpl9Cx=u`03%&SoM=buder~Q&nbVc9 zIZ54$Rh}mLXBYOiI7{b*WeKo-Wji6UtoYy!p6uB#_Pp72x51!|@!^z=ukLe`w@m%^ zI^)!a;vK9^smhYkMr~2MGK*B)i#=poLQ{V0vQadKFLy(JY_mxvocVxLO zQh98*O3WyiS)JPR<KwoQ;IY=U;XO;@ea=Jsgo%)- z5nWgD5K5?(?II?|5adeO(yOdU*f!y`Mik(cAm~ z!@`<>ca~`8RPMij^Zt7onU3b>it_2|oUcn>Ez6&?qeiUe$({RMn zq`zO{+S_Y8Yj3Fhx!278^W(;SI~o1K$XvixUQvnP7I6YxDP zQE>0!oq|4-n$KT*cipwRE;Q}@yq7o6c%6JCG4EqV%#v~omqUe1^L`zB=yGVMonVlq zqrtQSxpJ#*w|lGiR^Q(jygmB4)S>V1PcK$3t;?I{9n)E5yW-elL3y4T0=iu8=N9f- zWp2}UuGiwdvix2-Zy`gOe;@w3m+mfIH~rz_#ebeGi8vNzEYc$ou~#EMgwO7p?|q9i zmOf=4^VmPdEZeT_($m=Mb~5GD<^K6s-d@WT+xPXw#aAzbIbQ#~TCnL@CBgJTrU;WRYmw_G<$dfSq6gj1E|M@`OsVd1|rw7jy555qT z;D3ZQBoT+d4PdQsj(f*~92-@Yk$6Z*KY&`#ok(xjLtJFhAz z&JhUX&}|WN3Ol&-){f04Q@$MUmw%p~eq-szwvG9s`^^pN*Zj~9le>LHw10nibH^hK zC&O>Qf5>f|?*Alz{`BepJr7IS?TX&x`tg6#FTJ<*Ve|KUHE*al$&dO6NmA#oapsEy bONjTzc7~$NW!t|13n~UrS3j3^P6 [left_closet_open] + # The closet is already open, so exit the command stop set_global left_closet_open true +# Increment the counter of the number of open closets inc_global open_closets 1 -> [lt open_closets 3] - set_state r9_closet_left open - stop +# Animate the door opening +set_state r9_closet_left open_door > [eq open_closets 3] - set_state r9_closet_left open + # After opening this one, we have 3 closets open + # Activate the magic bottle in this particular closet + > [i/r9_bottle] + # If they've already picked up the bottle, don't make it appear + stop + > [r9_puzzle_complete] + # If they've already completed the puzzle, don't make it appear + stop set_active r9_bottle_left true + # Note which cupboard the bottle is in in case the player + # exits then reenters the room + set_global r9_bottle_closet 1 stop - + :open > [left_closet_open] + # The closet is already open, so exit the command stop set_global left_closet_open true +# Increment the counter of the number of open closets inc_global open_closets 1 -> [lt open_closets 3] - set_state r9_closet_left open - stop +# Animate the door opening +set_state r9_closet_left open_door > [eq open_closets 3] - set_state r9_closet_left open + # After opening this one, we have 3 closets open + # Activate the magic bottle in this particular closet + > [i/r9_bottle] + # If they've already picked up the bottle, don't make it appear + stop + > [r9_puzzle_complete] + # If they've already completed the puzzle, don't make it appear + stop set_active r9_bottle_left true + # Note which cupboard the bottle is in in case the player + # exits then reenters the room + set_global r9_bottle_closet 1 stop + +:close +> [!left_closet_open] + # If the closet isn't open, ignore the close command + stop + +> [eq open_closets 3] + # If there's 3 closets open, the bottle was made active + # We don't know which closet it was activated in so lets + # deactivate all of them + set_active r9_bottle_left false + set_active r9_bottle_middle false + set_active r9_bottle_right false + +# Animate the door closing +set_state r9_closet_left close_door + +set_global left_closet_open false +# Decrement the counter of closets open (used to determine when to show +# the magic bottle) +dec_global open_closets 1 \ No newline at end of file diff --git a/game/rooms/room09/esc/closet_middle.esc b/game/rooms/room09/esc/closet_middle.esc index c580df83..b00314e1 100755 --- a/game/rooms/room09/esc/closet_middle.esc +++ b/game/rooms/room09/esc/closet_middle.esc @@ -1,34 +1,79 @@ # Magical closet: the object is always in the LAST opened closet +# We want "use" and "open" to give the same end result +# so we duplicate everything for use and open :use > [middle_closet_open] + # The closet is already open, so exit the command stop set_global middle_closet_open true +# Increment the counter of the number of open closets inc_global open_closets 1 -> [lt open_closets 3] - set_state r9_closet_middle open - stop +# Animate the door opening +set_state r9_closet_middle open_door > [eq open_closets 3] - set_state r9_closet_middle open + # After opening this one, we have 3 closets open + # Activate the magic bottle in this particular closet + > [i/r9_bottle] + # If they've already picked up the bottle, don't make it appear + stop + > [r9_puzzle_complete] + # If they've already completed the puzzle, don't make it appear + stop set_active r9_bottle_middle true + # Note which cupboard the bottle is in in case the player + # exits then reenters the room + set_global r9_bottle_closet 2 stop :open > [middle_closet_open] + # The closet is already open, so exit the command stop set_global middle_closet_open true +# Increment the counter of the number of open closets inc_global open_closets 1 -> [lt open_closets 3] - set_state r9_closet_middle open - stop +# Animate the door opening +set_state r9_closet_middle open_door > [eq open_closets 3] - set_state r9_closet_middle open + # After opening this one, we have 3 closets open + # Activate the magic bottle in this particular closet + > [i/r9_bottle] + # If they've already picked up the bottle, don't make it appear + stop + > [r9_puzzle_complete] + # If they've already completed the puzzle, don't make it appear + stop set_active r9_bottle_middle true + # Note which cupboard the bottle is in in case the player + # exits then reenters the room + set_global r9_bottle_closet 2 stop + +:close +> [!middle_closet_open] + # If the closet isn't open, ignore the close command + stop + +> [eq open_closets 3] + # If there's 3 closets open, the bottle was made active + # We don't know which closet it was activated in so lets + # deactivate all of them + set_active r9_bottle_left false + set_active r9_bottle_middle false + set_active r9_bottle_right false + +# Animate the door closing +set_state r9_closet_middle close_door + +set_global middle_closet_open false +# Decrement the counter of closets open (used to determine when to show +# the magic bottle) +dec_global open_closets 1 \ No newline at end of file diff --git a/game/rooms/room09/esc/closet_right.esc b/game/rooms/room09/esc/closet_right.esc index d7f9933c..fc243e70 100755 --- a/game/rooms/room09/esc/closet_right.esc +++ b/game/rooms/room09/esc/closet_right.esc @@ -1,34 +1,79 @@ # Magical closet: the object is always in the LAST opened closet +# We want "use" and "open" to give the same end result +# so we duplicate everything for use and open :use > [right_closet_open] + # The closet is already open, so exit the command stop set_global right_closet_open true +# Increment the counter of the number of open closets inc_global open_closets 1 - -> [lt open_closets 3] - set_state r9_closet_right open - stop + +# Animate the door opening +set_state r9_closet_right open_door > [eq open_closets 3] - set_state r9_closet_right open + # After opening this one, we have 3 closets open + # Activate the magic bottle in this particular closet + > [i/r9_bottle] + # If they've already picked up the bottle, don't make it appear + stop + > [r9_puzzle_complete] + # If they've already completed the puzzle, don't make it appear + stop set_active r9_bottle_right true + # Note which cupboard the bottle is in in case the player + # exits then reenters the room + set_global r9_bottle_closet 3 stop :open > [right_closet_open] + # The closet is already open, so exit the command stop set_global right_closet_open true +# Increment the counter of the number of open closets inc_global open_closets 1 - -> [lt open_closets 3] - set_state r9_closet_right open - stop + +# Animate the door opening +set_state r9_closet_right open_door > [eq open_closets 3] - set_state r9_closet_right open + # After opening this one, we have 3 closets open + # Activate the magic bottle in this particular closet + > [i/r9_bottle] + # If they've already picked up the bottle, don't make it appear + stop + > [r9_puzzle_complete] + # If they've already completed the puzzle, don't make it appear + stop set_active r9_bottle_right true + # Note which cupboard the bottle is in in case the player + # exits then reenters the room + set_global r9_bottle_closet 3 stop + +:close +> [!right_closet_open] + # If the closet isn't open, ignore the close command + stop + +> [eq open_closets 3] + # If there's 3 closets open, the bottle was made active + # We don't know which closet it was activated in so lets + # deactivate all of them + set_active r9_bottle_left false + set_active r9_bottle_middle false + set_active r9_bottle_right false + +# Animate the door closing +set_state r9_closet_right close_door + +set_global right_closet_open false +# Decrement the counter of closets open (used to determine when to show +# the magic bottle) +dec_global open_closets 1 \ No newline at end of file diff --git a/game/rooms/room09/esc/right_exit.esc b/game/rooms/room09/esc/right_exit.esc index 82b6a2f6..4487e8cb 100755 --- a/game/rooms/room09/esc/right_exit.esc +++ b/game/rooms/room09/esc/right_exit.esc @@ -1,2 +1,7 @@ :exit_scene -change_scene "res://game/rooms/room10/room10.tscn" +> [r9_puzzle_complete] + change_scene "res://game/rooms/room10/room10.tscn" + +> [!r9_puzzle_complete] + say player "The door is locked" + diff --git a/game/rooms/room09/esc/room09.esc b/game/rooms/room09/esc/room09.esc index 6e801996..95742b19 100644 --- a/game/rooms/room09/esc/room09.esc +++ b/game/rooms/room09/esc/room09.esc @@ -1,12 +1,63 @@ :setup +# In case the bottle is set to visible in the godot editor, either in a +# cupboard or on the stand, hide it regardless. +set_active r9_bottle_left false +set_active r9_bottle_middle false +set_active r9_bottle_right false +set_state r9_stand remove_bottle + +# Run all the animations to make sure the closet doors are closed +set_state r9_closet_left close_door +set_state r9_closet_middle close_door +set_state r9_closet_right close_door + +> [room09_visited] + > [r9_puzzle_complete] + # If the player has been here before and completed the puzzle + set_state r9_stand set_bottle + # Open the right doorway by using the open_door animation + set_state r9_r_exit open_door true + + # Open the closets as they were if the player exits then reenters + > [left_closet_open] + set_state r9_closet_left open_door + > [middle_closet_open] + set_state r9_closet_middle open_door + > [right_closet_open] + set_state r9_closet_right open_door + + # If the player has left everything open but the bottle hasn't been + # retrieved, show it where it used to be. + > [!i/r9_bottle] + # If the player isn't holding the bottle already, draw it if necessary + > [eq r9_bottle_closet 1] + set_active r9_bottle_left true + > [eq r9_bottle_closet 2] + set_active r9_bottle_middle true + > [eq r9_bottle_closet 3] + set_active r9_bottle_right true + + + > [!room09_visited] + # Run initial set up steps. This will only happen once per game. set_global room09_visited true + + # Set the count of open closets to 0. Used with the magic bottle. set_global open_closets 0 - #set_state r9_closet_left closed - #set_state r9_closet_middle closed - #set_state r9_closet_right closed + + # Run all the animations to make sure the closet doors are closed + set_state r9_closet_left close_door + set_state r9_closet_middle close_door + set_state r9_closet_right close_door + + # Mark the puzzle uncomplete + set_global r9_puzzle_complete false + # Set up a variable to hold which cupboard contains the bottle + # It will be used if the player exits then reenters the room + set_global r9_bottle_closet 0 > [eq ESC_LAST_SCENE room8] teleport player r9_l_exit diff --git a/game/rooms/room09/esc/stand.esc b/game/rooms/room09/esc/stand.esc index 1547cb32..d4f9147a 100755 --- a/game/rooms/room09/esc/stand.esc +++ b/game/rooms/room09/esc/stand.esc @@ -1,6 +1,27 @@ :use r9_bottle +# Make sure the full sequence completes. Let players speed through the text though. +accept_input SKIP +say player "This appears to be a magical bottle that unlocks doors." inventory_remove r9_bottle -set_state r9_stand set_bottle -set_state r9_r_exit r_door_open +# Place the bottle on the stand (i.e. unhide the placed bottle graphic) +set_state r9_stand set_bottle + +# Animate the door unlocking +set_state r9_r_exit open_door + +# Mark this room's puzzle as complete. This will stop it resetting and the +# bottle from being displayed in a cupboard. +set_global r9_puzzle_complete true +set_global r9_bottle_closet 0 +accept_input ALL + +:look +> [r9_puzzle_complete] + say player "Unlocking a door with a bottle, how strange." + stop + +> [!r9_puzzle_complete] + say player "That stand looks like the perfect place" + say player "to put a bottle." \ No newline at end of file diff --git a/game/rooms/room09/locker_door_closed.png b/game/rooms/room09/locker_door_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..eb676d7c5055afbd911ff5da004376c9c4f01752 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^DGUsZ8XU|(*364bjshvh;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{Q#_J|V6T9y|yL2mtanY}f!KIrL_p0aC0bL4Lvifq>!nHojn>0B3^crjr>+S~OCZ#fxs(~4K0>(EId&Ymb3pv*IuRM0xvpwVT*FKWQ)0<8BFd9 znG$5%yWCVSZ(`omyGEIFpE1ln9@E~Ef8wFG-i=ceX7j$zsZ)L^@HUVs$GSs6HFDD5 zsn)a9`<{e%oK{(@;=KuoIK#GkY(JGZbBkYb!&$*YijRH^D&6^bCW=pblkol%AO5-k P9m3%0>gTe~DWM4f=}Ts! literal 0 HcmV?d00001 diff --git a/game/rooms/room09/locker_inside.png b/game/rooms/room09/locker_inside.png new file mode 100644 index 0000000000000000000000000000000000000000..48100856c05c26e20f253d697e2e1cc236a22ece GIT binary patch literal 1556 zcmd6nk55xq6vrQoIxIouM`5DKCSaijQ521!4iKcm1}OCHQhpaB6cp;9im(O>HrOKI zHd-7Oh7NTruhIuR2uiU+OE;#1C}pc6$jk2wb8hZQ?k7hS z9T{d#b|OO%WPN}UatMOVya?ZF`5vMCh3A+P!7TSsSTJ<$?)oVru}Ba4GzfywDy!G2 zBqIMH`jgnu@$qrBT7CHN;pXOMKA&G)T-?ymKoqG-NArkanRh5M=FPtbJuX$n5!y;F zBQ6($R`vYjW)zR`VhAD~KM)cWo1bJFy^}3t*axQW{-(a`&AOd!_4rdS*@@ZAo%n8_(adWZ@??$>y?)z8&>R=%otmgly8@iA~!&keppnn`b`S zDKm7D>!=R&yhX}qH@g4a-Z@SkRT;H)Wj_gvrW`Jp@bLGO!=r8{l9-)CE{y|h#4KaR=17-yBI0k)TDodrv3?s%{lwH@L$&rNc!r2E8X*PzcJUK;;Lw7m(o%jf#OxAroH$&iOS+%k)>Ekl$M%!X9+1bQ%Lr*AqZJJo(HF%-$W) z$rme+DPOznE1=iZg2Mj?hj9XDB<)frf|dV{Mv+UpB*!cF${BS&64-?L^E?ws^|w zUNR=uusGg8Fnxw3?(4S`I&aMo%__!}8+Dz21RnYk%|@PLEj_Q6i)^m~WmZ}vi|w3I zN(s0U7`iE+pPIkrlTNHNZH$O zr)-geFuU^VHxlkGH@2W&AgNq~b8EmJf|g&=D^o>`!olvwdVd>YBSQy5BSWqQrn2XmG<3wKu+Fw@QrhJ=a+rArpf0j-^VkvrZb;^I9 zD|M%YY!@z`;TH6&9^ug}vpSGN;Mu<1Dk-z58^B4PU^SpdX*G<)> zNqL;2#?~1gH#*$wj`>+U(*D*YcyEJr*9+F$6FuS{D)8;hp3|aO*1cJw2O`BR6DK<|Y)#SfFfuA6*{> zRcem^VPL8%cx<%p`@?gtG4GBn&E9dlH#@vwv;23x2aiPWyg9ZNDAMUIUbvILT<>ue ze_qV-zkD$gj)%f~_!S>XFJl)h>bseEWKLp{jHSB7p5`U}61!Vh_|MqYxgq(?9k)Az zYVVZaGcXH!)EqA4Q2K7c>-0h_J+UM9u?pW#Z5bD(%7bMZi=@k%1>-h~_kL+wTk%9a t=ZwSQGhNpX-d3p(2(*gu`~2r8>)$I9PoHN`*bhu(44$rjF6*2UngDWdKBWKv literal 0 HcmV?d00001 diff --git a/game/rooms/room09/room09.tscn b/game/rooms/room09/room09.tscn index 5cc7149d..355042d1 100644 --- a/game/rooms/room09/room09.tscn +++ b/game/rooms/room09/room09.tscn @@ -1,22 +1,56 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=32 format=2] [ext_resource path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" type="Script" id=1] -[ext_resource path="res://game/rooms/room09/background.tscn" type="PackedScene" id=2] +[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_background.gd" type="Script" id=2] [ext_resource path="res://game/fonts/caslonantique.tres" type="DynamicFont" id=3] [ext_resource path="res://game/characters/mark/mark.tscn" type="PackedScene" id=4] -[ext_resource path="res://game/rooms/room09/closet/magical_closet.tscn" type="PackedScene" id=5] +[ext_resource path="res://game/rooms/room09/button.png" type="Texture" id=5] [ext_resource path="res://addons/escoria-core/game/core-scripts/esc_room.gd" type="Script" id=6] [ext_resource path="res://addons/escoria-core/game/core-scripts/esc_item.gd" type="Script" id=7] -[ext_resource path="res://game/rooms/room09/button/button.tscn" type="PackedScene" id=8] -[ext_resource path="res://game/rooms/room09/r_door.tscn" type="PackedScene" id=9] +[ext_resource path="res://game/rooms/room09/locker_door_opened.png" type="Texture" id=8] +[ext_resource path="res://game/rooms/room09/room9background.png" type="Texture" id=9] [ext_resource path="res://game/items/textures/genericItem_color_127.png" type="Texture" id=10] [ext_resource path="res://game/items/inventory/r9_bottle.tscn" type="PackedScene" id=11] [ext_resource path="res://addons/escoria-core/game/core-scripts/esc_location.gd" type="Script" id=12] +[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_exit.gd" type="Script" id=13] +[ext_resource path="res://game/rooms/room09/locker_door_closed.png" type="Texture" id=14] +[ext_resource path="res://game/items/inventory/bottle.png" type="Texture" id=15] +[ext_resource path="res://game/rooms/room09/right_door.png" type="Texture" id=16] [sub_resource type="NavigationPolygon" id=1] -vertices = PoolVector2Array( 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, 1143.08, 613.35, -9.16094, 803.802, -6.44019, 711.297, 846.646, 637.49, 3.15687, 646.051, 59.2201, 628.698, 84.5821, 654.06, 864.626, 613.518, 428.618, 640.487, 386.666, 618.012, 129.634, 615.792 ) -polygons = [ PoolIntArray( 0, 1, 2, 3 ), PoolIntArray( 4, 0, 3, 5, 6, 7 ), PoolIntArray( 6, 8, 9, 10 ), PoolIntArray( 7, 11, 4 ), PoolIntArray( 12, 7, 6, 10 ), PoolIntArray( 13, 12, 10, 14 ) ] -outlines = [ PoolVector2Array( -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698, 84.5821, 654.06, 129.634, 615.792, 386.666, 618.012, 428.618, 640.487, 846.646, 637.49, 864.626, 613.518, 1143.08, 613.35, 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, -9.16094, 803.802 ) ] +vertices = PoolVector2Array( 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, 820.268, 705.779, -9.16094, 803.802, -6.44019, 711.297, 491.268, 705.779, 129.634, 615.792, 455.268, 618.779, 84.5821, 654.06, 3.15687, 646.051, 59.2201, 628.698, 864.626, 613.518, 1143.08, 613.35 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ), PoolIntArray( 4, 3, 5, 6, 7 ), PoolIntArray( 8, 9, 7, 10 ), PoolIntArray( 6, 11, 12, 10 ), PoolIntArray( 4, 13, 14, 0, 3 ), PoolIntArray( 7, 6, 10 ) ] +outlines = [ PoolVector2Array( -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698, 84.5821, 654.06, 129.634, 615.792, 455.268, 618.779, 491.268, 705.779, 820.268, 705.779, 864.626, 613.518, 1143.08, 613.35, 1168.92, 640.557, 1182.53, 588.863, 1269.59, 622.872, 1275.03, 799.721, -9.16094, 803.802 ) ] + +[sub_resource type="Animation" id=11] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("bottle:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=12] +resource_name = "remove_bottle" +tracks/0/type = "value" +tracks/0/path = NodePath("bottle:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} [sub_resource type="Animation" id=2] resource_name = "set_bottle" @@ -33,6 +67,343 @@ tracks/0/keys = { "values": [ true ] } +[sub_resource type="Animation" id=13] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1227, 244 ) ] +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Sprite:position:x") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 1227, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Sprite:position:y") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 244, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/3/type = "bezier" +tracks/3/path = NodePath("Sprite:scale:x") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"points": PoolRealArray( 1, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/4/type = "bezier" +tracks/4/path = NodePath("Sprite:scale:y") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"points": PoolRealArray( 1, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=14] +resource_name = "close_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1227, 244 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=15] +resource_name = "open_door" +length = 1.1 +tracks/0/type = "bezier" +tracks/0/path = NodePath("Sprite:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( 1227, -0.25, 0, 0.25, 0, 1276.43, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0, 1 ) +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Sprite:position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 244, -0.25, 0, 0.25, 0, 265.47, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0, 1 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Sprite:scale:x") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 1, -0.25, 0, 0.25, 0, 0.01, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0, 1 ) +} +tracks/3/type = "bezier" +tracks/3/path = NodePath("Sprite:scale:y") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"points": PoolRealArray( 1, -0.25, 0, 0.25, 0, 0.88, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0, 1 ) +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 40, 40 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 49, 147.5 ) + +[sub_resource type="Animation" id=5] +resource_name = "close_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("closed_door:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("opened_door:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=6] +resource_name = "open_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("opened_door:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("closed_door:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=7] +resource_name = "close_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("closed_door:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("opened_door:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=8] +resource_name = "open_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("opened_door:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("closed_door:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=9] +resource_name = "close_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("closed_door:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("opened_door:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=10] +resource_name = "open_door" +length = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath("opened_door:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("closed_door:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + [node name="room9" type="Node2D"] script = ExtResource( 6 ) __meta__ = { @@ -43,17 +414,6 @@ esc_script = "res://game/rooms/room09/esc/room09.esc" player_scene = ExtResource( 4 ) camera_limits = [ Rect2( 0, 0, 1289, 555 ) ] -[node name="background" parent="." instance=ExtResource( 2 )] - -[node name="room_label" type="Label" parent="background"] -margin_right = 62.0 -margin_bottom = 16.0 -custom_fonts/font = ExtResource( 3 ) -text = "ROOM 9" -__meta__ = { -"_edit_use_anchors_": false -} - [node name="walkable_area" type="Navigation2D" parent="."] script = ExtResource( 1 ) @@ -64,120 +424,46 @@ __meta__ = { "_editor_description_": "" } -[node name="Hotspots" type="Node" parent="."] +[node name="ESCBackground" type="TextureRect" parent="."] +margin_right = 1280.0 +margin_bottom = 550.0 +mouse_filter = 2 +texture = ExtResource( 9 ) +script = ExtResource( 2 ) -[node name="l_door" type="Area2D" parent="Hotspots"] -pause_mode = 1 -script = ExtResource( 7 ) -global_id = "r9_l_exit" -esc_script = "res://game/rooms/room09/esc/left_exit.esc" -is_exit = true -tooltip_name = "Left exit" -default_action = "walk" -dialog_color = Color( 1, 1, 1, 1 ) -animations = null - -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/l_door"] -polygon = PoolVector2Array( 0.328762, 440.897, 1.85199, 119.926, 85.9517, 74.6212, 87.1409, 377.869 ) - -[node name="Position2D" type="Position2D" parent="Hotspots/l_door"] -position = Vector2( 37.4521, 392.045 ) -script = ExtResource( 12 ) - -[node name="r_door" parent="Hotspots" instance=ExtResource( 9 )] -pause_mode = 1 -global_id = "r9_r_exit" -esc_script = "res://game/rooms/room09/esc/right_exit.esc" -animations = null - -[node name="Position2D" type="Position2D" parent="Hotspots/r_door"] -position = Vector2( 1198.65, 391.058 ) -script = ExtResource( 12 ) - -[node name="r9_closet_left" parent="Hotspots" instance=ExtResource( 5 )] -position = Vector2( 435.233, 64.1518 ) -global_id = "r9_closet_left" -esc_script = "res://game/rooms/room09/esc/closet_left.esc" -tooltip_name = "Left closet" - -[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_left"] -position = Vector2( 69.9246, 318.898 ) -script = ExtResource( 12 ) - -[node name="bottle_left" parent="Hotspots/r9_closet_left" instance=ExtResource( 11 )] -visible = false -position = Vector2( 46.4878, 47.8335 ) -scale = Vector2( 0.5, 0.5 ) -global_id = "r9_bottle_left" -dont_apply_terrain_scaling = true - -[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_left/bottle_left"] -position = Vector2( -26.727, 543.448 ) -script = ExtResource( 12 ) - -[node name="r9_closet_middle" parent="Hotspots" instance=ExtResource( 5 )] -position = Vector2( 572.963, 65.2113 ) -global_id = "r9_closet_middle" -esc_script = "res://game/rooms/room09/esc/closet_middle.esc" -tooltip_name = "Middle closet" - -[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_middle"] -position = Vector2( 65.6867, 317.839 ) -script = ExtResource( 12 ) - -[node name="bottle_middle" parent="Hotspots/r9_closet_middle" instance=ExtResource( 11 )] -visible = false -position = Vector2( 45.9562, 46.774 ) -scale = Vector2( 0.5, 0.5 ) -global_id = "r9_bottle_middle" -dont_apply_terrain_scaling = true - -[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_middle/bottle_middle"] -position = Vector2( -26.727, 543.448 ) -script = ExtResource( 12 ) - -[node name="r9_closet_right" parent="Hotspots" instance=ExtResource( 5 )] -position = Vector2( 710.693, 66.2707 ) -global_id = "r9_closet_right" -esc_script = "res://game/rooms/room09/esc/closet_right.esc" -tooltip_name = "Right closet" - -[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_right"] -position = Vector2( 64.6273, 316.779 ) -script = ExtResource( 12 ) - -[node name="bottle_right" parent="Hotspots/r9_closet_right" instance=ExtResource( 11 )] -visible = false -position = Vector2( 47.2065, 45.7146 ) -scale = Vector2( 0.5, 0.5 ) -global_id = "r9_bottle_right" -dont_apply_terrain_scaling = true - -[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_right/bottle_right"] -position = Vector2( -26.727, 543.448 ) -script = ExtResource( 12 ) - -[node name="button" parent="Hotspots" instance=ExtResource( 8 )] -pause_mode = 1 -position = Vector2( 240.688, 160.459 ) -global_id = "r9_button_reset" -esc_script = "res://game/rooms/room09/esc/button_reset.esc" -animations = null - -[node name="Position2D" type="Position2D" parent="Hotspots/button"] -position = Vector2( 30.204, 209.54 ) -script = ExtResource( 12 ) - -[node name="Label" type="Label" parent="Hotspots/button"] -margin_left = -15.5154 -margin_top = -23.3368 -margin_right = 59.4846 -margin_bottom = -7.33676 +[node name="room_label" type="Label" parent="ESCBackground"] +margin_right = 82.0 +margin_bottom = 21.0 custom_fonts/font = ExtResource( 3 ) -text = "Reset closets" -__meta__ = { -"_edit_use_anchors_": false -} +text = "ROOM 9" + +[node name="Label" type="Label" parent="ESCBackground"] +margin_left = 841.0 +margin_top = 7.0 +margin_right = 909.0 +margin_bottom = 21.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +text = "This room demonstrates a puzzle that changes +depending on what the player does. The bottle +will appear in whichever closet is opened last. + +The reset has also been set up to only reset if +the puzzle hasn't been completed. This differs to +the previous room that always resets the puzzle. + +The state of the puzzle is preserved if you leave +the room. + +Open all closets, take the bottle, and put it on +the stand to complete the room." + +[node name="open_doorway_graphic" type="Polygon2D" parent="."] +position = Vector2( -2, 4 ) +z_index = -2 +color = Color( 0, 0, 0, 1 ) +polygon = PoolVector2Array( 1172, 54, 1280, 96, 1278, 422, 1173, 355 ) + +[node name="Hotspots" type="Node" parent="."] [node name="stand" type="Area2D" parent="Hotspots"] pause_mode = 1 @@ -193,24 +479,216 @@ dialog_color = Color( 1, 1, 1, 1 ) animations = null [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/stand"] -polygon = PoolVector2Array( 1086.57, 357.819, 1087.46, 226.857, 1134.68, 228.639, 1133.79, 358.71 ) - -[node name="Line2D" type="Line2D" parent="Hotspots/stand"] -points = PoolVector2Array( 1103.65, 354.291, 1103.65, 240.701, 1092.07, 236.692, 1090.74, 349.391, 1104.99, 354.736, 1125.48, 354.736, 1125.93, 239.365, 1099.2, 238.474, 1089.85, 234.465, 1115.68, 234.02, 1127.71, 238.919 ) +position = Vector2( -11.383, 25.1091 ) +polygon = PoolVector2Array( 1090, 348, 1087.46, 226.857, 1155, 226, 1155, 346 ) [node name="bottle" type="Sprite" parent="Hotspots/stand"] visible = false -position = Vector2( 1110, 193.494 ) -scale = Vector2( 0.6, 0.6 ) -texture = ExtResource( 10 ) +position = Vector2( 1108.62, 235.109 ) +texture = ExtResource( 15 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="Hotspots/stand"] +anims/RESET = SubResource( 11 ) +anims/remove_bottle = SubResource( 12 ) anims/set_bottle = SubResource( 2 ) [node name="Position2D" type="Position2D" parent="Hotspots/stand"] position = Vector2( 1043.27, 359.243 ) script = ExtResource( 12 ) +[node name="door_l" type="Area2D" parent="Hotspots"] +script = ExtResource( 13 ) +global_id = "r9_l_exit" +esc_script = "res://game/rooms/room09/esc/left_exit.esc" +is_exit = true + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/door_l"] +polygon = PoolVector2Array( 0, 108, 105, 62, 108, 355, 1, 422 ) + +[node name="ESCLocation" type="Position2D" parent="Hotspots/door_l"] +position = Vector2( 56, 385 ) +script = ExtResource( 12 ) + +[node name="door_r" type="Area2D" parent="Hotspots"] +script = ExtResource( 13 ) +global_id = "r9_r_exit" +esc_script = "res://game/rooms/room09/esc/right_exit.esc" +is_exit = true + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/door_r"] +polygon = PoolVector2Array( 1174, 61, 1280, 107, 1280, 423, 1172, 353 ) + +[node name="ESCLocation" type="Position2D" parent="Hotspots/door_r"] +position = Vector2( 1228, 386 ) +script = ExtResource( 12 ) + +[node name="Sprite" type="Sprite" parent="Hotspots/door_r"] +position = Vector2( 1227, 244 ) +z_index = -1 +texture = ExtResource( 16 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Hotspots/door_r"] +anims/RESET = SubResource( 13 ) +anims/close_door = SubResource( 14 ) +anims/open_door = SubResource( 15 ) + +[node name="reset_button" type="Area2D" parent="Hotspots"] +pause_mode = 1 +position = Vector2( 125, 8 ) +script = ExtResource( 7 ) +global_id = "r9_reset_button" +esc_script = "res://game/rooms/room09/esc/button_reset.esc" +tooltip_name = "reset button" +default_action = "use" +inventory_texture = ExtResource( 5 ) +dialog_color = Color( 1, 1, 1, 1 ) +animations = null + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/reset_button"] +position = Vector2( 291, 194 ) +shape = SubResource( 3 ) + +[node name="Label" type="Label" parent="Hotspots/reset_button"] +margin_left = 242.0 +margin_top = 233.0 +margin_right = 339.0 +margin_bottom = 254.0 +custom_fonts/font = ExtResource( 3 ) +text = "Reset closets" + +[node name="ESCLocation" type="Position2D" parent="Hotspots/reset_button"] +position = Vector2( 283, 371 ) +script = ExtResource( 12 ) + +[node name="Sprite" type="Sprite" parent="Hotspots/reset_button"] +position = Vector2( 290, 193 ) +texture = ExtResource( 5 ) + +[node name="r9_closet_left" type="Area2D" parent="Hotspots"] +pause_mode = 1 +position = Vector2( -1, 0 ) +script = ExtResource( 7 ) +global_id = "r9_closet_left" +esc_script = "res://game/rooms/room09/esc/closet_left.esc" +tooltip_name = "closet" +default_action = "open" +inventory_texture = ExtResource( 14 ) +dialog_color = Color( 1, 1, 1, 1 ) +animations = null + +[node name="closed_door" type="Sprite" parent="Hotspots/r9_closet_left"] +visible = false +position = Vector2( 570, 248 ) +texture = ExtResource( 14 ) + +[node name="opened_door" type="Sprite" parent="Hotspots/r9_closet_left"] +position = Vector2( 525, 273 ) +texture = ExtResource( 8 ) + +[node name="ESCLocation" type="Position2D" parent="Hotspots/r9_closet_left"] +position = Vector2( 571, 447 ) +script = ExtResource( 12 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/r9_closet_left"] +position = Vector2( 570, 248.5 ) +shape = SubResource( 4 ) + +[node name="bottle_left" parent="Hotspots/r9_closet_left" instance=ExtResource( 11 )] +position = Vector2( 598, 162 ) +global_id = "r9_bottle_left" +dont_apply_terrain_scaling = true + +[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_left/bottle_left"] +position = Vector2( -27, 285 ) +script = ExtResource( 12 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Hotspots/r9_closet_left"] +anims/close_door = SubResource( 5 ) +anims/open_door = SubResource( 6 ) + +[node name="r9_closet_middle" type="Area2D" parent="Hotspots"] +pause_mode = 1 +script = ExtResource( 7 ) +global_id = "r9_closet_middle" +esc_script = "res://game/rooms/room09/esc/closet_middle.esc" +tooltip_name = "closet" +default_action = "open" +inventory_texture = ExtResource( 14 ) +dialog_color = Color( 1, 1, 1, 1 ) +animations = null + +[node name="closed_door" type="Sprite" parent="Hotspots/r9_closet_middle"] +visible = false +position = Vector2( 670, 248 ) +texture = ExtResource( 14 ) + +[node name="opened_door" type="Sprite" parent="Hotspots/r9_closet_middle"] +position = Vector2( 625, 269 ) +texture = ExtResource( 8 ) + +[node name="ESCLocation" type="Position2D" parent="Hotspots/r9_closet_middle"] +position = Vector2( 671, 446.5 ) +script = ExtResource( 12 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/r9_closet_middle"] +position = Vector2( 670, 248 ) +shape = SubResource( 4 ) + +[node name="bottle_middle" parent="Hotspots/r9_closet_middle" instance=ExtResource( 11 )] +position = Vector2( 692, 163 ) +global_id = "r9_bottle_middle" +dont_apply_terrain_scaling = true + +[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_middle/bottle_middle"] +position = Vector2( -21, 284 ) +script = ExtResource( 12 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Hotspots/r9_closet_middle"] +anims/close_door = SubResource( 7 ) +anims/open_door = SubResource( 8 ) + +[node name="r9_closet_right" type="Area2D" parent="Hotspots"] +pause_mode = 1 +position = Vector2( 100, 0 ) +script = ExtResource( 7 ) +global_id = "r9_closet_right" +esc_script = "res://game/rooms/room09/esc/closet_right.esc" +tooltip_name = "closet" +default_action = "open" +inventory_texture = ExtResource( 14 ) +dialog_color = Color( 1, 1, 1, 1 ) +animations = null + +[node name="closed_door" type="Sprite" parent="Hotspots/r9_closet_right"] +visible = false +position = Vector2( 669.5, 248 ) +texture = ExtResource( 14 ) + +[node name="opened_door" type="Sprite" parent="Hotspots/r9_closet_right"] +position = Vector2( 625, 268 ) +texture = ExtResource( 8 ) + +[node name="ESCLocation" type="Position2D" parent="Hotspots/r9_closet_right"] +position = Vector2( 671, 446.5 ) +script = ExtResource( 12 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/r9_closet_right"] +position = Vector2( 670, 248 ) +shape = SubResource( 4 ) + +[node name="bottle_right" parent="Hotspots/r9_closet_right" instance=ExtResource( 11 )] +position = Vector2( 682, 163 ) +global_id = "r9_bottle_right" +dont_apply_terrain_scaling = true + +[node name="Position2D" type="Position2D" parent="Hotspots/r9_closet_right/bottle_right"] +position = Vector2( -11, 284 ) +script = ExtResource( 12 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Hotspots/r9_closet_right"] +anims/close_door = SubResource( 9 ) +anims/open_door = SubResource( 10 ) + [node name="player_start" type="Position2D" parent="."] position = Vector2( 76.7617, 437.649 ) script = ExtResource( 12 ) diff --git a/game/rooms/room09/room9background.png b/game/rooms/room09/room9background.png new file mode 100644 index 0000000000000000000000000000000000000000..05bf35e47af1f3041d329a82e22ca81cb3d2a1e1 GIT binary patch literal 9851 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 rVQ|S7K+Dg5+wlL%4&8B