extends Spatial
func _ready():
# Undo the load screen removing our cursor
get_tree().get_root().set_disable_input(false)
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
# Create the global AP client, if it doesn't already exist.
if not global.has_node("Archipelago"):
var apclient = ResourceLoader.load("user://maps/Archipelago/client.gd")
var apclient_instance = apclient.new()
apclient_instance.name = "Archipelago"
global.add_child(apclient_instance)
# Let's also inject any scripts we need to inject now.
installScriptExtension("user://maps/Archipelago/doorControl.gd")
installScriptExtension("user://maps/Archipelago/load.gd")
installScriptExtension("user://maps/Archipelago/painting_eye.gd")
global.get_node("Archipelago").connect("client_connected", self, "connectionSuccessful")
# Populate textboxes with AP settings.
self.get_node("Panel/server_box").text = global.get_node("Archipelago").ap_server
self.get_node("Panel/player_box").text = global.get_node("Archipelago").ap_user
self.get_node("Panel/password_box").text = global.get_node("Archipelago").ap_pass
# Adapted from https://gitlab.com/Delta-V-Modding/Mods/-/blob/main/game/ModLoader.gd
func installScriptExtension(childScriptPath: String):
var childScript = ResourceLoader.load(childScriptPath)
# Force Godot to compile the script now.
# We need to do this here to ensure that the inheritance chain is
# properly set up, and multiple mods can chain-extend the same
# class multiple times.
# This is also needed to make Godot instantiate the extended class
# when creating singletons.
# The actual instance is thrown away.
childScript.new()
var parentScript = childScript.get_base_script()
var parentScriptPath = parentScript.resource_path
global._print(
"ModLoader: Installing script extension: %s <- %s" % [parentScriptPath, childScriptPath]
)
childScript.take_over_path(parentScriptPath)
func connectionSuccessful():
var apclient = global.get_node("Archipelago")
# Switch to LL1
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
global.map = "level1"
global.save_file = apclient.getSaveFileName()
var _discard = get_tree().change_scene("res://scenes/load_screen.tscn")
/the_tower/rooms/First%20Floor.txtpb?h=client-v3.3'>stats
blob: 33398a31757377b75d310b6691f2aee55e42990c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
name: "First Floor"
panels {
name: "RIDE"
path: "Panels/Floor 1/panel_1"
clue: "ride"
answer: "lion"
symbols: SPARKLES
symbols: PLANET
}
panels {
name: "PROD"
path: "Panels/Floor 1/panel_2"
clue: "prod"
answer: "dolphin"
symbols: SPARKLES
symbols: PLANET
}
panels {
name: "WARM"
path: "Panels/Floor 1/panel_3"
clue: "warm"
answer: "bee"
symbols: SPARKLES
symbols: PLANET
}
panels {
name: "COLLEGE"
path: "Panels/Floor 1/panel_4"
clue: "college"
answer: "fish"
symbols: EXAMPLE
symbols: PLANET
}
panels {
name: "HER"
path: "Panels/Floor 1/panel_5"
clue: "her"
answer: "cow"
symbols: SPARKLES
symbols: PLANET
}
panels {
name: "CRAM"
path: "Panels/Floor 1/panel_6"
clue: "cram"
answer: "wolf"
symbols: SUN
symbols: PLANET
}
panels {
name: "CUP"
path: "Panels/Floor 1/panel_7"
clue: "cup"
answer: "lion"
symbols: SPARKLES
symbols: AGE
}
panels {
name: "IRONY"
path: "Panels/Floor 1/panel_8"
clue: "irony"
answer: "rust"
symbols: SPARKLES
symbols: AGE
}
panels {
name: "IRE"
path: "Panels/Floor 1/panel_9"
clue: "ire"
answer: "ash"
symbols: SPARKLES
symbols: AGE
}
panels {
name: "ADULT"
path: "Panels/Floor 1/panel_10"
clue: "adult"
answer: "children"
symbols: PLANET
symbols: AGE
}
panels {
name: "CALF"
path: "Panels/Floor 1/panel_11"
clue: "calf"
answer: "bull"
symbols: GENDER
symbols: AGE
}
panels {
name: "BUTTER"
path: "Panels/Floor 1/panel_12"
clue: "butter"
answer: "cram"
symbols: SPARKLES
symbols: EXAMPLE
}
ports {
name: "GREAT"
path: "Components/Warps/worldport"
}
|