From 92bfd3bbc214fdbac45ed53e72f36555966891dc Mon Sep 17 00:00:00 2001 From: oier Date: Thu, 21 Sep 2023 00:38:12 +0200 Subject: [PATCH 1/5] added sound library settings & command (#12) ## Changes - Added file base simple sound library - Added base UI settings and sound library settings - Added `play_lib_snd` command ## Notes - The command accepts a namespace so we can leave common sound in the root folder and chapter specific sounds in its own folder ## How to test - Run the game - All the door sounds should play as normal. Reviewed-on: https://git.fosil.eu/gymkhana/gymkhana/pulls/12 Co-authored-by: oier Co-committed-by: oier --- .../esc/commands/play_lib_snd.gd | 57 ++++++++++++++++++ .../escoria-ui-return-monkey-island/plugin.gd | 17 +++++- .../rtmi_ui_settings.gd | 7 +++ .../cocina/esc/puerta_delante.esc | 2 +- .../turno_cocina/cocina/esc/puerta_detras.esc | 2 +- .../cocina_delante/esc/puerta_cocina.esc | 7 +-- .../cocina_delante/esc/puerta_despensa.esc | 4 +- .../cocina_detras/esc/puerta_cocina.esc | 2 +- .../despensa/esc/puerta_exterior.esc | 2 +- ...nte_open.ogg => puerta_cocina_delante.ogg} | Bin ...tras_open.ogg => puerta_cocina_detras.ogg} | Bin ...{despensa_open.ogg => puerta_despensa.ogg} | Bin project.godot | 13 ++++ 13 files changed, 100 insertions(+), 13 deletions(-) create mode 100644 gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd create mode 100644 gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd rename gymkhana/sounds/{cocina_delante_open.ogg => puerta_cocina_delante.ogg} (100%) rename gymkhana/sounds/{cocina_detras_open.ogg => puerta_cocina_detras.ogg} (100%) rename gymkhana/sounds/{despensa_open.ogg => puerta_despensa.ogg} (100%) diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd new file mode 100644 index 00000000..a80ce7ac --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd @@ -0,0 +1,57 @@ +# `play_lib_snd` +# +# Plays a sound from the library. +# +# **Parameters** +# +# - *file_name*: File name withot extension +# - *namespace*: Subfolder +# +# @ESC +extends ESCBaseCommand +class_name PlayLibSound + + +# Return the descriptor of the arguments of this command +func configure() -> ESCCommandArgumentDescriptor: + return ESCCommandArgumentDescriptor.new( + 1, + [TYPE_STRING,TYPE_STRING], + [null,""] + ) + + +# Validate whether the given arguments match the command descriptor +func validate(arguments: Array): + if not .validate(arguments): + return false + + var subFolder = arguments[1] + if(arguments[1] != ""): + subFolder += "/" + var resourceFile = "res://gymkhana/sounds/" + subFolder + arguments[0] + ".ogg" + if not ResourceLoader.exists(resourceFile): + escoria.logger.error( + self, + "[%s]: invalid parameter. File %s not found." + % [get_command_name(), resourceFile] + ) + return false + + return true + + +# Run the command +func run(command_params: Array) -> int: + var resourceFile = "res://gymkhana/sounds/" + command_params[0] + ".ogg" + escoria.object_manager.get_object("_sound").node.set_state( + resourceFile + ) + return ESCExecution.RC_OK + + +# Function called when the command is interrupted. +func interrupt(): + # Do nothing + pass + diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd b/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd index a117b176..1f9c0e04 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/plugin.gd @@ -12,12 +12,25 @@ func get_plugin_name(): func disable_plugin(): print("Disabling plugin Escoria UI Return to Monkey Island.") EscoriaPlugin.deregister_ui("res://gymkhana/addons/escoria-ui-return-monkey-island/game.tscn") + ESCProjectSettingsManager.remove_setting( + RTMIUiSettings.SOUND_LIBRARY_FOLDER + ) + # Register UI with Escoria func enable_plugin(): - print("Enabling plugin Escoria UI Return to Monkey Island.") - if not EscoriaPlugin.register_ui(self, "res://gymkhana/addons/escoria-ui-return-monkey-island/game.tscn"): + print("Enabling plugin Escoria Dialog Simple") + + if EscoriaPlugin.register_ui(self, "res://gymkhana/addons/escoria-ui-return-monkey-island/game.tscn"): + ESCProjectSettingsManager.register_setting( + RTMIUiSettings.SOUND_LIBRARY_FOLDER, + "res://game/sounds", + { + "type": TYPE_STRING + } + ) + else: get_editor_interface().set_plugin_enabled( get_plugin_name(), false diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd b/gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd new file mode 100644 index 00000000..942ce512 --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd @@ -0,0 +1,7 @@ +extends Resource +class_name RTMIUiSettings + +const SETTINGS_ROOT = "escoria/rtmi_ui" + + +const SOUND_LIBRARY_FOLDER = "%s/sound_library_folder" % SETTINGS_ROOT diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc index 5c1a37a4..1f136478 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_delante.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/cocina_delante_open.ogg +play_lib_snd puerta_cocina_delante change_scene "res://gymkhana/rooms/turno_cocina/cocina_delante/cocina_delante.tscn" diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc index aa647530..4a1e35e1 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/puerta_detras.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/cocina_detras_open.ogg +play_lib_snd puerta_cocina_detras change_scene "res://gymkhana/rooms/turno_cocina/cocina_detras/cocina_detras.tscn" diff --git a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc index 84e8d46f..c3a50c2e 100644 --- a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc +++ b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_cocina.esc @@ -1,6 +1,3 @@ :action1 -accept_input SKIP -play_video res://gymkhana/videos/test_video.ogv -accept_input ALL -play_snd res://gymkhana/sounds/cocina_delante_open.ogg -change_scene "res://gymkhana/rooms/turno_cocina/cocina/cocina.tscn" \ No newline at end of file +play_lib_snd puerta_cocina_delante +change_scene "res://gymkhana/rooms/turno_cocina/cocina/cocina.tscn" diff --git a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc index cbbda34c..4d673434 100644 --- a/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc +++ b/gymkhana/rooms/turno_cocina/cocina_delante/esc/puerta_despensa.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/despensa_open.ogg -change_scene "res://gymkhana/rooms/turno_cocina/despensa/despensa.tscn" +play_lib_snd puerta_despensa +change_scene "res://gymkhana/rooms/turno_cocina/despensa/despensa.tscn" \ No newline at end of file diff --git a/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc b/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc index e6a65b9e..d304a252 100644 --- a/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc +++ b/gymkhana/rooms/turno_cocina/cocina_detras/esc/puerta_cocina.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/cocina_detras_open.ogg +play__lib_snd puerta_cocina_detras change_scene "res://gymkhana/rooms/turno_cocina/cocina/cocina.tscn" diff --git a/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc b/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc index 4be9bafa..68409241 100644 --- a/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc +++ b/gymkhana/rooms/turno_cocina/despensa/esc/puerta_exterior.esc @@ -1,3 +1,3 @@ :action1 -play_snd res://gymkhana/sounds/despensa_open.ogg +play_lib_snd puerta_despensa change_scene "res://gymkhana/rooms/turno_cocina/cocina_delante/cocina_delante.tscn" diff --git a/gymkhana/sounds/cocina_delante_open.ogg b/gymkhana/sounds/puerta_cocina_delante.ogg similarity index 100% rename from gymkhana/sounds/cocina_delante_open.ogg rename to gymkhana/sounds/puerta_cocina_delante.ogg diff --git a/gymkhana/sounds/cocina_detras_open.ogg b/gymkhana/sounds/puerta_cocina_detras.ogg similarity index 100% rename from gymkhana/sounds/cocina_detras_open.ogg rename to gymkhana/sounds/puerta_cocina_detras.ogg diff --git a/gymkhana/sounds/despensa_open.ogg b/gymkhana/sounds/puerta_despensa.ogg similarity index 100% rename from gymkhana/sounds/despensa_open.ogg rename to gymkhana/sounds/puerta_despensa.ogg diff --git a/project.godot b/project.godot index 13d3b962..748c3154 100644 --- a/project.godot +++ b/project.godot @@ -500,6 +500,11 @@ _global_script_classes=[ { "path": "res://gymkhana/addons/escoria-ui-return-monkey-island/item_outline.gd" }, { "base": "ESCBaseCommand", +"class": "PlayLibSound", +"language": "GDScript", +"path": "res://gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/play_lib_snd.gd" +}, { +"base": "ESCBaseCommand", "class": "PlaySndCommand", "language": "GDScript", "path": "res://addons/escoria-core/game/core-scripts/esc/commands/play_snd.gd" @@ -534,6 +539,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://gymkhana/addons/escoria-ui-return-monkey-island-dialog-simple/rtmi_dialog_simple_settings.gd" }, { +"base": "Resource", +"class": "RTMIUiSettings", +"language": "GDScript", +"path": "res://gymkhana/addons/escoria-ui-return-monkey-island/rtmi_ui_settings.gd" +}, { "base": "ESCBaseCommand", "class": "RandGlobalCommand", "language": "GDScript", @@ -798,6 +808,7 @@ _global_script_class_icons={ "InventoryAddCommand": "", "InventoryRemoveCommand": "", "ItemOutline": "res://addons/escoria-core/design/esc_item.svg", +"PlayLibSound": "", "PlaySndCommand": "", "PlayVideoCommand": "", "PrintCommand": "", @@ -805,6 +816,7 @@ _global_script_class_icons={ "QueueResourceCommand": "", "RTMISimpleDialogPlugin": "", "RTMISimpleDialogSettings": "", +"RTMIUiSettings": "", "RandGlobalCommand": "", "RepeatCommand": "", "SayCommand": "", @@ -926,6 +938,7 @@ rtmi_dialog_simple/left_click_action="Speed up" rtmi_dialog_simple/stop_talking_animation_on="End of audio" debug/enable_hover_stack_viewer=true ui/dialogs_chooser="res://addons/escoria-core/game/scenes/dialogs/esc_dialog_options_chooser.gd" +rtmi_ui/sound_library_folder="res://gymkhana/sounds/" [input] From 0b21813e7733a8eef0e5f8979db0219083bd8441 Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Fri, 22 Sep 2023 00:10:02 +0200 Subject: [PATCH 2/5] gymkhana/item_count (#16) Item can now be countable objects, like money, bullets or even potatoes! Reviewed-on: https://git.fosil.eu/gymkhana/gymkhana/pulls/16 --- .../esc/commands/item_count_add.gd | 39 ++++++++++ .../esc/esc_item_count_manager.gd | 76 +++++++++++++++++++ .../esc_item_with_tooltip.gd | 16 +++- .../items/inventory/turno_cocina_frontal.esc | 1 - .../items/inventory/turno_cocina_patata.esc | 11 ++- .../items/inventory/turno_cocina_patata.tscn | 15 ++-- .../inventory/turno_cocina_patata_grande.esc | 8 +- .../inventory/turno_cocina_patata_grande.tscn | 6 -- .../items/inventory/turno_cocina_peso.esc | 2 +- .../rooms/turno_cocina/cocina/cocina.tscn | 39 +++++++--- .../turno_cocina/cocina/esc/debajo_sofa.esc | 7 +- .../rooms/turno_cocina/despensa/despensa.tscn | 7 +- .../turno_cocina/despensa/esc/bidon_izq.esc | 4 +- project.godot | 14 +++- 14 files changed, 202 insertions(+), 43 deletions(-) create mode 100644 gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd create mode 100644 gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd new file mode 100644 index 00000000..a639ac02 --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd @@ -0,0 +1,39 @@ +# `item_count_add item_id value` +# +# Add value to the count in a item. +# - item_id: string: id of the item to apply +# - value: int: number to add +# +# @ESC +extends ESCBaseCommand +class_name ItemCountAddCommand + + +var item_count_manager = ESCItemCountManager.new() + +# Return the descriptor of the arguments of this command +func configure() -> ESCCommandArgumentDescriptor: + return ESCCommandArgumentDescriptor.new( + 1, + [TYPE_STRING, TYPE_INT], + [null, 1] + ) + + +# Validate wether the given arguments match the command descriptor +func validate(arguments: Array): + if not escoria.object_manager.has(arguments[0]): + escoria.logger.report_errors( + "item_count_add: invalid object", + ["Object %s not registered" % arguments[0]] + ) + return false + + return .validate(arguments) + + +# Run the command +func run(command_params: Array) -> int: + item_count_manager.add(command_params[0], command_params[1]) + + return ESCExecution.RC_OK diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd new file mode 100644 index 00000000..99a55afd --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd @@ -0,0 +1,76 @@ +# A manager for inventory objects +extends Resource +class_name ESCItemCountManager + + +func add(global_id: String, value:= 1) -> void: + var item = get_item(global_id) + item.count = item.count + value + updateSprite(item) + + +func remove(global_id: String, value:= 1) -> void: + var item = get_item(global_id) + item.count = item.count - value + updateSprite(item) + + +func set(global_id: String, value: int) -> void: + var item = get_item(global_id) + item.count = value + updateSprite(item) + + +func removeFromInventoryIfCountLessThan(global_id: String, value:= 1) -> void: + var item = get_item(global_id) + if item.count < value: + escoria.inventory_manager.remove_item(global_id) + + +func get_item(global_id: String) -> ESCItem: + var node = escoria.object_manager.get_object(global_id).node + if not node is ESCItem: + escoria.logger.error( + "item_count_add: invalid object", + ["Object is not an ESCItem"] + ) + return null + + return node + + +func updateSprite(item: ESCItemWithTooltip) -> void: + var child_node = item.get_node("Sprite") as Sprite + if not child_node is Sprite: + escoria.logger.report_errors( + "item_count_add: invalid sprite", + ["No Sprite node found"] + ) + + var texture_path = getCountTexturePath(item) + var texture = load(texture_path) + + # Update texture in scene + var sprite = child_node as Sprite + sprite.texture = texture + + # Update texture in scene + # TODO optional inventory_texture + # TODO change inventory texture without removing and adding the item + # https://github.com/godot-escoria/escoria-issues/issues/364 + # https://discord.com/channels/884336424780984330/1124614097917460584/1127151969614696548 + item.inventory_texture = texture + if escoria.inventory_manager.inventory_has(item.global_id): + escoria.inventory_manager.remove_item(item.global_id) + escoria.inventory_manager.add_item(item.global_id) + + +func getCountTexturePath(item: ESCItemWithTooltip) -> String: + var count = item.count + var textures = item.count_textures # TODO sort dictionaries by start key + var i = 0 + + while (i < textures.size() - 1) and count >= textures[i + 1].start: + i = i + 1 + + return textures[i].texture diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd index dfaae5c0..6b7d8a52 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd @@ -19,12 +19,26 @@ export(Dictionary) var tooltips = {} # Action 3 tooltip texts if item is target. Dictionary with tool's global id as key. export(Dictionary) var action3_target_texts = {} -# Action 4 tooltip texts if item is target. Dictionary with tool's global id as key. +# Action 4 tooltip texts if item is target. Dictionary with tool's global id as key export(Dictionary) var action4_target_texts = {} # If action used by player is in this list, this is a valid target (second item in combination) export(Array) var target_when_selected_action_is_in = [] +# If item is countable (E.g. money) marks the quantity +export(int) var count = 0 + +# If item is countable (E.g. money) marks which texture to use depending of count value. +# Each element is a Dictionary with start and texture keys: +# [ +# { "start": 0, "texture": "res://gymkhana/items/inventory/assets/no_money.png"}, +# { "start": 1, "texture": "res://gymkhana/items/inventory/assets/one_coin.png"}, +# { "start": 2, "texture": "res://gymkhana/items/inventory/assets/two_coins.png"}, +# { "start": 3, "texture": "res://gymkhana/items/inventory/assets/coins.png"}, +# { "start": 10, "texture": "res://gymkhana/items/inventory/assets/bills.png"}, +# ] +export(Array) var count_textures = [] + var outline: ItemOutline var isHighlighted: bool diff --git a/gymkhana/items/inventory/turno_cocina_frontal.esc b/gymkhana/items/inventory/turno_cocina_frontal.esc index f25f4a6d..8c204361 100644 --- a/gymkhana/items/inventory/turno_cocina_frontal.esc +++ b/gymkhana/items/inventory/turno_cocina_frontal.esc @@ -1,3 +1,2 @@ :action3 say player "Es mi frontal de toda la vida, le tengo cariño" - diff --git a/gymkhana/items/inventory/turno_cocina_patata.esc b/gymkhana/items/inventory/turno_cocina_patata.esc index db47f32c..57020570 100644 --- a/gymkhana/items/inventory/turno_cocina_patata.esc +++ b/gymkhana/items/inventory/turno_cocina_patata.esc @@ -1,6 +1,11 @@ :action1 -say player "Que cosa tan curiosa" - + say player "Que patata más bonita, cómo se nota que es de la huerta." + :action2 -say player "No lo quiero coger" + say player "Bieen! una patata!" + set_active turno_cocina_patata false + item_count_add turno_cocina_patata + inventory_add turno_cocina_patata +:action3 + say player "Que patata más bonita, cómo se nota que es de la huerta." diff --git a/gymkhana/items/inventory/turno_cocina_patata.tscn b/gymkhana/items/inventory/turno_cocina_patata.tscn index 7ac37fc8..1b4bc386 100644 --- a/gymkhana/items/inventory/turno_cocina_patata.tscn +++ b/gymkhana/items/inventory/turno_cocina_patata.tscn @@ -15,12 +15,17 @@ esc_script = "res://gymkhana/items/inventory/turno_cocina_patata.esc" inventory_texture = ExtResource( 2 ) dialog_color = Color( 1, 1, 1, 1 ) tooltips = { - "action1": "¿Que es esto?", - "action2": "Coger", - "action3": "Mirar", - "action4": "Usar" +"action1": "Admirar la patata", +"action2": "Cogerla", +"action3": "Admirar la patata", } animations = null +count_textures = [ + { "start": 1, "texture": "res://gymkhana/items/inventory/assets/turno_cocina_patata.png" }, + { "start": 2, "texture": "res://gymkhana/items/inventory/assets/turno_cocina_dos_patatas.png" }, + { "start": 3, "texture": "res://gymkhana/items/inventory/assets/turno_cocina_tres_patatas.png" }, + { "start": 4, "texture": "res://gymkhana/items/inventory/assets/turno_cocina_cuatro_patatas.png" }, +] [node name="Sprite" type="Sprite" parent="."] position = Vector2( -2, 0 ) @@ -33,4 +38,4 @@ shape = SubResource( 1 ) [node name="ESCLocation" type="Position2D" parent="."] position = Vector2( -51, 69 ) -script = ExtResource( 3 ) \ No newline at end of file +script = ExtResource( 3 ) diff --git a/gymkhana/items/inventory/turno_cocina_patata_grande.esc b/gymkhana/items/inventory/turno_cocina_patata_grande.esc index ed68455d..6eb1a3db 100644 --- a/gymkhana/items/inventory/turno_cocina_patata_grande.esc +++ b/gymkhana/items/inventory/turno_cocina_patata_grande.esc @@ -1,13 +1,13 @@ :action1 -say player "Hay una patata!" +say player "Solo veo pieles de cebollas." :action2 -say current_player "Bieeen!!! una patata!" +say current_player "Bieeen!!! Había una patata!" set_active turno_cocina_patata_grande false inventory_add turno_cocina_patata_grande :action3 -say current_player "Es bien grande" +say current_player "Es la segunda patata más grande que he visto nunca." :action4 -say current_player "Así no me sirve de nada" \ No newline at end of file +say current_player "Creo que necesito patatas normales, no patatas gigantes..." diff --git a/gymkhana/items/inventory/turno_cocina_patata_grande.tscn b/gymkhana/items/inventory/turno_cocina_patata_grande.tscn index 0e6094c0..cab61616 100644 --- a/gymkhana/items/inventory/turno_cocina_patata_grande.tscn +++ b/gymkhana/items/inventory/turno_cocina_patata_grande.tscn @@ -11,10 +11,4 @@ esc_script = "res://gymkhana/items/inventory/turno_cocina_patata_grande.esc" combine_when_selected_action_is_in = [ ] inventory_texture = ExtResource( 2 ) dialog_color = Color( 1, 1, 1, 1 ) -tooltips = { - "action1": "¿Que es esto?", - "action2": "Coger", - "action3": "Mirar", - "action4": "Usar" -} animations = null diff --git a/gymkhana/items/inventory/turno_cocina_peso.esc b/gymkhana/items/inventory/turno_cocina_peso.esc index 0c8385db..6bce9d69 100644 --- a/gymkhana/items/inventory/turno_cocina_peso.esc +++ b/gymkhana/items/inventory/turno_cocina_peso.esc @@ -1,5 +1,5 @@ :action1 -say player "Es un peso, con esto podría coger la cantidad exacta de algún ingrediente" + say player "Es un peso, con esto podría coger la cantidad exacta de algún ingrediente" :action2 say current_player "Podria ser útil!!" diff --git a/gymkhana/rooms/turno_cocina/cocina/cocina.tscn b/gymkhana/rooms/turno_cocina/cocina/cocina.tscn index 9e45425c..49ecd074 100644 --- a/gymkhana/rooms/turno_cocina/cocina/cocina.tscn +++ b/gymkhana/rooms/turno_cocina/cocina/cocina.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://addons/escoria-core/game/core-scripts/esc_room.gd" type="Script" id=1] [ext_resource path="res://gymkhana/characters/oier/oier.tscn" type="PackedScene" id=2] @@ -11,6 +11,7 @@ [ext_resource path="res://gymkhana/rooms/turno_cocina/cocina/assets/foreground-silla.png" type="Texture" id=9] [ext_resource path="res://gymkhana/items/inventory/turno_cocina_peso.tscn" type="PackedScene" id=10] [ext_resource path="res://gymkhana/items/inventory/turno_cocina_bol.tscn" type="PackedScene" id=11] +[ext_resource path="res://gymkhana/items/inventory/turno_cocina_patata.tscn" type="PackedScene" id=12] [sub_resource type="NavigationPolygon" id=3] vertices = PoolVector2Array( 2398, 485, 2442, 499, 2446, 617, 2409, 597, 2283, 493, 144, 568, 3, 570, -56, 524, 111, 445, 162, 471, 229, 445, 200, 465, 252, 478, 305, 524, 273, 570, 2287, 687, 2062, 635, 2113, 565, 696, 737, 512, 591, 703, 699, 1269, 739, 1241, 699, 1502, 646, 1409, 752, 1345, 667, 1489, 627, 1347, 563, 1480, 587, 1466, 514, 1345, 505, 1382, 439, 2109, 424, 2238, 386, 1788, 325, 2018, 419, 1787, 383, 1466, 412, 1493, 479, 1305.5, 467, 1337.5, 449, 1306.5, 498 ) @@ -39,7 +40,7 @@ player_doubleclick_speed_multiplier = 2.0 [node name="Foreground-mesa" type="Sprite" parent="ESCTerrain"] position = Vector2( 1786, 424 ) -z_index = 4096 +z_index = 1000 texture = ExtResource( 8 ) [node name="NavigationPolygonInstance" type="NavigationPolygonInstance" parent="ESCTerrain"] @@ -60,7 +61,7 @@ is_exit = true combine_when_selected_action_is_in = [ ] dialog_color = Color( 1, 1, 1, 1 ) tooltips = { - "action1": "Ir detrás" +"action1": "Ir detrás" } animations = null @@ -84,7 +85,7 @@ is_exit = true combine_when_selected_action_is_in = [ ] dialog_color = Color( 1, 1, 1, 1 ) tooltips = { - "action1": "Salir de la cocina" +"action1": "Salir de la cocina" } animations = null @@ -130,8 +131,8 @@ esc_script = "res://gymkhana/rooms/turno_cocina/cocina/esc/fregadero_der.esc" combine_when_selected_action_is_in = [ ] dialog_color = Color( 1, 1, 1, 1 ) tooltips = { - "action1": "Mirar fregadero", - "action2": "Usar" +"action1": "Mirar fregadero", +"action2": "Usar" } action3_target_texts = { "turno_cocina_bol": "Llenar el bol de agua", @@ -155,8 +156,8 @@ esc_script = "res://gymkhana/rooms/turno_cocina/cocina/esc/fregadero_izq.esc" combine_when_selected_action_is_in = [ ] dialog_color = Color( 1, 1, 1, 1 ) tooltips = { - "action1": "Mirar fregadero", - "action2": "Usar" +"action1": "Mirar el fregadero", +"action2": "Usar" } action3_target_texts = { "turno_cocina_bol": "Llenar el bol de agua", @@ -180,11 +181,11 @@ esc_script = "res://gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc" combine_when_selected_action_is_in = [ "action4" ] dialog_color = Color( 1, 1, 1, 1 ) tooltips = { - "action1": "Mirar debajo del sofa", - "action2": "Meter la mano" +"action1": "Mirar debajo del sofa", +"action2": "Meter la mano" } action3_target_texts = { -"turno_cocina_frontal": "Mirar denajo del sofa" +"turno_cocina_frontal": "Alumbrar debajo del sofa" } target_when_selected_action_is_in = [ "action3" ] animations = null @@ -195,3 +196,19 @@ polygon = PoolVector2Array( 484, 406, 485, 421, 556, 423, 551, 415, 550, 409, 55 [node name="ESCLocation" type="Position2D" parent="debajo_sofa"] position = Vector2( 420, 494 ) script = ExtResource( 5 ) + +[node name="turno_cocina_patata" parent="." instance=ExtResource( 12 )] +position = Vector2( 2202, 343 ) +rotation = -0.270526 +scale = Vector2( 0.35, 0.35 ) +z_index = 1001 +combine_when_selected_action_is_in = [ ] + +[node name="turno_cocina_patata_collision" type="CollisionPolygon2D" parent="turno_cocina_patata"] +position = Vector2( 9.0867, -13.5233 ) +z_index = 1001 +polygon = PoolVector2Array( 6.50781, 0.0583801, 20.7368, 12.8992, 7.896, 27.1279, -19.937, 31.269, -42.4258, 16.1375, -26.0684, -0.0810547 ) + +[node name="turno_cocina_patata_location" type="Position2D" parent="turno_cocina_patata"] +position = Vector2( 93.1357, 65.3632 ) +script = ExtResource( 5 ) diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc b/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc index 364e2ccb..b4cc5f03 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc @@ -8,15 +8,10 @@ stop say player "Bieen! una patata!" + item_count_add turno_cocina_patata inventory_add turno_cocina_patata set_active cocina_debajo_sofa false -:action3 turno_cocina_bol_lentejas - say player "Agua a ojo... en su justa medida." - inventory_remove turno_cocina_peso_bol - inventory_add turno_cocina_bol_lentejas - inventory_add turno_cocina_peso - :action3 turno_cocina_frontal say player "Veo una patata!!" set_global turno_cocina_frontal_debajo_sofa true diff --git a/gymkhana/rooms/turno_cocina/despensa/despensa.tscn b/gymkhana/rooms/turno_cocina/despensa/despensa.tscn index ea03721a..36863f73 100644 --- a/gymkhana/rooms/turno_cocina/despensa/despensa.tscn +++ b/gymkhana/rooms/turno_cocina/despensa/despensa.tscn @@ -141,7 +141,7 @@ pause_mode = 1 position = Vector2( 941, 385 ) script = ExtResource( 6 ) global_id = "turno_cocina_despensa_bidon_izq" -esc_script = "res://gymkhana/rooms/turno_cocina/despensa/esc/bidon_der.esc" +esc_script = "res://gymkhana/rooms/turno_cocina/despensa/esc/bidon_izq.esc" combine_when_selected_action_is_in = [ ] dialog_color = Color( 1, 1, 1, 1 ) tooltips = { @@ -163,7 +163,10 @@ script = ExtResource( 5 ) position = Vector2( 440, 161 ) scale = Vector2( 0.880435, 0.88735 ) tooltips = { - "action1": "Mirar" + "action1": "Mirar", + "action2": "Rascar por el fondo", + "action3": "Mirar", + "action4": "Usar" } [node name="ESCLocation2" type="Position2D" parent="turno_cocina_patata_grande"] diff --git a/gymkhana/rooms/turno_cocina/despensa/esc/bidon_izq.esc b/gymkhana/rooms/turno_cocina/despensa/esc/bidon_izq.esc index 5fe7e802..263ab9bc 100644 --- a/gymkhana/rooms/turno_cocina/despensa/esc/bidon_izq.esc +++ b/gymkhana/rooms/turno_cocina/despensa/esc/bidon_izq.esc @@ -1,5 +1,5 @@ :action1 -say player "Está lleno de algo que no se que es." +say player "Está lleno de algo que no sé que es." :action2 -say player "Lo que hay dentro no lo necesito para nada." \ No newline at end of file +say player "Lo que hay dentro no lo necesito para nada." diff --git a/project.godot b/project.godot index 748c3154..ed762ca3 100644 --- a/project.godot +++ b/project.godot @@ -204,7 +204,7 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://addons/escoria-core/game/scenes/dialogs/esc_dialog_options_chooser.gd" }, { -"base": "Node", +"base": "StateMachine", "class": "ESCDialogPlayer", "language": "GDScript", "path": "res://addons/escoria-core/game/scenes/dialogs/esc_dialog_player.gd" @@ -284,6 +284,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://addons/escoria-core/game/core-scripts/esc_item.gd" }, { +"base": "Resource", +"class": "ESCItemCountManager", +"language": "GDScript", +"path": "res://gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd" +}, { "base": "ESCItem", "class": "ESCItemWithTooltip", "language": "GDScript", @@ -494,6 +499,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://addons/escoria-core/game/core-scripts/esc/commands/inventory_remove.gd" }, { +"base": "ESCBaseCommand", +"class": "ItemCountAddCommand", +"language": "GDScript", +"path": "res://gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd" +}, { "base": "Polygon2D", "class": "ItemOutline", "language": "GDScript", @@ -765,6 +775,7 @@ _global_script_class_icons={ "ESCInventoryItem": "", "ESCInventoryManager": "", "ESCItem": "res://addons/escoria-core/design/esc_item.svg", +"ESCItemCountManager": "", "ESCItemWithTooltip": "res://addons/escoria-core/design/esc_item.svg", "ESCLocation": "res://addons/escoria-core/design/esc_location.svg", "ESCMain": "", @@ -807,6 +818,7 @@ _global_script_class_icons={ "IncGlobalCommand": "", "InventoryAddCommand": "", "InventoryRemoveCommand": "", +"ItemCountAddCommand": "", "ItemOutline": "res://addons/escoria-core/design/esc_item.svg", "PlayLibSound": "", "PlaySndCommand": "", From 9705ca14a44fd30cb5e49a6eecf8c5fe8f6c0262 Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Fri, 22 Sep 2023 22:39:06 +0200 Subject: [PATCH 3/5] Center cursor on item combination --- gymkhana/addons/escoria-ui-return-monkey-island/game.gd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/game.gd b/gymkhana/addons/escoria-ui-return-monkey-island/game.gd index 00291883..9fe98e05 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/game.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/game.gd @@ -310,7 +310,9 @@ func click_on_inventory_item(item_global_id: String, event: InputEvent, action: # If item needs combination with this action, use the item texture as mouse cursor if action in target_obj.combine_when_selected_action_is_in: - Input.set_custom_mouse_cursor(target_obj.inventory_texture) + var texture = target_obj.inventory_texture + var middleOfTheTexture = Vector2(texture.get_width() / 2, texture.get_height() / 2) + Input.set_custom_mouse_cursor(target_obj.inventory_texture, 0, middleOfTheTexture) escoria.action_manager.do( escoria.action_manager.ACTION.ITEM_LEFT_CLICK, From c633ad511dc8e45b7954c9af7889989c99107eeb Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Fri, 22 Sep 2023 23:49:22 +0200 Subject: [PATCH 4/5] Cutting the big potato --- .../inventory/assets/turno_cocina_ajo.png | Bin 0 -> 856 bytes .../assets/turno_cocina_cacerola.png | Bin 0 -> 1529 bytes .../assets/turno_cocina_cacerola_con_agua.png | Bin 0 -> 2656 bytes .../assets/turno_cocina_cuchillo.png | Bin 0 -> 1312 bytes .../items/inventory/turno_cocina_cuchillo.esc | 2 ++ .../inventory/turno_cocina_cuchillo.tscn | 18 ++++++++++++++ .../inventory/turno_cocina_patata_grande.esc | 6 +++++ .../inventory/turno_cocina_patata_grande.tscn | 4 ++++ .../rooms/turno_cocina/cocina/cocina.tscn | 21 +++++++++++++++++ .../turno_cocina/cocina/esc/cuchillos.esc | 12 ++++++++++ .../turno_cocina/cocina/esc/debajo_sofa.esc | 22 +++++++++--------- 11 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 gymkhana/items/inventory/assets/turno_cocina_ajo.png create mode 100644 gymkhana/items/inventory/assets/turno_cocina_cacerola.png create mode 100644 gymkhana/items/inventory/assets/turno_cocina_cacerola_con_agua.png create mode 100644 gymkhana/items/inventory/assets/turno_cocina_cuchillo.png create mode 100644 gymkhana/items/inventory/turno_cocina_cuchillo.esc create mode 100644 gymkhana/items/inventory/turno_cocina_cuchillo.tscn create mode 100644 gymkhana/rooms/turno_cocina/cocina/esc/cuchillos.esc diff --git a/gymkhana/items/inventory/assets/turno_cocina_ajo.png b/gymkhana/items/inventory/assets/turno_cocina_ajo.png new file mode 100644 index 0000000000000000000000000000000000000000..1678639ba635a59209ee841f59d387e303fa56d4 GIT binary patch literal 856 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 WkELS=5KTL`4LBcjv#&lHc$LZl&dLBetn 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 literal 0 HcmV?d00001 diff --git a/gymkhana/items/inventory/assets/turno_cocina_cuchillo.png b/gymkhana/items/inventory/assets/turno_cocina_cuchillo.png new file mode 100644 index 0000000000000000000000000000000000000000..8a188cad47dc2be7549bb710b90e443cf6fc9594 GIT binary patch literal 1312 zcmaJ>|2xwO0N!l3HQE+hAqp{cec2-47Q)OHwl#C|wfxt%!(1VU2CM8=Yf zzi=6BN$&?HbuSr$Pma$5fi|!ILa?wtD0?Zi6@={;gdR*!=VS;#p_!Z{0Vmlphbu^P z45viV<0PonAQ1Ehg&6#u@chg$w=jld1H8HGIm~7P+lInv)YMt*byN(VkXFf{_F2A;3wHvDvV^lnkx}>(WdQXvX?0&!nznt4W=X2Lg zE*5nAeH4u;dk*Oioh3L@%3Z#K)*W#E7USC9nmax`cO$mhTJ0SdxJn(+kquF1D#ihU zKAuG|^73g3PlT4jb$?T8^D96Ow`O8rcBMl0OZIqF(!?jDr%fwOiC7?6kI;MS<5*}T zvKc0{@m-y^fBfI#hI~XX>UPNX&bZSWrKUQ@D)(4{3;3s4b<-}u`C^6o(-Xh~paH%t zJDi({YIf&_@o7&pT5Y%+C{4M(0Zf8SN#1Ds^N`I7dMc_fV=uE0A0yeYw<8^3ym&PW z)m{DA^XS(my--faAaD*<)q}6iWTtB-J6tXK^ks=mGUPEEm17nmP81(^HSypX-wc8Y z;^)#lt-ZcEP&d9&Z+nS59PAaX#Tbeq|2WTW%9VJCrkjGWAQ~jma_Ek&@D@VLm12mp zMW4QvUIr`+GtoZzj&Wdr5yqP3(tCzY1G_=?iKBj*?o9aeh#TL*2rqM&WlgMWUc8Sh zoexKId>Zc708@psh4p-q|Hp1gleEq-U7ikWozZk;7+!x^b8YcNLgXQ{jS&-%R(C07 zElzPuyAs5qnF>Odg5s)u9?^>6+u=7DU^)*C6}%8R5>+1t8-^~2lu)KdVCp7Plw&nq ze8ODe3hdM`_>VN2Ep&+z$zJ#sG`2DTWWVzvW~C`K(X6|FZgkao3!D-9G(0)0ZOlBb zVIo$4GUNc5k1)m-m<)B5>J#YC19Jnggv!C+4FmBNmC=QPjDDmS_%~_Wa(0mlLnU{| zw*MgCTFES*r(e}os_a8%{AKc@U4TKg9pfuMI`2TvWugw=Q^>upbiOy$7eOB!9!&>| zAp-$2o1qEU1dE z1s6X!!>MT@$$s{EoN0qo-b;rSh%}MzK-iCl%ej!*Iu4w_t*@ziNNz1R+!XK8yzFt- z!`Su<-hDw&cM9@0LpQrW%f{oKGM$ZnMyEbvvEv^Puk0R+WUF)h@v84Fj#QU;o)SJu z2^xPTlkPe`zZ_l?In|NEb!koEMml+W-E7(y(dcnKs9N}-rR*_D@6CS8^W&rOh;5d_ z)8w)E$-^jSg;*=5iEE`Y#qlcN_#LAcU&vmQ*x4CAWzZaJA2-=DgA{_!a+er9pXZr5S81g!ANE#abTXriy-{G=O?r_fFBSIp|n3fGvHifLjdZ u!i@HBK8%EZUIextrlG#_0{>TWadYsl&&Y8GrUbq8ZXik+mDm` [turno_cocina_cuchillo_en_inventario] + say player "¿Qué puedo hacer con dos cuchillos que no pueda hacer con solo uno?" + stop + say player "Este parece bien afilado." + set_global turno_cocina_cuchillo_en_inventario true + inventory_add turno_cocina_cuchillo diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc b/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc index b4cc5f03..0080cd30 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc @@ -1,17 +1,17 @@ :action1 - say player "No se ve nada." [!turno_cocina_frontal_debajo_sofa] - say player "No la veo pero se que hay una patata." [turno_cocina_frontal_debajo_sofa] +say player "No se ve nada." [!turno_cocina_frontal_debajo_sofa] +say player "No la veo pero se que hay una patata." [turno_cocina_frontal_debajo_sofa] :action2 - > [!turno_cocina_frontal_debajo_sofa] - say player "No pienso meter la mano está muy oscuro." - stop +> [!turno_cocina_frontal_debajo_sofa] + say player "No pienso meter la mano está muy oscuro." + stop - say player "Bieen! una patata!" - item_count_add turno_cocina_patata - inventory_add turno_cocina_patata - set_active cocina_debajo_sofa false +say player "Bieen! una patata!" +item_count_add turno_cocina_patata +inventory_add turno_cocina_patata +set_active cocina_debajo_sofa false :action3 turno_cocina_frontal - say player "Veo una patata!!" - set_global turno_cocina_frontal_debajo_sofa true +say player "Veo una patata!!" +set_global turno_cocina_frontal_debajo_sofa true From fec381dd1fca0edd277aaaa14896182046ccc959 Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Sat, 23 Sep 2023 23:57:21 +0200 Subject: [PATCH 5/5] Oier knows how to count potatoes! --- .../esc/commands/item_count_add.gd | 7 ++-- .../esc/esc_item_count_manager.gd | 13 +++---- .../items/inventory/turno_cocina_patata.esc | 12 +----- .../items/inventory/turno_cocina_patata.tscn | 4 +- .../rooms/turno_cocina/cocina/cocina.tscn | 37 +++++++++++++++++-- .../turno_cocina/cocina/esc/debajo_sofa.esc | 5 ++- .../rooms/turno_cocina/cocina/esc/patata.esc | 9 +++++ 7 files changed, 58 insertions(+), 29 deletions(-) create mode 100644 gymkhana/rooms/turno_cocina/cocina/esc/patata.esc diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd index a639ac02..d28f110e 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc/commands/item_count_add.gd @@ -23,9 +23,10 @@ func configure() -> ESCCommandArgumentDescriptor: # Validate wether the given arguments match the command descriptor func validate(arguments: Array): if not escoria.object_manager.has(arguments[0]): - escoria.logger.report_errors( - "item_count_add: invalid object", - ["Object %s not registered" % arguments[0]] + escoria.logger.error( + self, + "Object %s not registered" + % [arguments[0]] ) return false diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd index 99a55afd..8b7489cd 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc/esc_item_count_manager.gd @@ -5,20 +5,19 @@ class_name ESCItemCountManager func add(global_id: String, value:= 1) -> void: var item = get_item(global_id) - item.count = item.count + value - updateSprite(item) + set(global_id, item.count + value) func remove(global_id: String, value:= 1) -> void: var item = get_item(global_id) - item.count = item.count - value - updateSprite(item) + set(global_id, item.count - value) func set(global_id: String, value: int) -> void: var item = get_item(global_id) item.count = value updateSprite(item) + escoria.globals_manager.set_global(global_id, value) func removeFromInventoryIfCountLessThan(global_id: String, value:= 1) -> void: @@ -42,9 +41,9 @@ func get_item(global_id: String) -> ESCItem: func updateSprite(item: ESCItemWithTooltip) -> void: var child_node = item.get_node("Sprite") as Sprite if not child_node is Sprite: - escoria.logger.report_errors( - "item_count_add: invalid sprite", - ["No Sprite node found"] + escoria.logger.error( + self, + "No Sprite node found" ) var texture_path = getCountTexturePath(item) diff --git a/gymkhana/items/inventory/turno_cocina_patata.esc b/gymkhana/items/inventory/turno_cocina_patata.esc index 57020570..b515e513 100644 --- a/gymkhana/items/inventory/turno_cocina_patata.esc +++ b/gymkhana/items/inventory/turno_cocina_patata.esc @@ -1,11 +1,3 @@ -:action1 - say player "Que patata más bonita, cómo se nota que es de la huerta." - -:action2 - say player "Bieen! una patata!" - set_active turno_cocina_patata false - item_count_add turno_cocina_patata - inventory_add turno_cocina_patata - :action3 - say player "Que patata más bonita, cómo se nota que es de la huerta." + say player "Tengo que conseguir tres patatas más." [eq turno_cocina_patata 1] + say player "Ya tengo {turno_cocina_patata} patatas!" [!eq turno_cocina_patata 1] diff --git a/gymkhana/items/inventory/turno_cocina_patata.tscn b/gymkhana/items/inventory/turno_cocina_patata.tscn index 1b4bc386..9d3c65a7 100644 --- a/gymkhana/items/inventory/turno_cocina_patata.tscn +++ b/gymkhana/items/inventory/turno_cocina_patata.tscn @@ -15,9 +15,7 @@ esc_script = "res://gymkhana/items/inventory/turno_cocina_patata.esc" inventory_texture = ExtResource( 2 ) dialog_color = Color( 1, 1, 1, 1 ) tooltips = { -"action1": "Admirar la patata", -"action2": "Cogerla", -"action3": "Admirar la patata", +"action3": "Contar las patatas", } animations = null count_textures = [ diff --git a/gymkhana/rooms/turno_cocina/cocina/cocina.tscn b/gymkhana/rooms/turno_cocina/cocina/cocina.tscn index 6f74e37f..997df833 100644 --- a/gymkhana/rooms/turno_cocina/cocina/cocina.tscn +++ b/gymkhana/rooms/turno_cocina/cocina/cocina.tscn @@ -11,7 +11,7 @@ [ext_resource path="res://gymkhana/rooms/turno_cocina/cocina/assets/foreground-silla.png" type="Texture" id=9] [ext_resource path="res://gymkhana/items/inventory/turno_cocina_peso.tscn" type="PackedScene" id=10] [ext_resource path="res://gymkhana/items/inventory/turno_cocina_bol.tscn" type="PackedScene" id=11] -[ext_resource path="res://gymkhana/items/inventory/turno_cocina_patata.tscn" type="PackedScene" id=12] +[ext_resource path="res://gymkhana/items/inventory/assets/turno_cocina_patata.png" type="Texture" id=13] [sub_resource type="NavigationPolygon" id=3] vertices = PoolVector2Array( 2398, 485, 2442, 499, 2446, 617, 2409, 597, 2283, 493, 144, 568, 3, 570, -56, 524, 111, 445, 162, 471, 229, 445, 200, 465, 252, 478, 305, 524, 273, 570, 2287, 687, 2062, 635, 2113, 565, 696, 737, 512, 591, 703, 699, 1269, 739, 1241, 699, 1502, 646, 1409, 752, 1345, 667, 1489, 627, 1347, 563, 1480, 587, 1466, 514, 1345, 505, 1382, 439, 2109, 424, 2238, 386, 1788, 325, 2018, 419, 1787, 383, 1466, 412, 1493, 479, 1305.5, 467, 1337.5, 449, 1306.5, 498 ) @@ -218,18 +218,47 @@ polygon = PoolVector2Array( 484, 406, 485, 421, 556, 423, 551, 415, 550, 409, 55 position = Vector2( 420, 494 ) script = ExtResource( 5 ) -[node name="turno_cocina_patata" parent="." instance=ExtResource( 12 )] +[node name="cocina_patata" type="Area2D" parent="."] +pause_mode = 1 position = Vector2( 2202, 343 ) rotation = -0.270526 scale = Vector2( 0.35, 0.35 ) z_index = 1001 +script = ExtResource( 6 ) +global_id = "cocina_patata" +esc_script = "res://gymkhana/rooms/turno_cocina/cocina/esc/patata.esc" combine_when_selected_action_is_in = [ ] +inventory_texture = ExtResource( 13 ) +dialog_color = Color( 1, 1, 1, 1 ) +tooltips = { +"action1": "Admirar la patata", +"action2": "Cogerla", +} +count_textures = [ { +"start": 1, +"texture": "res://gymkhana/items/inventory/assets/turno_cocina_patata.png" +}, { +"start": 2, +"texture": "res://gymkhana/items/inventory/assets/turno_cocina_dos_patatas.png" +}, { +"start": 3, +"texture": "res://gymkhana/items/inventory/assets/turno_cocina_tres_patatas.png" +}, { +"start": 4, +"texture": "res://gymkhana/items/inventory/assets/turno_cocina_cuatro_patatas.png" +} ] +animations = null -[node name="turno_cocina_patata_collision" type="CollisionPolygon2D" parent="turno_cocina_patata"] +[node name="Sprite" type="Sprite" parent="cocina_patata"] +position = Vector2( -2, 0 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 13 ) + +[node name="turno_cocina_patata_collision" type="CollisionPolygon2D" parent="cocina_patata"] position = Vector2( 9.0867, -13.5233 ) z_index = 1001 polygon = PoolVector2Array( 6.50781, 0.0583801, 20.7368, 12.8992, 7.896, 27.1279, -19.937, 31.269, -42.4258, 16.1375, -26.0684, -0.0810547 ) -[node name="turno_cocina_patata_location" type="Position2D" parent="turno_cocina_patata"] +[node name="turno_cocina_patata_location" type="Position2D" parent="cocina_patata"] position = Vector2( 93.1357, 65.3632 ) script = ExtResource( 5 ) diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc b/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc index 0080cd30..526b0bd7 100644 --- a/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc +++ b/gymkhana/rooms/turno_cocina/cocina/esc/debajo_sofa.esc @@ -7,9 +7,10 @@ say player "No la veo pero se que hay una patata." [turno_cocina_frontal_debajo_ say player "No pienso meter la mano está muy oscuro." stop -say player "Bieen! una patata!" -item_count_add turno_cocina_patata +say player "Otra patata!" [i/turno_cocina_patata] +say player "Bien! La primera patata!" [!i/turno_cocina_patata] inventory_add turno_cocina_patata +item_count_add turno_cocina_patata set_active cocina_debajo_sofa false :action3 turno_cocina_frontal diff --git a/gymkhana/rooms/turno_cocina/cocina/esc/patata.esc b/gymkhana/rooms/turno_cocina/cocina/esc/patata.esc new file mode 100644 index 00000000..8f4b25d5 --- /dev/null +++ b/gymkhana/rooms/turno_cocina/cocina/esc/patata.esc @@ -0,0 +1,9 @@ +:action1 +say player "Que patata más bonita, cómo se nota que es de la huerta." + +:action2 +say player "Otra patata!" [i/turno_cocina_patata] +say player "Bien! La primera patata!" [!i/turno_cocina_patata] +set_active cocina_patata false +inventory_add turno_cocina_patata +item_count_add turno_cocina_patata