From 4343bc1bf5ef94c325bd81bcf121380edf390cf6 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Sun, 29 Jun 2025 16:41:14 -0600 Subject: [PATCH] More debug menu functionality --- assets/music/cetology2.wav | 3 + assets/music/cetology2.wav.import | 24 ++ assets/music/track_data/alice.tres | 10 + assets/music/track_data/bonk.tres | 10 + assets/music/track_data/bonk_jr.tres | 10 + assets/music/track_data/catbird.tres | 10 + assets/music/track_data/cetology.tres | 10 + assets/music/track_data/coyote.tres | 10 + assets/music/track_data/do_better.tres | 10 + assets/music/track_data/dr_hurt.tres | 10 + assets/music/track_data/get_worse.tres | 10 + assets/music/track_data/gfolf.tres | 10 + assets/music/track_data/palace.tres | 10 + .../mp3_player/retro_selector_list.gd | 2 +- src/equipment/sprayable.gd | 2 +- src/ui/menus/debug_menu/append_target.gd | 37 +++ src/ui/menus/debug_menu/append_target.gd.uid | 1 + src/ui/menus/debug_menu/debug_menu.gd | 75 ++++++ src/ui/menus/debug_menu/debug_menu.tscn | 248 +++++++++++++++++- src/ui/menus/debug_menu/drag_n_drop_track.gd | 110 ++++++++ .../menus/debug_menu/drag_n_drop_track.gd.uid | 1 + .../menus/debug_menu/drag_n_drop_track.tscn | 59 +++++ src/world/world_manager.tres | 72 ++--- 23 files changed, 684 insertions(+), 60 deletions(-) create mode 100644 assets/music/cetology2.wav create mode 100644 assets/music/cetology2.wav.import create mode 100644 assets/music/track_data/alice.tres create mode 100644 assets/music/track_data/bonk.tres create mode 100644 assets/music/track_data/bonk_jr.tres create mode 100644 assets/music/track_data/catbird.tres create mode 100644 assets/music/track_data/cetology.tres create mode 100644 assets/music/track_data/coyote.tres create mode 100644 assets/music/track_data/do_better.tres create mode 100644 assets/music/track_data/dr_hurt.tres create mode 100644 assets/music/track_data/get_worse.tres create mode 100644 assets/music/track_data/gfolf.tres create mode 100644 assets/music/track_data/palace.tres create mode 100644 src/ui/menus/debug_menu/append_target.gd create mode 100644 src/ui/menus/debug_menu/append_target.gd.uid create mode 100644 src/ui/menus/debug_menu/drag_n_drop_track.gd create mode 100644 src/ui/menus/debug_menu/drag_n_drop_track.gd.uid create mode 100644 src/ui/menus/debug_menu/drag_n_drop_track.tscn diff --git a/assets/music/cetology2.wav b/assets/music/cetology2.wav new file mode 100644 index 0000000..df37d0e --- /dev/null +++ b/assets/music/cetology2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6edd555e23b9421bc1ae139bea31c1f1aab71604f3c24f2bae084034b5bf8bbf +size 22579280 diff --git a/assets/music/cetology2.wav.import b/assets/music/cetology2.wav.import new file mode 100644 index 0000000..4cac149 --- /dev/null +++ b/assets/music/cetology2.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cwsu7di7dqdne" +path="res://.godot/imported/cetology2.wav-4252887f402be140b9f959b2d2328938.sample" + +[deps] + +source_file="res://assets/music/cetology2.wav" +dest_files=["res://.godot/imported/cetology2.wav-4252887f402be140b9f959b2d2328938.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/music/track_data/alice.tres b/assets/music/track_data/alice.tres new file mode 100644 index 0000000..198802c --- /dev/null +++ b/assets/music/track_data/alice.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://0ey80i2mka0l"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_f25hr"] +[ext_resource type="AudioStream" uid="uid://b6wrx5fibaujw" path="res://assets/music/thaw_v1_fast.wav" id="2_qt2lw"] + +[resource] +script = ExtResource("1_f25hr") +title = "alice" +track = ExtResource("2_qt2lw") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/bonk.tres b/assets/music/track_data/bonk.tres new file mode 100644 index 0000000..3800d1b --- /dev/null +++ b/assets/music/track_data/bonk.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://bmd8hqv5cyn6o"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_udwu7"] +[ext_resource type="AudioStream" uid="uid://b1rmpakal8l6j" path="res://assets/music/driving_02.wav" id="2_4vp3e"] + +[resource] +script = ExtResource("1_udwu7") +title = "bonk" +track = ExtResource("2_4vp3e") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/bonk_jr.tres b/assets/music/track_data/bonk_jr.tres new file mode 100644 index 0000000..fe899db --- /dev/null +++ b/assets/music/track_data/bonk_jr.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://b1sy38m266moa"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_eqq4p"] +[ext_resource type="AudioStream" uid="uid://d4qqqrnplej6" path="res://assets/music/driving_01.wav" id="2_k8v1d"] + +[resource] +script = ExtResource("1_eqq4p") +title = "bonk jr" +track = ExtResource("2_k8v1d") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/catbird.tres b/assets/music/track_data/catbird.tres new file mode 100644 index 0000000..1c2846e --- /dev/null +++ b/assets/music/track_data/catbird.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://cgntwy1qba7en"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_k0ufi"] +[ext_resource type="AudioStream" uid="uid://ccqmeqw3moxfd" path="res://assets/music/descending_04.wav" id="2_wro2h"] + +[resource] +script = ExtResource("1_k0ufi") +title = "catbird" +track = ExtResource("2_wro2h") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/cetology.tres b/assets/music/track_data/cetology.tres new file mode 100644 index 0000000..8d01a7d --- /dev/null +++ b/assets/music/track_data/cetology.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://hwfwyaygj8j4"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_56u6t"] +[ext_resource type="AudioStream" uid="uid://cwsu7di7dqdne" path="res://assets/music/cetology2.wav" id="2_jkcsm"] + +[resource] +script = ExtResource("1_56u6t") +title = "cetology" +track = ExtResource("2_jkcsm") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/coyote.tres b/assets/music/track_data/coyote.tres new file mode 100644 index 0000000..eac7952 --- /dev/null +++ b/assets/music/track_data/coyote.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://cbqulm0w0vtvs"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_2cit5"] +[ext_resource type="AudioStream" uid="uid://dgxko5ds8u2lk" path="res://assets/music/desert_01.wav" id="2_t4xhs"] + +[resource] +script = ExtResource("1_2cit5") +title = "coyote" +track = ExtResource("2_t4xhs") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/do_better.tres b/assets/music/track_data/do_better.tres new file mode 100644 index 0000000..6d49f14 --- /dev/null +++ b/assets/music/track_data/do_better.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://k48cvutbrel2"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_ud52d"] +[ext_resource type="AudioStream" uid="uid://p14r7l44dahr" path="res://assets/music/thaw_v2_fast.wav" id="2_jrlna"] + +[resource] +script = ExtResource("1_ud52d") +title = "do better" +track = ExtResource("2_jrlna") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/dr_hurt.tres b/assets/music/track_data/dr_hurt.tres new file mode 100644 index 0000000..c8295ed --- /dev/null +++ b/assets/music/track_data/dr_hurt.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://dr4n7jtfyndkj"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_eej1y"] +[ext_resource type="AudioStream" uid="uid://bp1dv4lv3344w" path="res://assets/music/chorus_01.wav" id="2_m7l3o"] + +[resource] +script = ExtResource("1_eej1y") +title = "dr hurt" +track = ExtResource("2_m7l3o") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/get_worse.tres b/assets/music/track_data/get_worse.tres new file mode 100644 index 0000000..e868815 --- /dev/null +++ b/assets/music/track_data/get_worse.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://ggr3v04p1qbj"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_8jxu3"] +[ext_resource type="AudioStream" uid="uid://bkvjtdlhjfr7n" path="res://assets/music/thaw_v2_slow.wav" id="2_ckjw1"] + +[resource] +script = ExtResource("1_8jxu3") +title = "get worse" +track = ExtResource("2_ckjw1") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/gfolf.tres b/assets/music/track_data/gfolf.tres new file mode 100644 index 0000000..261bfd6 --- /dev/null +++ b/assets/music/track_data/gfolf.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://dj7qkxxgk3qb4"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_x2w67"] +[ext_resource type="AudioStream" uid="uid://dgvknkfvoqk8r" path="res://assets/music/simple_sample_01.wav" id="2_8qaaq"] + +[resource] +script = ExtResource("1_x2w67") +title = "gfolf" +track = ExtResource("2_8qaaq") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/assets/music/track_data/palace.tres b/assets/music/track_data/palace.tres new file mode 100644 index 0000000..75b526f --- /dev/null +++ b/assets/music/track_data/palace.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="MP3Track" load_steps=3 format=3 uid="uid://cpucbgjlokxax"] + +[ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="1_c50lm"] +[ext_resource type="AudioStream" uid="uid://b3ktgjeq6fupj" path="res://assets/music/thaw_v1_slow.wav" id="2_v8hl7"] + +[resource] +script = ExtResource("1_c50lm") +title = "palace" +track = ExtResource("2_v8hl7") +metadata/_custom_type_script = "uid://kwiy3dv1h7q7" diff --git a/src/equipment/mp3_player/retro_selector_list.gd b/src/equipment/mp3_player/retro_selector_list.gd index dcfecd6..e8852bb 100644 --- a/src/equipment/mp3_player/retro_selector_list.gd +++ b/src/equipment/mp3_player/retro_selector_list.gd @@ -45,7 +45,7 @@ func _ready() -> void: rebuild_list() -func _set_selection_idx(value: float) -> void: +func _set_selection_idx(value: int) -> void: selection_idx = wrapi(value, 0, options.size()) _update_scrolling() diff --git a/src/equipment/sprayable.gd b/src/equipment/sprayable.gd index e45af83..d19db43 100644 --- a/src/equipment/sprayable.gd +++ b/src/equipment/sprayable.gd @@ -4,7 +4,7 @@ class_name Sprayable extends StaticBody3D ## Called each frame this node takes a hit. ## ## Derived types should override `_hit()` as a lifecycle method. -func hit(damage: float) -> void: +func hit(_damage: float) -> void: _hit() diff --git a/src/ui/menus/debug_menu/append_target.gd b/src/ui/menus/debug_menu/append_target.gd new file mode 100644 index 0000000..8236944 --- /dev/null +++ b/src/ui/menus/debug_menu/append_target.gd @@ -0,0 +1,37 @@ +extends Panel + +const TRANSITION_TIME := 0.1 + + +func _fade_in() -> void: + create_tween().tween_property(self, "modulate", Color.WHITE, TRANSITION_TIME).set_trans( + Tween.TRANS_CUBIC + ) + + +func _fade_out() -> void: + create_tween().tween_property(self, "modulate", Color.TRANSPARENT, TRANSITION_TIME).set_trans( + Tween.TRANS_CUBIC + ) + + +func _can_drop_data(_at_position: Vector2, data: Variant) -> bool: + if data is MP3Track: + _fade_in() + return true + return false + + +func _drop_data(_at_position: Vector2, data: Variant) -> void: + if not data is MP3Track: + return + # Insert just before this item + @warning_ignore("unsafe_cast") + var new_container := DragNDropTrack.create(data as MP3Track) + add_sibling(new_container) + get_parent().move_child(new_container, get_index()) + _fade_out() + + +func _on_mouse_exited() -> void: + _fade_out() diff --git a/src/ui/menus/debug_menu/append_target.gd.uid b/src/ui/menus/debug_menu/append_target.gd.uid new file mode 100644 index 0000000..9313451 --- /dev/null +++ b/src/ui/menus/debug_menu/append_target.gd.uid @@ -0,0 +1 @@ +uid://cwngje5n14ukr diff --git a/src/ui/menus/debug_menu/debug_menu.gd b/src/ui/menus/debug_menu/debug_menu.gd index 884a2e1..3547fca 100644 --- a/src/ui/menus/debug_menu/debug_menu.gd +++ b/src/ui/menus/debug_menu/debug_menu.gd @@ -1,13 +1,37 @@ extends PanelContainer +var _track_list_dirty := false + @onready var god_mode: CheckButton = %GodMode @onready var collect_grunk_input: SpinBox = %CollectGrunkInput +@onready var tank_size_input: SpinBox = %TankSizeInput + +@onready var mp3_player: CheckButton = %"MP3Player" +@onready var toothbrush: CheckButton = %Toothbrush +@onready var stickers: CheckButton = %Stickers + +@onready var tracks_collected_list: VBoxContainer = %TracksCollectedList +@onready var append_target: Panel = %AppendTarget + func _ready() -> void: # Initialize controls if Player.instance: god_mode.set_pressed_no_signal(Player.instance.godmode) + if World.instance: + if World.instance.manager: + tank_size_input.value = World.instance.manager.grunk_tank_limit + mp3_player.set_pressed_no_signal(World.instance.manager.mp3_player_unlocked) + toothbrush.set_pressed_no_signal(World.instance.manager.toothbrush_unlocked) + stickers.set_pressed_no_signal(World.instance.manager.stickers_unlocked) + + +func _build_track_list() -> void: + tracks_collected_list.remove_child(append_target) + for track: MP3Track in World.instance.manager.mp3_collection: + tracks_collected_list.add_child(DragNDropTrack.create(track)) + tracks_collected_list.add_child(append_target) func kill_player() -> void: @@ -29,3 +53,54 @@ func collect_grunk() -> void: func empty_tank() -> void: World.instance.manager.empty_tank() + + +func set_tank_size() -> void: + @warning_ignore("narrowing_conversion") + World.instance.manager.grunk_tank_limit = tank_size_input.value + + +func set_god_mode(toggled_on: bool) -> void: + Player.instance.godmode = toggled_on + + +func set_mp3_player_unlocked(toggled_on: bool) -> void: + World.instance.manager.mp3_player_unlocked = toggled_on + + +func set_toothbrush_unlocked(toggled_on: bool) -> void: + World.instance.manager.toothbrush_unlocked = toggled_on + + +func set_stickers_unlocked(toggled_on: bool) -> void: + World.instance.manager.stickers_unlocked = toggled_on + + +func unlock_next_milestone() -> void: + var milestone := World.instance.manager.next_milestone() + World.instance.manager.grunk_vault = World.instance.manager.next_milestone_amount() + if milestone: + World.instance.manager.milestone_reached.emit(milestone) + + +func _on_track_list_changed() -> void: + if not is_node_ready(): + return # This will get called several times while initializing the scene tree + _track_list_dirty = true + _update_track_list.call_deferred() + + +func _update_track_list() -> void: + # Debounce update calls + if not _track_list_dirty: + return + _track_list_dirty = false + + var track_list: Array[MP3Track] = [] + + for child: Node in tracks_collected_list.get_children(): + var track := child as DragNDropTrack + if track: + track_list.append(track.track) + + World.instance.manager.mp3_collection = track_list diff --git a/src/ui/menus/debug_menu/debug_menu.tscn b/src/ui/menus/debug_menu/debug_menu.tscn index 1251c51..413cdec 100644 --- a/src/ui/menus/debug_menu/debug_menu.tscn +++ b/src/ui/menus/debug_menu/debug_menu.tscn @@ -1,8 +1,41 @@ -[gd_scene load_steps=4 format=3 uid="uid://dofr2ebmvnwxf"] +[gd_scene load_steps=19 format=3 uid="uid://dofr2ebmvnwxf"] [ext_resource type="Theme" uid="uid://doq7ay6f7dgfo" path="res://src/ui/menus/menu.theme" id="1_spfxq"] [ext_resource type="Script" uid="uid://cekwr6enxknpn" path="res://src/ui/menus/debug_menu/debug_menu.gd" id="2_p20ux"] [ext_resource type="FontFile" uid="uid://qadtckvw0t3l" path="res://assets/fonts/fontawesome-free-6.7.2-desktop/otfs/Font Awesome 6 Free-Solid-900.otf" id="3_rw5h6"] +[ext_resource type="PackedScene" uid="uid://c3lhvdbgdulnd" path="res://src/ui/menus/debug_menu/drag_n_drop_track.tscn" id="4_rw5h6"] +[ext_resource type="Resource" uid="uid://0ey80i2mka0l" path="res://assets/music/track_data/alice.tres" id="5_f12qv"] +[ext_resource type="Script" uid="uid://cwngje5n14ukr" path="res://src/ui/menus/debug_menu/append_target.gd" id="5_sagn5"] +[ext_resource type="Resource" uid="uid://bmd8hqv5cyn6o" path="res://assets/music/track_data/bonk.tres" id="6_rdn7w"] +[ext_resource type="Resource" uid="uid://b1sy38m266moa" path="res://assets/music/track_data/bonk_jr.tres" id="7_nj5y1"] +[ext_resource type="Resource" uid="uid://cgntwy1qba7en" path="res://assets/music/track_data/catbird.tres" id="8_fqd57"] +[ext_resource type="Resource" uid="uid://hwfwyaygj8j4" path="res://assets/music/track_data/cetology.tres" id="9_lonu6"] +[ext_resource type="Resource" uid="uid://cbqulm0w0vtvs" path="res://assets/music/track_data/coyote.tres" id="10_sagn5"] +[ext_resource type="Resource" uid="uid://k48cvutbrel2" path="res://assets/music/track_data/do_better.tres" id="11_5phk2"] +[ext_resource type="Resource" uid="uid://dr4n7jtfyndkj" path="res://assets/music/track_data/dr_hurt.tres" id="12_kcgsq"] +[ext_resource type="Resource" uid="uid://ggr3v04p1qbj" path="res://assets/music/track_data/get_worse.tres" id="13_4d3e1"] +[ext_resource type="Resource" uid="uid://dj7qkxxgk3qb4" path="res://assets/music/track_data/gfolf.tres" id="14_ir5li"] +[ext_resource type="Resource" uid="uid://cpucbgjlokxax" path="res://assets/music/track_data/palace.tres" id="15_rvjr6"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rw5h6"] +content_margin_left = 0.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.06, 0.06, 0.06, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sagn5"] +bg_color = Color(0.3, 0.3, 0.3, 0.6) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 +corner_detail = 5 [node name="DebugMenu" type="PanelContainer"] custom_minimum_size = Vector2(1000, 600) @@ -89,9 +122,222 @@ text = "Collect grunk" layout_mode = 2 text = "Empty tank" +[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +alignment = 2 + +[node name="TankSizeInput" type="SpinBox" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer3"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +max_value = 6.4e+07 +alignment = 2 +suffix = "g" + +[node name="SetTankSize" type="Button" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer3"] +layout_mode = 2 +text = "Set Tank Limit" + +[node name="HBoxContainer4" type="HBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +alignment = 2 + +[node name="MP3Player" type="CheckButton" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 +text = "MP3 Player" +alignment = 2 + +[node name="Toothbrush" type="CheckButton" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 +text = "Toothbrush" +alignment = 2 + +[node name="Stickers" type="CheckButton" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 +text = "Sticker Pack" +alignment = 2 + +[node name="HBoxContainer5" type="HBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +alignment = 2 + +[node name="UnlockNextMilestone" type="Button" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer5"] +layout_mode = 2 +text = "Advance to next milestone" + +[node name="HBoxContainer6" type="HBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 16 +alignment = 2 + +[node name="TracksCollectedColumn" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6"] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn"] +layout_mode = 2 +text = "Tracks Collected" +horizontal_alignment = 1 + +[node name="TracksCollected" type="PanelContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn"] +custom_minimum_size = Vector2(180, 256) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_rw5h6") + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_right = 4 + +[node name="TracksCollectedList" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="AppendTarget" type="Panel" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0) +custom_minimum_size = Vector2(0, 31) +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_sagn5") +script = ExtResource("5_sagn5") + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("3_rw5h6") +theme_override_font_sizes/font_size = 36 +text = "" + +[node name="TracksAvailableColumn" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn"] +layout_mode = 2 +text = "Tracks Available" +horizontal_alignment = 1 + +[node name="TracksAvailable" type="PanelContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn"] +custom_minimum_size = Vector2(180, 256) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_rw5h6") + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_right = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="DragNDropTrack" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("5_f12qv") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack2" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("6_rdn7w") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack3" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("7_nj5y1") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack4" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("8_fqd57") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack5" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("9_lonu6") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack6" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("10_sagn5") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack7" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("11_5phk2") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack8" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("12_kcgsq") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack9" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("13_4d3e1") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack10" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("14_ir5li") +drop_target = false +preserve_on_drag = true + +[node name="DragNDropTrack11" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksAvailableColumn/TracksAvailable/MarginContainer/ScrollContainer/MarginContainer/VBoxContainer" instance=ExtResource("4_rw5h6")] +layout_mode = 2 +track = ExtResource("15_rvjr6") +drop_target = false +preserve_on_drag = true + [connection signal="pressed" from="MarginContainer/VBoxContainer/Header/CloseButton" to="." method="queue_free"] +[connection signal="toggled" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/GodMode" to="." method="set_god_mode"] [connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/KillPlayer" to="." method="kill_player"] [connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/SaveButton" to="." method="save_game"] [connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/LoadButton" to="." method="load_game"] [connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer2/CollectGrunkButton" to="." method="collect_grunk"] [connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer2/EmptyTankButton" to="." method="empty_tank"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer3/SetTankSize" to="." method="set_tank_size"] +[connection signal="toggled" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer4/MP3Player" to="." method="set_mp3_player_unlocked"] +[connection signal="toggled" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer4/Toothbrush" to="." method="set_toothbrush_unlocked"] +[connection signal="toggled" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer4/Stickers" to="." method="set_stickers_unlocked"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer5/UnlockNextMilestone" to="." method="unlock_next_milestone"] +[connection signal="child_entered_tree" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList" to="." method="_on_track_list_changed" unbinds=1] +[connection signal="child_exiting_tree" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList" to="." method="_on_track_list_changed" unbinds=1] +[connection signal="child_order_changed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList" to="." method="_on_track_list_changed"] +[connection signal="mouse_exited" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList/AppendTarget" to="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList/AppendTarget" method="_on_mouse_exited"] diff --git a/src/ui/menus/debug_menu/drag_n_drop_track.gd b/src/ui/menus/debug_menu/drag_n_drop_track.gd new file mode 100644 index 0000000..bab5ad7 --- /dev/null +++ b/src/ui/menus/debug_menu/drag_n_drop_track.gd @@ -0,0 +1,110 @@ +@tool +class_name DragNDropTrack extends Control + +const SCENE := preload("drag_n_drop_track.tscn") + +const TRANSITION_TIME := 0.1 + +const SHRINK_SIZE := 31 +const FULL_SIZE := 65 + +@export var track: MP3Track: + set = _set_track +@export var drop_target := true +@export var preserve_on_drag := true + +var _expanded := false +var _tween: Tween + +@onready var label: Label = %Label + + +func _ready() -> void: + _set_track(track) + + +func _kill_any_tween() -> void: + if _tween and _tween.is_valid(): + _tween.kill() + + +func _new_tween() -> Tween: + _kill_any_tween() + _tween = create_tween() + return _tween + + +func _grow() -> void: + if not _expanded: + ( + _new_tween() + . tween_property(self, "custom_minimum_size:y", FULL_SIZE, TRANSITION_TIME) + . set_trans(Tween.TRANS_CUBIC) + ) + _expanded = true + + +func _shrink() -> void: + if _expanded: + ( + _new_tween() + . tween_property(self, "custom_minimum_size:y", SHRINK_SIZE, TRANSITION_TIME) + . set_trans(Tween.TRANS_CUBIC) + ) + _expanded = false + + +func _set_track(value: MP3Track) -> void: + track = value + if label: + label.text = value.title if value else "" + + +func _get_drag_data(_at_position: Vector2) -> Variant: + var preview := self.duplicate() as DragNDropTrack + preview.size = self.size + var container := Control.new() + container.size = Vector2.ZERO + container.add_child(preview) + preview.position = -preview.size * 0.5 + set_drag_preview(container) + if not preserve_on_drag: + queue_free() + return track + + +func _can_drop_data(_at_position: Vector2, data: Variant) -> bool: + if drop_target and data is MP3Track: + _grow() + return true + return false + + +func _drop_data(_at_position: Vector2, data: Variant) -> void: + if not (drop_target and data is MP3Track): + return + + # When dropping on another item, we want to insert just before this item + @warning_ignore("unsafe_cast") + var new_container := DragNDropTrack.create(data as MP3Track) + add_sibling(new_container) + get_parent().move_child(new_container, get_index()) + _kill_any_tween() + custom_minimum_size.y = SHRINK_SIZE + + +func _on_mouse_exited() -> void: + if drop_target: + _shrink() + + +static func create( + mp3_track: MP3Track, + _drop_target: bool = true, + _preserve_on_drag: bool = false, +) -> DragNDropTrack: + var instance := SCENE.instantiate() as DragNDropTrack + instance.track = mp3_track + instance.drop_target = _drop_target + instance.preserve_on_drag = _preserve_on_drag + return instance diff --git a/src/ui/menus/debug_menu/drag_n_drop_track.gd.uid b/src/ui/menus/debug_menu/drag_n_drop_track.gd.uid new file mode 100644 index 0000000..2d5e026 --- /dev/null +++ b/src/ui/menus/debug_menu/drag_n_drop_track.gd.uid @@ -0,0 +1 @@ +uid://b14vx8x1grjg4 diff --git a/src/ui/menus/debug_menu/drag_n_drop_track.tscn b/src/ui/menus/debug_menu/drag_n_drop_track.tscn new file mode 100644 index 0000000..7363960 --- /dev/null +++ b/src/ui/menus/debug_menu/drag_n_drop_track.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=4 format=3 uid="uid://c3lhvdbgdulnd"] + +[ext_resource type="Script" uid="uid://b14vx8x1grjg4" path="res://src/ui/menus/debug_menu/drag_n_drop_track.gd" id="1_1rfrr"] +[ext_resource type="FontFile" uid="uid://qadtckvw0t3l" path="res://assets/fonts/fontawesome-free-6.7.2-desktop/otfs/Font Awesome 6 Free-Solid-900.otf" id="2_ehxba"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1rfrr"] +bg_color = Color(0.3, 0.3, 0.3, 0.6) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 +corner_detail = 5 + +[node name="DragNDropTrack" type="Control"] +custom_minimum_size = Vector2(80, 31) +layout_mode = 3 +anchors_preset = 0 +offset_right = 80.0 +offset_bottom = 31.0 +script = ExtResource("1_1rfrr") +preserve_on_drag = null + +[node name="PanelContainer" type="PanelContainer" parent="."] +custom_minimum_size = Vector2(80, 31) +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -31.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 1 +theme_override_styles/panel = SubResource("StyleBoxFlat_1rfrr") + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="Grip" type="Label" parent="PanelContainer/MarginContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +theme_override_fonts/font = ExtResource("2_ehxba") +text = " " + +[node name="Label" type="Label" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "alice" +horizontal_alignment = 1 + +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/src/world/world_manager.tres b/src/world/world_manager.tres index 9feb715..ae94f77 100644 --- a/src/world/world_manager.tres +++ b/src/world/world_manager.tres @@ -1,15 +1,15 @@ -[gd_resource type="Resource" script_class="WorldManager" load_steps=33 format=3 uid="uid://tgac5tnfx56r"] +[gd_resource type="Resource" script_class="WorldManager" load_steps=26 format=3 uid="uid://tgac5tnfx56r"] [ext_resource type="Script" uid="uid://c1i5gnht15x0e" path="res://src/world/world_manager.gd" id="1_i77rl"] [ext_resource type="Script" uid="uid://ufxoxupdvyd5" path="res://src/game/milestone.gd" id="2_c37ff"] [ext_resource type="Script" uid="uid://kwiy3dv1h7q7" path="res://src/equipment/mp3_player/mp3_track.gd" id="3_yiuq5"] -[ext_resource type="AudioStream" uid="uid://bp1dv4lv3344w" path="res://assets/music/chorus_01.wav" id="4_dwul7"] -[ext_resource type="AudioStream" uid="uid://ccqmeqw3moxfd" path="res://assets/music/descending_04.wav" id="5_dwul7"] -[ext_resource type="AudioStream" uid="uid://d4qqqrnplej6" path="res://assets/music/driving_01.wav" id="6_2q28t"] -[ext_resource type="AudioStream" uid="uid://dgvknkfvoqk8r" path="res://assets/music/simple_sample_01.wav" id="7_dojbf"] -[ext_resource type="AudioStream" uid="uid://bkvjtdlhjfr7n" path="res://assets/music/thaw_v2_slow.wav" id="8_81w62"] -[ext_resource type="AudioStream" uid="uid://b1rmpakal8l6j" path="res://assets/music/driving_02.wav" id="9_gv3bq"] -[ext_resource type="AudioStream" uid="uid://dgxko5ds8u2lk" path="res://assets/music/desert_01.wav" id="10_63s66"] +[ext_resource type="Resource" uid="uid://cgntwy1qba7en" path="res://assets/music/track_data/catbird.tres" id="4_2q28t"] +[ext_resource type="Resource" uid="uid://ggr3v04p1qbj" path="res://assets/music/track_data/get_worse.tres" id="5_dojbf"] +[ext_resource type="Resource" uid="uid://bmd8hqv5cyn6o" path="res://assets/music/track_data/bonk.tres" id="6_81w62"] +[ext_resource type="Resource" uid="uid://dj7qkxxgk3qb4" path="res://assets/music/track_data/gfolf.tres" id="7_gv3bq"] +[ext_resource type="Resource" uid="uid://b1sy38m266moa" path="res://assets/music/track_data/bonk_jr.tres" id="8_63s66"] +[ext_resource type="Resource" uid="uid://dr4n7jtfyndkj" path="res://assets/music/track_data/dr_hurt.tres" id="9_enr7w"] +[ext_resource type="Resource" uid="uid://cbqulm0w0vtvs" path="res://assets/music/track_data/coyote.tres" id="10_qb1w8"] [sub_resource type="Resource" id="Resource_h4r54"] script = ExtResource("2_c37ff") @@ -26,18 +26,12 @@ mystery = false fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_veuns"] -script = ExtResource("3_yiuq5") -title = "catbird" -track = ExtResource("5_dwul7") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_b83gw"] script = ExtResource("2_c37ff") name = "MP3 PLAYER" message = "MP3 PLAYER DECRYPTED. Enjoy some light music whilst you GRUNK." -bonus_track = SubResource("Resource_veuns") +bonus_track = ExtResource("4_2q28t") mp3_player = true toothbrush = false seminar = false @@ -63,17 +57,11 @@ mystery = false fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_h2b4l"] -script = ExtResource("3_yiuq5") -title = "get worse" -track = ExtResource("8_81w62") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_vebb4"] script = ExtResource("2_c37ff") name = "BONUS TRACK" message = "BONUS TRACK DELIVERED" -bonus_track = SubResource("Resource_h2b4l") +bonus_track = ExtResource("5_dojbf") mp3_player = false toothbrush = false seminar = false @@ -99,17 +87,11 @@ mystery = false fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_enr7w"] -script = ExtResource("3_yiuq5") -title = "bonk" -track = ExtResource("9_gv3bq") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_dwul7"] script = ExtResource("2_c37ff") name = "BONUS TRACK" message = "BONUS TRACK DELIVERED" -bonus_track = SubResource("Resource_enr7w") +bonus_track = ExtResource("6_81w62") mp3_player = false toothbrush = false seminar = false @@ -135,17 +117,11 @@ mystery = false fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_qb1w8"] -script = ExtResource("3_yiuq5") -title = "gfolf" -track = ExtResource("7_dojbf") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_ohbx8"] script = ExtResource("2_c37ff") name = "BONUS TRACK" message = "BONUS TRACK DELIVERED" -bonus_track = SubResource("Resource_qb1w8") +bonus_track = ExtResource("7_gv3bq") mp3_player = false toothbrush = false seminar = false @@ -171,17 +147,11 @@ mystery = false fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_drgdw"] -script = ExtResource("3_yiuq5") -title = "bonk jr" -track = ExtResource("6_2q28t") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_74vm3"] script = ExtResource("2_c37ff") name = "BONUS TRACK" message = "BONUS TRACK DELIVERED" -bonus_track = SubResource("Resource_drgdw") +bonus_track = ExtResource("8_63s66") mp3_player = false toothbrush = false seminar = false @@ -207,18 +177,12 @@ mystery = false fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_mwqeg"] -script = ExtResource("3_yiuq5") -title = "dr hurt" -track = ExtResource("4_dwul7") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_6ok02"] script = ExtResource("2_c37ff") name = "BONUS TRACK" message = "BONUS TRACK DELIVERED THIS ONE'S A CLASSIC" -bonus_track = SubResource("Resource_mwqeg") +bonus_track = ExtResource("9_enr7w") mp3_player = false toothbrush = false seminar = false @@ -243,17 +207,11 @@ mystery = true fiesta = false metadata/_custom_type_script = "uid://ufxoxupdvyd5" -[sub_resource type="Resource" id="Resource_l175b"] -script = ExtResource("3_yiuq5") -title = "coyote" -track = ExtResource("10_63s66") -metadata/_custom_type_script = "uid://kwiy3dv1h7q7" - [sub_resource type="Resource" id="Resource_ysbqn"] script = ExtResource("2_c37ff") name = "BONUS TRACK" message = "BONUS TRACK DELIVERED" -bonus_track = SubResource("Resource_l175b") +bonus_track = ExtResource("10_qb1w8") mp3_player = false toothbrush = false seminar = false