Migrate Terraria to new options API (#3414)
This commit is contained in:
		| @@ -25,7 +25,7 @@ from .Checks import ( | ||||
|     armor_minions, | ||||
|     accessory_minions, | ||||
| ) | ||||
| from .Options import options | ||||
| from .Options import TerrariaOptions | ||||
|  | ||||
|  | ||||
| class TerrariaWeb(WebWorld): | ||||
| @@ -49,7 +49,8 @@ class TerrariaWorld(World): | ||||
|  | ||||
|     game = "Terraria" | ||||
|     web = TerrariaWeb() | ||||
|     option_definitions = options | ||||
|     options_dataclass = TerrariaOptions | ||||
|     options: TerrariaOptions | ||||
|  | ||||
|     # data_version is used to signal that items, locations or their names | ||||
|     # changed. Set this to 0 during development so other games' clients do not | ||||
| @@ -70,7 +71,7 @@ class TerrariaWorld(World): | ||||
|     goal_locations: Set[str] | ||||
|  | ||||
|     def generate_early(self) -> None: | ||||
|         goal, goal_locations = goals[self.multiworld.goal[self.player].value] | ||||
|         goal, goal_locations = goals[self.options.goal.value] | ||||
|         ter_goals = {} | ||||
|         goal_items = set() | ||||
|         for location in goal_locations: | ||||
| @@ -79,7 +80,7 @@ class TerrariaWorld(World): | ||||
|             ter_goals[item] = location | ||||
|             goal_items.add(item) | ||||
|  | ||||
|         achievements = self.multiworld.achievements[self.player].value | ||||
|         achievements = self.options.achievements.value | ||||
|         location_count = 0 | ||||
|         locations = [] | ||||
|         for rule, flags, _, _ in rules[:goal]: | ||||
| @@ -89,7 +90,7 @@ class TerrariaWorld(World): | ||||
|                 or (achievements < 2 and "Grindy" in flags) | ||||
|                 or (achievements < 3 and "Fishing" in flags) | ||||
|                 or ( | ||||
|                     rule == "Zenith" and self.multiworld.goal[self.player].value != 11 | ||||
|                     rule == "Zenith" and self.options.goal.value != 11 | ||||
|                 )  # Bad hardcoding | ||||
|             ): | ||||
|                 continue | ||||
| @@ -123,7 +124,7 @@ class TerrariaWorld(World): | ||||
|                 # Event | ||||
|                 items.append(rule) | ||||
|  | ||||
|         extra_checks = self.multiworld.fill_extra_checks_with[self.player].value | ||||
|         extra_checks = self.options.fill_extra_checks_with.value | ||||
|         ordered_rewards = [ | ||||
|             reward | ||||
|             for reward in labels["ordered"] | ||||
| @@ -241,7 +242,7 @@ class TerrariaWorld(World): | ||||
|             elif condition == "calamity": | ||||
|                 return sign == self.calamity | ||||
|             elif condition == "grindy": | ||||
|                 return sign == (self.multiworld.achievements[self.player].value >= 2) | ||||
|                 return sign == (self.options.achievements.value >= 2) | ||||
|             elif condition == "pickaxe": | ||||
|                 if type(arg) is not int: | ||||
|                     raise Exception("@pickaxe requires an integer argument") | ||||
| @@ -340,6 +341,6 @@ class TerrariaWorld(World): | ||||
|     def fill_slot_data(self) -> Dict[str, object]: | ||||
|         return { | ||||
|             "goal": list(self.goal_locations), | ||||
|             "achievements": self.multiworld.achievements[self.player].value, | ||||
|             "deathlink": bool(self.multiworld.death_link[self.player]), | ||||
|             "achievements": self.options.achievements.value, | ||||
|             "deathlink": bool(self.options.death_link), | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Seldom
					Seldom