diff options
-rw-r--r-- | Archipelago/load.gd | 6 | ||||
-rw-r--r-- | util/generate_gamedata.rb | 21 |
2 files changed, 19 insertions, 8 deletions
diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 8510008..57c49a3 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
@@ -569,7 +569,6 @@ func _load(): | |||
569 | # Attach a script to every panel so that we can do things like conditionally | 569 | # Attach a script to every panel so that we can do things like conditionally |
570 | # disable them. | 570 | # disable them. |
571 | var panel_script = apclient.SCRIPT_panel | 571 | var panel_script = apclient.SCRIPT_panel |
572 | var panel_index = 0 | ||
573 | for panel in gamedata.panels: | 572 | for panel in gamedata.panels: |
574 | var panel_node | 573 | var panel_node |
575 | if panel["id"].begins_with("EndPanel"): | 574 | if panel["id"].begins_with("EndPanel"): |
@@ -579,14 +578,13 @@ func _load(): | |||
579 | var script_instance = panel_script.new() | 578 | var script_instance = panel_script.new() |
580 | script_instance.name = "AP_Panel" | 579 | script_instance.name = "AP_Panel" |
581 | script_instance.data = panel | 580 | script_instance.data = panel |
582 | script_instance.solve_index = panel_index | 581 | script_instance.solve_index = panel["solve_index"] |
583 | if apclient._panel_door_shuffle and gamedata.mentioned_panels.has(panel["id"]): | 582 | if apclient._panel_door_shuffle and gamedata.mentioned_panels.has(panel["id"]): |
584 | script_instance.locked = true | 583 | script_instance.locked = true |
585 | panel_node.add_child(script_instance) | 584 | panel_node.add_child(script_instance) |
586 | apclient.connect("evaluate_solvability", script_instance, "evaluate_solvability") | 585 | apclient.connect("evaluate_solvability", script_instance, "evaluate_solvability") |
587 | 586 | ||
588 | apclient._panelsBySolveIndex[panel_index] = panel["id"] | 587 | apclient._panelsBySolveIndex[panel["solve_index"]] = panel["id"] |
589 | panel_index += 1 | ||
590 | 588 | ||
591 | # Hook up the goal panel. | 589 | # Hook up the goal panel. |
592 | if apclient._victory_condition == apclient.kTHE_MASTER: | 590 | if apclient._victory_condition == apclient.kTHE_MASTER: |
diff --git a/util/generate_gamedata.rb b/util/generate_gamedata.rb index 83099ad..7db06ca 100644 --- a/util/generate_gamedata.rb +++ b/util/generate_gamedata.rb | |||
@@ -30,10 +30,25 @@ mentioned_warps = Set[] | |||
30 | painting_output = {} | 30 | painting_output = {} |
31 | door_items_by_progressive_id = {} | 31 | door_items_by_progressive_id = {} |
32 | panel_items_by_progressive_id = {} | 32 | panel_items_by_progressive_id = {} |
33 | panel_location_ids = [] | ||
34 | solve_index_by_location = {} | ||
33 | 35 | ||
34 | ids_config = YAML.load_file(idspath) | 36 | ids_config = YAML.load_file(idspath) |
35 | |||
36 | config = YAML.load_file(configpath) | 37 | config = YAML.load_file(configpath) |
38 | |||
39 | config.each do |room_name, room_data| | ||
40 | if room_data.include? "panels" | ||
41 | room_data["panels"].each do |panel_name, panel| | ||
42 | location_id = ids_config["panels"][room_name][panel_name] | ||
43 | panel_location_ids << location_id | ||
44 | end | ||
45 | end | ||
46 | end | ||
47 | |||
48 | panel_location_ids.sort.each_with_index do |location_id, index| | ||
49 | solve_index_by_location[location_id] = index | ||
50 | end | ||
51 | |||
37 | config.each do |room_name, room_data| | 52 | config.each do |room_name, room_data| |
38 | if room_data.include? "panels" | 53 | if room_data.include? "panels" |
39 | room_data["panels"].each do |panel_name, panel| | 54 | room_data["panels"].each do |panel_name, panel| |
@@ -45,6 +60,7 @@ config.each do |room_name, room_data| | |||
45 | ret = {} | 60 | ret = {} |
46 | ret["id"] = "\"#{panel["id"]}\"" | 61 | ret["id"] = "\"#{panel["id"]}\"" |
47 | ret["loc"] = location_id | 62 | ret["loc"] = location_id |
63 | ret["solve_index"] = solve_index_by_location[location_id] | ||
48 | if panel.include? "colors" | 64 | if panel.include? "colors" |
49 | if panel["colors"].kind_of? String | 65 | if panel["colors"].kind_of? String |
50 | ret["color"] = "[\"#{panel["colors"]}\"]" | 66 | ret["color"] = "[\"#{panel["colors"]}\"]" |
@@ -73,9 +89,6 @@ config.each do |room_name, room_data| | |||
73 | if panel.include? "achievement" | 89 | if panel.include? "achievement" |
74 | ret["achievement"] = "\"#{panel["achievement"]}\"" | 90 | ret["achievement"] = "\"#{panel["achievement"]}\"" |
75 | end | 91 | end |
76 | if panel.include? "hunt" and panel["hunt"] | ||
77 | ret["hunt"] = "true" | ||
78 | end | ||
79 | panel_output << ret | 92 | panel_output << ret |
80 | 93 | ||
81 | panel_ids_by_location_id[location_id] = [panel["id"]] | 94 | panel_ids_by_location_id[location_id] = [panel["id"]] |