From 793245b05844b35f3f179318f02dd8adad300d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Wed, 6 May 2026 18:48:41 -0300 Subject: [PATCH 1/2] Cel shading shader: Switch to regular shader parameters Do not rely on instance shader parameters for recoloring. Instead, make the material unique when a different recolor is needed. For instance, by duplicating the cel_shading_recolor_material.tres. Now the way to have the same recoloring in multiple sprites is to share the same material. Townie: have a duplicate copy of the cel shading recolor material. Apply it to all the parts. --- .../components/character_randomizer.gd | 32 +- .../components/character_randomizer_test.tscn | 401 +++++++++++------- .../npcs/components/skin_tones_test.tscn | 85 ++-- .../game_elements/characters/npcs/townie.tscn | 51 ++- .../components/cel_shading_recolor.gd | 45 +- .../components/cel_shading_recolor.gdshader | 6 +- 6 files changed, 370 insertions(+), 250 deletions(-) diff --git a/scenes/game_elements/characters/components/character_randomizer.gd b/scenes/game_elements/characters/components/character_randomizer.gd index c916520653..1c7b91d91a 100644 --- a/scenes/game_elements/characters/components/character_randomizer.gd +++ b/scenes/game_elements/characters/components/character_randomizer.gd @@ -20,23 +20,29 @@ extends CharacterBody2D ## Also can look at sides. Defaults to look at left, and scales everything by -1 to look ## at right. +const CEL_SHADING_RECOLOR_MATERIAL = preload("uid://b7kf0suo0sc7k") + ## 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 +## The recoloring behavior to use in all sprites. +@export var cel_shading_recolor: CelShadingRecolor + ## Where is the character facing. Relative to the character. @export var look_at_side: Enums.LookAtSide = Enums.LookAtSide.LEFT: set = _set_look_at_side +## The shader material that will be set to all the sprites, the parts that conform the character. +## If none, a duplicate of the corresponding material will be set. +@export var shader_material: ShaderMaterial + ## 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] = [] @@ -54,13 +60,8 @@ var _previous_look_at_side: Enums.LookAtSide = Enums.LookAtSide.UNSPECIFIED func apply_character_randomizations() -> void: _random_number_generator.seed = character_seed - if skin_recolor_nodes: - var new_skin_medium_color: Color - skin_recolor_nodes[-1].set_random_skin_color(_random_number_generator) - 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 + if cel_shading_recolor: + cel_shading_recolor.set_random_skin_color(_random_number_generator) for n in random_texture_nodes: n.randomize_texture(_random_number_generator) @@ -86,6 +87,14 @@ func randomize_character() -> void: func _ready() -> void: _setup_nodes() + if not shader_material: + shader_material = (CEL_SHADING_RECOLOR_MATERIAL as ShaderMaterial).duplicate() + + for node in animated_sprites: + node.material = shader_material + + cel_shading_recolor.shader_material = shader_material + if character_seed: apply_character_randomizations() @@ -109,15 +118,12 @@ func _traverse(node: Node) -> void: 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) diff --git a/scenes/game_elements/characters/components/character_randomizer_test.tscn b/scenes/game_elements/characters/components/character_randomizer_test.tscn index 300b78f328..c49ec437d0 100644 --- a/scenes/game_elements/characters/components/character_randomizer_test.tscn +++ b/scenes/game_elements/characters/components/character_randomizer_test.tscn @@ -3,6 +3,7 @@ [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/interact_area.gd" id="3_p47ir"] +[ext_resource type="Shader" uid="uid://bs1yj5q1vidgx" path="res://scenes/game_elements/components/cel_shading_recolor.gdshader" id="3_qr3fq"] [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://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png" id="6_bonk8"] @@ -15,51 +16,104 @@ [ext_resource type="Texture2D" uid="uid://bxmhj36273qdl" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png" id="9_04pia"] [ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png" id="9_htwo5"] [ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.png" id="11_1uba5"] +[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png" id="11_7qyur"] +[ext_resource type="Texture2D" uid="uid://47367qxj6u04" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png" id="12_fe8ke"] [ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png" id="12_n5uef"] [ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_002.png" id="14_7wp2w"] [ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" id="15_7qyur"] +[ext_resource type="Texture2D" uid="uid://dktchu38pxnxl" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_001.png" id="17_ahibj"] [ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" id="17_fe8ke"] [ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png" id="18_ahibj"] [ext_resource type="Script" uid="uid://cwoclmik3db2" path="res://scenes/game_logic/walk_behaviors/follow_walk_behavior.gd" id="19_e0ffc"] +[ext_resource type="Texture2D" uid="uid://b4y4gg7xukeeg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png" id="21_05rux"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_bonk8"] +shader = ExtResource("3_qr3fq") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.808, 0.596, 0.655, 1) +shader_parameter/shade_high_new = Color(0.8464, 0.6768, 0.724, 1) +shader_parameter/shade_low_new = Color(0.64640003, 0.47680002, 0.524, 1) [sub_resource type="RectangleShape2D" id="RectangleShape2D_22pcm"] size = Vector2(52, 50) -[sub_resource type="AtlasTexture" id="AtlasTexture_jsa2b"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_22pcm"] +shader = ExtResource("3_qr3fq") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.19466418, 0.61424816, 0.8675251, 1) +shader_parameter/shade_high_new = Color(0.35573137, 0.6913985, 0.8940201, 1) +shader_parameter/shade_low_new = Color(0.15573135, 0.49139854, 0.6940201, 1) + +[sub_resource type="AtlasTexture" id="AtlasTexture_s8pun"] atlas = ExtResource("6_bonk8") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_kpq1x"] +[sub_resource type="AtlasTexture" id="AtlasTexture_eloka"] atlas = ExtResource("6_bonk8") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_y666u"] +[sub_resource type="AtlasTexture" id="AtlasTexture_64pgd"] atlas = ExtResource("6_bonk8") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_l7t43"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_8xc61"] +atlas = ExtResource("9_04pia") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2la7u"] +atlas = ExtResource("9_04pia") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_04pia"] +[sub_resource type="AtlasTexture" id="AtlasTexture_bwuq8"] +atlas = ExtResource("9_04pia") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ue7og"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_jsa2b") +"texture": SubResource("AtlasTexture_s8pun") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_kpq1x") +"texture": SubResource("AtlasTexture_eloka") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_y666u") +"texture": SubResource("AtlasTexture_64pgd") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_l7t43") +"texture": SubResource("AtlasTexture_eloka") }], "loop": true, "name": &"idle", "speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_8xc61") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2la7u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bwuq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8xc61") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bwuq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2la7u") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 }] [sub_resource type="AtlasTexture" id="AtlasTexture_covlx"] @@ -102,7 +156,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("8_e0ffc") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_1uba5"] +[sub_resource type="SpriteFrames" id="SpriteFrames_aqb5i"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -146,45 +200,45 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_s8pun"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_tynsv"] +atlas = ExtResource("11_7qyur") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_eloka"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_mt4vo"] +atlas = ExtResource("11_7qyur") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_64pgd"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_6rb10"] +atlas = ExtResource("11_7qyur") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_8xc61"] -atlas = ExtResource("9_04pia") +[sub_resource type="AtlasTexture" id="AtlasTexture_5ek1g"] +atlas = ExtResource("12_fe8ke") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_2la7u"] -atlas = ExtResource("9_04pia") +[sub_resource type="AtlasTexture" id="AtlasTexture_d3tqp"] +atlas = ExtResource("12_fe8ke") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_bwuq8"] -atlas = ExtResource("9_04pia") +[sub_resource type="AtlasTexture" id="AtlasTexture_w6nvb"] +atlas = ExtResource("12_fe8ke") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_n5uef"] +[sub_resource type="SpriteFrames" id="SpriteFrames_fj012"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_s8pun") +"texture": SubResource("AtlasTexture_tynsv") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_eloka") +"texture": SubResource("AtlasTexture_mt4vo") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_64pgd") +"texture": SubResource("AtlasTexture_6rb10") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_eloka") +"texture": SubResource("AtlasTexture_mt4vo") }], "loop": true, "name": &"idle", @@ -192,59 +246,92 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_8xc61") +"texture": SubResource("AtlasTexture_5ek1g") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2la7u") +"texture": SubResource("AtlasTexture_d3tqp") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bwuq8") +"texture": SubResource("AtlasTexture_w6nvb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_8xc61") +"texture": SubResource("AtlasTexture_5ek1g") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bwuq8") +"texture": SubResource("AtlasTexture_w6nvb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2la7u") +"texture": SubResource("AtlasTexture_d3tqp") }], "loop": true, "name": &"walk", "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_ny4dp"] +[sub_resource type="AtlasTexture" id="AtlasTexture_j5tt8"] +atlas = ExtResource("12_n5uef") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x6g6d"] +atlas = ExtResource("12_n5uef") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f0hoi"] +atlas = ExtResource("12_n5uef") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_3lql5"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_j5tt8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x6g6d") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_f0hoi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x6g6d") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_beu7u"] atlas = ExtResource("7_22pcm") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_e0ffc"] +[sub_resource type="AtlasTexture" id="AtlasTexture_m2wva"] atlas = ExtResource("7_22pcm") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_04pia"] +[sub_resource type="AtlasTexture" id="AtlasTexture_u5ew7"] atlas = ExtResource("7_22pcm") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_1uba5"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1in01"] atlas = ExtResource("7_22pcm") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_7wp2w"] +[sub_resource type="SpriteFrames" id="SpriteFrames_ft3li"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_ny4dp") +"texture": SubResource("AtlasTexture_beu7u") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_e0ffc") +"texture": SubResource("AtlasTexture_m2wva") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_04pia") +"texture": SubResource("AtlasTexture_u5ew7") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1uba5") +"texture": SubResource("AtlasTexture_1in01") }], "loop": true, "name": &"idle", @@ -263,7 +350,7 @@ region = Rect2(96, 0, 96, 96) atlas = ExtResource("11_1uba5") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_7qyur"] +[sub_resource type="SpriteFrames" id="SpriteFrames_txqd1"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -284,70 +371,74 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_j5tt8"] -atlas = ExtResource("12_n5uef") +[sub_resource type="AtlasTexture" id="AtlasTexture_6mf2i"] +atlas = ExtResource("8_tokus") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_x6g6d"] -atlas = ExtResource("12_n5uef") +[sub_resource type="AtlasTexture" id="AtlasTexture_it16u"] +atlas = ExtResource("8_tokus") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_f0hoi"] -atlas = ExtResource("12_n5uef") +[sub_resource type="AtlasTexture" id="AtlasTexture_wjc0t"] +atlas = ExtResource("8_tokus") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_fe8ke"] +[sub_resource type="AtlasTexture" id="AtlasTexture_wvpu8"] +atlas = ExtResource("8_tokus") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_7xna1"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_j5tt8") +"texture": SubResource("AtlasTexture_6mf2i") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x6g6d") +"texture": SubResource("AtlasTexture_it16u") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_f0hoi") +"texture": SubResource("AtlasTexture_wjc0t") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x6g6d") +"texture": SubResource("AtlasTexture_wvpu8") }], "loop": true, "name": &"idle", "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_7wp2w"] -atlas = ExtResource("8_tokus") +[sub_resource type="AtlasTexture" id="AtlasTexture_8swe7"] +atlas = ExtResource("17_ahibj") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_7qyur"] -atlas = ExtResource("8_tokus") +[sub_resource type="AtlasTexture" id="AtlasTexture_l3irc"] +atlas = ExtResource("17_ahibj") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_fe8ke"] -atlas = ExtResource("8_tokus") +[sub_resource type="AtlasTexture" id="AtlasTexture_eereg"] +atlas = ExtResource("17_ahibj") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_ahibj"] -atlas = ExtResource("8_tokus") +[sub_resource type="AtlasTexture" id="AtlasTexture_qc4c2"] +atlas = ExtResource("17_ahibj") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_ahibj"] +[sub_resource type="SpriteFrames" id="SpriteFrames_y1u7u"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_7wp2w") +"texture": SubResource("AtlasTexture_8swe7") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_7qyur") +"texture": SubResource("AtlasTexture_l3irc") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_fe8ke") +"texture": SubResource("AtlasTexture_eereg") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_ahibj") +"texture": SubResource("AtlasTexture_qc4c2") }], "loop": true, "name": &"idle", @@ -370,7 +461,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("14_7wp2w") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_05rux"] +[sub_resource type="SpriteFrames" id="SpriteFrames_6bjll"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -407,7 +498,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("15_7qyur") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_ue7og"] +[sub_resource type="SpriteFrames" id="SpriteFrames_ykhe4"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -428,43 +519,6 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_6mf2i"] -atlas = ExtResource("8_tokus") -region = Rect2(0, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_it16u"] -atlas = ExtResource("8_tokus") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_wjc0t"] -atlas = ExtResource("8_tokus") -region = Rect2(192, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_wvpu8"] -atlas = ExtResource("8_tokus") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_aqb5i"] -resource_local_to_scene = true -animations = [{ -"frames": [{ -"duration": 10.0, -"texture": SubResource("AtlasTexture_6mf2i") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_it16u") -}, { -"duration": 8.0, -"texture": SubResource("AtlasTexture_wjc0t") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_wvpu8") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}] - [sub_resource type="AtlasTexture" id="AtlasTexture_53a43"] atlas = ExtResource("15_7qyur") region = Rect2(0, 0, 96, 96) @@ -481,7 +535,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("15_7qyur") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_fj012"] +[sub_resource type="SpriteFrames" id="SpriteFrames_oyy7n"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -502,74 +556,74 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_ue7og"] +[sub_resource type="AtlasTexture" id="AtlasTexture_l5io8"] atlas = ExtResource("9_htwo5") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_aqb5i"] +[sub_resource type="AtlasTexture" id="AtlasTexture_aau2b"] atlas = ExtResource("9_htwo5") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_fj012"] +[sub_resource type="AtlasTexture" id="AtlasTexture_f136i"] atlas = ExtResource("9_htwo5") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_3lql5"] +[sub_resource type="AtlasTexture" id="AtlasTexture_mqc7r"] atlas = ExtResource("9_htwo5") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_3lql5"] +[sub_resource type="SpriteFrames" id="SpriteFrames_mdvm3"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_ue7og") +"texture": SubResource("AtlasTexture_l5io8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_aqb5i") +"texture": SubResource("AtlasTexture_aau2b") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_fj012") +"texture": SubResource("AtlasTexture_f136i") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_3lql5") +"texture": SubResource("AtlasTexture_mqc7r") }], "loop": true, "name": &"idle", "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_l5io8"] -atlas = ExtResource("9_htwo5") +[sub_resource type="AtlasTexture" id="AtlasTexture_17egh"] +atlas = ExtResource("21_05rux") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_aau2b"] -atlas = ExtResource("9_htwo5") +[sub_resource type="AtlasTexture" id="AtlasTexture_kuuqr"] +atlas = ExtResource("21_05rux") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_f136i"] -atlas = ExtResource("9_htwo5") +[sub_resource type="AtlasTexture" id="AtlasTexture_g7sa3"] +atlas = ExtResource("21_05rux") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_mqc7r"] -atlas = ExtResource("9_htwo5") +[sub_resource type="AtlasTexture" id="AtlasTexture_klm8j"] +atlas = ExtResource("21_05rux") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_ft3li"] +[sub_resource type="SpriteFrames" id="SpriteFrames_cecqh"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_l5io8") +"texture": SubResource("AtlasTexture_17egh") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_aau2b") +"texture": SubResource("AtlasTexture_kuuqr") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_f136i") +"texture": SubResource("AtlasTexture_g7sa3") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_mqc7r") +"texture": SubResource("AtlasTexture_klm8j") }], "loop": true, "name": &"idle", @@ -592,7 +646,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("17_fe8ke") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_txqd1"] +[sub_resource type="SpriteFrames" id="SpriteFrames_l0yqg"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -629,7 +683,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("17_fe8ke") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_7xna1"] +[sub_resource type="SpriteFrames" id="SpriteFrames_dxgbc"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -666,7 +720,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("18_ahibj") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_y1u7u"] +[sub_resource type="SpriteFrames" id="SpriteFrames_26jv7"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -687,6 +741,24 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tokus"] +shader = ExtResource("3_qr3fq") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.596, 0.482, 0.325, 1) +shader_parameter/shade_high_new = Color(0.6768, 0.5856, 0.45999998, 1) +shader_parameter/shade_low_new = Color(0.47680002, 0.3856, 0.26, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_htwo5"] +shader = ExtResource("3_qr3fq") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.847, 0.651, 0.514, 1) +shader_parameter/shade_high_new = Color(0.8776, 0.72080004, 0.6112, 1) +shader_parameter/shade_low_new = Color(0.6776, 0.52080005, 0.41120002, 1) + [node name="CharacterRandomizerTest" type="Node2D" unique_id=136000252] [node name="TileMapLayers" type="Node2D" parent="." unique_id=1483527644] @@ -705,6 +777,7 @@ y_sort_enabled = true [node name="Townie" parent="OnTheGround" unique_id=632242166 instance=ExtResource("2_2g5xe")] position = Vector2(225, 152) character_seed = 138976455 +shader_material = SubResource("ShaderMaterial_bonk8") [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=713209077] collision_layer = 32 @@ -729,47 +802,43 @@ autostart = true [node name="Townie2" parent="OnTheGround" unique_id=645401180 instance=ExtResource("2_2g5xe")] position = Vector2(415, 233) +shader_material = SubResource("ShaderMaterial_22pcm") [node name="AnimatedSprite2DLegs" parent="OnTheGround/Townie2" index="1" unique_id=385222684] -sprite_frames = SubResource("SpriteFrames_04pia") +material = SubResource("ShaderMaterial_22pcm") +sprite_frames = SubResource("SpriteFrames_ue7og") [node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="0" unique_id=471097323] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_1uba5"), SubResource("SpriteFrames_n5uef"), SubResource("SpriteFrames_04pia")]) +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_aqb5i"), SubResource("SpriteFrames_ue7og"), SubResource("SpriteFrames_fj012")]) [node name="AnimatedSprite2DBody" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="2" unique_id=2098127821] -instance_shader_parameters/shade_high_new = Color(0.21403402, 0.75751436, 0.9589514, 1) -instance_shader_parameters/shade_low_new = Color(0.014034003, 0.55751437, 0.7589514, 1) -instance_shader_parameters/shade_medium_new = Color(0.017542504, 0.6968929, 0.9486893, 1) -position = Vector2(0, 0) -sprite_frames = SubResource("SpriteFrames_7wp2w") - -[node name="CelShadingRecolor" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="0" unique_id=1327679537] -medium_color = Color(0.017542504, 0.6968929, 0.9486893, 1) -high_color = Color(0.21403402, 0.75751436, 0.9589514, 1) -low_color = Color(0.014034003, 0.55751437, 0.7589514, 1) - -[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="1" unique_id=1733667753] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_7wp2w"), SubResource("SpriteFrames_7qyur"), SubResource("SpriteFrames_fe8ke")]) - -[node name="AnimatedSprite2DHead" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="3" unique_id=421503015] -instance_shader_parameters/shade_high_new = Color(0.21403402, 0.75751436, 0.9589514, 1) -instance_shader_parameters/shade_low_new = Color(0.014034003, 0.55751437, 0.7589514, 1) -instance_shader_parameters/shade_medium_new = Color(0.017542504, 0.6968929, 0.9486893, 1) -sprite_frames = SubResource("SpriteFrames_ahibj") - -[node name="CelShadingRecolor" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="0" unique_id=2000765677] -medium_color = Color(0.017542504, 0.6968929, 0.9486893, 1) -high_color = Color(0.21403402, 0.75751436, 0.9589514, 1) -low_color = Color(0.014034003, 0.55751437, 0.7589514, 1) - -[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="1" unique_id=592927150] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_ahibj"), SubResource("SpriteFrames_05rux"), SubResource("SpriteFrames_ue7og"), SubResource("SpriteFrames_aqb5i"), SubResource("SpriteFrames_fj012")]) - -[node name="AnimatedSprite2DHair" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="3" unique_id=2123781958] +material = SubResource("ShaderMaterial_22pcm") +position = Vector2(0, -6) sprite_frames = SubResource("SpriteFrames_3lql5") +[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="0" unique_id=1733667753] +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_ft3li"), SubResource("SpriteFrames_txqd1"), SubResource("SpriteFrames_3lql5")]) + +[node name="AnimatedSprite2DHead" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="2" unique_id=421503015] +material = SubResource("ShaderMaterial_22pcm") +position = Vector2(-4, -16) +sprite_frames = SubResource("SpriteFrames_7xna1") + +[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="0" unique_id=592927150] +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_y1u7u"), SubResource("SpriteFrames_6bjll"), SubResource("SpriteFrames_ykhe4"), SubResource("SpriteFrames_7xna1"), SubResource("SpriteFrames_oyy7n")]) + +[node name="AnimatedSprite2DHair" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="2" unique_id=2123781958] +material = SubResource("ShaderMaterial_22pcm") +sprite_frames = SubResource("SpriteFrames_mdvm3") + [node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead/AnimatedSprite2DHair" index="0" unique_id=358939124] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_ft3li"), SubResource("SpriteFrames_3lql5"), SubResource("SpriteFrames_txqd1"), SubResource("SpriteFrames_7xna1"), SubResource("SpriteFrames_y1u7u")]) +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_mdvm3"), SubResource("SpriteFrames_cecqh"), SubResource("SpriteFrames_l0yqg"), SubResource("SpriteFrames_dxgbc"), SubResource("SpriteFrames_26jv7")]) + +[node name="CelShadingRecolor" parent="OnTheGround/Townie2" index="2" unique_id=1327679537] +shader_material = SubResource("ShaderMaterial_22pcm") +medium_color = Color(0.19466418, 0.61424816, 0.8675251, 1) +high_color = Color(0.35573137, 0.6913985, 0.8940201, 1) +low_color = Color(0.15573135, 0.49139854, 0.6940201, 1) [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie2" unique_id=1760778420] collision_layer = 32 @@ -791,6 +860,7 @@ interact_area = NodePath("../InteractArea") [node name="Townie3" parent="OnTheGround" unique_id=1154886998 instance=ExtResource("2_2g5xe")] position = Vector2(481, 101) character_seed = 2207560013 +shader_material = SubResource("ShaderMaterial_tokus") [node name="FollowWalkBehavior" type="Node2D" parent="OnTheGround/Townie3" unique_id=1949852425 node_paths=PackedStringArray("target", "character")] script = ExtResource("19_e0ffc") @@ -804,6 +874,7 @@ position = Vector2(523, 130) scale = Vector2(-1, 1) character_seed = 1246173203 look_at_side = 1 +shader_material = SubResource("ShaderMaterial_htwo5") [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie4" unique_id=785629688] collision_layer = 32 diff --git a/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn b/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn index b418f89a99..99d4a997a1 100644 --- a/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn +++ b/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn @@ -1,11 +1,20 @@ [gd_scene format=4 uid="uid://rgy4lqdylwyj"] +[ext_resource type="Shader" uid="uid://bs1yj5q1vidgx" path="res://scenes/game_elements/components/cel_shading_recolor.gdshader" id="2_mtxp3"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="3_16rk4"] -[ext_resource type="Material" uid="uid://b7kf0suo0sc7k" path="res://scenes/game_elements/components/cel_shading_recolor_material.tres" id="5_sygj5"] [ext_resource type="Texture2D" uid="uid://8x2wkfw4cgnf" path="res://scenes/game_elements/characters/npcs/components/skin_tones_test.png" id="6_sygj5"] [ext_resource type="Script" uid="uid://c0a7xf5qx8p4y" path="res://scenes/game_elements/components/cel_shading_recolor.gd" id="7_jhyvc"] [ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="7_sygj5"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_a122a"] +shader = ExtResource("2_mtxp3") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.9, 0.9, 0, 1) +shader_parameter/shade_high_new = Color(0.91999996, 0.91999996, 0.2, 1) +shader_parameter/shade_low_new = Color(0.71999997, 0.71999997, 0, 1) + [sub_resource type="AtlasTexture" id="AtlasTexture_84243"] atlas = ExtResource("6_sygj5") region = Rect2(0, 0, 96, 96) @@ -60,6 +69,42 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_cp3vn"] +shader = ExtResource("2_mtxp3") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.882, 0.702, 0.741, 1) +shader_parameter/shade_high_new = Color(0.9056, 0.7616, 0.7928, 1) +shader_parameter/shade_low_new = Color(0.7056, 0.5616, 0.5928, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ljqkd"] +shader = ExtResource("2_mtxp3") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.686, 0.553, 0.373, 1) +shader_parameter/shade_high_new = Color(0.7488, 0.64239997, 0.49839997, 1) +shader_parameter/shade_low_new = Color(0.5488, 0.44239998, 0.2984, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_t3p67"] +shader = ExtResource("2_mtxp3") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.847, 0.651, 0.514, 1) +shader_parameter/shade_high_new = Color(0.8776, 0.72080004, 0.6112, 1) +shader_parameter/shade_low_new = Color(0.6776, 0.52080005, 0.41120002, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_5ajtr"] +shader = ExtResource("2_mtxp3") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.388, 0.176, 0.282, 1) +shader_parameter/shade_high_new = Color(0.5104, 0.3408, 0.4256, 1) +shader_parameter/shade_low_new = Color(0.3104, 0.1408, 0.2256, 1) + [node name="SkinTonesTest" type="Node2D" unique_id=286988060] [node name="TileMapLayers" type="Node2D" parent="." unique_id=1008882753] @@ -79,10 +124,7 @@ y_sort_enabled = true editor_description = "This node has a material with a shader applied. The shader allows to remap 3 key colors, which are shades of green, to any color." -material = ExtResource("5_sygj5") -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) +material = SubResource("ShaderMaterial_a122a") position = Vector2(311, 205) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -95,6 +137,7 @@ It can derive the high and low colors automatically. And it knows a list of skin colors. It provides a button to pick a skin color randomly." script = ExtResource("7_jhyvc") +shader_material = SubResource("ShaderMaterial_a122a") node_to_recolor = NodePath("..") high_color = Color(0.91999996, 0.91999996, 0.2, 1) low_color = Color(0.71999997, 0.71999997, 0, 1) @@ -107,10 +150,7 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D2" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1813794485] -material = ExtResource("5_sygj5") -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) +material = SubResource("ShaderMaterial_cp3vn") position = Vector2(318, 137) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -118,6 +158,7 @@ autoplay = "idle" [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D2" unique_id=46950788 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") +shader_material = SubResource("ShaderMaterial_cp3vn") node_to_recolor = NodePath("..") medium_color = Color(0.882, 0.702, 0.741, 1) high_color = Color(0.9056, 0.7616, 0.7928, 1) @@ -131,10 +172,7 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D3" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1927981161] -material = ExtResource("5_sygj5") -instance_shader_parameters/shade_high_new = Color(0.7488, 0.64239997, 0.49839997, 1) -instance_shader_parameters/shade_low_new = Color(0.5488, 0.44239998, 0.2984, 1) -instance_shader_parameters/shade_medium_new = Color(0.686, 0.553, 0.373, 1) +material = SubResource("ShaderMaterial_ljqkd") position = Vector2(371, 147) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -144,6 +182,7 @@ flip_h = true [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D3" unique_id=964092022 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") +shader_material = SubResource("ShaderMaterial_ljqkd") node_to_recolor = NodePath("..") medium_color = Color(0.686, 0.553, 0.373, 1) high_color = Color(0.7488, 0.64239997, 0.49839997, 1) @@ -157,10 +196,7 @@ sprite = NodePath("../../AnimatedSprite2D2") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D4" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1731923129] -material = ExtResource("5_sygj5") -instance_shader_parameters/shade_high_new = Color(0.8776, 0.72080004, 0.6112, 1) -instance_shader_parameters/shade_low_new = Color(0.6776, 0.52080005, 0.41120002, 1) -instance_shader_parameters/shade_medium_new = Color(0.847, 0.651, 0.514, 1) +material = SubResource("ShaderMaterial_t3p67") position = Vector2(390, 176) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -170,6 +206,7 @@ flip_h = true [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D4" unique_id=1030463016 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") +shader_material = SubResource("ShaderMaterial_t3p67") node_to_recolor = NodePath("..") medium_color = Color(0.847, 0.651, 0.514, 1) high_color = Color(0.8776, 0.72080004, 0.6112, 1) @@ -182,29 +219,27 @@ script = ExtResource("7_sygj5") sprite = NodePath("../../AnimatedSprite2D2") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" -[node name="AnimatedSprite2D5" type="AnimatedSprite2D" parent="." unique_id=447592433] -material = ExtResource("5_sygj5") -instance_shader_parameters/shade_high_new = Color(0.5104, 0.3408, 0.4256, 1) -instance_shader_parameters/shade_low_new = Color(0.3104, 0.1408, 0.2256, 1) -instance_shader_parameters/shade_medium_new = Color(0.388, 0.176, 0.282, 1) +[node name="AnimatedSprite2D5" type="AnimatedSprite2D" parent="OnTheGround" unique_id=447592433] +material = SubResource("ShaderMaterial_5ajtr") position = Vector2(268, 149) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" autoplay = "idle" frame = 4 -[node name="CelShadingRecolor" type="Node" parent="AnimatedSprite2D5" unique_id=399976614 node_paths=PackedStringArray("node_to_recolor")] +[node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D5" unique_id=399976614 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") +shader_material = SubResource("ShaderMaterial_5ajtr") node_to_recolor = NodePath("..") medium_color = Color(0.388, 0.176, 0.282, 1) high_color = Color(0.5104, 0.3408, 0.4256, 1) low_color = Color(0.3104, 0.1408, 0.2256, 1) metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" -[node name="RandomFrameSpriteBehavior" type="Node2D" parent="AnimatedSprite2D5" unique_id=174050375 node_paths=PackedStringArray("sprite")] +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="OnTheGround/AnimatedSprite2D5" unique_id=174050375 node_paths=PackedStringArray("sprite")] position = Vector2(-318, -137) script = ExtResource("7_sygj5") -sprite = NodePath("../../OnTheGround/AnimatedSprite2D2") +sprite = NodePath("../../AnimatedSprite2D2") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1967059135] diff --git a/scenes/game_elements/characters/npcs/townie.tscn b/scenes/game_elements/characters/npcs/townie.tscn index c16e9828d3..3edb4c1796 100644 --- a/scenes/game_elements/characters/npcs/townie.tscn +++ b/scenes/game_elements/characters/npcs/townie.tscn @@ -4,6 +4,7 @@ [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="SpriteFrames" uid="uid://do4waj3mgr6vw" path="res://scenes/game_elements/characters/components/sprite_frames/townie-legs_003.dy_-12.tres" id="3_4rgc5"] +[ext_resource type="Shader" uid="uid://bs1yj5q1vidgx" path="res://scenes/game_elements/components/cel_shading_recolor.gdshader" id="3_byt3c"] [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="SpriteFrames" uid="uid://bygxgwwtt1j6h" path="res://scenes/game_elements/characters/components/sprite_frames/townie-legs_001.tres" id="5_r7ycj"] [ext_resource type="SpriteFrames" uid="uid://ubitgryup0jx" path="res://scenes/game_elements/characters/components/sprite_frames/townie-legs_002.dy_-6.tres" id="6_hbfaq"] @@ -22,22 +23,32 @@ [ext_resource type="SpriteFrames" uid="uid://dnfyg3i87cp17" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_005.tres" id="24_hskxo"] [ext_resource type="SpriteFrames" uid="uid://c43yaqne7a2kh" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_002.tres" id="33_m1eb2"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_byt3c"] +resource_local_to_scene = true +shader = ExtResource("3_byt3c") +shader_parameter/shade_medium_key = Vector3i(0, 255, 0) +shader_parameter/shade_high_key = Vector3i(160, 255, 160) +shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/shade_medium_new = Color(0.89, 0.89, 0, 1) +shader_parameter/shade_high_new = Color(0.91, 0.91, 0.2, 1) +shader_parameter/shade_low_new = Color(0.71, 0.71, 0, 1) + [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qs15o"] -[node name="Townie" type="CharacterBody2D" unique_id=1098678013] +[node name="Townie" type="CharacterBody2D" unique_id=1098678013 node_paths=PackedStringArray("cel_shading_recolor")] 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") +cel_shading_recolor = NodePath("CelShadingRecolor") +shader_material = SubResource("ShaderMaterial_byt3c") [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=128596675] rotation = -1.5707964 shape = SubResource("CapsuleShape2D_qs15o") [node name="AnimatedSprite2DLegs" type="AnimatedSprite2D" parent="." unique_id=385222684] +material = SubResource("ShaderMaterial_byt3c") position = Vector2(-3, -31) sprite_frames = ExtResource("3_4rgc5") animation = &"idle" @@ -56,22 +67,12 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://dy68p7gf07pi3" [node name="AnimatedSprite2DBody" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs" unique_id=2098127821] -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) +material = SubResource("ShaderMaterial_byt3c") position = Vector2(0, -12) sprite_frames = ExtResource("16_5y6le") animation = &"idle" autoplay = "idle" -[node name="CelShadingRecolor" type="Node" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" unique_id=1327679537 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" unique_id=1733667753 node_paths=PackedStringArray("sprite")] script = ExtResource("5_8nfuc") sprite_frames = Array[SpriteFrames]([ExtResource("16_5y6le"), ExtResource("11_tidpj"), ExtResource("12_hurny")]) @@ -84,21 +85,11 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://dy68p7gf07pi3" [node name="AnimatedSprite2DHead" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" unique_id=421503015] -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) +material = SubResource("ShaderMaterial_byt3c") sprite_frames = ExtResource("22_8wbfo") animation = &"idle" autoplay = "idle" -[node name="CelShadingRecolor" type="Node" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" unique_id=2000765677 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" unique_id=592927150 node_paths=PackedStringArray("sprite")] script = ExtResource("5_8nfuc") sprite_frames = Array[SpriteFrames]([ExtResource("22_8wbfo"), ExtResource("15_byt3c"), ExtResource("16_kccyr"), ExtResource("17_syy7w"), ExtResource("18_4rgc5")]) @@ -112,6 +103,7 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://dy68p7gf07pi3" [node name="AnimatedSprite2DHair" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" unique_id=2123781958] +material = SubResource("ShaderMaterial_byt3c") sprite_frames = ExtResource("33_m1eb2") animation = &"idle" autoplay = "idle" @@ -128,3 +120,10 @@ script = ExtResource("10_syy7w") character = NodePath("../../../../..") sprite = NodePath("..") metadata/_custom_type_script = "uid://dy68p7gf07pi3" + +[node name="CelShadingRecolor" type="Node" parent="." unique_id=1327679537] +script = ExtResource("2_nj51j") +shader_material = SubResource("ShaderMaterial_byt3c") +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" diff --git a/scenes/game_elements/components/cel_shading_recolor.gd b/scenes/game_elements/components/cel_shading_recolor.gd index 91bff0ad51..6ff129b6fc 100644 --- a/scenes/game_elements/components/cel_shading_recolor.gd +++ b/scenes/game_elements/components/cel_shading_recolor.gd @@ -11,10 +11,16 @@ extends Node ## But instead of dealing with a full palette, this will recolor 3 shades. ## Which is the style expected in Threadbare. ## [br][br] -## [b]Note:[/b] This behavior will only work if the [member node_to_recolor] has the -## material "cel_shading_recolor_material.tres" applied to it. +## [b]Note:[/b] This behavior will only work if the [member shader_material] is a +## duplicate of "cel_shading_recolor_material.tres". +## [br][br] +## [b]Note:[/b] A node can be set in [member node_to_recolor] as a shortcut to +## use its material directly. ## [br][br] ## One possible use of this is to apply different skin tones to characters. +## [br][br] +## Share the [member shader_material] to apply the same recoloring to multiple +## sprites (multiple parts of the same character, for instance). ## Named skin colors ## [br][br] @@ -71,6 +77,12 @@ const SKIN_COLORS: Dictionary[String, Color] = { "pearl": Color(0.949, 0.867, 0.894, 1.0), } +## The shader material to modify. +## If [member node_to_recolor] has a material of type [ShaderMaterial], that one will be used. +## [b]Note:[/b] This behavior will only work if this +## material is a duplicate of "cel_shading_recolor_material.tres". +@export var shader_material: ShaderMaterial + ## The node that will be recolored ## [br][br] ## [b]Note:[/b] This behavior will only work if it has the @@ -101,16 +113,16 @@ const SKIN_COLORS: Dictionary[String, Color] = { var random_skin_color_button: Callable = set_random_skin_color -func _enter_tree() -> void: - if not node_to_recolor and get_parent() is CanvasItem: - node_to_recolor = get_parent() - medium_color = medium_color +func _ready() -> void: + colorize() func _set_node_to_recolor(new_node_to_recolor: CanvasItem) -> void: node_to_recolor = new_node_to_recolor - update_configuration_warnings() - colorize() + if not shader_material and node_to_recolor: + shader_material = node_to_recolor.material as ShaderMaterial + update_configuration_warnings() + colorize() func _set_medium_color(new_medium_color: Color) -> void: @@ -151,11 +163,12 @@ func _validate_property(property: Dictionary) -> void: ## Apply the colors by setting the shader parameters func colorize() -> void: - if not node_to_recolor: + if not shader_material: return - node_to_recolor.set_instance_shader_parameter("shade_medium_new", medium_color) - node_to_recolor.set_instance_shader_parameter("shade_high_new", high_color) - node_to_recolor.set_instance_shader_parameter("shade_low_new", low_color) + + shader_material.set_shader_parameter("shade_medium_new", medium_color) + shader_material.set_shader_parameter("shade_high_new", high_color) + shader_material.set_shader_parameter("shade_low_new", low_color) ## Pick a random color from [constant SKIN_COLORS] and automatically set all shades from it. @@ -168,10 +181,6 @@ func set_random_skin_color(rng: RandomNumberGenerator = null) -> void: func _get_configuration_warnings() -> PackedStringArray: var warnings: PackedStringArray - if not node_to_recolor: - warnings.append("The Skin Node must be set.") - return warnings - var shader_material: ShaderMaterial = node_to_recolor.material as ShaderMaterial if not shader_material: warnings.append("The Skin Node material must be a ShaderMaterial.") return warnings @@ -179,6 +188,6 @@ func _get_configuration_warnings() -> PackedStringArray: warnings.append("The Skin Node material must have a shader.") return warnings for uniform_name: String in ["shade_medium_new", "shade_high_new", "shade_low_new"]: - if node_to_recolor.get_instance_shader_parameter(uniform_name) == null: - warnings.append("The Node To Recolor must have an instance uniform %s." % uniform_name) + if shader_material.get_shader_parameter(uniform_name) == null: + warnings.append("The Node To Recolor material must have an uniform %s." % uniform_name) return warnings diff --git a/scenes/game_elements/components/cel_shading_recolor.gdshader b/scenes/game_elements/components/cel_shading_recolor.gdshader index ccffda0ecc..d5f9983d91 100644 --- a/scenes/game_elements/components/cel_shading_recolor.gdshader +++ b/scenes/game_elements/components/cel_shading_recolor.gdshader @@ -38,17 +38,17 @@ group_uniforms NewColors; * [br][br] * Defaults to yellow emoji-like color. */ -instance uniform vec4 shade_medium_new : source_color = vec4(0.89, 0.89, 0, 1); +uniform vec4 shade_medium_new : source_color = vec4(0.89, 0.89, 0, 1); /** * The new high or lightened color. */ -instance uniform vec4 shade_high_new : source_color = vec4(0.91, 0.91, 0.2, 1); +uniform vec4 shade_high_new : source_color = vec4(0.91, 0.91, 0.2, 1); /** * The new low or darkened color. */ -instance uniform vec4 shade_low_new : source_color = vec4(0.71, 0.71, 0, 1); +uniform vec4 shade_low_new : source_color = vec4(0.71, 0.71, 0, 1); void fragment() { ivec3 colori = ivec3(round(COLOR.rgb * 255.0)); From 24437808dd9309ccf617be74f21aaaad4edfe181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= Date: Fri, 15 May 2026 14:30:19 -0300 Subject: [PATCH 2/2] Cel shading recolor: Generalize to a palette Before, the shader swapped 3 colors: light, medium and dark. The script had a way to derive the light and dark colors from the medium one. And the key colors were 3 shades of green. Go back to the palette-swap shader reference [1] and only change variable names and comments. Townie asset: - Change the colors so skin is yellow and clothes are green. - Manually paint the contour lines of shapes, to a darker value of the fill color. This adds a 4th color to the cel shading, which will be mapped to a dark line or a light line, for more readability. - Export all PNG spritesheets. CelShadingRecolor: - Pass the two palettes to the shader. - Add lists of hair tones and clothes tones. The latter is rather arbitrary and could be improved in the future. - Export buttons to randomize the first 4 colors of the palette for the skin, the next 4 for the hair, and the last 4 for the clothes. [1] https://github.com/KoBeWi/Godot-Palette-Swap-Shader/blob/master/addons/PaletteSwapShader/SimplePaletteSwap.gdshader Resolve https://github.com/endlessm/threadbare/issues/2204 --- .../components/character_randomizer.gd | 5 +- .../components/character_randomizer_test.tscn | 424 +++++++++--------- .../npcs/components/skin_tones_test.tscn | 127 +++--- .../npcs/components/townie-idle-body_001.png | 4 +- .../npcs/components/townie-idle-body_002.png | 4 +- .../townie-idle-body_003.dx_-4.dy_-16.png | 4 +- .../npcs/components/townie-idle-hair_001.png | 4 +- .../npcs/components/townie-idle-hair_002.png | 2 +- .../npcs/components/townie-idle-hair_003.png | 4 +- .../npcs/components/townie-idle-hair_004.png | 4 +- .../npcs/components/townie-idle-hair_005.png | 4 +- .../npcs/components/townie-idle-head_001.png | 4 +- .../npcs/components/townie-idle-head_002.png | 4 +- .../npcs/components/townie-idle-head_003.png | 4 +- .../npcs/components/townie-idle-head_004.png | 4 +- .../npcs/components/townie-idle-head_005.png | 4 +- .../npcs/components/townie.aseprite | 4 +- .../npcs/components/townie_keys_palette.tres | 4 + .../game_elements/characters/npcs/townie.tscn | 11 +- .../components/cel_shading_recolor.gd | 200 ++++++--- .../components/cel_shading_recolor.gdshader | 60 +-- .../cel_shading_recolor_material.tres | 6 +- 22 files changed, 465 insertions(+), 426 deletions(-) create mode 100644 scenes/game_elements/characters/npcs/components/townie_keys_palette.tres diff --git a/scenes/game_elements/characters/components/character_randomizer.gd b/scenes/game_elements/characters/components/character_randomizer.gd index 1c7b91d91a..e9a34dfeeb 100644 --- a/scenes/game_elements/characters/components/character_randomizer.gd +++ b/scenes/game_elements/characters/components/character_randomizer.gd @@ -37,6 +37,9 @@ const CEL_SHADING_RECOLOR_MATERIAL = preload("uid://b7kf0suo0sc7k") ## If none, a duplicate of the corresponding material will be set. @export var shader_material: ShaderMaterial +## Click this button to update the randomization according to the [member character_seed]. +@export_tool_button("Update") var update_button: Callable = apply_character_randomizations + ## Click this button to create a random character. @export_tool_button("Randomize") var randomize_character_button: Callable = randomize_character @@ -61,7 +64,7 @@ func apply_character_randomizations() -> void: _random_number_generator.seed = character_seed if cel_shading_recolor: - cel_shading_recolor.set_random_skin_color(_random_number_generator) + cel_shading_recolor.randomize(_random_number_generator) for n in random_texture_nodes: n.randomize_texture(_random_number_generator) diff --git a/scenes/game_elements/characters/components/character_randomizer_test.tscn b/scenes/game_elements/characters/components/character_randomizer_test.tscn index c49ec437d0..119cbf7f64 100644 --- a/scenes/game_elements/characters/components/character_randomizer_test.tscn +++ b/scenes/game_elements/characters/components/character_randomizer_test.tscn @@ -6,87 +6,98 @@ [ext_resource type="Shader" uid="uid://bs1yj5q1vidgx" path="res://scenes/game_elements/components/cel_shading_recolor.gdshader" id="3_qr3fq"] [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://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.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-idle-body_001.png" id="7_22pcm"] -[ext_resource type="Texture2D" uid="uid://w2tqld60v18p" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png" id="7_ny4dp"] -[ext_resource type="Texture2D" uid="uid://cuwh4nnfg4t3t" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png" id="8_e0ffc"] +[ext_resource type="Texture2D" uid="uid://w2tqld60v18p" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png" id="7_7qyur"] +[ext_resource type="Texture2D" uid="uid://cuwh4nnfg4t3t" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png" id="8_fe8ke"] [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://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_004.png" id="8_tokus"] -[ext_resource type="Texture2D" uid="uid://bxmhj36273qdl" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png" id="9_04pia"] -[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png" id="9_htwo5"] -[ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.png" id="11_1uba5"] -[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png" id="11_7qyur"] -[ext_resource type="Texture2D" uid="uid://47367qxj6u04" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png" id="12_fe8ke"] -[ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png" id="12_n5uef"] -[ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_002.png" id="14_7wp2w"] -[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" id="15_7qyur"] -[ext_resource type="Texture2D" uid="uid://dktchu38pxnxl" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_001.png" id="17_ahibj"] -[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" id="17_fe8ke"] -[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png" id="18_ahibj"] +[ext_resource type="Texture2D" uid="uid://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png" id="9_ahibj"] +[ext_resource type="Texture2D" uid="uid://bxmhj36273qdl" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png" id="10_05rux"] +[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png" id="11_ue7og"] +[ext_resource type="Texture2D" uid="uid://47367qxj6u04" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png" id="12_aqb5i"] +[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_001.png" id="13_fj012"] +[ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.png" id="14_3lql5"] +[ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png" id="15_ft3li"] +[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_004.png" id="16_txqd1"] +[ext_resource type="Texture2D" uid="uid://dktchu38pxnxl" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_001.png" id="17_7xna1"] +[ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_002.png" id="18_y1u7u"] +[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" id="19_6bjll"] [ext_resource type="Script" uid="uid://cwoclmik3db2" path="res://scenes/game_logic/walk_behaviors/follow_walk_behavior.gd" id="19_e0ffc"] -[ext_resource type="Texture2D" uid="uid://b4y4gg7xukeeg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png" id="21_05rux"] +[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png" id="20_ykhe4"] +[ext_resource type="Texture2D" uid="uid://b4y4gg7xukeeg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png" id="21_oyy7n"] +[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" id="22_mdvm3"] +[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png" id="23_cecqh"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_bonk8"] shader = ExtResource("3_qr3fq") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.808, 0.596, 0.655, 1) -shader_parameter/shade_high_new = Color(0.8464, 0.6768, 0.724, 1) -shader_parameter/shade_low_new = Color(0.64640003, 0.47680002, 0.524, 1) +shader_parameter/color_count = 12 +shader_parameter/key_colors = PackedInt32Array(255, 255, 160, 255, 255, 0, 160, 160, 0, 46, 46, 0, 198, 129, 59, 175, 93, 35, 123, 61, 18, 46, 0, 0, 160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.8464, 0.6768, 0.724, 0.808, 0.596, 0.655, 0.64640003, 0.47680002, 0.524, 0.08627451, 0.10980392, 0.18039216, 0.8176, 0.45999998, 0.4192, 0.772, 0.325, 0.274, 0.6176, 0.26, 0.2192, 0.08627451, 0.10980392, 0.18039216, 0.21920002, 0.388, 0.7584, 0.024, 0.235, 0.698, 0.0192, 0.18800001, 0.55840003, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) [sub_resource type="RectangleShape2D" id="RectangleShape2D_22pcm"] size = Vector2(52, 50) -[sub_resource type="ShaderMaterial" id="ShaderMaterial_22pcm"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_l0yqg"] +resource_local_to_scene = true shader = ExtResource("3_qr3fq") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.19466418, 0.61424816, 0.8675251, 1) -shader_parameter/shade_high_new = Color(0.35573137, 0.6913985, 0.8940201, 1) -shader_parameter/shade_low_new = Color(0.15573135, 0.49139854, 0.6940201, 1) +shader_parameter/color_count = 12 +shader_parameter/key_colors = PackedInt32Array(255, 255, 160, 255, 255, 0, 160, 160, 0, 46, 46, 0, 198, 129, 59, 175, 93, 35, 123, 61, 18, 46, 0, 0, 160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.5354733, 0.79311466, 1, 0.32494864, 0.7132246, 0.99999994, 0, 0.5954574, 0.9151287, 0.08627451, 0.10980392, 0.18039216, 0.2528, 0.2512, 0.2896, 0.066, 0.064, 0.112, 0.0528, 0.051200002, 0.089600004, 0.21176471, 0.2627451, 0.3372549, 0.844, 0.7408, 0.5688, 0.805, 0.676, 0.461, 0.644, 0.54080003, 0.3688, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -[sub_resource type="AtlasTexture" id="AtlasTexture_s8pun"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_covlx"] +atlas = ExtResource("7_7qyur") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_eloka"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_r7g0f"] +atlas = ExtResource("7_7qyur") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_64pgd"] -atlas = ExtResource("6_bonk8") +[sub_resource type="AtlasTexture" id="AtlasTexture_wocpn"] +atlas = ExtResource("7_7qyur") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_8xc61"] -atlas = ExtResource("9_04pia") +[sub_resource type="AtlasTexture" id="AtlasTexture_xcd2m"] +atlas = ExtResource("7_7qyur") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_282bi"] +atlas = ExtResource("8_fe8ke") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_2la7u"] -atlas = ExtResource("9_04pia") +[sub_resource type="AtlasTexture" id="AtlasTexture_4v8h1"] +atlas = ExtResource("8_fe8ke") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_bwuq8"] -atlas = ExtResource("9_04pia") +[sub_resource type="AtlasTexture" id="AtlasTexture_rfti1"] +atlas = ExtResource("8_fe8ke") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_esail"] +atlas = ExtResource("8_fe8ke") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6pxfc"] +atlas = ExtResource("8_fe8ke") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_ue7og"] +[sub_resource type="AtlasTexture" id="AtlasTexture_tpolt"] +atlas = ExtResource("8_fe8ke") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_dxgbc"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_s8pun") +"texture": SubResource("AtlasTexture_covlx") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_eloka") +"texture": SubResource("AtlasTexture_r7g0f") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_64pgd") +"texture": SubResource("AtlasTexture_wocpn") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_eloka") +"texture": SubResource("AtlasTexture_xcd2m") }], "loop": true, "name": &"idle", @@ -94,83 +105,67 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_8xc61") +"texture": SubResource("AtlasTexture_282bi") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2la7u") +"texture": SubResource("AtlasTexture_4v8h1") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bwuq8") +"texture": SubResource("AtlasTexture_rfti1") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_8xc61") +"texture": SubResource("AtlasTexture_esail") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bwuq8") +"texture": SubResource("AtlasTexture_6pxfc") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2la7u") +"texture": SubResource("AtlasTexture_tpolt") }], "loop": true, "name": &"walk", "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_covlx"] -atlas = ExtResource("7_ny4dp") +[sub_resource type="AtlasTexture" id="AtlasTexture_s8pun"] +atlas = ExtResource("9_ahibj") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_r7g0f"] -atlas = ExtResource("7_ny4dp") +[sub_resource type="AtlasTexture" id="AtlasTexture_eloka"] +atlas = ExtResource("9_ahibj") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_wocpn"] -atlas = ExtResource("7_ny4dp") +[sub_resource type="AtlasTexture" id="AtlasTexture_64pgd"] +atlas = ExtResource("9_ahibj") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_xcd2m"] -atlas = ExtResource("7_ny4dp") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_282bi"] -atlas = ExtResource("8_e0ffc") +[sub_resource type="AtlasTexture" id="AtlasTexture_8xc61"] +atlas = ExtResource("10_05rux") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_4v8h1"] -atlas = ExtResource("8_e0ffc") +[sub_resource type="AtlasTexture" id="AtlasTexture_2la7u"] +atlas = ExtResource("10_05rux") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_rfti1"] -atlas = ExtResource("8_e0ffc") -region = Rect2(192, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_esail"] -atlas = ExtResource("8_e0ffc") -region = Rect2(0, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_6pxfc"] -atlas = ExtResource("8_e0ffc") +[sub_resource type="AtlasTexture" id="AtlasTexture_bwuq8"] +atlas = ExtResource("10_05rux") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_tpolt"] -atlas = ExtResource("8_e0ffc") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_aqb5i"] +[sub_resource type="SpriteFrames" id="SpriteFrames_26jv7"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_covlx") +"texture": SubResource("AtlasTexture_s8pun") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_r7g0f") +"texture": SubResource("AtlasTexture_eloka") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_wocpn") +"texture": SubResource("AtlasTexture_64pgd") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_xcd2m") +"texture": SubResource("AtlasTexture_eloka") }], "loop": true, "name": &"idle", @@ -178,22 +173,22 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_282bi") +"texture": SubResource("AtlasTexture_8xc61") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_4v8h1") +"texture": SubResource("AtlasTexture_2la7u") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_rfti1") +"texture": SubResource("AtlasTexture_bwuq8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_esail") +"texture": SubResource("AtlasTexture_8xc61") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_6pxfc") +"texture": SubResource("AtlasTexture_bwuq8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tpolt") +"texture": SubResource("AtlasTexture_2la7u") }], "loop": true, "name": &"walk", @@ -201,30 +196,30 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_tynsv"] -atlas = ExtResource("11_7qyur") +atlas = ExtResource("11_ue7og") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_mt4vo"] -atlas = ExtResource("11_7qyur") +atlas = ExtResource("11_ue7og") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_6rb10"] -atlas = ExtResource("11_7qyur") +atlas = ExtResource("11_ue7og") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_5ek1g"] -atlas = ExtResource("12_fe8ke") +atlas = ExtResource("12_aqb5i") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_d3tqp"] -atlas = ExtResource("12_fe8ke") +atlas = ExtResource("12_aqb5i") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_w6nvb"] -atlas = ExtResource("12_fe8ke") +atlas = ExtResource("12_aqb5i") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_fj012"] +[sub_resource type="SpriteFrames" id="SpriteFrames_6mjbn"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -268,103 +263,103 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_j5tt8"] -atlas = ExtResource("12_n5uef") +[sub_resource type="AtlasTexture" id="AtlasTexture_beu7u"] +atlas = ExtResource("13_fj012") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_x6g6d"] -atlas = ExtResource("12_n5uef") +[sub_resource type="AtlasTexture" id="AtlasTexture_m2wva"] +atlas = ExtResource("13_fj012") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_f0hoi"] -atlas = ExtResource("12_n5uef") +[sub_resource type="AtlasTexture" id="AtlasTexture_u5ew7"] +atlas = ExtResource("13_fj012") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_3lql5"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1in01"] +atlas = ExtResource("13_fj012") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_p74n1"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_j5tt8") +"texture": SubResource("AtlasTexture_beu7u") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x6g6d") +"texture": SubResource("AtlasTexture_m2wva") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_f0hoi") +"texture": SubResource("AtlasTexture_u5ew7") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x6g6d") +"texture": SubResource("AtlasTexture_1in01") }], "loop": true, "name": &"idle", "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_beu7u"] -atlas = ExtResource("7_22pcm") +[sub_resource type="AtlasTexture" id="AtlasTexture_kbgar"] +atlas = ExtResource("14_3lql5") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_m2wva"] -atlas = ExtResource("7_22pcm") +[sub_resource type="AtlasTexture" id="AtlasTexture_w7k6m"] +atlas = ExtResource("14_3lql5") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_u5ew7"] -atlas = ExtResource("7_22pcm") +[sub_resource type="AtlasTexture" id="AtlasTexture_6o5o0"] +atlas = ExtResource("14_3lql5") region = Rect2(192, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_1in01"] -atlas = ExtResource("7_22pcm") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_ft3li"] +[sub_resource type="SpriteFrames" id="SpriteFrames_0xap0"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_beu7u") +"texture": SubResource("AtlasTexture_kbgar") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_m2wva") +"texture": SubResource("AtlasTexture_w7k6m") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_u5ew7") +"texture": SubResource("AtlasTexture_6o5o0") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1in01") +"texture": SubResource("AtlasTexture_w7k6m") }], "loop": true, "name": &"idle", "speed": 10.0 }] -[sub_resource type="AtlasTexture" id="AtlasTexture_kbgar"] -atlas = ExtResource("11_1uba5") +[sub_resource type="AtlasTexture" id="AtlasTexture_j5tt8"] +atlas = ExtResource("15_ft3li") region = Rect2(0, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_w7k6m"] -atlas = ExtResource("11_1uba5") +[sub_resource type="AtlasTexture" id="AtlasTexture_x6g6d"] +atlas = ExtResource("15_ft3li") region = Rect2(96, 0, 96, 96) -[sub_resource type="AtlasTexture" id="AtlasTexture_6o5o0"] -atlas = ExtResource("11_1uba5") +[sub_resource type="AtlasTexture" id="AtlasTexture_f0hoi"] +atlas = ExtResource("15_ft3li") region = Rect2(192, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_txqd1"] +[sub_resource type="SpriteFrames" id="SpriteFrames_4ol28"] resource_local_to_scene = true animations = [{ "frames": [{ "duration": 10.0, -"texture": SubResource("AtlasTexture_kbgar") +"texture": SubResource("AtlasTexture_j5tt8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_w7k6m") +"texture": SubResource("AtlasTexture_x6g6d") }, { "duration": 8.0, -"texture": SubResource("AtlasTexture_6o5o0") +"texture": SubResource("AtlasTexture_f0hoi") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_w7k6m") +"texture": SubResource("AtlasTexture_x6g6d") }], "loop": true, "name": &"idle", @@ -372,22 +367,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_6mf2i"] -atlas = ExtResource("8_tokus") +atlas = ExtResource("16_txqd1") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_it16u"] -atlas = ExtResource("8_tokus") +atlas = ExtResource("16_txqd1") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_wjc0t"] -atlas = ExtResource("8_tokus") +atlas = ExtResource("16_txqd1") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_wvpu8"] -atlas = ExtResource("8_tokus") +atlas = ExtResource("16_txqd1") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_7xna1"] +[sub_resource type="SpriteFrames" id="SpriteFrames_ip1y6"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -409,22 +404,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_8swe7"] -atlas = ExtResource("17_ahibj") +atlas = ExtResource("17_7xna1") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_l3irc"] -atlas = ExtResource("17_ahibj") +atlas = ExtResource("17_7xna1") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_eereg"] -atlas = ExtResource("17_ahibj") +atlas = ExtResource("17_7xna1") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_qc4c2"] -atlas = ExtResource("17_ahibj") +atlas = ExtResource("17_7xna1") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_y1u7u"] +[sub_resource type="SpriteFrames" id="SpriteFrames_of7d1"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -446,22 +441,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_872h8"] -atlas = ExtResource("14_7wp2w") +atlas = ExtResource("18_y1u7u") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_apej3"] -atlas = ExtResource("14_7wp2w") +atlas = ExtResource("18_y1u7u") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_lkn5k"] -atlas = ExtResource("14_7wp2w") +atlas = ExtResource("18_y1u7u") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_r4mdc"] -atlas = ExtResource("14_7wp2w") +atlas = ExtResource("18_y1u7u") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_6bjll"] +[sub_resource type="SpriteFrames" id="SpriteFrames_vjnia"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -483,22 +478,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_gg1dw"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_tu1my"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_8ql8n"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_ig0ma"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_ykhe4"] +[sub_resource type="SpriteFrames" id="SpriteFrames_qi32a"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -520,22 +515,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_53a43"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_wv2ve"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_cmdsg"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_sh2mb"] -atlas = ExtResource("15_7qyur") +atlas = ExtResource("19_6bjll") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_oyy7n"] +[sub_resource type="SpriteFrames" id="SpriteFrames_v4nwt"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -557,22 +552,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_l5io8"] -atlas = ExtResource("9_htwo5") +atlas = ExtResource("20_ykhe4") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_aau2b"] -atlas = ExtResource("9_htwo5") +atlas = ExtResource("20_ykhe4") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_f136i"] -atlas = ExtResource("9_htwo5") +atlas = ExtResource("20_ykhe4") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_mqc7r"] -atlas = ExtResource("9_htwo5") +atlas = ExtResource("20_ykhe4") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_mdvm3"] +[sub_resource type="SpriteFrames" id="SpriteFrames_6312x"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -594,22 +589,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_17egh"] -atlas = ExtResource("21_05rux") +atlas = ExtResource("21_oyy7n") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_kuuqr"] -atlas = ExtResource("21_05rux") +atlas = ExtResource("21_oyy7n") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_g7sa3"] -atlas = ExtResource("21_05rux") +atlas = ExtResource("21_oyy7n") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_klm8j"] -atlas = ExtResource("21_05rux") +atlas = ExtResource("21_oyy7n") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_cecqh"] +[sub_resource type="SpriteFrames" id="SpriteFrames_re3e7"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -631,22 +626,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_6vcs2"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_wrrba"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_1x45m"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_hbppq"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_l0yqg"] +[sub_resource type="SpriteFrames" id="SpriteFrames_8f63u"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -668,22 +663,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_gmxsa"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_jom5l"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_ea5su"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_cl2ru"] -atlas = ExtResource("17_fe8ke") +atlas = ExtResource("22_mdvm3") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_dxgbc"] +[sub_resource type="SpriteFrames" id="SpriteFrames_c2ltw"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -705,22 +700,22 @@ animations = [{ }] [sub_resource type="AtlasTexture" id="AtlasTexture_d7rc0"] -atlas = ExtResource("18_ahibj") +atlas = ExtResource("23_cecqh") region = Rect2(0, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_73nf8"] -atlas = ExtResource("18_ahibj") +atlas = ExtResource("23_cecqh") region = Rect2(96, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_nwhgr"] -atlas = ExtResource("18_ahibj") +atlas = ExtResource("23_cecqh") region = Rect2(192, 0, 96, 96) [sub_resource type="AtlasTexture" id="AtlasTexture_3x38k"] -atlas = ExtResource("18_ahibj") +atlas = ExtResource("23_cecqh") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_26jv7"] +[sub_resource type="SpriteFrames" id="SpriteFrames_krffm"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -741,23 +736,20 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="ColorPalette" id="ColorPalette_qfp1q"] +colors = PackedColorArray(0.5354733, 0.79311466, 1, 1, 0.32494864, 0.7132246, 0.99999994, 1, 0, 0.5954574, 0.9151287, 1, 0.08627451, 0.10980392, 0.18039216, 1, 0.2528, 0.2512, 0.2896, 1, 0.066, 0.064, 0.112, 1, 0.0528, 0.051200002, 0.089600004, 1, 0.21176471, 0.2627451, 0.3372549, 1, 0.844, 0.7408, 0.5688, 1, 0.805, 0.676, 0.461, 1, 0.644, 0.54080003, 0.3688, 1, 0.08627451, 0.10980392, 0.18039216, 1) + [sub_resource type="ShaderMaterial" id="ShaderMaterial_tokus"] shader = ExtResource("3_qr3fq") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.596, 0.482, 0.325, 1) -shader_parameter/shade_high_new = Color(0.6768, 0.5856, 0.45999998, 1) -shader_parameter/shade_low_new = Color(0.47680002, 0.3856, 0.26, 1) +shader_parameter/color_count = 12 +shader_parameter/key_colors = PackedInt32Array(255, 255, 160, 255, 255, 0, 160, 160, 0, 46, 46, 0, 198, 129, 59, 175, 93, 35, 123, 61, 18, 46, 0, 0, 160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.6768, 0.5856, 0.45999998, 0.596, 0.482, 0.325, 0.47680002, 0.3856, 0.26, 0.08627451, 0.10980392, 0.18039216, 0.9184, 0.9384, 0.94879997, 0.898, 0.923, 0.936, 0.7184, 0.7384, 0.7488, 0.08627451, 0.10980392, 0.18039216, 0.844, 0.7408, 0.5688, 0.805, 0.676, 0.461, 0.644, 0.54080003, 0.3688, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) [sub_resource type="ShaderMaterial" id="ShaderMaterial_htwo5"] shader = ExtResource("3_qr3fq") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.847, 0.651, 0.514, 1) -shader_parameter/shade_high_new = Color(0.8776, 0.72080004, 0.6112, 1) -shader_parameter/shade_low_new = Color(0.6776, 0.52080005, 0.41120002, 1) +shader_parameter/color_count = 12 +shader_parameter/key_colors = PackedInt32Array(255, 255, 160, 255, 255, 0, 160, 160, 0, 46, 46, 0, 198, 129, 59, 175, 93, 35, 123, 61, 18, 46, 0, 0, 160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.8776, 0.72080004, 0.6112, 0.847, 0.651, 0.514, 0.6776, 0.52080005, 0.41120002, 0.08627451, 0.10980392, 0.18039216, 0.7032, 0.5248, 0.33200002, 0.629, 0.406, 0.165, 0.5032, 0.32479998, 0.13200001, 0.08627451, 0.10980392, 0.18039216, 0.844, 0.7408, 0.5688, 0.805, 0.676, 0.461, 0.644, 0.54080003, 0.3688, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) [node name="CharacterRandomizerTest" type="Node2D" unique_id=136000252] @@ -802,43 +794,40 @@ autostart = true [node name="Townie2" parent="OnTheGround" unique_id=645401180 instance=ExtResource("2_2g5xe")] position = Vector2(415, 233) -shader_material = SubResource("ShaderMaterial_22pcm") +shader_material = SubResource("ShaderMaterial_l0yqg") [node name="AnimatedSprite2DLegs" parent="OnTheGround/Townie2" index="1" unique_id=385222684] -material = SubResource("ShaderMaterial_22pcm") -sprite_frames = SubResource("SpriteFrames_ue7og") +material = SubResource("ShaderMaterial_l0yqg") +sprite_frames = SubResource("SpriteFrames_dxgbc") [node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="0" unique_id=471097323] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_aqb5i"), SubResource("SpriteFrames_ue7og"), SubResource("SpriteFrames_fj012")]) +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_dxgbc"), SubResource("SpriteFrames_26jv7"), SubResource("SpriteFrames_6mjbn")]) [node name="AnimatedSprite2DBody" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="2" unique_id=2098127821] -material = SubResource("ShaderMaterial_22pcm") -position = Vector2(0, -6) -sprite_frames = SubResource("SpriteFrames_3lql5") +material = SubResource("ShaderMaterial_l0yqg") +position = Vector2(0, 0) +sprite_frames = SubResource("SpriteFrames_p74n1") [node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="0" unique_id=1733667753] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_ft3li"), SubResource("SpriteFrames_txqd1"), SubResource("SpriteFrames_3lql5")]) +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_p74n1"), SubResource("SpriteFrames_0xap0"), SubResource("SpriteFrames_4ol28")]) [node name="AnimatedSprite2DHead" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="2" unique_id=421503015] -material = SubResource("ShaderMaterial_22pcm") -position = Vector2(-4, -16) -sprite_frames = SubResource("SpriteFrames_7xna1") +material = SubResource("ShaderMaterial_l0yqg") +sprite_frames = SubResource("SpriteFrames_ip1y6") [node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="0" unique_id=592927150] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_y1u7u"), SubResource("SpriteFrames_6bjll"), SubResource("SpriteFrames_ykhe4"), SubResource("SpriteFrames_7xna1"), SubResource("SpriteFrames_oyy7n")]) +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_of7d1"), SubResource("SpriteFrames_vjnia"), SubResource("SpriteFrames_qi32a"), SubResource("SpriteFrames_ip1y6"), SubResource("SpriteFrames_v4nwt")]) [node name="AnimatedSprite2DHair" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="2" unique_id=2123781958] -material = SubResource("ShaderMaterial_22pcm") -sprite_frames = SubResource("SpriteFrames_mdvm3") +material = SubResource("ShaderMaterial_l0yqg") +sprite_frames = SubResource("SpriteFrames_6312x") [node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead/AnimatedSprite2DHair" index="0" unique_id=358939124] -sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_mdvm3"), SubResource("SpriteFrames_cecqh"), SubResource("SpriteFrames_l0yqg"), SubResource("SpriteFrames_dxgbc"), SubResource("SpriteFrames_26jv7")]) +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_6312x"), SubResource("SpriteFrames_re3e7"), SubResource("SpriteFrames_8f63u"), SubResource("SpriteFrames_c2ltw"), SubResource("SpriteFrames_krffm")]) [node name="CelShadingRecolor" parent="OnTheGround/Townie2" index="2" unique_id=1327679537] -shader_material = SubResource("ShaderMaterial_22pcm") -medium_color = Color(0.19466418, 0.61424816, 0.8675251, 1) -high_color = Color(0.35573137, 0.6913985, 0.8940201, 1) -low_color = Color(0.15573135, 0.49139854, 0.6940201, 1) +shader_material = SubResource("ShaderMaterial_l0yqg") +new_colors_palette = SubResource("ColorPalette_qfp1q") [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie2" unique_id=1760778420] collision_layer = 32 @@ -859,6 +848,7 @@ interact_area = NodePath("../InteractArea") [node name="Townie3" parent="OnTheGround" unique_id=1154886998 instance=ExtResource("2_2g5xe")] position = Vector2(481, 101) +motion_mode = 1 character_seed = 2207560013 shader_material = SubResource("ShaderMaterial_tokus") diff --git a/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn b/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn index 99d4a997a1..9e5716c902 100644 --- a/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn +++ b/scenes/game_elements/characters/npcs/components/skin_tones_test.tscn @@ -6,14 +6,11 @@ [ext_resource type="Script" uid="uid://c0a7xf5qx8p4y" path="res://scenes/game_elements/components/cel_shading_recolor.gd" id="7_jhyvc"] [ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="7_sygj5"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_a122a"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vn1co"] shader = ExtResource("2_mtxp3") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.9, 0.9, 0, 1) -shader_parameter/shade_high_new = Color(0.91999996, 0.91999996, 0.2, 1) -shader_parameter/shade_low_new = Color(0.71999997, 0.71999997, 0, 1) +shader_parameter/color_count = 4 +shader_parameter/key_colors = PackedInt32Array(160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.78639996, 0.5736, 0.6048, 0.733, 0.467, 0.506, 0.5864, 0.3736, 0.4048, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) [sub_resource type="AtlasTexture" id="AtlasTexture_84243"] atlas = ExtResource("6_sygj5") @@ -69,41 +66,47 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_cp3vn"] +[sub_resource type="ColorPalette" id="ColorPalette_vn1co"] +colors = PackedColorArray(0.627451, 1, 0.627451, 1, 0, 1, 0, 1, 0, 0.627451, 0, 1, 0, 0.18039216, 0, 1) + +[sub_resource type="ColorPalette" id="ColorPalette_t3p67"] +colors = PackedColorArray(0.78639996, 0.5736, 0.6048, 1, 0.733, 0.467, 0.506, 1, 0.5864, 0.3736, 0.4048, 1, 0.08627451, 0.10980392, 0.18039216, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mtxp3"] shader = ExtResource("2_mtxp3") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.882, 0.702, 0.741, 1) -shader_parameter/shade_high_new = Color(0.9056, 0.7616, 0.7928, 1) -shader_parameter/shade_low_new = Color(0.7056, 0.5616, 0.5928, 1) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_ljqkd"] +shader_parameter/color_count = 4 +shader_parameter/key_colors = PackedInt32Array(160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.9088, 0.87119997, 0.8528, 0.886, 0.839, 0.816, 0.7088, 0.6712, 0.6528, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +[sub_resource type="ColorPalette" id="ColorPalette_ljqkd"] +colors = PackedColorArray(0.9088, 0.87119997, 0.8528, 1, 0.886, 0.839, 0.816, 1, 0.7088, 0.6712, 0.6528, 1, 0.08627451, 0.10980392, 0.18039216, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_8gfdk"] shader = ExtResource("2_mtxp3") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.686, 0.553, 0.373, 1) -shader_parameter/shade_high_new = Color(0.7488, 0.64239997, 0.49839997, 1) -shader_parameter/shade_low_new = Color(0.5488, 0.44239998, 0.2984, 1) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_t3p67"] +shader_parameter/color_count = 4 +shader_parameter/key_colors = PackedInt32Array(160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.4256, 0.31599998, 0.4008, 0.282, 0.145, 0.251, 0.2256, 0.116, 0.20079999, 0.21176471, 0.2627451, 0.3372549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +[sub_resource type="ColorPalette" id="ColorPalette_cp3vn"] +colors = PackedColorArray(0.4256, 0.31599998, 0.4008, 1, 0.282, 0.145, 0.251, 1, 0.2256, 0.116, 0.20079999, 1, 0.21176471, 0.2627451, 0.3372549, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_4m76u"] shader = ExtResource("2_mtxp3") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.847, 0.651, 0.514, 1) -shader_parameter/shade_high_new = Color(0.8776, 0.72080004, 0.6112, 1) -shader_parameter/shade_low_new = Color(0.6776, 0.52080005, 0.41120002, 1) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_5ajtr"] +shader_parameter/color_count = 4 +shader_parameter/key_colors = PackedInt32Array(160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.94640005, 0.8592, 0.72080004, 0.933, 0.824, 0.651, 0.74640006, 0.6592, 0.52080005, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +[sub_resource type="ColorPalette" id="ColorPalette_a122a"] +colors = PackedColorArray(0.94640005, 0.8592, 0.72080004, 1, 0.933, 0.824, 0.651, 1, 0.74640006, 0.6592, 0.52080005, 1, 0.08627451, 0.10980392, 0.18039216, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_hrt2p"] shader = ExtResource("2_mtxp3") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.388, 0.176, 0.282, 1) -shader_parameter/shade_high_new = Color(0.5104, 0.3408, 0.4256, 1) -shader_parameter/shade_low_new = Color(0.3104, 0.1408, 0.2256, 1) +shader_parameter/color_count = 4 +shader_parameter/key_colors = PackedInt32Array(160, 255, 160, 0, 255, 0, 0, 160, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0.6768, 0.5856, 0.45999998, 0.596, 0.482, 0.325, 0.47680002, 0.3856, 0.26, 0.08627451, 0.10980392, 0.18039216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +[sub_resource type="ColorPalette" id="ColorPalette_mtxp3"] +colors = PackedColorArray(0.6768, 0.5856, 0.45999998, 1, 0.596, 0.482, 0.325, 1, 0.47680002, 0.3856, 0.26, 1, 0.08627451, 0.10980392, 0.18039216, 1) [node name="SkinTonesTest" type="Node2D" unique_id=286988060] @@ -124,7 +127,7 @@ y_sort_enabled = true editor_description = "This node has a material with a shader applied. The shader allows to remap 3 key colors, which are shades of green, to any color." -material = SubResource("ShaderMaterial_a122a") +material = SubResource("ShaderMaterial_vn1co") position = Vector2(311, 205) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -133,14 +136,14 @@ autoplay = "idle" [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D" unique_id=198302488 node_paths=PackedStringArray("node_to_recolor")] editor_description = "This behavior node adds a bit of logic to the shader: -It can derive the high and low colors automatically. +It knows a list of skin, hair and body colors. It provides a button to pick them randomly. -And it knows a list of skin colors. It provides a button to pick a skin color randomly." +It converts the key colors and new colors palettes to shader parameters." script = ExtResource("7_jhyvc") -shader_material = SubResource("ShaderMaterial_a122a") +shader_material = SubResource("ShaderMaterial_vn1co") node_to_recolor = NodePath("..") -high_color = Color(0.91999996, 0.91999996, 0.2, 1) -low_color = Color(0.71999997, 0.71999997, 0, 1) +key_colors_palette = SubResource("ColorPalette_vn1co") +new_colors_palette = SubResource("ColorPalette_t3p67") metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomFrameSpriteBehavior" type="Node2D" parent="OnTheGround/AnimatedSprite2D" unique_id=1355048455 node_paths=PackedStringArray("sprite")] @@ -150,7 +153,7 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D2" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1813794485] -material = SubResource("ShaderMaterial_cp3vn") +material = SubResource("ShaderMaterial_mtxp3") position = Vector2(318, 137) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -158,11 +161,10 @@ autoplay = "idle" [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D2" unique_id=46950788 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") -shader_material = SubResource("ShaderMaterial_cp3vn") +shader_material = SubResource("ShaderMaterial_mtxp3") node_to_recolor = NodePath("..") -medium_color = Color(0.882, 0.702, 0.741, 1) -high_color = Color(0.9056, 0.7616, 0.7928, 1) -low_color = Color(0.7056, 0.5616, 0.5928, 1) +key_colors_palette = SubResource("ColorPalette_vn1co") +new_colors_palette = SubResource("ColorPalette_ljqkd") metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomFrameSpriteBehavior" type="Node2D" parent="OnTheGround/AnimatedSprite2D2" unique_id=1241605064 node_paths=PackedStringArray("sprite")] @@ -172,7 +174,7 @@ sprite = NodePath("..") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D3" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1927981161] -material = SubResource("ShaderMaterial_ljqkd") +material = SubResource("ShaderMaterial_8gfdk") position = Vector2(371, 147) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -182,11 +184,10 @@ flip_h = true [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D3" unique_id=964092022 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") -shader_material = SubResource("ShaderMaterial_ljqkd") +shader_material = SubResource("ShaderMaterial_8gfdk") node_to_recolor = NodePath("..") -medium_color = Color(0.686, 0.553, 0.373, 1) -high_color = Color(0.7488, 0.64239997, 0.49839997, 1) -low_color = Color(0.5488, 0.44239998, 0.2984, 1) +key_colors_palette = SubResource("ColorPalette_vn1co") +new_colors_palette = SubResource("ColorPalette_cp3vn") metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomFrameSpriteBehavior" type="Node2D" parent="OnTheGround/AnimatedSprite2D3" unique_id=1742149834 node_paths=PackedStringArray("sprite")] @@ -196,7 +197,7 @@ sprite = NodePath("../../AnimatedSprite2D2") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D4" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1731923129] -material = SubResource("ShaderMaterial_t3p67") +material = SubResource("ShaderMaterial_4m76u") position = Vector2(390, 176) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -206,11 +207,10 @@ flip_h = true [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D4" unique_id=1030463016 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") -shader_material = SubResource("ShaderMaterial_t3p67") +shader_material = SubResource("ShaderMaterial_4m76u") node_to_recolor = NodePath("..") -medium_color = Color(0.847, 0.651, 0.514, 1) -high_color = Color(0.8776, 0.72080004, 0.6112, 1) -low_color = Color(0.6776, 0.52080005, 0.41120002, 1) +key_colors_palette = SubResource("ColorPalette_vn1co") +new_colors_palette = SubResource("ColorPalette_a122a") metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomFrameSpriteBehavior" type="Node2D" parent="OnTheGround/AnimatedSprite2D4" unique_id=434595517 node_paths=PackedStringArray("sprite")] @@ -220,7 +220,7 @@ sprite = NodePath("../../AnimatedSprite2D2") metadata/_custom_type_script = "uid://cms2wqtbxjl1h" [node name="AnimatedSprite2D5" type="AnimatedSprite2D" parent="OnTheGround" unique_id=447592433] -material = SubResource("ShaderMaterial_5ajtr") +material = SubResource("ShaderMaterial_hrt2p") position = Vector2(268, 149) sprite_frames = SubResource("SpriteFrames_5p6wf") animation = &"idle" @@ -229,11 +229,10 @@ frame = 4 [node name="CelShadingRecolor" type="Node" parent="OnTheGround/AnimatedSprite2D5" unique_id=399976614 node_paths=PackedStringArray("node_to_recolor")] script = ExtResource("7_jhyvc") -shader_material = SubResource("ShaderMaterial_5ajtr") +shader_material = SubResource("ShaderMaterial_hrt2p") node_to_recolor = NodePath("..") -medium_color = Color(0.388, 0.176, 0.282, 1) -high_color = Color(0.5104, 0.3408, 0.4256, 1) -low_color = Color(0.3104, 0.1408, 0.2256, 1) +key_colors_palette = SubResource("ColorPalette_vn1co") +new_colors_palette = SubResource("ColorPalette_mtxp3") metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomFrameSpriteBehavior" type="Node2D" parent="OnTheGround/AnimatedSprite2D5" unique_id=174050375 node_paths=PackedStringArray("sprite")] diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png index d7bdba233a..c458f38e6d 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e591ceb39a1e86420db16c6f3e36e2d1b2b27e24651112d08e635c72e2b2773 -size 1175 +oid sha256:ac0b0fb2afccceb26b3404c622c78b82416fb3ebc636319fe605b3ea7902ab49 +size 1171 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png index 835aa1a58a..d57cfba070 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46da7a0db8d28eb8d979f429115c43ca3fd1ac9a7335165ec5ebbb6a1b08f23c -size 1358 +oid sha256:805aec782b6f89c1c84a8855fd762ab1fed42772d6bb0e6f54d90d50155a3717 +size 1321 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png index f5d73be284..56f44cf849 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1922adb4c157af31db458d33576d1c23f9b8332debe84c70dd49aebba9605e12 -size 1482 +oid sha256:8916620918ff3a3aac0fc16f7cc7ed94dd8f79111a35998de0c2ce3fe4d2d48a +size 1222 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png index 8e811b1097..8c28abf105 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2be9c87a90d810110bb5fb0769c252545dd2c82921492ab6c379b43a4359d776 -size 1189 +oid sha256:620619baf6342265b1c440568861e3a66177b71074304971ff6bb2bec8c889f5 +size 1100 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png index b0018e956c..7ad9e87322 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f64d386ec4eb239c19a52f850a2bf8b867f3980abbbbfe4678a36c207afa920a +oid sha256:8f64fd8964331a5c3572dbfaeb64871208d2bcc4c41edea7bda9ba23ada38c74 size 1137 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png index 5702155633..a423405f59 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0399f1c20b71d5662f27aee7909bcf551de180acc45c6de304de892311e3e3c -size 750 +oid sha256:1f8444ef90c1e300f6c75a8d1038eac265a95095df177f22049eea736048f944 +size 731 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png index d52da3a8e6..24769b873f 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22967ef649cddc5ed131d757e11a4cf2f8e672fc2b00eeb3c2485885382141c4 -size 1565 +oid sha256:78841522c2d9c8c39cf6ecfad9f1c6af1896f1193769c62fb83d28b8ecbc1852 +size 1550 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png index 2de5a4beb0..6acafd8db8 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:105f5ac2e0630019214f9531e9b959928cfe1292d8eaa5e0108f6c95e98bb6cd -size 1573 +oid sha256:0071ded1baea5b053e20c9395ce87aa1c794aeff8d93db0858e0ffb79fd16f6d +size 1582 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png index 7de36e1747..b544d8ca00 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a20ee579cefd5fec1211dd2fd1532e3863163f5fceb3994611428b8f1c1c7cd7 -size 1054 +oid sha256:3cdc65407c3abff1e8e02f5a5f8bc6e524810a51096f162d47c98686a1dce62f +size 1031 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png index 87600979d3..33d3bc5809 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb3f7c644212b5eb1e8ffa1a2449eb129a6c5ae5b0d737ee1a1311110a2bb67c -size 1109 +oid sha256:04b1e44291f21fe760956d3fd38fa2aee4ce7c4ed64ab6566aa28e50c91664de +size 1081 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png index 810a6947ea..edaa41af04 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5365bc4f356bf96a1dc8acbd0e95641da69862ab799bac8d5870fbc8c77687bc -size 1161 +oid sha256:e8d1488a92e5b2d5a241dd725dcf0b587ed7568dfa00bbb41abb0ca5c32613ff +size 1164 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png index 5907263fee..96887b79a9 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6be5728cc3de2fb1fb66e3b6a2b72b390062005088d0ed6787f7985b5133444c -size 1346 +oid sha256:79aa718a19c6351b0327508483db11a3d73a003363d95f236255ac3f403115e5 +size 1331 diff --git a/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png index 4da6491d99..af10bc2d73 100644 --- a/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad8c5be7414313453d85cef7876c9f572ae768223995cfcd5e44fc942e8a2948 -size 1369 +oid sha256:946f6dbb915c17b0ecce384b7f38e3694d1747460ebb3428773de61b1d875b2d +size 1312 diff --git a/scenes/game_elements/characters/npcs/components/townie.aseprite b/scenes/game_elements/characters/npcs/components/townie.aseprite index c7ef3484d3..689072d5bd 100644 --- a/scenes/game_elements/characters/npcs/components/townie.aseprite +++ b/scenes/game_elements/characters/npcs/components/townie.aseprite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4149fe91d4b0b3ef8c5abb68d90ae62f524151166782dc4b50f0aa06d56e8c0f -size 20837 +oid sha256:88280a2c7509689f33f47ef0684736a0c6f7e34868d8806ad4d5fa86c9707132 +size 20670 diff --git a/scenes/game_elements/characters/npcs/components/townie_keys_palette.tres b/scenes/game_elements/characters/npcs/components/townie_keys_palette.tres new file mode 100644 index 0000000000..742872c929 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie_keys_palette.tres @@ -0,0 +1,4 @@ +[gd_resource type="ColorPalette" format=3 uid="uid://bt0d8ui0rahnd"] + +[resource] +colors = PackedColorArray(1, 1, 0.627451, 1, 1, 1, 0, 1, 0.627451, 0.627451, 0, 1, 0.18039216, 0.18039216, 0, 1, 0.7764706, 0.5058824, 0.23137255, 1, 0.6862745, 0.3647059, 0.13725491, 1, 0.48235294, 0.23921569, 0.07058824, 1, 0.18039216, 0, 0, 1, 0.627451, 1, 0.627451, 1, 0, 1, 0, 1, 0, 0.627451, 0, 1, 0, 0.18039216, 0, 1) diff --git a/scenes/game_elements/characters/npcs/townie.tscn b/scenes/game_elements/characters/npcs/townie.tscn index 3edb4c1796..b5427c5496 100644 --- a/scenes/game_elements/characters/npcs/townie.tscn +++ b/scenes/game_elements/characters/npcs/townie.tscn @@ -26,12 +26,9 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_byt3c"] resource_local_to_scene = true shader = ExtResource("3_byt3c") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) -shader_parameter/shade_medium_new = Color(0.89, 0.89, 0, 1) -shader_parameter/shade_high_new = Color(0.91, 0.91, 0.2, 1) -shader_parameter/shade_low_new = Color(0.71, 0.71, 0, 1) +shader_parameter/color_count = 0 +shader_parameter/key_colors = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qs15o"] @@ -124,6 +121,4 @@ metadata/_custom_type_script = "uid://dy68p7gf07pi3" [node name="CelShadingRecolor" type="Node" parent="." unique_id=1327679537] script = ExtResource("2_nj51j") shader_material = SubResource("ShaderMaterial_byt3c") -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" diff --git a/scenes/game_elements/components/cel_shading_recolor.gd b/scenes/game_elements/components/cel_shading_recolor.gd index 6ff129b6fc..812d0c63c1 100644 --- a/scenes/game_elements/components/cel_shading_recolor.gd +++ b/scenes/game_elements/components/cel_shading_recolor.gd @@ -77,6 +77,45 @@ const SKIN_COLORS: Dictionary[String, Color] = { "pearl": Color(0.949, 0.867, 0.894, 1.0), } +const HAIR_COLORS: Dictionary[String, Color] = { + "blonde": Color(0.93, 0.852, 0.273, 1.0), + "dark blonde": Color(0.831, 0.698, 0.264, 1.0), + "dark blonde 2": Color(0.813, 0.623, 0.198, 1.0), + "medium brown": Color(0.629, 0.406, 0.165, 1.0), + "dark brown": Color(0.466, 0.322, 0.139, 1.0), + "dark brown 2": Color(0.41, 0.241, 0.116, 1.0), + "black": Color(0.133, 0.194, 0.247, 1.0), + "black 2": Color(0.066, 0.064, 0.112, 1.0), + "auburn": Color(0.598, 0.324, 0.279, 1.0), + "red": Color(0.772, 0.325, 0.274, 1.0), + "gray": Color(0.755, 0.812, 0.842, 1.0), + "white": Color(0.898, 0.923, 0.936, 1.0), +} + +const LINE_COLOR := Color(0x161c2eff) +const LINE_COLOR_LIGHT := Color(0x364356ff) + +const CLOTH_COLORS: Dictionary[String, Color] = { + "magnolia": Color(0.805, 0.676, 0.461, 1.0), + "dusty rose": Color(0.662, 0.41, 0.425, 1.0), + "orange": Color(0.809, 0.322, 0.105, 1.0), + "violet": Color(0.437, 0.279, 0.492, 1.0), + "amaranth purple": Color(0.662, 0.109, 0.446, 1.0), + "red": Color(0.773, 0.109, 0.239, 1.0), + "blue": Color(0.177, 0.341, 0.542, 1.0), + "blue velvet": Color(0.024, 0.235, 0.698, 1.0), + "dark grey": Color(0.281, 0.366, 0.453, 1.0), + "brown": Color("af5d23"), + "green": Color(0.399, 0.546, 0.437, 1.0), + "black": Color(0.018, 0.039, 0.023, 1.0), +} + +const SKIN_PALETTE_INDEX := 0 +const HAIR_PALETTE_INDEX := 4 +const CLOTH_PALETTE_INDEX := 8 + +const TOWNIE_KEYS_PALETTE = preload("uid://bt0d8ui0rahnd") + ## The shader material to modify. ## If [member node_to_recolor] has a material of type [ShaderMaterial], that one will be used. ## [b]Note:[/b] This behavior will only work if this @@ -90,28 +129,31 @@ const SKIN_COLORS: Dictionary[String, Color] = { @export var node_to_recolor: CanvasItem: set = _set_node_to_recolor -## Medium or unshaded color of a 3-colors cel-shading palette -## [br][br] -## Defaults to yellow emoji-like color. -@export var medium_color: Color = Color(0.9, 0.9, 0.0, 1.0): - set = _set_medium_color +## The source or "key" colors to change. +@export var key_colors_palette: ColorPalette = TOWNIE_KEYS_PALETTE -## High or lightened color of a 3-colors cel-shading palette -@export var high_color: Color: - set = _set_high_color +## The output or final colors. Each key color in [member key_colors] will map to a color +## of the same index position in this palette. +@export var new_colors_palette: ColorPalette -## Low or darkened color of a 3-colors cel-shading palette -@export var low_color: Color: - set = _set_low_color +## Click this button to update the colors. +@export_tool_button("Update") var update_button: Callable = colorize -## Whether to the high and low colors from the medium color -@export var automatic_shades: bool = true: - set = _set_automatic_shades +## Click this button to pick random skin, hair and cloth colors. +@export_tool_button("Randomize") var randomize_button: Callable = randomize -## Click this button to pick a random color from a list of known skin colors +## 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 +## Click this button to pick a random color from a list of known hair colors. +@export_tool_button("Random Hair Color") +var random_hair_color_button: Callable = set_random_hair_color + +## Click this button to pick a random color from a list of known cloth colors. +@export_tool_button("Random Cloth Color") +var random_cloth_color_button: Callable = set_random_cloth_color + func _ready() -> void: colorize() @@ -125,69 +167,113 @@ func _set_node_to_recolor(new_node_to_recolor: CanvasItem) -> void: colorize() -func _set_medium_color(new_medium_color: Color) -> void: - medium_color = new_medium_color - if automatic_shades: - high_color = medium_color.lightened(0.2) - low_color = medium_color.darkened(0.2) - colorize() +## Apply the colors by setting the shader parameters +func colorize() -> void: + if not new_colors_palette: + new_colors_palette = ColorPalette.new() + if not shader_material: + return + var source: PackedInt32Array + source.resize(768) + var output: PackedVector3Array + output.resize(256) -func _set_high_color(new_high_color: Color) -> void: - high_color = new_high_color - if automatic_shades: - return - colorize() + for i in range(key_colors_palette.colors.size()): + var source_color := key_colors_palette.colors[i] + source[i * 3 + 0] = source_color.r8 + source[i * 3 + 1] = source_color.g8 + source[i * 3 + 2] = source_color.b8 + var color_count := new_colors_palette.colors.size() + for i in range(color_count): + var color := new_colors_palette.colors[i] + output[i] = Vector3(color.r, color.g, color.b) -func _set_low_color(new_low_color: Color) -> void: - low_color = new_low_color - if automatic_shades: - return - colorize() + shader_material.set_shader_parameter("color_count", color_count) + shader_material.set_shader_parameter("key_colors", source) + shader_material.set_shader_parameter("new_colors", output) -func _set_automatic_shades(new_automatic_shades: bool) -> void: - automatic_shades = new_automatic_shades - notify_property_list_changed() - if automatic_shades: - medium_color = medium_color +func _change_colors( + in_colors: PackedColorArray, + colors_data: Dictionary[String, Color], + palette_index: int, + rng: RandomNumberGenerator = null +) -> PackedColorArray: + var out_colors := in_colors.duplicate() + if out_colors.size() < palette_index + 4: + out_colors.resize(palette_index + 4) + var random_int: int = rng.randi() if rng else randi() + var index := random_int % colors_data.size() + var medium_color: Color = colors_data.values()[index] + var high_color := medium_color.lightened(0.2) + var low_color := medium_color.darkened(0.2) -func _validate_property(property: Dictionary) -> void: - match property["name"]: - "high_color", "low_color": - if automatic_shades: - property.usage |= PROPERTY_USAGE_READ_ONLY + out_colors.set(palette_index + 0, high_color) + out_colors.set(palette_index + 1, medium_color) + out_colors.set(palette_index + 2, low_color) + if low_color.v < 0.3: + out_colors.set(palette_index + 3, LINE_COLOR_LIGHT) #medium_color.lightened(0.7)) + else: + out_colors.set(palette_index + 3, LINE_COLOR) -## Apply the colors by setting the shader parameters -func colorize() -> void: - if not shader_material: - return + return out_colors - shader_material.set_shader_parameter("shade_medium_new", medium_color) - shader_material.set_shader_parameter("shade_high_new", high_color) - shader_material.set_shader_parameter("shade_low_new", low_color) + +## Pick random colors for skin, hair and cloth. +func randomize(rng: RandomNumberGenerator = null) -> void: + if not new_colors_palette: + new_colors_palette = ColorPalette.new() + var skin_colors := _change_colors( + new_colors_palette.colors, SKIN_COLORS, SKIN_PALETTE_INDEX, rng + ) + var skin_hair_colors := _change_colors(skin_colors, HAIR_COLORS, HAIR_PALETTE_INDEX, rng) + var skin_hair_cloth_colors := _change_colors( + skin_hair_colors, CLOTH_COLORS, CLOTH_PALETTE_INDEX, rng + ) + new_colors_palette.set_colors(skin_hair_cloth_colors) + colorize() -## Pick a random color from [constant SKIN_COLORS] and automatically set all shades from it. +## Pick a random color from [constant SKIN_COLORS] and automatically set high/low shades from it. func set_random_skin_color(rng: RandomNumberGenerator = null) -> void: - automatic_shades = true - var random_int: int = rng.randi() if rng else randi() - var index := random_int % SKIN_COLORS.size() - medium_color = SKIN_COLORS.values()[index] + var new_colors := _change_colors( + new_colors_palette.colors, SKIN_COLORS, SKIN_PALETTE_INDEX, rng + ) + new_colors_palette.set_colors(new_colors) + colorize() + + +## Pick a random color from [constant HAIR_COLORS] and automatically set high/low shades from it. +func set_random_hair_color(rng: RandomNumberGenerator = null) -> void: + var new_colors := _change_colors( + new_colors_palette.colors, HAIR_COLORS, HAIR_PALETTE_INDEX, rng + ) + new_colors_palette.set_colors(new_colors) + colorize() + + +## Pick a random color from [constant CLOTH_COLORS] and automatically set high/low shades from it. +func set_random_cloth_color(rng: RandomNumberGenerator = null) -> void: + var new_colors := _change_colors( + new_colors_palette.colors, CLOTH_COLORS, CLOTH_PALETTE_INDEX, rng + ) + new_colors_palette.set_colors(new_colors) + colorize() func _get_configuration_warnings() -> PackedStringArray: var warnings: PackedStringArray if not shader_material: - warnings.append("The Skin Node material must be a ShaderMaterial.") + warnings.append("The shader material must be set.") return warnings if not shader_material.shader: - warnings.append("The Skin Node material must have a shader.") + warnings.append("The shader material must have a shader.") return warnings - for uniform_name: String in ["shade_medium_new", "shade_high_new", "shade_low_new"]: + for uniform_name: String in ["color_count", "key_colors", "new_colors"]: if shader_material.get_shader_parameter(uniform_name) == null: - warnings.append("The Node To Recolor material must have an uniform %s." % uniform_name) + warnings.append("The material must have an uniform %s." % uniform_name) return warnings diff --git a/scenes/game_elements/components/cel_shading_recolor.gdshader b/scenes/game_elements/components/cel_shading_recolor.gdshader index d5f9983d91..625073c734 100644 --- a/scenes/game_elements/components/cel_shading_recolor.gdshader +++ b/scenes/game_elements/components/cel_shading_recolor.gdshader @@ -1,64 +1,26 @@ /** * Cel shading replacer * - * This shader can replace 3 shades from a sprite that uses the cel-shading technique. - * It is based on this more generic shader: [link]https://github.com/KoBeWi/Godot-Palette-Swap-Shader/blob/master/addons/PaletteSwapShader/SimplePaletteSwap.gdshader[/link] + * This shader replaces each color that appears in the key_colors palette, + * with the one of same index in the new_colors palette. * + * It is copied from: [link]https://github.com/KoBeWi/Godot-Palette-Swap-Shader/blob/master/addons/PaletteSwapShader/SimplePaletteSwap.gdshader[/link] * * SPDX-FileCopyrightText: The Threadbare Authors * SPDX-License-Identifier: MPL-2.0 */ shader_type canvas_item; -// Note: key colors are intentionally vec3 because they don't need alpha channel. -// This is unlike the new colors which are of type vec4. -group_uniforms KeyColors; - -/** - * Key color to replace for medium shade. Defaults to full green. - * [br][br] - * This is set as an ivec3 with values from 0 to 255 for accuracy. - */ -uniform ivec3 shade_medium_key = ivec3(0, 255, 0); - -/** - * Key color to replace for high shade. Defaults to (5/8, 1, 5/8) or RGB(160, 255, 160). - */ -uniform ivec3 shade_high_key = ivec3(160, 255, 160); - -/** - * Key color to replace for low shade. Defaults to (0, 5/8, 0) or RGB(0, 160, 0). - */ -uniform ivec3 shade_low_key = ivec3(0, 160, 0); - -group_uniforms NewColors; - -/** - * The new medium or unshaded color. - * [br][br] - * Defaults to yellow emoji-like color. - */ -uniform vec4 shade_medium_new : source_color = vec4(0.89, 0.89, 0, 1); - -/** - * The new high or lightened color. - */ -uniform vec4 shade_high_new : source_color = vec4(0.91, 0.91, 0.2, 1); - -/** - * The new low or darkened color. - */ -uniform vec4 shade_low_new : source_color = vec4(0.71, 0.71, 0, 1); +uniform int color_count; +uniform ivec3[256] key_colors; +uniform vec3[256] new_colors; void fragment() { ivec3 colori = ivec3(round(COLOR.rgb * 255.0)); - if (colori == shade_medium_key) { - COLOR = shade_medium_new; - } - else if (colori == shade_high_key) { - COLOR = shade_high_new; - } - else if (colori == shade_low_key) { - COLOR = shade_low_new; + for (int i = 0; i < color_count; i++) { + if (colori == key_colors[i]) { + COLOR.rgb = new_colors[i]; + break; + } } } diff --git a/scenes/game_elements/components/cel_shading_recolor_material.tres b/scenes/game_elements/components/cel_shading_recolor_material.tres index 9ab67d34b7..888cd23057 100644 --- a/scenes/game_elements/components/cel_shading_recolor_material.tres +++ b/scenes/game_elements/components/cel_shading_recolor_material.tres @@ -4,6 +4,6 @@ [resource] shader = ExtResource("1_n501e") -shader_parameter/shade_medium_key = Vector3i(0, 255, 0) -shader_parameter/shade_high_key = Vector3i(160, 255, 160) -shader_parameter/shade_low_key = Vector3i(0, 160, 0) +shader_parameter/color_count = 0 +shader_parameter/key_colors = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/new_colors = PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)