diff options
Diffstat (limited to 'apworld/client')
| -rw-r--r-- | apworld/client/allowNumbers.gd | 10 | ||||
| -rw-r--r-- | apworld/client/gamedata.gd | 6 | ||||
| -rw-r--r-- | apworld/client/main.gd | 13 | ||||
| -rw-r--r-- | apworld/client/manager.gd | 7 | ||||
| -rw-r--r-- | apworld/client/player.gd | 177 |
5 files changed, 210 insertions, 3 deletions
| diff --git a/apworld/client/allowNumbers.gd b/apworld/client/allowNumbers.gd new file mode 100644 index 0000000..d958b50 --- /dev/null +++ b/apworld/client/allowNumbers.gd | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | extends "res://scripts/nodes/allowNumbers.gd" | ||
| 2 | |||
| 3 | |||
| 4 | func _readier(): | ||
| 5 | var ap = global.get_node("Archipelago") | ||
| 6 | var gamedata = global.get_node("Gamedata") | ||
| 7 | |||
| 8 | var item_id = gamedata.objects.get_special_ids()["Numbers"] | ||
| 9 | if ap.client.getItemAmount(item_id) >= 1: | ||
| 10 | global.allow_numbers = true | ||
| diff --git a/apworld/client/gamedata.gd b/apworld/client/gamedata.gd index 9305003..3a35125 100644 --- a/apworld/client/gamedata.gd +++ b/apworld/client/gamedata.gd | |||
| @@ -221,7 +221,11 @@ func _get_generated_door_location_name(door): | |||
| 221 | if door.get_type() != SCRIPT_proto.DoorType.STANDARD: | 221 | if door.get_type() != SCRIPT_proto.DoorType.STANDARD: |
| 222 | return null | 222 | return null |
| 223 | 223 | ||
| 224 | if door.get_keyholders().size() > 0 or door.get_endings().size() > 0 or door.has_complete_at(): | 224 | if ( |
| 225 | door.get_keyholders().size() > 0 | ||
| 226 | or (door.has_white_ending() and door.get_white_ending()) | ||
| 227 | or door.has_complete_at() | ||
| 228 | ): | ||
| 225 | return null | 229 | return null |
| 226 | 230 | ||
| 227 | if door.get_panels().size() > 4: | 231 | if door.get_panels().size() > 4: |
| diff --git a/apworld/client/main.gd b/apworld/client/main.gd index 3a62f81..a543678 100644 --- a/apworld/client/main.gd +++ b/apworld/client/main.gd | |||
| @@ -36,6 +36,7 @@ func _ready(): | |||
| 36 | global.add_child(ap_instance) | 36 | global.add_child(ap_instance) |
| 37 | 37 | ||
| 38 | # Let's also inject any scripts we need to inject now. | 38 | # Let's also inject any scripts we need to inject now. |
| 39 | installScriptExtension(runtime.load_script("allowNumbers.gd")) | ||
| 39 | installScriptExtension(runtime.load_script("animationListener.gd")) | 40 | installScriptExtension(runtime.load_script("animationListener.gd")) |
| 40 | installScriptExtension(runtime.load_script("collectable.gd")) | 41 | installScriptExtension(runtime.load_script("collectable.gd")) |
| 41 | installScriptExtension(runtime.load_script("door.gd")) | 42 | installScriptExtension(runtime.load_script("door.gd")) |
| @@ -83,6 +84,13 @@ func _ready(): | |||
| 83 | compass_overlay_instance.SCRIPT_compass = runtime.load_script("compass.gd") | 84 | compass_overlay_instance.SCRIPT_compass = runtime.load_script("compass.gd") |
| 84 | global.add_child(compass_overlay_instance) | 85 | global.add_child(compass_overlay_instance) |
| 85 | 86 | ||
| 87 | unlocks.data["advanced_mastery"] = "" | ||
| 88 | unlocks.data["charismatic_mastery"] = "" | ||
| 89 | unlocks.data["crystalline_mastery"] = "" | ||
| 90 | unlocks.data["fuzzy_mastery"] = "" | ||
| 91 | unlocks.data["icarus_mastery"] = "" | ||
| 92 | unlocks.data["stellar_mastery"] = "" | ||
| 93 | |||
| 86 | var ap = global.get_node("Archipelago") | 94 | var ap = global.get_node("Archipelago") |
| 87 | var gamedata = global.get_node("Gamedata") | 95 | var gamedata = global.get_node("Gamedata") |
| 88 | ap.ap_connected.connect(connectionSuccessful) | 96 | ap.ap_connected.connect(connectionSuccessful) |
| @@ -224,11 +232,11 @@ func startGame(): | |||
| 224 | 232 | ||
| 225 | unlocks.resetCollectables() | 233 | unlocks.resetCollectables() |
| 226 | unlocks.resetData() | 234 | unlocks.resetData() |
| 235 | unlocks.loadCollectables() | ||
| 236 | unlocks.loadData() | ||
| 227 | 237 | ||
| 228 | ap.setup_keys() | 238 | ap.setup_keys() |
| 229 | 239 | ||
| 230 | unlocks.loadCollectables() | ||
| 231 | unlocks.loadData() | ||
| 232 | unlocks.unlockKey("capslock", 1) | 240 | unlocks.unlockKey("capslock", 1) |
| 233 | 241 | ||
| 234 | if ap.shuffle_worldports: | 242 | if ap.shuffle_worldports: |
| @@ -237,6 +245,7 @@ func startGame(): | |||
| 237 | settings.worldport_fades = "never" | 245 | settings.worldport_fades = "never" |
| 238 | 246 | ||
| 239 | clearResourceCache("res://objects/meshes/gridDoor.tscn") | 247 | clearResourceCache("res://objects/meshes/gridDoor.tscn") |
| 248 | clearResourceCache("res://objects/nodes/allowNumbers.tscn") | ||
| 240 | clearResourceCache("res://objects/nodes/collectable.tscn") | 249 | clearResourceCache("res://objects/nodes/collectable.tscn") |
| 241 | clearResourceCache("res://objects/nodes/door.tscn") | 250 | clearResourceCache("res://objects/nodes/door.tscn") |
| 242 | clearResourceCache("res://objects/nodes/keyHolder.tscn") | 251 | clearResourceCache("res://objects/nodes/keyHolder.tscn") |
| diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 41ab648..aa07559 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd | |||
| @@ -65,7 +65,9 @@ var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2 | |||
| 65 | var daedalus_roof_access = false | 65 | var daedalus_roof_access = false |
| 66 | var enable_gift_maps = [] | 66 | var enable_gift_maps = [] |
| 67 | var enable_icarus = false | 67 | var enable_icarus = false |
| 68 | var endings_requirement = 0 | ||
| 68 | var keyholder_sanity = false | 69 | var keyholder_sanity = false |
| 70 | var masteries_requirement = 0 | ||
| 69 | var port_pairings = {} | 71 | var port_pairings = {} |
| 70 | var shuffle_control_center_colors = false | 72 | var shuffle_control_center_colors = false |
| 71 | var shuffle_doors = false | 73 | var shuffle_doors = false |
| @@ -259,6 +261,9 @@ func _process_item(item, amount): | |||
| 259 | if item_id == gamedata.objects.get_special_ids()["A Job Well Done"]: | 261 | if item_id == gamedata.objects.get_special_ids()["A Job Well Done"]: |
| 260 | update_job_well_done_sign() | 262 | update_job_well_done_sign() |
| 261 | 263 | ||
| 264 | if item_id == gamedata.objects.get_special_ids()["Numbers"] and global.map == "the_fuzzy": | ||
| 265 | global.allow_numbers = true | ||
| 266 | |||
| 262 | # Show a message about the item if it's new. | 267 | # Show a message about the item if it's new. |
| 263 | if int(item["index"]) > _last_new_item: | 268 | if int(item["index"]) > _last_new_item: |
| 264 | _last_new_item = int(item["index"]) | 269 | _last_new_item = int(item["index"]) |
| @@ -443,7 +448,9 @@ func _client_connected(slot_data): | |||
| 443 | daedalus_roof_access = bool(slot_data.get("daedalus_roof_access", false)) | 448 | daedalus_roof_access = bool(slot_data.get("daedalus_roof_access", false)) |
| 444 | enable_gift_maps = slot_data.get("enable_gift_maps", []) | 449 | enable_gift_maps = slot_data.get("enable_gift_maps", []) |
| 445 | enable_icarus = bool(slot_data.get("enable_icarus", false)) | 450 | enable_icarus = bool(slot_data.get("enable_icarus", false)) |
| 451 | endings_requirement = int(slot_data.get("endings_requirement", 0)) | ||
| 446 | keyholder_sanity = bool(slot_data.get("keyholder_sanity", false)) | 452 | keyholder_sanity = bool(slot_data.get("keyholder_sanity", false)) |
| 453 | masteries_requirement = int(slot_data.get("masteries_requirement", 0)) | ||
| 447 | shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false)) | 454 | shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false)) |
| 448 | shuffle_doors = bool(slot_data.get("shuffle_doors", false)) | 455 | shuffle_doors = bool(slot_data.get("shuffle_doors", false)) |
| 449 | shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false)) | 456 | shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false)) |
| diff --git a/apworld/client/player.gd b/apworld/client/player.gd index 789d1b7..712a59b 100644 --- a/apworld/client/player.gd +++ b/apworld/client/player.gd | |||
| @@ -19,6 +19,85 @@ func _ready(): | |||
| 19 | 19 | ||
| 20 | ap.start_batching_locations() | 20 | ap.start_batching_locations() |
| 21 | 21 | ||
| 22 | if global.map == "control_center": | ||
| 23 | get_node("/root/scene/Components/Doors/entry_18").queue_free() | ||
| 24 | |||
| 25 | _set_up_mastery_listener("advanced") | ||
| 26 | _set_up_mastery_listener("charismatic") | ||
| 27 | _set_up_mastery_listener("crystalline") | ||
| 28 | _set_up_mastery_listener("fuzzy") | ||
| 29 | _set_up_mastery_listener("icarus") | ||
| 30 | _set_up_mastery_listener("stellar") | ||
| 31 | |||
| 32 | if ap.endings_requirement != 12 or ap.masteries_requirement != 0: | ||
| 33 | # Set up listeners for the potential White Ending requirements. | ||
| 34 | var merging_prefab = preload("res://objects/nodes/listeners/mergingListener.tscn") | ||
| 35 | |||
| 36 | var old_door = get_node("/root/scene/Components/Doors/entry_19") | ||
| 37 | var new_door = old_door.duplicate() | ||
| 38 | new_door.name = "entry_19_new" | ||
| 39 | new_door.senders.clear() | ||
| 40 | new_door.senderGroup.clear() | ||
| 41 | new_door.excludeSenders.clear() | ||
| 42 | |||
| 43 | if ap.endings_requirement == 12: | ||
| 44 | new_door.senderGroup.append(NodePath("/root/scene/Meshes/Trophies/Listeners")) | ||
| 45 | elif ap.endings_requirement > 0: | ||
| 46 | if ap.masteries_requirement == 0: | ||
| 47 | new_door.senderGroup.append(NodePath("/root/scene/Meshes/Trophies/Listeners")) | ||
| 48 | new_door.complete_at = ap.endings_requirement | ||
| 49 | else: | ||
| 50 | var endings_merge = merging_prefab.instantiate() | ||
| 51 | endings_merge.name = "EndingsMerge" | ||
| 52 | endings_merge.senderGroup.append( | ||
| 53 | NodePath("/root/scene/Meshes/Trophies/Listeners") | ||
| 54 | ) | ||
| 55 | endings_merge.complete_at = ap.endings_requirement | ||
| 56 | get_node("/root/scene/Components").add_child.call_deferred(endings_merge) | ||
| 57 | new_door.senders.append(NodePath("/root/scene/Components/EndingsMerge")) | ||
| 58 | |||
| 59 | var max_masteries = 13 + ap.enable_gift_maps.size() | ||
| 60 | if ap.enable_icarus: | ||
| 61 | max_masteries += 1 | ||
| 62 | |||
| 63 | if ap.masteries_requirement == max_masteries: | ||
| 64 | new_door.senderGroup.append( | ||
| 65 | NodePath("/root/scene/Meshes/Trophies/MasteryListeners") | ||
| 66 | ) | ||
| 67 | new_door.excludeSenders.append( | ||
| 68 | NodePath( | ||
| 69 | "/root/scene/Meshes/Trophies/MasteryListeners/unlockReaderListenerWhite" | ||
| 70 | ) | ||
| 71 | ) | ||
| 72 | elif ap.masteries_requirement > 0: | ||
| 73 | if ap.endings_requirement == 0: | ||
| 74 | new_door.senderGroup.append( | ||
| 75 | NodePath("/root/scene/Meshes/Trophies/MasteryListeners") | ||
| 76 | ) | ||
| 77 | new_door.excludeSenders.append( | ||
| 78 | NodePath( | ||
| 79 | "/root/scene/Meshes/Trophies/MasteryListeners/unlockReaderListenerWhite" | ||
| 80 | ) | ||
| 81 | ) | ||
| 82 | new_door.complete_at = ap.masteries_requirement | ||
| 83 | else: | ||
| 84 | var masteries_merge = merging_prefab.instantiate() | ||
| 85 | masteries_merge.name = "MasteriesMerge" | ||
| 86 | masteries_merge.senderGroup.append( | ||
| 87 | NodePath("/root/scene/Meshes/Trophies/MasteryListeners") | ||
| 88 | ) | ||
| 89 | masteries_merge.excludeSenders.append( | ||
| 90 | NodePath( | ||
| 91 | "/root/scene/Meshes/Trophies/MasteryListeners/unlockReaderListenerWhite" | ||
| 92 | ) | ||
| 93 | ) | ||
| 94 | masteries_merge.complete_at = ap.masteries_requirement | ||
| 95 | get_node("/root/scene/Components").add_child.call_deferred(masteries_merge) | ||
| 96 | new_door.senders.append(NodePath("/root/scene/Components/MasteriesMerge")) | ||
| 97 | |||
| 98 | old_door.queue_free() | ||
| 99 | get_node("/root/scene/Components/Doors").add_child.call_deferred(new_door) | ||
| 100 | |||
| 22 | # Block off roof access in Daedalus. | 101 | # Block off roof access in Daedalus. |
| 23 | if global.map == "daedalus" and not ap.daedalus_roof_access: | 102 | if global.map == "daedalus" and not ap.daedalus_roof_access: |
| 24 | _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) | 103 | _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) |
| @@ -141,6 +220,29 @@ func _ready(): | |||
| 141 | q_wpl.senders.append(NodePath("../QPanel")) | 220 | q_wpl.senders.append(NodePath("../QPanel")) |
| 142 | giftmap_parent.add_child.call_deferred(q_wpl) | 221 | giftmap_parent.add_child.call_deferred(q_wpl) |
| 143 | 222 | ||
| 223 | if ap.enable_gift_maps.has("The Fuzzy"): | ||
| 224 | var gongus_panel = panel_prefab.instantiate() | ||
| 225 | gongus_panel.name = "GongusPanel" | ||
| 226 | gongus_panel.answer = "gongus" | ||
| 227 | gongus_panel.position = Vector3(33.5, -260, 5.5) | ||
| 228 | giftmap_panel.proxies.append(NodePath("../GongusPanel")) | ||
| 229 | giftmap_parent.add_child.call_deferred(gongus_panel) | ||
| 230 | |||
| 231 | var kiwi_panel = panel_prefab.instantiate() | ||
| 232 | kiwi_panel.name = "KiwiPanel" | ||
| 233 | kiwi_panel.answer = "kiwi" | ||
| 234 | kiwi_panel.position = Vector3(33.5, -270, 5.5) | ||
| 235 | giftmap_panel.proxies.append(NodePath("../KiwiPanel")) | ||
| 236 | giftmap_parent.add_child.call_deferred(kiwi_panel) | ||
| 237 | |||
| 238 | var fuzzy_wpl = wpl_prefab.instantiate() | ||
| 239 | fuzzy_wpl.name = "FuzzyWpl" | ||
| 240 | fuzzy_wpl.exit = "the_fuzzy" | ||
| 241 | fuzzy_wpl.senders.append(NodePath("../GongusPanel")) | ||
| 242 | fuzzy_wpl.senders.append(NodePath("../KiwiPanel")) | ||
| 243 | fuzzy_wpl.complete_at = 1 | ||
| 244 | giftmap_parent.add_child.call_deferred(fuzzy_wpl) | ||
| 245 | |||
| 144 | if ap.enable_gift_maps.has("The Stellar"): | 246 | if ap.enable_gift_maps.has("The Stellar"): |
| 145 | var hatkirby_panel = panel_prefab.instantiate() | 247 | var hatkirby_panel = panel_prefab.instantiate() |
| 146 | hatkirby_panel.name = "HatkirbyPanel" | 248 | hatkirby_panel.name = "HatkirbyPanel" |
| @@ -297,6 +399,7 @@ func _ready(): | |||
| 297 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") | 399 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") |
| 298 | var saver_prefab = preload("res://objects/nodes/saver.tscn") | 400 | var saver_prefab = preload("res://objects/nodes/saver.tscn") |
| 299 | var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") | 401 | var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") |
| 402 | var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn") | ||
| 300 | 403 | ||
| 301 | var mastery = collectable_prefab.instantiate() | 404 | var mastery = collectable_prefab.instantiate() |
| 302 | mastery.name = "collectable" | 405 | mastery.name = "collectable" |
| @@ -314,6 +417,13 @@ func _ready(): | |||
| 314 | tpl.nested = true | 417 | tpl.nested = true |
| 315 | mastery.add_child.call_deferred(tpl) | 418 | mastery.add_child.call_deferred(tpl) |
| 316 | 419 | ||
| 420 | var usl = usl_prefab.instantiate() | ||
| 421 | usl.name = "unlockSetterListenerMastery" | ||
| 422 | usl.key = "icarus_mastery" | ||
| 423 | usl.value = "unlocked" | ||
| 424 | usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable")) | ||
| 425 | get_node("/root/scene/Components").add_child.call_deferred(usl) | ||
| 426 | |||
| 317 | var saver = saver_prefab.instantiate() | 427 | var saver = saver_prefab.instantiate() |
| 318 | saver.name = "saver_collectables" | 428 | saver.name = "saver_collectables" |
| 319 | saver.type = "collectables" | 429 | saver.type = "collectables" |
| @@ -325,6 +435,7 @@ func _ready(): | |||
| 325 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") | 435 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") |
| 326 | var saver_prefab = preload("res://objects/nodes/saver.tscn") | 436 | var saver_prefab = preload("res://objects/nodes/saver.tscn") |
| 327 | var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") | 437 | var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") |
| 438 | var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn") | ||
| 328 | 439 | ||
| 329 | var mastery = collectable_prefab.instantiate() | 440 | var mastery = collectable_prefab.instantiate() |
| 330 | mastery.name = "collectable" | 441 | mastery.name = "collectable" |
| @@ -343,6 +454,13 @@ func _ready(): | |||
| 343 | tpl.senders.append(NodePath("/root/scene/Panels/Room_1/panel_31")) | 454 | tpl.senders.append(NodePath("/root/scene/Panels/Room_1/panel_31")) |
| 344 | mastery.add_child.call_deferred(tpl) | 455 | mastery.add_child.call_deferred(tpl) |
| 345 | 456 | ||
| 457 | var usl = usl_prefab.instantiate() | ||
| 458 | usl.name = "unlockSetterListenerMastery" | ||
| 459 | usl.key = "advanced_mastery" | ||
| 460 | usl.value = "unlocked" | ||
| 461 | usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable")) | ||
| 462 | get_node("/root/scene/Components").add_child.call_deferred(usl) | ||
| 463 | |||
| 346 | var saver = saver_prefab.instantiate() | 464 | var saver = saver_prefab.instantiate() |
| 347 | saver.name = "saver_collectables" | 465 | saver.name = "saver_collectables" |
| 348 | saver.type = "collectables" | 466 | saver.type = "collectables" |
| @@ -353,6 +471,7 @@ func _ready(): | |||
| 353 | if global.map == "the_charismatic": | 471 | if global.map == "the_charismatic": |
| 354 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") | 472 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") |
| 355 | var saver_prefab = preload("res://objects/nodes/saver.tscn") | 473 | var saver_prefab = preload("res://objects/nodes/saver.tscn") |
| 474 | var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn") | ||
| 356 | 475 | ||
| 357 | var mastery = collectable_prefab.instantiate() | 476 | var mastery = collectable_prefab.instantiate() |
| 358 | mastery.name = "collectable" | 477 | mastery.name = "collectable" |
| @@ -362,6 +481,13 @@ func _ready(): | |||
| 362 | mastery.material_override = load("res://assets/materials/gold.material") | 481 | mastery.material_override = load("res://assets/materials/gold.material") |
| 363 | get_node("/root/scene/Components/Collectables").add_child.call_deferred(mastery) | 482 | get_node("/root/scene/Components/Collectables").add_child.call_deferred(mastery) |
| 364 | 483 | ||
| 484 | var usl = usl_prefab.instantiate() | ||
| 485 | usl.name = "unlockSetterListenerMastery" | ||
| 486 | usl.key = "charismatic_mastery" | ||
| 487 | usl.value = "unlocked" | ||
| 488 | usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable")) | ||
| 489 | get_node("/root/scene/Components").add_child.call_deferred(usl) | ||
| 490 | |||
| 365 | var saver = saver_prefab.instantiate() | 491 | var saver = saver_prefab.instantiate() |
| 366 | saver.name = "saver_collectables" | 492 | saver.name = "saver_collectables" |
| 367 | saver.type = "collectables" | 493 | saver.type = "collectables" |
| @@ -373,6 +499,7 @@ func _ready(): | |||
| 373 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") | 499 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") |
| 374 | var saver_prefab = preload("res://objects/nodes/saver.tscn") | 500 | var saver_prefab = preload("res://objects/nodes/saver.tscn") |
| 375 | var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") | 501 | var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") |
| 502 | var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn") | ||
| 376 | 503 | ||
| 377 | var mastery = collectable_prefab.instantiate() | 504 | var mastery = collectable_prefab.instantiate() |
| 378 | mastery.name = "collectable" | 505 | mastery.name = "collectable" |
| @@ -389,6 +516,39 @@ func _ready(): | |||
| 389 | tpl.senders.append(NodePath("/root/scene/Panels/Room_1/panel_3")) | 516 | tpl.senders.append(NodePath("/root/scene/Panels/Room_1/panel_3")) |
| 390 | mastery.add_child.call_deferred(tpl) | 517 | mastery.add_child.call_deferred(tpl) |
| 391 | 518 | ||
| 519 | var usl = usl_prefab.instantiate() | ||
| 520 | usl.name = "unlockSetterListenerMastery" | ||
| 521 | usl.key = "crystalline_mastery" | ||
| 522 | usl.value = "unlocked" | ||
| 523 | usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable")) | ||
| 524 | get_node("/root/scene/Components").add_child.call_deferred(usl) | ||
| 525 | |||
| 526 | var saver = saver_prefab.instantiate() | ||
| 527 | saver.name = "saver_collectables" | ||
| 528 | saver.type = "collectables" | ||
| 529 | saver.senderGroup.append(NodePath("/root/scene/Components/Collectables")) | ||
| 530 | get_node("/root/scene").add_child.call_deferred(saver) | ||
| 531 | |||
| 532 | # Add the mastery to The Fuzzy. | ||
| 533 | if global.map == "the_fuzzy": | ||
| 534 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") | ||
| 535 | var saver_prefab = preload("res://objects/nodes/saver.tscn") | ||
| 536 | var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn") | ||
| 537 | |||
| 538 | var mastery = collectable_prefab.instantiate() | ||
| 539 | mastery.name = "collectable" | ||
| 540 | mastery.position = Vector3(0, 2, -20) | ||
| 541 | mastery.unlock_type = "smiley" | ||
| 542 | mastery.material_override = load("res://assets/materials/gold.material") | ||
| 543 | get_node("/root/scene/Components/Collectables").add_child.call_deferred(mastery) | ||
| 544 | |||
| 545 | var usl = usl_prefab.instantiate() | ||
| 546 | usl.name = "unlockSetterListenerMastery" | ||
| 547 | usl.key = "fuzzy_mastery" | ||
| 548 | usl.value = "unlocked" | ||
| 549 | usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable")) | ||
| 550 | get_node("/root/scene/Components").add_child.call_deferred(usl) | ||
| 551 | |||
| 392 | var saver = saver_prefab.instantiate() | 552 | var saver = saver_prefab.instantiate() |
| 393 | saver.name = "saver_collectables" | 553 | saver.name = "saver_collectables" |
| 394 | saver.type = "collectables" | 554 | saver.type = "collectables" |
| @@ -399,6 +559,7 @@ func _ready(): | |||
| 399 | if global.map == "the_stellar": | 559 | if global.map == "the_stellar": |
| 400 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") | 560 | var collectable_prefab = preload("res://objects/nodes/collectable.tscn") |
| 401 | var saver_prefab = preload("res://objects/nodes/saver.tscn") | 561 | var saver_prefab = preload("res://objects/nodes/saver.tscn") |
| 562 | var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn") | ||
| 402 | 563 | ||
| 403 | var collectables = Node.new() | 564 | var collectables = Node.new() |
| 404 | collectables.name = "Collectables" | 565 | collectables.name = "Collectables" |
| @@ -412,6 +573,13 @@ func _ready(): | |||
| 412 | collectables.add_child.call_deferred(mastery) | 573 | collectables.add_child.call_deferred(mastery) |
| 413 | get_node("/root/scene/Components").add_child.call_deferred(collectables) | 574 | get_node("/root/scene/Components").add_child.call_deferred(collectables) |
| 414 | 575 | ||
| 576 | var usl = usl_prefab.instantiate() | ||
| 577 | usl.name = "unlockSetterListenerMastery" | ||
| 578 | usl.key = "stellar_mastery" | ||
| 579 | usl.value = "unlocked" | ||
| 580 | usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable")) | ||
| 581 | get_node("/root/scene/Components").add_child.call_deferred(usl) | ||
| 582 | |||
| 415 | var saver = saver_prefab.instantiate() | 583 | var saver = saver_prefab.instantiate() |
| 416 | saver.name = "saver_collectables" | 584 | saver.name = "saver_collectables" |
| 417 | saver.type = "collectables" | 585 | saver.type = "collectables" |
| @@ -585,5 +753,14 @@ func _set_up_invis_wall(x, y, z, sx, sy, sz): | |||
| 585 | get_parent().add_child.call_deferred(newwall) | 753 | get_parent().add_child.call_deferred(newwall) |
| 586 | 754 | ||
| 587 | 755 | ||
| 756 | func _set_up_mastery_listener(name): | ||
| 757 | var prefab = preload("res://objects/nodes/listeners/unlockReaderListener.tscn") | ||
| 758 | var url = prefab.instantiate() | ||
| 759 | url.name = "unlockReaderListenerMastery_%s" % name | ||
| 760 | url.key = "%s_mastery" % name | ||
| 761 | url.value = "unlocked" | ||
| 762 | get_node("/root/scene/Meshes/Trophies/MasteryListeners").add_child.call_deferred(url) | ||
| 763 | |||
| 764 | |||
| 588 | func _process(_dt): | 765 | func _process(_dt): |
| 589 | compass.update_rotation(global_rotation.y) | 766 | compass.update_rotation(global_rotation.y) |
