From 6a30328bea79b61824052abef64e1eff829d4aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Mon, 29 Dec 2025 11:27:31 -0300 Subject: [PATCH 1/6] Add RandomTextureSpriteBehavior Reusing the sprite_frames_exported_textures addon. This behavior node can be configured with an array of textures, and provides a tool button to randomize the parent AnimatedSprite2D texture. --- .../random_texture_sprite_behavior.gd | 52 +++++++++++++++++++ .../random_texture_sprite_behavior.gd.uid | 1 + 2 files changed, 53 insertions(+) create mode 100644 scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd create mode 100644 scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd.uid diff --git a/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd b/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd new file mode 100644 index 000000000..2fb6d2374 --- /dev/null +++ b/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name RandomTextureSpriteBehavior +extends BaseSpriteBehavior +## @experimental +## +## Can set a random texture to a sprite. +## +## The picked texture may have offset information. In that case, +## also set the position of each sub-sprite in the controlled sprite children. + +const SpriteFramesHelper = preload( + "res://addons/sprite_frames_exported_textures/sprite_frames_helper.gd" +) + +## The array of textures, from which to pick a random one. +@export var textures: Array[Texture2D] + +## Click this button to set a random texture to the sprite. +@export_tool_button("Randomize") var randomize_texture_button: Callable = randomize_texture + + +func _get_offset_from_texture_filename(new_texture: Texture2D) -> Vector2: + var filename: String = new_texture.resource_path.get_file() + var offset := Vector2.ZERO + # TODO: Use regular expressions. + for part: String in filename.split("."): + var data := part.split("_") + if data.size() != 2: + continue + var k := data[0] + var v := data[1] + if k == "dx" and v.is_valid_int(): + offset.x += v.to_int() + elif k == "dy" and v.is_valid_int(): + offset.y += v.to_int() + return offset + + +func _offset_child_sprites(offset: Vector2) -> void: + for child in sprite.get_children(): + if child is AnimatedSprite2D: + (child as AnimatedSprite2D).position = offset + + +## Pick a random texture from [member textures] and set it to the sprite. +func randomize_texture() -> void: + var new_texture: Texture2D = textures.pick_random() + var offset := _get_offset_from_texture_filename(new_texture) + _offset_child_sprites(offset) + SpriteFramesHelper.replace_texture(null, new_texture, sprite.sprite_frames) diff --git a/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd.uid b/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd.uid new file mode 100644 index 000000000..42ef0e0b5 --- /dev/null +++ b/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd.uid @@ -0,0 +1 @@ +uid://boyesrjdix688 From c1dcba1eca187c3c1111cf5faa3e0eb5ded50585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Mon, 29 Dec 2025 13:35:01 -0300 Subject: [PATCH 2/6] SpriteFramesHelper: Allow to call it without an "old base texture" Only if this parameter is passed, the existing safeguard is checked. That is, that the new texture and the old one share the same base texture. --- .../sprite_frames_helper.gd | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/sprite_frames_exported_textures/sprite_frames_helper.gd b/addons/sprite_frames_exported_textures/sprite_frames_helper.gd index e96dd94c3..96c6853e7 100644 --- a/addons/sprite_frames_exported_textures/sprite_frames_helper.gd +++ b/addons/sprite_frames_exported_textures/sprite_frames_helper.gd @@ -42,10 +42,11 @@ static func replace_texture( var texture: Texture2D = sprite_frames.get_frame_texture( animation_name, sprite_frame_idx ) - if old_base_texture == _get_base_texture(sprite_frames, texture): - _replace_base_texture( - sprite_frames, animation_name, sprite_frame_idx, texture, new_texture - ) + if old_base_texture and old_base_texture != _get_base_texture(sprite_frames, texture): + continue + _replace_base_texture( + sprite_frames, animation_name, sprite_frame_idx, texture, new_texture + ) static func _replace_base_texture( From fa3061fd6156febc0815dc388396484a05ac2a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Mon, 29 Dec 2025 13:40:59 -0300 Subject: [PATCH 3/6] SpriteFramesHelper: Remove unused parameter from _get_base_texture auxiliary function This parameter is not used by the auxiliary function at all. Also, remove the double negation and check for FileAccess.file_exists() directly. --- .../sprite_frames_helper.gd | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/addons/sprite_frames_exported_textures/sprite_frames_helper.gd b/addons/sprite_frames_exported_textures/sprite_frames_helper.gd index 96c6853e7..dffd4083e 100644 --- a/addons/sprite_frames_exported_textures/sprite_frames_helper.gd +++ b/addons/sprite_frames_exported_textures/sprite_frames_helper.gd @@ -12,7 +12,7 @@ static func base_textures_used(sprite_frames: SpriteFrames) -> Array: var texture: Texture2D = sprite_frames.get_frame_texture( animation_name, sprite_frame_idx ) - var base_texture: Texture2D = _get_base_texture(sprite_frames, texture) + var base_texture: Texture2D = _get_base_texture(texture) if base_texture and not base_texture in textures: textures.push_back(base_texture) @@ -20,14 +20,12 @@ static func base_textures_used(sprite_frames: SpriteFrames) -> Array: return textures -static func _get_base_texture(frames: SpriteFrames, texture: Texture2D) -> Texture2D: - var is_included_in_other_resource: bool = not FileAccess.file_exists(texture.resource_path) - - if not is_included_in_other_resource: +static func _get_base_texture(texture: Texture2D) -> Texture2D: + if FileAccess.file_exists(texture.resource_path): return texture if texture is AtlasTexture: - return _get_base_texture(frames, texture.atlas) + return _get_base_texture(texture.atlas) return null @@ -42,7 +40,7 @@ static func replace_texture( var texture: Texture2D = sprite_frames.get_frame_texture( animation_name, sprite_frame_idx ) - if old_base_texture and old_base_texture != _get_base_texture(sprite_frames, texture): + if old_base_texture and old_base_texture != _get_base_texture(texture): continue _replace_base_texture( sprite_frames, animation_name, sprite_frame_idx, texture, new_texture @@ -57,7 +55,7 @@ static func _replace_base_texture( new_texture: Texture2D ) -> void: var is_included_in_other_resource: bool = not FileAccess.file_exists(old_texture.resource_path) - var old_base_texture = _get_base_texture(frames, old_texture) + var old_base_texture = _get_base_texture(old_texture) if not is_included_in_other_resource: var frame_duration = frames.get_frame_duration(anim_name, sprite_frame_idx) From 40e4bddcd2b0ba8e92d26a33c145a8336eec8e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Mon, 29 Dec 2025 13:47:39 -0300 Subject: [PATCH 4/6] CelShadingRecolor: Expose set_random_skin_color() function To be able to call it from other scripts. --- scenes/game_elements/components/cel_shading_recolor.gd | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scenes/game_elements/components/cel_shading_recolor.gd b/scenes/game_elements/components/cel_shading_recolor.gd index 9c26fe6de..0de77f578 100644 --- a/scenes/game_elements/components/cel_shading_recolor.gd +++ b/scenes/game_elements/components/cel_shading_recolor.gd @@ -98,7 +98,7 @@ const SKIN_COLORS: Dictionary[String, Color] = { ## Click this button to pick a random color from a list of known skin colors @export_tool_button("Random Skin Color") -var random_skin_color_button: Callable = _set_random_skin_color +var random_skin_color_button: Callable = set_random_skin_color func _enter_tree() -> void: @@ -158,7 +158,8 @@ func colorize() -> void: node_to_recolor.set_instance_shader_parameter("shade_low_new", low_color) -func _set_random_skin_color() -> void: +## Pick a random color from [constant SKIN_COLORS] and automatically set all shades from it. +func set_random_skin_color() -> void: automatic_shades = true medium_color = SKIN_COLORS.values().pick_random() From 04d2b07e74707ab694a16f6c13130eed4282d8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Mon, 29 Dec 2025 13:48:56 -0300 Subject: [PATCH 5/6] Add character randomizer script A single button to randomize various aspects of a character. For now, the skin tone and the textures of a stack of AnimatedSprite2D that compose the character with parts like: legs, body, head, hair, head prop. Also provides a way to flip the character horizontally. And a way to start the current animation of each part at a random frame, but all using the same random frame. The caveat of having multiple parts is that existing logic like the RandomFrameSpriteBehavior don't work for an array of sprites, so some things have to be reimplemented. --- .../components/character_randomizer.gd | 152 ++++++++++++++++++ .../components/character_randomizer.gd.uid | 1 + 2 files changed, 153 insertions(+) create mode 100644 scenes/game_elements/characters/components/character_randomizer.gd create mode 100644 scenes/game_elements/characters/components/character_randomizer.gd.uid diff --git a/scenes/game_elements/characters/components/character_randomizer.gd b/scenes/game_elements/characters/components/character_randomizer.gd new file mode 100644 index 000000000..8a8eca8d1 --- /dev/null +++ b/scenes/game_elements/characters/components/character_randomizer.gd @@ -0,0 +1,152 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends Node2D +## @experimental +## +## Provide a single button to randomize various aspects of a character. +## +## Using a seed to consistently apply the randomizations in game, to persist them without +## the use of Editable Children, and to allow undo/redo. +## [br][br] +## [b]Note:[/b] Editable Children can still be used to customize a single aspect +## of the randomization. For example if you are happy with the results of the "Randomize" +## button, except for the skin color. +## [br][br] +## There is also logic to set the same random progress to all SpriteFrames animations. +## Basically what [[RandomFrameSpriteBehavior]] does, but to an array. +## [br][br] +## Also can look at sides. Defaults to look at left, and scales everything by -1 to look +## at right. + +## The random seed of this character. Setting another character to the same seed +## will make them identical. Setting it to zero will reset the skin color. +@export var character_seed: int + +## Where is the character facing. Relative to the character. +@export var look_at_side: Enums.LookAtSide = Enums.LookAtSide.LEFT: + set = _set_look_at_side + +## Click this button to create a random character. +@export_tool_button("Randomize") var randomize_character_button: Callable = randomize_character + +## The inner AnimatedSprite2D nodes. +var animated_sprites: Array[AnimatedSprite2D] = [] + +## The inner nodes that recolor the character skin. +var skin_recolor_nodes: Array[CelShadingRecolor] = [] + +## The inner nodes that randomize sprites textures. +var random_texture_nodes: Array[RandomTextureSpriteBehavior] = [] + +var _undoredo: Object # EditorUndoRedoManager + +var _previous_look_at_side: Enums.LookAtSide = Enums.LookAtSide.UNSPECIFIED + + +## Randomize the skin color and textures of the character. +## [br][br] +## Do it in a consistent way by first seeding the default random number generator +## with the [member character_seed]. +func apply_character_randomizations() -> void: + seed(character_seed) + + if skin_recolor_nodes: + var new_skin_medium_color: Color + skin_recolor_nodes[-1].set_random_skin_color() + new_skin_medium_color = skin_recolor_nodes[-1].medium_color + for n in skin_recolor_nodes: + n.automatic_shades = true + n.medium_color = new_skin_medium_color + + for n in random_texture_nodes: + n.randomize_texture() + + +## Set a random seed and randomize the character. +## [br][br] +## With undo/redo when running in the editor. +func randomize_character() -> void: + var new_character_seed := randi() + if _undoredo: + _undoredo.create_action("Randomize character") + _undoredo.add_undo_property(self, "character_seed", character_seed) + _undoredo.add_do_property(self, "character_seed", new_character_seed) + _undoredo.add_undo_method(self, "apply_character_randomizations") + _undoredo.add_do_method(self, "apply_character_randomizations") + _undoredo.commit_action() + else: + character_seed = new_character_seed + apply_character_randomizations() + + +func _ready() -> void: + _setup_nodes() + + if character_seed: + apply_character_randomizations() + + if Engine.is_editor_hint(): + var plugin: Node = ClassDB.instantiate("EditorPlugin") + _undoredo = plugin.get_undo_redo() + plugin.queue_free() + else: + _randomize_all_sprites_progress() + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_EDITOR_PRE_SAVE: + for node in animated_sprites: + node.frame = 0 + + +func _traverse(node: Node) -> void: + if node is AnimatedSprite2D: + animated_sprites.append(node) + for child in node.get_children(): + _traverse(child) + elif node is CelShadingRecolor: + skin_recolor_nodes.append(node) + elif node is RandomTextureSpriteBehavior: + random_texture_nodes.append(node) + + +func _setup_nodes() -> void: + animated_sprites = [] + skin_recolor_nodes = [] + random_texture_nodes = [] + for child in get_children(): + _traverse(child) + + +func _randomize_all_sprites_progress() -> void: + if not animated_sprites: + return + var default_animation := animated_sprites[-1].animation + var frames_length := animated_sprites[-1].sprite_frames.get_frame_count(default_animation) + var random_frame := randi_range(0, frames_length) + var random_progress := randf() + for sprite in animated_sprites: + sprite.set_frame_and_progress(random_frame, random_progress) + + +func _reset_sprite_frames_progress() -> void: + for node in get_children(): + if node is AnimatedSprite2D: + (node as AnimatedSprite2D).frame = 0 + + +func _set_look_at_side(new_look_at_side: Enums.LookAtSide) -> void: + look_at_side = new_look_at_side + scale.x = -1 if look_at_side == Enums.LookAtSide.RIGHT else 1 + + +func _on_interact_area_interaction_started(_player: Player, from_right: bool) -> void: + _previous_look_at_side = look_at_side + if look_at_side != Enums.LookAtSide.UNSPECIFIED: + look_at_side = Enums.LookAtSide.LEFT if from_right else Enums.LookAtSide.RIGHT + + +func _on_interact_area_interaction_ended() -> void: + look_at_side = _previous_look_at_side diff --git a/scenes/game_elements/characters/components/character_randomizer.gd.uid b/scenes/game_elements/characters/components/character_randomizer.gd.uid new file mode 100644 index 000000000..0b71607bf --- /dev/null +++ b/scenes/game_elements/characters/components/character_randomizer.gd.uid @@ -0,0 +1 @@ +uid://dl6rgfwdn3qp4 From 6d47ab6c430943da56774bfbca586483b773027b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Mon, 29 Dec 2025 16:12:39 -0300 Subject: [PATCH 6/6] Add random townie character Draw the character in Aseprite as layers. Each layer has a part variant and offset encoded in its name. For example: - "head_003" for variant 3 of the character head. - "body_002.dy_-12" for variant 2 of the character body, and an offset of -12 in the Y axis. Export each part variant as PNG. Create a scene with one AnimatedSprite2D node per part. Use the character sprite randomizer to randomly set the multiple PNGs of each part. Also use the cel-shading node and material in each part with skin. Add the character randomizer to the root node. Also add a test scene with multiple townies instantiated. Add talker behavior to them and some dialogue explanation. --- .../character_randomizer_test.dialogue | 14 + .../character_randomizer_test.dialogue.import | 16 + .../components/character_randomizer_test.tscn | 307 ++++++++++++++++++ .../npcs/components/townie-body_001.png | 3 + .../components/townie-body_001.png.import | 40 +++ .../components/townie-body_002.dy_-12.png | 3 + .../townie-body_002.dy_-12.png.import | 40 +++ .../npcs/components/townie-body_002.png | 3 + .../components/townie-body_002.png.import | 40 +++ .../townie-body_003.dx_-4.dy_-16.png | 3 + .../townie-body_003.dx_-4.dy_-16.png.import | 40 +++ .../npcs/components/townie-hair_001.png | 3 + .../components/townie-hair_001.png.import | 40 +++ .../npcs/components/townie-hair_002.png | 3 + .../components/townie-hair_002.png.import | 40 +++ .../npcs/components/townie-hair_003.png | 3 + .../components/townie-hair_003.png.import | 40 +++ .../npcs/components/townie-hair_004.png | 3 + .../components/townie-hair_004.png.import | 40 +++ .../npcs/components/townie-hair_005.png | 3 + .../components/townie-hair_005.png.import | 40 +++ .../npcs/components/townie-head_001.png | 3 + .../components/townie-head_001.png.import | 40 +++ .../npcs/components/townie-head_002.png | 3 + .../components/townie-head_002.png.import | 40 +++ .../npcs/components/townie-head_003.png | 3 + .../components/townie-head_003.png.import | 40 +++ .../npcs/components/townie-head_004.png | 3 + .../components/townie-head_004.png.import | 40 +++ .../npcs/components/townie-head_005.png | 3 + .../components/townie-head_005.png.import | 40 +++ .../npcs/components/townie-legs_001.png | 3 + .../components/townie-legs_001.png.import | 40 +++ .../npcs/components/townie-legs_002.dy_-6.png | 3 + .../townie-legs_002.dy_-6.png.import | 40 +++ .../components/townie-legs_003.dy_-12.png | 3 + .../townie-legs_003.dy_-12.png.import | 40 +++ .../npcs/components/townie.aseprite | 3 + .../game_elements/characters/npcs/townie.tscn | 236 ++++++++++++++ 39 files changed, 1307 insertions(+) create mode 100644 scenes/game_elements/characters/components/character_randomizer_test.dialogue create mode 100644 scenes/game_elements/characters/components/character_randomizer_test.dialogue.import create mode 100644 scenes/game_elements/characters/components/character_randomizer_test.tscn create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_001.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_001.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_002.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_002.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_001.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_001.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_002.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_002.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_003.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_003.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_004.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_004.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_005.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-hair_005.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_001.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_001.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_002.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_002.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_003.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_003.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_004.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_004.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_005.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-head_005.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-legs_001.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-legs_001.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png create mode 100644 scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import create mode 100644 scenes/game_elements/characters/npcs/components/townie.aseprite create mode 100644 scenes/game_elements/characters/npcs/townie.tscn diff --git a/scenes/game_elements/characters/components/character_randomizer_test.dialogue b/scenes/game_elements/characters/components/character_randomizer_test.dialogue new file mode 100644 index 000000000..51071e8e0 --- /dev/null +++ b/scenes/game_elements/characters/components/character_randomizer_test.dialogue @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ townie_1 +Hey, I'm not just a random guy. I have a very unique seed number. +=> salute +~ townie_2 +I'm blue! If you are happy with the random results, except for a thing... +...you can activate Editable Children and then reset the character seed to zero. Then apply any changes to the inner nodes. +=> salute +~ townie_3 +~ townie_4 +~ salute +[[See you around.|Welcome to the town!]] +=> END diff --git a/scenes/game_elements/characters/components/character_randomizer_test.dialogue.import b/scenes/game_elements/characters/components/character_randomizer_test.dialogue.import new file mode 100644 index 000000000..34b7570d8 --- /dev/null +++ b/scenes/game_elements/characters/components/character_randomizer_test.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://n5gf3o4mmxlu" +path="res://.godot/imported/character_randomizer_test.dialogue-40cb32867b5a5020b3c0cb6723f4f46d.tres" + +[deps] + +source_file="res://scenes/game_elements/characters/components/character_randomizer_test.dialogue" +dest_files=["res://.godot/imported/character_randomizer_test.dialogue-40cb32867b5a5020b3c0cb6723f4f46d.tres"] + +[params] + +defaults=true diff --git a/scenes/game_elements/characters/components/character_randomizer_test.tscn b/scenes/game_elements/characters/components/character_randomizer_test.tscn new file mode 100644 index 000000000..c522ce188 --- /dev/null +++ b/scenes/game_elements/characters/components/character_randomizer_test.tscn @@ -0,0 +1,307 @@ +[gd_scene load_steps=31 format=4 uid="uid://4yh765kft25"] + +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="1_ea78s"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="2_2g5xe"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_p47ir"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_qr3fq"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_jsubs"] +[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png" id="6_bonk8"] +[ext_resource type="SpriteFrames" uid="uid://07di3updrwh0" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_purple.tres" id="6_hfrhi"] +[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-body_001.png" id="6_p47ir"] +[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-head_004.png" id="8_22pcm"] +[ext_resource type="Resource" uid="uid://n5gf3o4mmxlu" path="res://scenes/game_elements/characters/components/character_randomizer_test.dialogue" id="8_qr3fq"] +[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_005.png" id="9_bonk8"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_22pcm"] +size = Vector2(52, 50) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bonk8"] +atlas = ExtResource("6_bonk8") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_22pcm"] +atlas = ExtResource("6_bonk8") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tokus"] +atlas = ExtResource("6_bonk8") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_kpq1x"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_bonk8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_22pcm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tokus") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_htwo5"] +atlas = ExtResource("6_p47ir") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jsa2b"] +atlas = ExtResource("6_p47ir") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kpq1x"] +atlas = ExtResource("6_p47ir") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y666u"] +atlas = ExtResource("6_p47ir") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_htwo5"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_htwo5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jsa2b") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_kpq1x") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_y666u") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_l7t43"] +atlas = ExtResource("8_22pcm") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n7dtb"] +atlas = ExtResource("8_22pcm") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ny4dp"] +atlas = ExtResource("8_22pcm") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e0ffc"] +atlas = ExtResource("8_22pcm") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_n7dtb"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_l7t43") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n7dtb") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_ny4dp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e0ffc") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_04pia"] +atlas = ExtResource("9_bonk8") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1uba5"] +atlas = ExtResource("9_bonk8") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n5uef"] +atlas = ExtResource("9_bonk8") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ahibj"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_04pia") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1uba5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n5uef") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[node name="CharacterRandomizerTest" type="Node2D"] + +[node name="TileMapLayers" type="Node2D" parent="."] + +[node name="TileMapLayerGrass" type="TileMapLayer" parent="TileMapLayers"] +tile_map_data = PackedByteArray("AAAAAP7/AQABAAEAAAAAAP//AQABAAEAAAAAAAAAAQABAAEAAAAAAAEAAQABAAEAAAAAAAIAAQABAAEAAAAAAAMAAQABAAEAAAAAAAQAAQABAAEAAAAAAAUAAQABAAEAAAAAAAYAAQABAAEAAAAAAAcAAQABAAEAAAAAAAgAAQABAAEAAAAAAAkAAQABAAIAAAABAP7/AQABAAEAAAABAP//AQABAAEAAAABAAAAAQABAAEAAAABAAEAAQABAAEAAAABAAIAAQABAAEAAAABAAMAAQABAAEAAAABAAQAAQABAAEAAAABAAUAAQABAAEAAAABAAYAAQABAAEAAAABAAcAAQABAAEAAAABAAgAAQABAAEAAAABAAkAAQABAAIAAAACAP7/AQABAAEAAAACAP//AQABAAEAAAACAAAAAQABAAEAAAACAAEAAQABAAEAAAACAAIAAQABAAEAAAACAAMAAQABAAEAAAACAAQAAQABAAEAAAACAAUAAQABAAEAAAACAAYAAQABAAEAAAACAAcAAQABAAEAAAACAAgAAQABAAEAAAACAAkAAQABAAIAAAADAP7/AQABAAEAAAADAP//AQABAAEAAAADAAAAAQABAAEAAAADAAEAAQABAAEAAAADAAIAAQABAAEAAAADAAMAAQABAAEAAAADAAQAAQABAAEAAAADAAUAAQABAAEAAAADAAYAAQABAAEAAAADAAcAAQABAAEAAAADAAgAAQABAAEAAAADAAkAAQABAAIAAAAEAP7/AQABAAEAAAAEAP//AQABAAEAAAAEAAAAAQABAAEAAAAEAAEAAQABAAEAAAAEAAIAAQABAAEAAAAEAAMAAQABAAEAAAAEAAQAAQABAAEAAAAEAAUAAQABAAEAAAAEAAYAAQABAAEAAAAEAAcAAQABAAEAAAAEAAgAAQABAAEAAAAEAAkAAQABAAIAAAAFAP7/AQABAAEAAAAFAP//AQABAAEAAAAFAAAAAQABAAEAAAAFAAEAAQABAAEAAAAFAAIAAQABAAEAAAAFAAMAAQABAAEAAAAFAAQAAQABAAEAAAAFAAUAAQABAAEAAAAFAAYAAQABAAEAAAAFAAcAAQABAAEAAAAFAAgAAQABAAEAAAAFAAkAAQABAAIAAAAGAP7/AQABAAEAAAAGAP//AQABAAEAAAAGAAAAAQABAAEAAAAGAAEAAQABAAEAAAAGAAIAAQABAAEAAAAGAAMAAQABAAEAAAAGAAQAAQABAAEAAAAGAAUAAQABAAEAAAAGAAYAAQABAAEAAAAGAAcAAQABAAEAAAAGAAgAAQABAAEAAAAGAAkAAQABAAIAAAAHAP7/AQABAAEAAAAHAP//AQABAAEAAAAHAAAAAQABAAEAAAAHAAEAAQABAAEAAAAHAAIAAQABAAEAAAAHAAMAAQABAAEAAAAHAAQAAQABAAEAAAAHAAUAAQABAAEAAAAHAAYAAQABAAEAAAAHAAcAAQABAAEAAAAHAAgAAQABAAEAAAAHAAkAAQABAAIAAAAIAP7/AQABAAEAAAAIAP//AQABAAEAAAAIAAAAAQABAAEAAAAIAAEAAQABAAEAAAAIAAIAAQABAAEAAAAIAAMAAQABAAEAAAAIAAQAAQABAAEAAAAIAAUAAQABAAEAAAAIAAYAAQABAAEAAAAIAAcAAQABAAEAAAAIAAgAAQABAAEAAAAIAAkAAQABAAIAAAAJAP7/AQABAAEAAAAJAP//AQABAAEAAAAJAAAAAQABAAEAAAAJAAEAAQABAAEAAAAJAAIAAQABAAEAAAAJAAMAAQABAAEAAAAJAAQAAQABAAEAAAAJAAUAAQABAAEAAAAJAAYAAQABAAEAAAAJAAcAAQABAAEAAAAJAAgAAQABAAEAAAAJAAkAAQABAAIAAAAKAP7/AQABAAEAAAAKAP//AQABAAEAAAAKAAAAAQABAAEAAAAKAAEAAQABAAEAAAAKAAIAAQABAAEAAAAKAAMAAQABAAEAAAAKAAQAAQABAAEAAAAKAAUAAQABAAEAAAAKAAYAAQABAAEAAAAKAAcAAQABAAEAAAAKAAgAAQABAAEAAAAKAAkAAQABAAIAAAALAP7/AQABAAEAAAALAP//AQABAAEAAAALAAAAAQABAAEAAAALAAEAAQABAAEAAAALAAIAAQABAAEAAAALAAMAAQABAAEAAAALAAQAAQABAAEAAAALAAUAAQABAAEAAAALAAYAAQABAAEAAAALAAcAAQABAAEAAAALAAgAAQABAAEAAAALAAkAAQABAAIAAAAMAP7/AQABAAEAAAAMAP//AQABAAEAAAAMAAAAAQABAAEAAAAMAAEAAQABAAEAAAAMAAIAAQABAAEAAAAMAAMAAQABAAEAAAAMAAQAAQABAAEAAAAMAAUAAQABAAEAAAAMAAYAAQABAAEAAAAMAAcAAQABAAEAAAAMAAgAAQABAAEAAAAMAAkAAQABAAIAAAANAP7/AQABAAEAAAANAP//AQABAAEAAAANAAAAAQABAAEAAAANAAEAAQABAAEAAAANAAIAAQABAAEAAAANAAMAAQABAAEAAAANAAQAAQABAAEAAAANAAUAAQABAAEAAAANAAYAAQABAAEAAAANAAcAAQABAAEAAAANAAgAAQABAAEAAAANAAkAAQABAAIAAAAOAP7/AQABAAEAAAAOAP//AQABAAEAAAAOAAAAAQABAAEAAAAOAAEAAQABAAEAAAAOAAIAAQABAAEAAAAOAAMAAQABAAEAAAAOAAQAAQABAAEAAAAOAAUAAQABAAEAAAAOAAYAAQABAAEAAAAOAAcAAQABAAEAAAAOAAgAAQABAAEAAAAOAAkAAQABAAIAAAAPAP7/AQABAAEAAAAPAP//AQABAAEAAAAPAAAAAQABAAEAAAAPAAEAAQABAAEAAAAPAAIAAQABAAEAAAAPAAMAAQABAAEAAAAPAAQAAQABAAEAAAAPAAUAAQABAAEAAAAPAAYAAQABAAEAAAAPAAcAAQABAAEAAAAPAAgAAQABAAEAAAAPAAkAAQABAAIAAAAQAP7/AQACAAEAAAAQAP//AQACAAEAAAAQAAAAAQACAAEAAAAQAAEAAQACAAEAAAAQAAIAAQACAAEAAAAQAAMAAQACAAEAAAAQAAQAAQACAAEAAAAQAAUAAQACAAEAAAAQAAYAAQACAAEAAAAQAAcAAQACAAEAAAAQAAgAAQACAAEAAAAQAAkAAQACAAIAAAD5//r/AQAAAAAAAAD5//v/AQAAAAEAAAD5//z/AQAAAAEAAAD5//3/AQAAAAEAAAD5//7/AQAAAAEAAAD5////AQAAAAEAAAD5/wAAAQAAAAEAAAD5/wEAAQAAAAEAAAD5/wIAAQAAAAEAAAD5/wMAAQAAAAEAAAD5/wQAAQAAAAEAAAD5/wUAAQAAAAEAAAD5/wYAAQAAAAEAAAD5/wcAAQAAAAEAAAD5/wgAAQAAAAEAAAD5/wkAAQAAAAIAAAD6//r/AQABAAAAAAD6//v/AQABAAEAAAD6//z/AQABAAEAAAD6//3/AQABAAEAAAD6//7/AQABAAEAAAD6////AQABAAEAAAD6/wAAAQABAAEAAAD6/wEAAQABAAEAAAD6/wIAAQABAAEAAAD6/wMAAQABAAEAAAD6/wQAAQABAAEAAAD6/wUAAQABAAEAAAD6/wYAAQABAAEAAAD6/wcAAQABAAEAAAD6/wgAAQABAAEAAAD6/wkAAQABAAIAAAD7//r/AQABAAAAAAD7//v/AQABAAEAAAD7//z/AQABAAEAAAD7//3/AQABAAEAAAD7//7/AQABAAEAAAD7////AQABAAEAAAD7/wAAAQABAAEAAAD7/wEAAQABAAEAAAD7/wIAAQABAAEAAAD7/wMAAQABAAEAAAD7/wQAAQABAAEAAAD7/wUAAQABAAEAAAD7/wYAAQABAAEAAAD7/wcAAQABAAEAAAD7/wgAAQABAAEAAAD7/wkAAQABAAIAAAD8//r/AQABAAAAAAD8//v/AQABAAEAAAD8//z/AQABAAEAAAD8//3/AQABAAEAAAD8//7/AQABAAEAAAD8////AQABAAEAAAD8/wAAAQABAAEAAAD8/wEAAQABAAEAAAD8/wIAAQABAAEAAAD8/wMAAQABAAEAAAD8/wQAAQABAAEAAAD8/wUAAQABAAEAAAD8/wYAAQABAAEAAAD8/wcAAQABAAEAAAD8/wgAAQABAAEAAAD8/wkAAQABAAIAAAD9//r/AQABAAAAAAD9//v/AQABAAEAAAD9//z/AQABAAEAAAD9//3/AQABAAEAAAD9//7/AQABAAEAAAD9////AQABAAEAAAD9/wAAAQABAAEAAAD9/wEAAQABAAEAAAD9/wIAAQABAAEAAAD9/wMAAQABAAEAAAD9/wQAAQABAAEAAAD9/wUAAQABAAEAAAD9/wYAAQABAAEAAAD9/wcAAQABAAEAAAD9/wgAAQABAAEAAAD9/wkAAQABAAIAAAD+//r/AQABAAAAAAD+//v/AQABAAEAAAD+//z/AQABAAEAAAD+//3/AQABAAEAAAD+//7/AQABAAEAAAD+////AQABAAEAAAD+/wAAAQABAAEAAAD+/wEAAQABAAEAAAD+/wIAAQABAAEAAAD+/wMAAQABAAEAAAD+/wQAAQABAAEAAAD+/wUAAQABAAEAAAD+/wYAAQABAAEAAAD+/wcAAQABAAEAAAD+/wgAAQABAAEAAAD+/wkAAQABAAIAAAD///r/AQABAAAAAAD///v/AQABAAEAAAD///z/AQABAAEAAAD///3/AQABAAEAAAD///7/AQABAAEAAAD/////AQABAAEAAAD//wAAAQABAAEAAAD//wEAAQABAAEAAAD//wIAAQABAAEAAAD//wMAAQABAAEAAAD//wQAAQABAAEAAAD//wUAAQABAAEAAAD//wYAAQABAAEAAAD//wcAAQABAAEAAAD//wgAAQABAAEAAAD//wkAAQABAAIAAAAAAPr/AQABAAAAAAAAAPv/AQABAAEAAAAAAPz/AQABAAEAAAAAAP3/AQABAAEAAAABAPr/AQABAAAAAAABAPv/AQABAAEAAAABAPz/AQABAAEAAAABAP3/AQABAAEAAAACAPr/AQABAAAAAAACAPv/AQABAAEAAAACAPz/AQABAAEAAAACAP3/AQABAAEAAAADAPr/AQABAAAAAAADAPv/AQABAAEAAAADAPz/AQABAAEAAAADAP3/AQABAAEAAAAEAPr/AQABAAAAAAAEAPv/AQABAAEAAAAEAPz/AQABAAEAAAAEAP3/AQABAAEAAAAFAPr/AQABAAAAAAAFAPv/AQABAAEAAAAFAPz/AQABAAEAAAAFAP3/AQABAAEAAAAGAPr/AQABAAAAAAAGAPv/AQABAAEAAAAGAPz/AQABAAEAAAAGAP3/AQABAAEAAAAHAPr/AQABAAAAAAAHAPv/AQABAAEAAAAHAPz/AQABAAEAAAAHAP3/AQABAAEAAAAIAPr/AQABAAAAAAAIAPv/AQABAAEAAAAIAPz/AQABAAEAAAAIAP3/AQABAAEAAAAJAPr/AQABAAAAAAAJAPv/AQABAAEAAAAJAPz/AQABAAEAAAAJAP3/AQABAAEAAAAKAPr/AQABAAAAAAAKAPv/AQABAAEAAAAKAPz/AQABAAEAAAAKAP3/AQABAAEAAAALAPr/AQABAAAAAAALAPv/AQABAAEAAAALAPz/AQABAAEAAAALAP3/AQABAAEAAAAMAPr/AQABAAAAAAAMAPv/AQABAAEAAAAMAPz/AQABAAEAAAAMAP3/AQABAAEAAAANAPr/AQABAAAAAAANAPv/AQABAAEAAAANAPz/AQABAAEAAAANAP3/AQABAAEAAAAOAPr/AQABAAAAAAAOAPv/AQABAAEAAAAOAPz/AQABAAEAAAAOAP3/AQABAAEAAAAPAPr/AQABAAAAAAAPAPv/AQABAAEAAAAPAPz/AQABAAEAAAAPAP3/AQABAAEAAAAQAPr/AQACAAAAAAAQAPv/AQACAAEAAAAQAPz/AQACAAEAAAAQAP3/AQACAAEAAAA=") +tile_set = ExtResource("1_ea78s") + +[node name="TileMapLayerSand" type="TileMapLayer" parent="TileMapLayers"] +tile_map_data = PackedByteArray("AAADAAIAAQAFAAAAAAADAAMAAQAFAAIAAAAEAAIAAQAGAAAAAAAEAAMAAQAGAAIAAAAFAAIAAQAGAAAAAAAFAAMAAQAGAAIAAAAGAAIAAQAHAAAAAAAGAAMAAQAHAAIAAAA=") +tile_set = ExtResource("1_ea78s") + +[node name="OnTheGround" type="Node2D" parent="."] +y_sort_enabled = true + +[node name="Townie" parent="OnTheGround" instance=ExtResource("2_2g5xe")] +position = Vector2(225, 152) +character_seed = 138976455 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie"] +visible = false +collision_layer = 32 +collision_mask = 0 +script = ExtResource("3_p47ir") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea"] +position = Vector2(0, -29) +shape = SubResource("RectangleShape2D_22pcm") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie" node_paths=PackedStringArray("interact_area")] +script = ExtResource("4_qr3fq") +dialogue = ExtResource("8_qr3fq") +title = "townie_1" +interact_area = NodePath("../InteractArea") + +[node name="Timer" type="Timer" parent="OnTheGround/Townie"] +autostart = true + +[node name="Townie2" parent="OnTheGround" instance=ExtResource("2_2g5xe")] +position = Vector2(415, 233) + +[node name="AnimatedSprite2DLegs" parent="OnTheGround/Townie2" index="1"] +sprite_frames = SubResource("SpriteFrames_kpq1x") + +[node name="AnimatedSprite2DBody" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="1"] +instance_shader_parameters/shade_high_new = Color(0.58930516, 0.8525734, 0.9860394, 1) +instance_shader_parameters/shade_low_new = Color(0.38930517, 0.6525734, 0.7860394, 1) +instance_shader_parameters/shade_medium_new = Color(0.48663145, 0.81571674, 0.98254925, 1) +position = Vector2(0, -12) +sprite_frames = SubResource("SpriteFrames_htwo5") + +[node name="CelShadingRecolor" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="0"] +medium_color = Color(0.48663145, 0.81571674, 0.98254925, 1) +high_color = Color(0.58930516, 0.8525734, 0.9860394, 1) +low_color = Color(0.38930517, 0.6525734, 0.7860394, 1) + +[node name="AnimatedSprite2DHead" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="2"] +instance_shader_parameters/shade_high_new = Color(0.58930516, 0.8525734, 0.9860394, 1) +instance_shader_parameters/shade_low_new = Color(0.38930517, 0.6525734, 0.7860394, 1) +instance_shader_parameters/shade_medium_new = Color(0.48663145, 0.81571674, 0.98254925, 1) +sprite_frames = SubResource("SpriteFrames_n7dtb") + +[node name="CelShadingRecolor" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="0"] +medium_color = Color(0.48663145, 0.81571674, 0.98254925, 1) +high_color = Color(0.58930516, 0.8525734, 0.9860394, 1) +low_color = Color(0.38930517, 0.6525734, 0.7860394, 1) + +[node name="AnimatedSprite2DHair" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="2"] +sprite_frames = SubResource("SpriteFrames_ahibj") + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie2"] +visible = false +collision_layer = 32 +collision_mask = 0 +script = ExtResource("3_p47ir") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie2/InteractArea"] +position = Vector2(0, -29) +shape = SubResource("RectangleShape2D_22pcm") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie2" node_paths=PackedStringArray("interact_area")] +script = ExtResource("4_qr3fq") +dialogue = ExtResource("8_qr3fq") +title = "townie_2" +interact_area = NodePath("../InteractArea") + +[node name="Townie3" parent="OnTheGround" instance=ExtResource("2_2g5xe")] +position = Vector2(481, 101) +scale = Vector2(-1, 1) +character_seed = 132923783 +look_at_side = 1 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie3"] +visible = false +collision_layer = 32 +collision_mask = 0 +script = ExtResource("3_p47ir") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie3/InteractArea"] +position = Vector2(0, -29) +shape = SubResource("RectangleShape2D_22pcm") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie3" node_paths=PackedStringArray("interact_area")] +script = ExtResource("4_qr3fq") +dialogue = ExtResource("8_qr3fq") +title = "townie_3" +interact_area = NodePath("../InteractArea") + +[node name="Townie4" parent="OnTheGround" instance=ExtResource("2_2g5xe")] +position = Vector2(523, 130) +scale = Vector2(-1, 1) +character_seed = 1738644387 +look_at_side = 1 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie4"] +visible = false +collision_layer = 32 +collision_mask = 0 +script = ExtResource("3_p47ir") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie4/InteractArea"] +position = Vector2(0, -29) +shape = SubResource("RectangleShape2D_22pcm") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie4" node_paths=PackedStringArray("interact_area")] +script = ExtResource("4_qr3fq") +dialogue = ExtResource("8_qr3fq") +title = "townie_4" +interact_area = NodePath("../InteractArea") + +[node name="Player" parent="OnTheGround" instance=ExtResource("5_jsubs")] +position = Vector2(337, 161) +player_name = "StoryWeaver" +sprite_frames = ExtResource("6_hfrhi") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player"] +zoom = Vector2(2, 2) +position_smoothing_enabled = true + +[node name="ScreenOverlay" type="CanvasLayer" parent="."] + +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] +[connection signal="timeout" from="OnTheGround/Townie/Timer" to="OnTheGround/Townie" method="randomize_character"] +[connection signal="interaction_ended" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/Townie3/InteractArea" to="OnTheGround/Townie3" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie3/InteractArea" to="OnTheGround/Townie3" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/Townie4/InteractArea" to="OnTheGround/Townie4" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie4/InteractArea" to="OnTheGround/Townie4" method="_on_interact_area_interaction_started"] + +[editable path="OnTheGround/Townie2"] diff --git a/scenes/game_elements/characters/npcs/components/townie-body_001.png b/scenes/game_elements/characters/npcs/components/townie-body_001.png new file mode 100644 index 000000000..62182ce2c --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5bfa550bcd54bc25c8e318e3cfe77ba846eda6c37d0f07a59c33b83270ab1b6 +size 975 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_001.png.import b/scenes/game_elements/characters/npcs/components/townie-body_001.png.import new file mode 100644 index 000000000..350a9b5c1 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0t1eptqlcb8t" +path="res://.godot/imported/townie-body_001.png-6d35c19fc3c13c2ee878a575e835679f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-body_001.png" +dest_files=["res://.godot/imported/townie-body_001.png-6d35c19fc3c13c2ee878a575e835679f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png b/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png new file mode 100644 index 000000000..ecd363247 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f1c9de6c4b56dab94624afe46aa07889db4b0c3a538c8aee98cb12fd9e6043d +size 1387 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import b/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import new file mode 100644 index 000000000..d7e2989d6 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccmsckg3l3iay" +path="res://.godot/imported/townie-body_002.dy_-12.png-d34bc9c1d9cf388e514fefe0c1536492.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png" +dest_files=["res://.godot/imported/townie-body_002.dy_-12.png-d34bc9c1d9cf388e514fefe0c1536492.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.png b/scenes/game_elements/characters/npcs/components/townie-body_002.png new file mode 100644 index 000000000..56b6372e8 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89da243c90c2c0e935649688689f9cd42afedff0cb84be204c6ad6599d0122d3 +size 1082 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.png.import b/scenes/game_elements/characters/npcs/components/townie-body_002.png.import new file mode 100644 index 000000000..9664543a6 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlvcbntsncg18" +path="res://.godot/imported/townie-body_002.png-5e739254d6cd3574ade20782a3bac17c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-body_002.png" +dest_files=["res://.godot/imported/townie-body_002.png-5e739254d6cd3574ade20782a3bac17c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png b/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png new file mode 100644 index 000000000..e018a25ab --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:770e0e474dd6704ea66a20d1d35414e3dda79aba3d4cb4a0034ae32e84015efa +size 1189 diff --git a/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import b/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import new file mode 100644 index 000000000..8412f6f2b --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iq21xkckyvi1" +path="res://.godot/imported/townie-body_003.dx_-4.dy_-16.png-acc5ab9f6e74edf02d163ad885387f15.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png" +dest_files=["res://.godot/imported/townie-body_003.dx_-4.dy_-16.png-acc5ab9f6e74edf02d163ad885387f15.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_001.png b/scenes/game_elements/characters/npcs/components/townie-hair_001.png new file mode 100644 index 000000000..2a54379d4 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0620dd5980590a5601060cc0fa98732b9d54e0e6250b9a4cd0d83eaae05a6559 +size 931 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_001.png.import b/scenes/game_elements/characters/npcs/components/townie-hair_001.png.import new file mode 100644 index 000000000..1171bd10f --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bucvumn3fkygf" +path="res://.godot/imported/townie-hair_001.png-e9e991e2f5bd00771621e8e9d2be37c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_001.png" +dest_files=["res://.godot/imported/townie-hair_001.png-e9e991e2f5bd00771621e8e9d2be37c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_002.png b/scenes/game_elements/characters/npcs/components/townie-hair_002.png new file mode 100644 index 000000000..e55261e90 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2fd5758b7f002f57f67b9d1202691f07d4a28306b21ca10947f8fba0957ead0 +size 984 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_002.png.import b/scenes/game_elements/characters/npcs/components/townie-hair_002.png.import new file mode 100644 index 000000000..0573cdd4a --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4y4gg7xukeeg" +path="res://.godot/imported/townie-hair_002.png-178b37e736111255cbe707422d00feb7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_002.png" +dest_files=["res://.godot/imported/townie-hair_002.png-178b37e736111255cbe707422d00feb7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_003.png b/scenes/game_elements/characters/npcs/components/townie-hair_003.png new file mode 100644 index 000000000..11cee062e --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_003.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02b06e9aa2e6be943c677bb16a1309038dea1cc91565505b83b9e0570dc1f5e9 +size 640 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_003.png.import b/scenes/game_elements/characters/npcs/components/townie-hair_003.png.import new file mode 100644 index 000000000..edbc74add --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_003.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iqvjulny3uri" +path="res://.godot/imported/townie-hair_003.png-09fd0fff0b0c09620f05251c6e8239b0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_003.png" +dest_files=["res://.godot/imported/townie-hair_003.png-09fd0fff0b0c09620f05251c6e8239b0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_004.png b/scenes/game_elements/characters/npcs/components/townie-hair_004.png new file mode 100644 index 000000000..bfe043d94 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_004.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:713b12ba4e9448f0e2783b44da94f86c377b5325e512823da505daa89f6816fd +size 1227 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_004.png.import b/scenes/game_elements/characters/npcs/components/townie-hair_004.png.import new file mode 100644 index 000000000..b995b623e --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_004.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4nx388ax1jxg" +path="res://.godot/imported/townie-hair_004.png-65adc4c01af81a7ee9abf085fd4b9ff2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_004.png" +dest_files=["res://.godot/imported/townie-hair_004.png-65adc4c01af81a7ee9abf085fd4b9ff2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_005.png b/scenes/game_elements/characters/npcs/components/townie-hair_005.png new file mode 100644 index 000000000..3b08d941b --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_005.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39931c903bf6ee7f503aac14670a20027535ccd8d7701f05c462af15c79813a5 +size 1240 diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_005.png.import b/scenes/game_elements/characters/npcs/components/townie-hair_005.png.import new file mode 100644 index 000000000..09ca48bb8 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-hair_005.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjmcvluico8dg" +path="res://.godot/imported/townie-hair_005.png-472afb49e5488f88e32ef9aeb002b259.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_005.png" +dest_files=["res://.godot/imported/townie-hair_005.png-472afb49e5488f88e32ef9aeb002b259.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_001.png b/scenes/game_elements/characters/npcs/components/townie-head_001.png new file mode 100644 index 000000000..3fd69856e --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b07340aa680566736b95666d8ec16d23514736508cdbd930b18771907caad5db +size 888 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_001.png.import b/scenes/game_elements/characters/npcs/components/townie-head_001.png.import new file mode 100644 index 000000000..69c2dbbdc --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dktchu38pxnxl" +path="res://.godot/imported/townie-head_001.png-d8d99f7cae2bc705fce4ec08a37b209c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-head_001.png" +dest_files=["res://.godot/imported/townie-head_001.png-d8d99f7cae2bc705fce4ec08a37b209c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_002.png b/scenes/game_elements/characters/npcs/components/townie-head_002.png new file mode 100644 index 000000000..44b09618d --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e51a6a0627ac05987689c4bfd172f8a0d7acca4a8cc3d0b70509366608f8845 +size 985 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_002.png.import b/scenes/game_elements/characters/npcs/components/townie-head_002.png.import new file mode 100644 index 000000000..3f4d5ca7e --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5o2dw3xj2uus" +path="res://.godot/imported/townie-head_002.png-43909111d6ccd7c81abb70bb5c986064.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-head_002.png" +dest_files=["res://.godot/imported/townie-head_002.png-43909111d6ccd7c81abb70bb5c986064.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_003.png b/scenes/game_elements/characters/npcs/components/townie-head_003.png new file mode 100644 index 000000000..841c958c4 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_003.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f3a7e1b8ba712c591a05b6210fffe1b74225ff1439c125eb5b7644e57b63e0c +size 987 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_003.png.import b/scenes/game_elements/characters/npcs/components/townie-head_003.png.import new file mode 100644 index 000000000..05a9e3f98 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_003.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfothmxms5oo7" +path="res://.godot/imported/townie-head_003.png-d21a8a6a047047161933c5f3ef9d299d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-head_003.png" +dest_files=["res://.godot/imported/townie-head_003.png-d21a8a6a047047161933c5f3ef9d299d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_004.png b/scenes/game_elements/characters/npcs/components/townie-head_004.png new file mode 100644 index 000000000..2a04109dd --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_004.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ff659a4eedef45aa08c2551e9fb09d65f38e6e7a4c4df5a3b2bf9cc399756d9 +size 1045 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_004.png.import b/scenes/game_elements/characters/npcs/components/townie-head_004.png.import new file mode 100644 index 000000000..43e81f3b3 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_004.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csxn66qqmfcqu" +path="res://.godot/imported/townie-head_004.png-5e9cf968420c154df245d9613b9d52fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-head_004.png" +dest_files=["res://.godot/imported/townie-head_004.png-5e9cf968420c154df245d9613b9d52fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_005.png b/scenes/game_elements/characters/npcs/components/townie-head_005.png new file mode 100644 index 000000000..8932964f5 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_005.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a95c386eb85de6f3a6437b74595830a5e9728dc989e7d3c172ad2593d440ca51 +size 1063 diff --git a/scenes/game_elements/characters/npcs/components/townie-head_005.png.import b/scenes/game_elements/characters/npcs/components/townie-head_005.png.import new file mode 100644 index 000000000..4788d9fd6 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-head_005.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4va1e7cdnos2" +path="res://.godot/imported/townie-head_005.png-0463d9615e50a9e56539d86de6a5006a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-head_005.png" +dest_files=["res://.godot/imported/townie-head_005.png-0463d9615e50a9e56539d86de6a5006a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_001.png b/scenes/game_elements/characters/npcs/components/townie-legs_001.png new file mode 100644 index 000000000..baacd772d --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-legs_001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13ecfe2445d568c5d826aba89410b601db22e8f0ad19f908eb8e1529d63a869d +size 621 diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_001.png.import b/scenes/game_elements/characters/npcs/components/townie-legs_001.png.import new file mode 100644 index 000000000..74c8d0e17 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-legs_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://w2tqld60v18p" +path="res://.godot/imported/townie-legs_001.png-ac7e63eecf061b711802d201062034ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-legs_001.png" +dest_files=["res://.godot/imported/townie-legs_001.png-ac7e63eecf061b711802d201062034ac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png b/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png new file mode 100644 index 000000000..4641ceb2a --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:257b1f3f5dad402f67811a2e26660d1c69ca0b5899115fd53dea125546024638 +size 776 diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import b/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import new file mode 100644 index 000000000..05f50a6e2 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://y3xp5d8timm0" +path="res://.godot/imported/townie-legs_002.dy_-6.png-8b20f0fce47cb082bb6e54e9e5b79f31.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png" +dest_files=["res://.godot/imported/townie-legs_002.dy_-6.png-8b20f0fce47cb082bb6e54e9e5b79f31.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png b/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png new file mode 100644 index 000000000..3834cddb3 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8006fcd79badd92951f5d492f6127051edf6cb1294e07cc6961b31aceb623a09 +size 794 diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import b/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import new file mode 100644 index 000000000..601349d9d --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://daymgmvarx2ew" +path="res://.godot/imported/townie-legs_003.dy_-12.png-081d0d4d5b8df15efee66c99bc990722.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png" +dest_files=["res://.godot/imported/townie-legs_003.dy_-12.png-081d0d4d5b8df15efee66c99bc990722.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/game_elements/characters/npcs/components/townie.aseprite b/scenes/game_elements/characters/npcs/components/townie.aseprite new file mode 100644 index 000000000..ee738263d --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fced342b6f6a5c90dea81c9b51ad42f8d3fa8246d54c8abff6e0247d37a71b79 +size 9140 diff --git a/scenes/game_elements/characters/npcs/townie.tscn b/scenes/game_elements/characters/npcs/townie.tscn new file mode 100644 index 000000000..a8e24bea3 --- /dev/null +++ b/scenes/game_elements/characters/npcs/townie.tscn @@ -0,0 +1,236 @@ +[gd_scene load_steps=40 format=3 uid="uid://dgrrudegturnw"] + +[ext_resource type="Material" uid="uid://b7kf0suo0sc7k" path="res://scenes/game_elements/components/cel_shading_recolor_material.tres" id="1_nj51j"] +[ext_resource type="Script" uid="uid://c0a7xf5qx8p4y" path="res://scenes/game_elements/components/cel_shading_recolor.gd" id="2_nj51j"] +[ext_resource type="Script" uid="uid://dl6rgfwdn3qp4" path="res://scenes/game_elements/characters/components/character_randomizer.gd" id="2_xf1o5"] +[ext_resource type="Texture2D" uid="uid://w2tqld60v18p" path="res://scenes/game_elements/characters/npcs/components/townie-legs_001.png" id="4_4gc0b"] +[ext_resource type="Script" uid="uid://boyesrjdix688" path="res://scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd" id="5_8nfuc"] +[ext_resource type="Texture2D" uid="uid://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png" id="5_yd672"] +[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png" id="6_dstmm"] +[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-body_001.png" id="6_u5ew7"] +[ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-body_002.png" id="6_vqjnd"] +[ext_resource type="Texture2D" uid="uid://dktchu38pxnxl" path="res://scenes/game_elements/characters/npcs/components/townie-head_001.png" id="9_82egq"] +[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-hair_001.png" id="9_vqjnd"] +[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-head_003.png" id="9_ynrks"] +[ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png" id="10_tidpj"] +[ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-head_002.png" id="10_vqjnd"] +[ext_resource type="Texture2D" uid="uid://b4y4gg7xukeeg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_002.png" id="10_ynrks"] +[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-hair_003.png" id="11_iqfub"] +[ext_resource type="Texture2D" uid="uid://b4nx388ax1jxg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_004.png" id="12_4gc0b"] +[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-head_004.png" id="13_yd672"] +[ext_resource type="Texture2D" uid="uid://c4va1e7cdnos2" path="res://scenes/game_elements/characters/npcs/components/townie-head_005.png" id="14_rh0s3"] +[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_005.png" id="18_dstmm"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qs15o"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_4gc0b"] +atlas = ExtResource("6_dstmm") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yd672"] +atlas = ExtResource("6_dstmm") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dstmm"] +atlas = ExtResource("6_dstmm") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_beu7u"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_4gc0b") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yd672") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dstmm") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_beu7u"] +atlas = ExtResource("6_u5ew7") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m2wva"] +atlas = ExtResource("6_u5ew7") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u5ew7"] +atlas = ExtResource("6_u5ew7") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1in01"] +atlas = ExtResource("6_u5ew7") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_6q5fn"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_beu7u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m2wva") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_u5ew7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1in01") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_82egq"] +atlas = ExtResource("9_82egq") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vqjnd"] +atlas = ExtResource("9_82egq") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ynrks"] +atlas = ExtResource("9_82egq") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_iqfub"] +atlas = ExtResource("9_82egq") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_vq5og"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_82egq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_vqjnd") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_ynrks") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_iqfub") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_rh0s3"] +atlas = ExtResource("12_4gc0b") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tidpj"] +atlas = ExtResource("12_4gc0b") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hurny"] +atlas = ExtResource("12_4gc0b") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_m2wva"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_rh0s3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tidpj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hurny") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[node name="Townie" type="CharacterBody2D"] +material = ExtResource("1_nj51j") +instance_shader_parameters/shade_high_new = Color(0.9056, 0.7616, 0.7928, 1) +instance_shader_parameters/shade_low_new = Color(0.7056, 0.5616, 0.5928, 1) +instance_shader_parameters/shade_medium_new = Color(0.882, 0.702, 0.741, 1) +collision_layer = 2 +collision_mask = 0 +script = ExtResource("2_xf1o5") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +rotation = -1.5707964 +shape = SubResource("CapsuleShape2D_qs15o") + +[node name="AnimatedSprite2DLegs" type="AnimatedSprite2D" parent="."] +position = Vector2(-3, -31) +sprite_frames = SubResource("SpriteFrames_beu7u") +animation = &"idle" + +[node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs" node_paths=PackedStringArray("sprite")] +script = ExtResource("5_8nfuc") +textures = Array[Texture2D]([ExtResource("4_4gc0b"), ExtResource("5_yd672"), ExtResource("6_dstmm")]) +sprite = NodePath("..") +metadata/_custom_type_script = "uid://boyesrjdix688" + +[node name="AnimatedSprite2DBody" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs"] +material = ExtResource("1_nj51j") +instance_shader_parameters/shade_high_new = Color(0.91999996, 0.91999996, 0.2, 1) +instance_shader_parameters/shade_low_new = Color(0.71999997, 0.71999997, 0, 1) +instance_shader_parameters/shade_medium_new = Color(0.9, 0.9, 0, 1) +sprite_frames = SubResource("SpriteFrames_6q5fn") +animation = &"idle" +autoplay = "idle" + +[node name="CelShadingRecolor" type="Node" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" node_paths=PackedStringArray("node_to_recolor")] +script = ExtResource("2_nj51j") +node_to_recolor = NodePath("..") +high_color = Color(0.91999996, 0.91999996, 0.2, 1) +low_color = Color(0.71999997, 0.71999997, 0, 1) +metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" + +[node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" node_paths=PackedStringArray("sprite")] +script = ExtResource("5_8nfuc") +textures = Array[Texture2D]([ExtResource("6_u5ew7"), ExtResource("6_vqjnd"), ExtResource("10_tidpj")]) +sprite = NodePath("..") + +[node name="AnimatedSprite2DHead" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody"] +material = ExtResource("1_nj51j") +instance_shader_parameters/shade_high_new = Color(0.91999996, 0.91999996, 0.2, 1) +instance_shader_parameters/shade_low_new = Color(0.71999997, 0.71999997, 0, 1) +instance_shader_parameters/shade_medium_new = Color(0.9, 0.9, 0, 1) +sprite_frames = SubResource("SpriteFrames_vq5og") +animation = &"idle" +autoplay = "idle" + +[node name="CelShadingRecolor" type="Node" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" node_paths=PackedStringArray("node_to_recolor")] +script = ExtResource("2_nj51j") +node_to_recolor = NodePath("..") +high_color = Color(0.91999996, 0.91999996, 0.2, 1) +low_color = Color(0.71999997, 0.71999997, 0, 1) +metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" + +[node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" node_paths=PackedStringArray("sprite")] +script = ExtResource("5_8nfuc") +textures = Array[Texture2D]([ExtResource("9_82egq"), ExtResource("10_vqjnd"), ExtResource("9_ynrks"), ExtResource("13_yd672"), ExtResource("14_rh0s3")]) +sprite = NodePath("..") +metadata/_custom_type_script = "uid://boyesrjdix688" + +[node name="AnimatedSprite2DHair" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead"] +sprite_frames = SubResource("SpriteFrames_m2wva") +animation = &"idle" +metadata/_edit_lock_ = true + +[node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead/AnimatedSprite2DHair" node_paths=PackedStringArray("sprite")] +script = ExtResource("5_8nfuc") +textures = Array[Texture2D]([ExtResource("9_vqjnd"), ExtResource("10_ynrks"), ExtResource("11_iqfub"), ExtResource("12_4gc0b"), ExtResource("18_dstmm")]) +sprite = NodePath("..") +metadata/_custom_type_script = "uid://boyesrjdix688"