KH2: Fix determinism by using tuples instead of sets (#4548)

This commit is contained in:
Exempt-Medic 2025-01-27 11:06:10 -05:00 committed by GitHub
parent 41055cd963
commit 8c5592e406
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 88 additions and 88 deletions

View File

@ -1032,99 +1032,99 @@ def connect_regions(self):
multiworld = self.multiworld multiworld = self.multiworld
player = self.player player = self.player
# connecting every first visit to the GoA # connecting every first visit to the GoA
KH2RegionConnections: typing.Dict[str, typing.Set[str]] = { KH2RegionConnections: typing.Dict[str, typing.Tuple[str]] = {
"Menu": {RegionName.GoA}, "Menu": (RegionName.GoA,),
RegionName.GoA: {RegionName.Sp, RegionName.Pr, RegionName.Tt, RegionName.Oc, RegionName.Ht, RegionName.GoA: (RegionName.Sp, RegionName.Pr, RegionName.Tt, RegionName.Oc, RegionName.Ht,
RegionName.LoD, RegionName.LoD,
RegionName.Twtnw, RegionName.Bc, RegionName.Ag, RegionName.Pl, RegionName.Hb, RegionName.Twtnw, RegionName.Bc, RegionName.Ag, RegionName.Pl, RegionName.Hb,
RegionName.Dc, RegionName.Stt, RegionName.Dc, RegionName.Stt,
RegionName.Ha1, RegionName.Keyblade, RegionName.LevelsVS1, RegionName.Ha1, RegionName.Keyblade, RegionName.LevelsVS1,
RegionName.Valor, RegionName.Wisdom, RegionName.Limit, RegionName.Master, RegionName.Valor, RegionName.Wisdom, RegionName.Limit, RegionName.Master,
RegionName.Final, RegionName.Summon, RegionName.AtlanticaSongOne}, RegionName.Final, RegionName.Summon, RegionName.AtlanticaSongOne),
RegionName.LoD: {RegionName.ShanYu}, RegionName.LoD: (RegionName.ShanYu,),
RegionName.ShanYu: {RegionName.LoD2}, RegionName.ShanYu: (RegionName.LoD2,),
RegionName.LoD2: {RegionName.AnsemRiku}, RegionName.LoD2: (RegionName.AnsemRiku,),
RegionName.AnsemRiku: {RegionName.StormRider}, RegionName.AnsemRiku: (RegionName.StormRider,),
RegionName.StormRider: {RegionName.DataXigbar}, RegionName.StormRider: (RegionName.DataXigbar,),
RegionName.Ag: {RegionName.TwinLords}, RegionName.Ag: (RegionName.TwinLords,),
RegionName.TwinLords: {RegionName.Ag2}, RegionName.TwinLords: (RegionName.Ag2,),
RegionName.Ag2: {RegionName.GenieJafar}, RegionName.Ag2: (RegionName.GenieJafar,),
RegionName.GenieJafar: {RegionName.DataLexaeus}, RegionName.GenieJafar: (RegionName.DataLexaeus,),
RegionName.Dc: {RegionName.Tr}, RegionName.Dc: (RegionName.Tr,),
RegionName.Tr: {RegionName.OldPete}, RegionName.Tr: (RegionName.OldPete,),
RegionName.OldPete: {RegionName.FuturePete}, RegionName.OldPete: (RegionName.FuturePete,),
RegionName.FuturePete: {RegionName.Terra, RegionName.DataMarluxia}, RegionName.FuturePete: (RegionName.Terra, RegionName.DataMarluxia),
RegionName.Ha1: {RegionName.Ha2}, RegionName.Ha1: (RegionName.Ha2,),
RegionName.Ha2: {RegionName.Ha3}, RegionName.Ha2: (RegionName.Ha3,),
RegionName.Ha3: {RegionName.Ha4}, RegionName.Ha3: (RegionName.Ha4,),
RegionName.Ha4: {RegionName.Ha5}, RegionName.Ha4: (RegionName.Ha5,),
RegionName.Ha5: {RegionName.Ha6}, RegionName.Ha5: (RegionName.Ha6,),
RegionName.Pr: {RegionName.Barbosa}, RegionName.Pr: (RegionName.Barbosa,),
RegionName.Barbosa: {RegionName.Pr2}, RegionName.Barbosa: (RegionName.Pr2,),
RegionName.Pr2: {RegionName.GrimReaper1}, RegionName.Pr2: (RegionName.GrimReaper1,),
RegionName.GrimReaper1: {RegionName.GrimReaper2}, RegionName.GrimReaper1: (RegionName.GrimReaper2,),
RegionName.GrimReaper2: {RegionName.DataLuxord}, RegionName.GrimReaper2: (RegionName.DataLuxord,),
RegionName.Oc: {RegionName.Cerberus}, RegionName.Oc: (RegionName.Cerberus,),
RegionName.Cerberus: {RegionName.OlympusPete}, RegionName.Cerberus: (RegionName.OlympusPete,),
RegionName.OlympusPete: {RegionName.Hydra}, RegionName.OlympusPete: (RegionName.Hydra,),
RegionName.Hydra: {RegionName.OcPainAndPanicCup, RegionName.OcCerberusCup, RegionName.Oc2}, RegionName.Hydra: (RegionName.OcPainAndPanicCup, RegionName.OcCerberusCup, RegionName.Oc2),
RegionName.Oc2: {RegionName.Hades}, RegionName.Oc2: (RegionName.Hades,),
RegionName.Hades: {RegionName.Oc2TitanCup, RegionName.Oc2GofCup, RegionName.DataZexion}, RegionName.Hades: (RegionName.Oc2TitanCup, RegionName.Oc2GofCup, RegionName.DataZexion),
RegionName.Oc2GofCup: {RegionName.HadesCups}, RegionName.Oc2GofCup: (RegionName.HadesCups,),
RegionName.Bc: {RegionName.Thresholder}, RegionName.Bc: (RegionName.Thresholder,),
RegionName.Thresholder: {RegionName.Beast}, RegionName.Thresholder: (RegionName.Beast,),
RegionName.Beast: {RegionName.DarkThorn}, RegionName.Beast: (RegionName.DarkThorn,),
RegionName.DarkThorn: {RegionName.Bc2}, RegionName.DarkThorn: (RegionName.Bc2,),
RegionName.Bc2: {RegionName.Xaldin}, RegionName.Bc2: (RegionName.Xaldin,),
RegionName.Xaldin: {RegionName.DataXaldin}, RegionName.Xaldin: (RegionName.DataXaldin,),
RegionName.Sp: {RegionName.HostileProgram}, RegionName.Sp: (RegionName.HostileProgram,),
RegionName.HostileProgram: {RegionName.Sp2}, RegionName.HostileProgram: (RegionName.Sp2,),
RegionName.Sp2: {RegionName.Mcp}, RegionName.Sp2: (RegionName.Mcp,),
RegionName.Mcp: {RegionName.DataLarxene}, RegionName.Mcp: (RegionName.DataLarxene,),
RegionName.Ht: {RegionName.PrisonKeeper}, RegionName.Ht: (RegionName.PrisonKeeper,),
RegionName.PrisonKeeper: {RegionName.OogieBoogie}, RegionName.PrisonKeeper: (RegionName.OogieBoogie,),
RegionName.OogieBoogie: {RegionName.Ht2}, RegionName.OogieBoogie: (RegionName.Ht2,),
RegionName.Ht2: {RegionName.Experiment}, RegionName.Ht2: (RegionName.Experiment,),
RegionName.Experiment: {RegionName.DataVexen}, RegionName.Experiment: (RegionName.DataVexen,),
RegionName.Hb: {RegionName.Hb2}, RegionName.Hb: (RegionName.Hb2,),
RegionName.Hb2: {RegionName.CoR, RegionName.HBDemyx}, RegionName.Hb2: (RegionName.CoR, RegionName.HBDemyx),
RegionName.HBDemyx: {RegionName.ThousandHeartless}, RegionName.HBDemyx: (RegionName.ThousandHeartless,),
RegionName.ThousandHeartless: {RegionName.Mushroom13, RegionName.DataDemyx, RegionName.Sephi}, RegionName.ThousandHeartless: (RegionName.Mushroom13, RegionName.DataDemyx, RegionName.Sephi),
RegionName.CoR: {RegionName.CorFirstFight}, RegionName.CoR: (RegionName.CorFirstFight,),
RegionName.CorFirstFight: {RegionName.CorSecondFight}, RegionName.CorFirstFight: (RegionName.CorSecondFight,),
RegionName.CorSecondFight: {RegionName.Transport}, RegionName.CorSecondFight: (RegionName.Transport,),
RegionName.Pl: {RegionName.Scar}, RegionName.Pl: (RegionName.Scar,),
RegionName.Scar: {RegionName.Pl2}, RegionName.Scar: (RegionName.Pl2,),
RegionName.Pl2: {RegionName.GroundShaker}, RegionName.Pl2: (RegionName.GroundShaker,),
RegionName.GroundShaker: {RegionName.DataSaix}, RegionName.GroundShaker: (RegionName.DataSaix,),
RegionName.Stt: {RegionName.TwilightThorn}, RegionName.Stt: (RegionName.TwilightThorn,),
RegionName.TwilightThorn: {RegionName.Axel1}, RegionName.TwilightThorn: (RegionName.Axel1,),
RegionName.Axel1: {RegionName.Axel2}, RegionName.Axel1: (RegionName.Axel2,),
RegionName.Axel2: {RegionName.DataRoxas}, RegionName.Axel2: (RegionName.DataRoxas,),
RegionName.Tt: {RegionName.Tt2}, RegionName.Tt: (RegionName.Tt2,),
RegionName.Tt2: {RegionName.Tt3}, RegionName.Tt2: (RegionName.Tt3,),
RegionName.Tt3: {RegionName.DataAxel}, RegionName.Tt3: (RegionName.DataAxel,),
RegionName.Twtnw: {RegionName.Roxas}, RegionName.Twtnw: (RegionName.Roxas,),
RegionName.Roxas: {RegionName.Xigbar}, RegionName.Roxas: (RegionName.Xigbar,),
RegionName.Xigbar: {RegionName.Luxord}, RegionName.Xigbar: (RegionName.Luxord,),
RegionName.Luxord: {RegionName.Saix}, RegionName.Luxord: (RegionName.Saix,),
RegionName.Saix: {RegionName.Twtnw2}, RegionName.Saix: (RegionName.Twtnw2,),
RegionName.Twtnw2: {RegionName.Xemnas}, RegionName.Twtnw2: (RegionName.Xemnas,),
RegionName.Xemnas: {RegionName.ArmoredXemnas, RegionName.DataXemnas}, RegionName.Xemnas: (RegionName.ArmoredXemnas, RegionName.DataXemnas),
RegionName.ArmoredXemnas: {RegionName.ArmoredXemnas2}, RegionName.ArmoredXemnas: (RegionName.ArmoredXemnas2,),
RegionName.ArmoredXemnas2: {RegionName.FinalXemnas}, RegionName.ArmoredXemnas2: (RegionName.FinalXemnas,),
RegionName.LevelsVS1: {RegionName.LevelsVS3}, RegionName.LevelsVS1: (RegionName.LevelsVS3,),
RegionName.LevelsVS3: {RegionName.LevelsVS6}, RegionName.LevelsVS3: (RegionName.LevelsVS6,),
RegionName.LevelsVS6: {RegionName.LevelsVS9}, RegionName.LevelsVS6: (RegionName.LevelsVS9,),
RegionName.LevelsVS9: {RegionName.LevelsVS12}, RegionName.LevelsVS9: (RegionName.LevelsVS12,),
RegionName.LevelsVS12: {RegionName.LevelsVS15}, RegionName.LevelsVS12: (RegionName.LevelsVS15,),
RegionName.LevelsVS15: {RegionName.LevelsVS18}, RegionName.LevelsVS15: (RegionName.LevelsVS18,),
RegionName.LevelsVS18: {RegionName.LevelsVS21}, RegionName.LevelsVS18: (RegionName.LevelsVS21,),
RegionName.LevelsVS21: {RegionName.LevelsVS24}, RegionName.LevelsVS21: (RegionName.LevelsVS24,),
RegionName.LevelsVS24: {RegionName.LevelsVS26}, RegionName.LevelsVS24: (RegionName.LevelsVS26,),
RegionName.AtlanticaSongOne: {RegionName.AtlanticaSongTwo}, RegionName.AtlanticaSongOne: (RegionName.AtlanticaSongTwo,),
RegionName.AtlanticaSongTwo: {RegionName.AtlanticaSongThree}, RegionName.AtlanticaSongTwo: (RegionName.AtlanticaSongThree,),
RegionName.AtlanticaSongThree: {RegionName.AtlanticaSongFour}, RegionName.AtlanticaSongThree: (RegionName.AtlanticaSongFour,),
} }
for source, target in KH2RegionConnections.items(): for source, target in KH2RegionConnections.items():