about summary refs log tree commit diff stats
path: root/data/maps/four_rooms/rooms/Time Room.txtpb
blob: d684685612d360f1dd8e9aa1455ffffd307efbd1 (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
name: "Time Room"
panels {
  name: "BROODING"
  path: "Panels/Room 4 Time/entry_1"
  clue: "brooding"
  answer: "rage"
  symbols: AGE
}
panels {
  name: "CARE"
  path: "Panels/Room 4 Time/entry_2"
  clue: "care"
  answer: "love"
  symbols: AGE
}
panels {
  name: "LIFE"
  path: "Panels/Room 4 Time/entry_3"
  clue: "life"
  answer: "death"
  symbols: AGE
}
panels {
  name: "SUSPENSE"
  path: "Panels/Room 4 Time/entry_4"
  clue: "suspense"
  answer: "fear"
  symbols: AGE
}
panels {
  name: "PRACTICE"
  path: "Panels/Room 4 Time/entry_5"
  clue: "practice"
  answer: "best"
  symbols: AGE
}
panels {
  name: "WRITING"
  path: "Panels/Room 4 Time/entry_6"
  clue: "writing"
  answer: "poetry"
  symbols: AGE
}
panels {
  name: "HOLE"
  path: "Panels/Room 4 Time/entry_7"
  clue: "hole"
  answer: "grave"
  symbols: AGE
}
panels {
  name: "RHYTHM"
  path: "Panels/Room 4 Time/entry_8"
  clue: "rhythm"
  answer: "dance"
  symbols: AGE
}
ports {
  name: "OWL"
  path: "Components/Warps/worldport4"
  orientation: "north"
}
ed = get_tree().get_root().get_node("Spatial/player").connect( "looked_at", self, "_looked_at" ) if move: key.get_node("Viewport/GUI/Panel/TextEdit").connect( "answer_correct", self, "_answer_correct" ) func _answer_correct(): var apclient = global.get_node("Archipelago") if not apclient._door_shuffle or apclient.paintingIsVanilla(self.get_parent().name): movePainting() func movePainting(): self.get_parent().translation.x = move_to_x self.get_parent().translation.z = move_to_z func _looked_at(body, painting): if body.is_in_group("player") and (painting.get_name() == self.get_parent().get_name()): var apclient = global.get_node("Archipelago") apclient.checkPainting(painting.get_name()) if target != null: var target_dir = _dir_to_int(target.orientation) var source_dir = _dir_to_int(orientation) var rotate = target_dir - source_dir if rotate < 0: rotate += 4 rotate *= 90 var target_painting = target.get_parent() # this is ACW if rotate == 0: body.translation.x = ( target_painting.translation.x + (body.translation.x - painting.translation.x) ) body.translation.y = ( target_painting.translation.y + (body.translation.y - painting.translation.y) ) body.translation.z = ( target_painting.translation.z + (body.translation.z - painting.translation.z) ) elif rotate == 180: body.translation.x = ( target_painting.translation.x - (body.translation.x - painting.translation.x) ) body.translation.y = ( target_painting.translation.y + (body.translation.y - painting.translation.y) ) body.translation.z = ( target_painting.translation.z - (body.translation.z - painting.translation.z) ) body.rotate_y(PI) body.velocity = body.velocity.rotated(Vector3(0, 1, 0), PI) elif rotate == 90: var diff_x = body.translation.x - painting.translation.x var diff_y = body.translation.y - painting.translation.y var diff_z = body.translation.z - painting.translation.z body.translation.x = target_painting.translation.x + diff_z body.translation.y = target_painting.translation.y + diff_y body.translation.z = target_painting.translation.z - diff_x body.rotate_y(PI / 2) body.velocity = body.velocity.rotated(Vector3(0, 1, 0), PI / 2) elif rotate == 270: var diff_x = body.translation.x - painting.translation.x var diff_y = body.translation.y - painting.translation.y var diff_z = body.translation.z - painting.translation.z body.translation.x = target_painting.translation.x - diff_z body.translation.y = target_painting.translation.y + diff_y body.translation.z = target_painting.translation.z + diff_x body.rotate_y(3 * PI / 2) body.velocity = body.velocity.rotated(Vector3(0, 1, 0), 3 * PI / 2) if !apclient._pilgrimage_allows_paintings: global.sunwarp = 1 body.get_node("pivot/camera/sunwarp_background").visible = false func _dir_to_int(dir): if dir == "north": return 0 elif dir == "west": return 1 elif dir == "south": return 2 elif dir == "east": return 3 return 4