From 7b4d51979174c9019ea7aedec4ca0a3bc5213e8b Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Sun, 5 Jan 2025 14:53:19 -0500 Subject: [PATCH] oi, go right! --- maps/hills_scholar.tscn | 81 +++++++++++++++++++++---------------- maps/hills_speccy_detect.gd | 15 +++++++ maps/test_room.tscn | 2 +- objects/npc/speccy.gd | 9 +++-- objects/npc/speccy.tscn | 37 ++++++++--------- 5 files changed, 87 insertions(+), 57 deletions(-) create mode 100644 maps/hills_speccy_detect.gd diff --git a/maps/hills_scholar.tscn b/maps/hills_scholar.tscn index e5b6bb2..51a6a63 100644 --- a/maps/hills_scholar.tscn +++ b/maps/hills_scholar.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=33 format=2] +[gd_scene load_steps=35 format=2] [ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=1] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] @@ -32,6 +32,8 @@ [ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=30] [ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=31] [ext_resource path="res://graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] +[ext_resource path="res://maps/hills_speccy_detect.gd" type="Script" id=34] [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 @@ -161,80 +163,80 @@ texture = ExtResource( 32 ) [node name="Collectibles" type="Node2D" parent="."] -[node name="Star" parent="Collectibles" instance=ExtResource( 4 )] +[node name="Star" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 4 )] position = Vector2( 0, 136 ) [node name="Star2" parent="Collectibles" instance=ExtResource( 4 )] position = Vector2( 112, 120 ) color = 1 -[node name="Key" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 40, 168 ) -[node name="Key2" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key2" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 64, 168 ) -[node name="Key3" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key3" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 88, 152 ) -[node name="Key5" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key5" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 232, 112 ) -[node name="Key6" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key6" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 48, 80 ) -[node name="Key7" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key7" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 72, 80 ) -[node name="Key8" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key8" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 96, 80 ) -[node name="Key9" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key9" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 152, 48 ) -[node name="Key10" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key10" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 120, 32 ) -[node name="Key11" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key11" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 184, 72 ) -[node name="Key14" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key14" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 120, 72 ) -[node name="Key13" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key13" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 192, 48 ) -[node name="Key4" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key4" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 112, 152 ) -[node name="Key12" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key12" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 160, 168 ) -[node name="Key15" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key15" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 288, 120 ) -[node name="Key16" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key16" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 248, 120 ) -[node name="Key20" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key20" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 360, 104 ) -[node name="Key22" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key22" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 264, 72 ) -[node name="Key24" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key24" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 296, 72 ) -[node name="Key25" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key25" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 288, 48 ) [node name="Key26" parent="Collectibles" instance=ExtResource( 5 )] position = Vector2( 488, 56 ) -[node name="Key27" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key27" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 448, 64 ) -[node name="Key33" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key33" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 432, 152 ) [node name="Key34" parent="Collectibles" instance=ExtResource( 5 )] @@ -288,13 +290,13 @@ position = Vector2( 648, 168 ) [node name="Key50" parent="Collectibles" instance=ExtResource( 5 )] position = Vector2( 528, 56 ) -[node name="Key28" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key28" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 408, 64 ) [node name="Key23" parent="Collectibles" instance=ExtResource( 5 )] position = Vector2( 616, 168 ) -[node name="Key21" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key21" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 320, 120 ) [node name="Key29" parent="Collectibles" instance=ExtResource( 5 )] @@ -303,29 +305,29 @@ position = Vector2( 200, 168 ) [node name="Key30" parent="Collectibles" instance=ExtResource( 5 )] position = Vector2( 232, 168 ) -[node name="Key31" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key31" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 272, 168 ) -[node name="Key32" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key32" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] position = Vector2( 304, 168 ) -[node name="Key18" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key18" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 152, 112 ) -[node name="Key19" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key19" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 216, 80 ) -[node name="Key17" parent="Collectibles" instance=ExtResource( 5 )] +[node name="Key17" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] position = Vector2( 200, 112 ) -[node name="Shard" parent="Collectibles" instance=ExtResource( 17 )] +[node name="Shard" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 17 )] position = Vector2( 32, 32 ) [node name="Shard4" parent="Collectibles" instance=ExtResource( 17 )] position = Vector2( 648, 80 ) number = 2 -[node name="Shard2" parent="Collectibles" instance=ExtResource( 17 )] +[node name="Shard2" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 17 )] position = Vector2( 456, 24 ) number = 1 @@ -333,7 +335,7 @@ number = 1 position = Vector2( 688, 80 ) number = 3 -[node name="Star3" parent="Collectibles" instance=ExtResource( 4 )] +[node name="Star3" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 4 )] position = Vector2( 416, 104 ) color = 3 @@ -347,7 +349,7 @@ position = Vector2( 664, 80 ) position = Vector2( 760, 112 ) color = 4 -[node name="Star5" parent="Collectibles" instance=ExtResource( 4 )] +[node name="Star5" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 4 )] position = Vector2( 224, 48 ) color = 2 @@ -450,3 +452,12 @@ format = 1 [node name="Exit" parent="." instance=ExtResource( 20 )] position = Vector2( 757, 164 ) cost = 25 + +[node name="SpeccyDetect" type="Node2D" parent="."] +position = Vector2( 224, 176 ) +script = ExtResource( 34 ) + +[node name="Speccy" parent="SpeccyDetect" instance=ExtResource( 33 )] +position = Vector2( -8, 0 ) +flip = true +message = "oi_go_right" diff --git a/maps/hills_speccy_detect.gd b/maps/hills_speccy_detect.gd new file mode 100644 index 0000000..5d89a23 --- /dev/null +++ b/maps/hills_speccy_detect.gd @@ -0,0 +1,15 @@ +extends Node2D + + +var try_for_speccy: bool = true + +onready var skippers: int = get_tree().get_nodes_in_group("speccy_skip").size() + + +func _physics_process(delta: float) -> void: + if try_for_speccy: + if get_tree().get_nodes_in_group("speccy_appear").empty(): + try_for_speccy = false + $Speccy.appear() + elif get_tree().get_nodes_in_group("speccy_skip").size() < skippers: + try_for_speccy = false diff --git a/maps/test_room.tscn b/maps/test_room.tscn index c01e40d..cb1375e 100644 --- a/maps/test_room.tscn +++ b/maps/test_room.tscn @@ -205,6 +205,6 @@ position = Vector2( 124, 96 ) [node name="speccy" parent="." groups=["speccy"] instance=ExtResource( 2 )] position = Vector2( 82, 72 ) -message = "go_get_em" +message = "" [editable path="RollingFiend"] diff --git a/objects/npc/speccy.gd b/objects/npc/speccy.gd index 7bb3cef..6326d92 100644 --- a/objects/npc/speccy.gd +++ b/objects/npc/speccy.gd @@ -3,6 +3,7 @@ extends Node2D export(String, DIR) var messages_dir: String setget _set_messages_dir +export var flip: bool = false setget _set_flip #export var message: String setget _set_message @@ -35,22 +36,24 @@ func _set_message(value: String) -> void: $Message.texture = load("%s/%s.png" % [messages_dir, message]) +func _set_flip(value: bool) -> void: + flip = value + $Flipper.scale.x = -1.0 if flip else 1.0 + + func _get_property_list() -> Array: var files: String = "" var dir: Directory = Directory.new() - print(messages_dir) if dir.open(messages_dir) == OK: dir.list_dir_begin(true, true) var file_name: String = dir.get_next() while file_name != "": if not dir.current_is_dir() and file_name.ends_with(".png"): - print("found file: ", file_name) files += "%s," % file_name.trim_suffix(".png") file_name = dir.get_next() files = files.trim_suffix(",") else: push_error("Failed to open dir: %s" % messages_dir) - print(files) return [ { name = "message", diff --git a/objects/npc/speccy.tscn b/objects/npc/speccy.tscn index 882c443..2ac81b1 100644 --- a/objects/npc/speccy.tscn +++ b/objects/npc/speccy.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=1] [ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=2] [ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=3] -[ext_resource path="res://graphics/hud/speccy/over_here.png" type="Texture" id=4] [ext_resource path="res://graphics/npc/speccy_talk.png" type="Texture" id=5] [ext_resource path="res://graphics/npc/speccy_cool.png" type="Texture" id=6] [ext_resource path="res://objects/npc/speccy.gd" type="Script" id=7] @@ -16,7 +15,7 @@ shader_param/gradient = ExtResource( 3 ) [sub_resource type="Animation" id=1] length = 0.001 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:scale") +tracks/0/path = NodePath("Flipper/Sprite:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -28,7 +27,7 @@ tracks/0/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite/Overlay:modulate") +tracks/1/path = NodePath("Flipper/Sprite/Overlay:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -37,7 +36,7 @@ tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, -"values": [ Color( 1, 1, 1, 1 ) ] +"values": [ Color( 1, 1, 1, 0 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Message:scale") @@ -52,7 +51,7 @@ tracks/2/keys = { "values": [ Vector2( 1, 1 ) ] } tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:hframes") +tracks/3/path = NodePath("Flipper/Sprite:hframes") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -64,7 +63,7 @@ tracks/3/keys = { "values": [ 1 ] } tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:texture") +tracks/4/path = NodePath("Flipper/Sprite:texture") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false @@ -97,7 +96,7 @@ resource_name = "fun" length = 3.0 step = 0.05 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:scale") +tracks/0/path = NodePath("Flipper/Sprite:scale") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/imported = false @@ -109,7 +108,7 @@ tracks/0/keys = { "values": [ Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 1.25, 0.833 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1.25, 0.833 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ) ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite/Overlay:modulate") +tracks/1/path = NodePath("Flipper/Sprite/Overlay:modulate") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/imported = false @@ -133,7 +132,7 @@ tracks/2/keys = { "values": [ Vector2( 0, 0 ), Vector2( 1e-05, 1e-05 ), Vector2( 1.0418, 1 ), Vector2( 1, 0.96 ), Vector2( 1, 0.96 ), Vector2( 1.0418, 1 ), Vector2( 1e-05, 1e-05 ) ] } tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:texture") +tracks/3/path = NodePath("Flipper/Sprite:texture") tracks/3/interp = 2 tracks/3/loop_wrap = true tracks/3/imported = false @@ -145,7 +144,7 @@ tracks/3/keys = { "values": [ ExtResource( 1 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 6 ) ] } tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:hframes") +tracks/4/path = NodePath("Flipper/Sprite:hframes") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false @@ -157,7 +156,7 @@ tracks/4/keys = { "values": [ 1, 4 ] } tracks/5/type = "value" -tracks/5/path = NodePath("Sprite:frame") +tracks/5/path = NodePath("Flipper/Sprite:frame") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false @@ -169,7 +168,7 @@ tracks/5/keys = { "values": [ 0, 0, 1, 2, 3 ] } tracks/6/type = "value" -tracks/6/path = NodePath("Sprite/Overlay:texture") +tracks/6/path = NodePath("Flipper/Sprite/Overlay:texture") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false @@ -193,17 +192,20 @@ tracks/7/keys = { "values": [ Vector2( 1, 1 ) ] } -[node name="speccy" type="Node2D"] +[node name="Speccy" type="Node2D"] script = ExtResource( 7 ) messages_dir = "res://graphics/hud/speccy" -message = "over_here" +message = "" -[node name="Sprite" type="Sprite" parent="."] +[node name="Flipper" type="Node2D" parent="."] + +[node name="Sprite" type="Sprite" parent="Flipper"] position = Vector2( -1, -12 ) texture = ExtResource( 1 ) offset = Vector2( -1, 0 ) -[node name="Overlay" type="Sprite" parent="Sprite"] +[node name="Overlay" type="Sprite" parent="Flipper/Sprite"] +modulate = Color( 1, 1, 1, 0 ) material = SubResource( 3 ) texture = ExtResource( 1 ) offset = Vector2( 1, 0 ) @@ -215,4 +217,3 @@ anims/fun = SubResource( 2 ) [node name="Message" type="Sprite" parent="."] position = Vector2( 0, -24 ) -texture = ExtResource( 4 )