about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Archipelago/load.gd6
-rw-r--r--util/generate_gamedata.rb21
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[]
30painting_output = {} 30painting_output = {}
31door_items_by_progressive_id = {} 31door_items_by_progressive_id = {}
32panel_items_by_progressive_id = {} 32panel_items_by_progressive_id = {}
33panel_location_ids = []
34solve_index_by_location = {}
33 35
34ids_config = YAML.load_file(idspath) 36ids_config = YAML.load_file(idspath)
35
36config = YAML.load_file(configpath) 37config = YAML.load_file(configpath)
38
39config.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
46end
47
48panel_location_ids.sort.each_with_index do |location_id, index|
49 solve_index_by_location[location_id] = index
50end
51
37config.each do |room_name, room_data| 52config.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"]]