The Witness: Death Link + Small bug fixes (#1515)
* Fully functional DeathLink implementation. But it's always on right now :D * Death Link options. Last commit: All entity names being sent through slot_data * Tutorial Gate Close logic fix * Improved option tooltip wording * Fixed shuffle_postgame: false not excluding some locations * Link to latest stable client rather than full releases page
This commit is contained in:
		| @@ -158,6 +158,12 @@ class HintAmount(Range): | ||||
|     default = 10 | ||||
|  | ||||
|  | ||||
| class DeathLink(Toggle): | ||||
|     """If on: Whenever you fail a puzzle (with some exceptions), everyone who is also on Death Link dies. | ||||
|     The effect of a "death" in The Witness is a Power Surge.""" | ||||
|     display_name = "Death Link" | ||||
|  | ||||
|  | ||||
| the_witness_options: Dict[str, type] = { | ||||
|     "puzzle_randomization": PuzzleRandomization, | ||||
|     "shuffle_symbols": ShuffleSymbols, | ||||
| @@ -176,6 +182,7 @@ the_witness_options: Dict[str, type] = { | ||||
|     "trap_percentage": TrapPercentage, | ||||
|     "puzzle_skip_amount": PuzzleSkipAmount, | ||||
|     "hint_amount": HintAmount, | ||||
|     "death_link": DeathLink, | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,7 @@ Tutorial (Tutorial) - Outside Tutorial - 0x03629: | ||||
| 158005 - 0x0A3B5 (Back Left) - True - True | ||||
| 158006 - 0x0A3B2 (Back Right) - True - True | ||||
| 158007 - 0x03629 (Gate Open) - 0x002C2 & 0x0A3B5 & 0x0A3B2 - True | ||||
| 158008 - 0x03505 (Gate Close) - 0x2FAF6 - True | ||||
| 158008 - 0x03505 (Gate Close) - 0x2FAF6 & 0x03629 - True | ||||
| 158009 - 0x0C335 (Pillar) - True - Triangles | ||||
| 158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots | ||||
| 159512 - 0x33530 (Cloud EP) - True - True | ||||
|   | ||||
| @@ -14,7 +14,7 @@ Tutorial (Tutorial) - Outside Tutorial - True: | ||||
| 158005 - 0x0A3B5 (Back Left) - True - Dots & Full Dots | ||||
| 158006 - 0x0A3B2 (Back Right) - True - Dots & Full Dots | ||||
| 158007 - 0x03629 (Gate Open) - 0x002C2 - Symmetry & Dots | ||||
| 158008 - 0x03505 (Gate Close) - 0x2FAF6 - False | ||||
| 158008 - 0x03505 (Gate Close) - 0x2FAF6 & 0x03629 - False | ||||
| 158009 - 0x0C335 (Pillar) - True - Triangles | ||||
| 158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots | ||||
| 159512 - 0x33530 (Cloud EP) - True - True | ||||
|   | ||||
| @@ -14,7 +14,7 @@ Tutorial (Tutorial) - Outside Tutorial - 0x03629: | ||||
| 158005 - 0x0A3B5 (Back Left) - True - True | ||||
| 158006 - 0x0A3B2 (Back Right) - True - True | ||||
| 158007 - 0x03629 (Gate Open) - 0x002C2 & 0x0A3B5 & 0x0A3B2 - True | ||||
| 158008 - 0x03505 (Gate Close) - 0x2FAF6 - True | ||||
| 158008 - 0x03505 (Gate Close) - 0x2FAF6 & 0x03629 - True | ||||
| 158009 - 0x0C335 (Pillar) - True - Triangles - True | ||||
| 158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots | ||||
| 159512 - 0x33530 (Cloud EP) - True - True | ||||
|   | ||||
| @@ -67,7 +67,7 @@ class WitnessWorld(World): | ||||
|             'progressive_item_lists': self.items.MULTI_LISTS_BY_CODE, | ||||
|             'obelisk_side_id_to_EPs': self.static_logic.OBELISK_SIDE_ID_TO_EP_HEXES, | ||||
|             'precompleted_puzzles': {int(h, 16) for h in self.player_logic.PRECOMPLETED_LOCATIONS}, | ||||
|             'ep_to_name': self.static_logic.EP_ID_TO_NAME, | ||||
|             'entity_to_name': self.static_logic.ENTITY_ID_TO_NAME, | ||||
|         } | ||||
|  | ||||
|     def generate_early(self): | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| ## Required Software | ||||
|  | ||||
| - [The Witness for 64-bit Windows (e.g. Steam version)](https://store.steampowered.com/app/210970/The_Witness/) | ||||
| - [The Witness Archipelago Randomizer](https://github.com/NewSoupVi/The-Witness-Randomizer-for-Archipelago/releases) | ||||
| - [The Witness Archipelago Randomizer](https://github.com/NewSoupVi/The-Witness-Randomizer-for-Archipelago/releases/latest) | ||||
|  | ||||
| ## Optional Software | ||||
|  | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| 1. Launch The Witness | ||||
| 2. Start a fresh save | ||||
| 3. Launch [The Witness Archipelago Randomizer](https://github.com/NewSoupVi/The-Witness-Randomizer-for-Archipelago) | ||||
| 3. Launch [The Witness Archipelago Randomizer](https://github.com/NewSoupVi/The-Witness-Randomizer-for-Archipelago/releases/latest) | ||||
| 4. Enter the Archipelago address, slot name and password | ||||
| 5. Press "Connect" | ||||
| 6. Enjoy! | ||||
| @@ -23,7 +23,7 @@ To continue an earlier game: | ||||
|  | ||||
| 1. Launch The Witness | ||||
| 2. Load the save you last played this world on, if it's not the one you loaded into automatically | ||||
| 3. Launch [The Witness Archipelago Randomizer](https://github.com/NewSoupVi/The-Witness-Randomizer-for-Archipelago) | ||||
| 3. Launch [The Witness Archipelago Randomizer](https://github.com/NewSoupVi/The-Witness-Randomizer-for-Archipelago/releases/latest) | ||||
| 4. Press "Load Credentials" (or type them in manually) | ||||
| 5. Press "Connect" | ||||
|  | ||||
|   | ||||
| @@ -387,6 +387,9 @@ class StaticWitnessLocations: | ||||
|         "Mountain Floor 2 Near Row 5", | ||||
|         "Mountain Floor 2 Far Row 6", | ||||
|  | ||||
|         "Mountain Floor 2 Light Bridge Controller Near", | ||||
|         "Mountain Floor 2 Light Bridge Controller Far", | ||||
|  | ||||
|         "Mountain Bottom Floor Yellow Bridge EP", | ||||
|         "Mountain Bottom Floor Blue Bridge EP", | ||||
|         "Mountain Floor 2 Pink Bridge EP", | ||||
|   | ||||
| @@ -81,8 +81,6 @@ class StaticWitnessLogicObj: | ||||
|                     full_check_name = check_name | ||||
|                 elif "EP" in check_name: | ||||
|                     location_type = "EP" | ||||
|  | ||||
|                     self.EP_ID_TO_NAME[check_hex] = full_check_name | ||||
|                 else: | ||||
|                     location_type = "General" | ||||
|  | ||||
| @@ -114,6 +112,8 @@ class StaticWitnessLogicObj: | ||||
|                     "panelType": location_type | ||||
|                 } | ||||
|  | ||||
|                 self.ENTITY_ID_TO_NAME[check_hex] = full_check_name | ||||
|  | ||||
|                 self.CHECKS_BY_NAME[self.CHECKS_BY_HEX[check_hex]["checkName"]] = self.CHECKS_BY_HEX[check_hex] | ||||
|                 self.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX[check_hex] = requirement | ||||
|  | ||||
| @@ -132,7 +132,7 @@ class StaticWitnessLogicObj: | ||||
|  | ||||
|         self.EP_TO_OBELISK_SIDE = dict() | ||||
|  | ||||
|         self.EP_ID_TO_NAME = dict() | ||||
|         self.ENTITY_ID_TO_NAME = dict() | ||||
|  | ||||
|         self.read_logic_file(file_path) | ||||
|  | ||||
| @@ -159,7 +159,7 @@ class StaticWitnessLogic: | ||||
|  | ||||
|     EP_TO_OBELISK_SIDE = dict() | ||||
|  | ||||
|     EP_ID_TO_NAME = dict() | ||||
|     ENTITY_ID_TO_NAME = dict() | ||||
|  | ||||
|     def parse_items(self): | ||||
|         """ | ||||
| @@ -235,4 +235,4 @@ class StaticWitnessLogic: | ||||
|  | ||||
|         self.EP_TO_OBELISK_SIDE.update(self.sigma_normal.EP_TO_OBELISK_SIDE) | ||||
|  | ||||
|         self.EP_ID_TO_NAME.update(self.sigma_normal.EP_ID_TO_NAME) | ||||
|         self.ENTITY_ID_TO_NAME.update(self.sigma_normal.ENTITY_ID_TO_NAME) | ||||
		Reference in New Issue
	
	Block a user
	 NewSoupVi
					NewSoupVi