126 lines
3.1 KiB
Python
126 lines
3.1 KiB
Python
import functools
|
|
from typing import Dict, Set, List
|
|
|
|
# EN Locale Creature Name to rough depth in meters found at
|
|
all_creatures: Dict[str, int] = {
|
|
"Gasopod": 0,
|
|
"Bladderfish": 0,
|
|
"Ancient Floater": 0,
|
|
"Skyray": 0,
|
|
"Garryfish": 0,
|
|
"Peeper": 0,
|
|
"Shuttlebug": 0,
|
|
"Rabbit Ray": 0,
|
|
"Stalker": 0,
|
|
"Floater": 0,
|
|
"Holefish": 0,
|
|
"Cave Crawler": 0,
|
|
"Hoopfish": 0,
|
|
"Crashfish": 0,
|
|
"Hoverfish": 0,
|
|
"Spadefish": 0,
|
|
"Reefback Leviathan": 0,
|
|
"Reaper Leviathan": 0,
|
|
"Warper": 0,
|
|
"Boomerang": 0,
|
|
"Biter": 200,
|
|
"Sand Shark": 200,
|
|
"Bleeder": 200,
|
|
"Crabsnake": 300,
|
|
"Jellyray": 300,
|
|
"Oculus": 300,
|
|
"Mesmer": 300,
|
|
"Eyeye": 300,
|
|
"Reginald": 400,
|
|
"Sea Treader Leviathan": 400,
|
|
"Crabsquid": 400,
|
|
"Ampeel": 400,
|
|
"Boneshark": 400,
|
|
"Rockgrub": 400,
|
|
"Ghost Leviathan": 500,
|
|
"Ghost Leviathan Juvenile": 500,
|
|
"Spinefish": 600,
|
|
"Blighter": 600,
|
|
"Blood Crawler": 600,
|
|
"Ghostray": 1000,
|
|
"Amoeboid": 1000,
|
|
"River Prowler": 1000,
|
|
"Red Eyeye": 1300,
|
|
"Magmarang": 1300,
|
|
"Crimson Ray": 1300,
|
|
"Lava Larva": 1300,
|
|
"Lava Lizard": 1300,
|
|
"Sea Dragon Leviathan": 1300,
|
|
"Cuddlefish": 300,
|
|
"Sea Emperor Juvenile": 1700,
|
|
}
|
|
|
|
aggressive: Set[str] = {
|
|
"Cave Crawler", # is very easy without Stasis Rifle, but included for consistency
|
|
"Crashfish",
|
|
"Biter",
|
|
"Bleeder",
|
|
"Blighter",
|
|
"Blood Crawler",
|
|
"Mesmer",
|
|
"Reaper Leviathan",
|
|
"Crabsquid",
|
|
"Warper",
|
|
"Crabsnake",
|
|
"Ampeel",
|
|
"Stalker",
|
|
"Sand Shark",
|
|
"Boneshark",
|
|
"Lava Lizard",
|
|
"Sea Dragon Leviathan",
|
|
"River Prowler",
|
|
"Ghost Leviathan Juvenile",
|
|
"Ghost Leviathan"
|
|
}
|
|
|
|
containment: Set[str] = { # creatures that have to be raised from eggs
|
|
"Cuddlefish",
|
|
}
|
|
|
|
hatchable: Set[str] = { # aggressive creatures that can be grown from eggs as alternative to stasis
|
|
"Ampeel", # warning: electric shocks
|
|
"Crabsquid", # warning: electric shocks
|
|
"Crabsnake",
|
|
"Boneshark",
|
|
"Crashfish",
|
|
"Gasopod",
|
|
"Lava Lizard",
|
|
"Mesmer",
|
|
"Sand Shark",
|
|
"Stalker",
|
|
}
|
|
|
|
suffix: str = " Scan"
|
|
|
|
creature_locations: Dict[str, int] = {
|
|
creature + suffix: creature_id for creature_id, creature in enumerate(all_creatures, start=34000)
|
|
}
|
|
|
|
|
|
class Definitions:
|
|
"""Only compute lists if needed and then cache them."""
|
|
|
|
@functools.cached_property
|
|
def all_creatures_presorted(self) -> List[str]:
|
|
return sorted(all_creatures)
|
|
|
|
@functools.cached_property
|
|
def all_creatures_presorted_without_containment(self) -> List[str]:
|
|
return [name for name in self.all_creatures_presorted if name not in containment]
|
|
|
|
@functools.cached_property
|
|
def all_creatures_presorted_without_stasis(self) -> List[str]:
|
|
return [name for name in self.all_creatures_presorted if name not in aggressive or name in hatchable]
|
|
|
|
@functools.cached_property
|
|
def all_creatures_presorted_without_aggressive(self) -> List[str]:
|
|
return [name for name in self.all_creatures_presorted if name not in aggressive]
|
|
|
|
# only singleton needed
|
|
Definitions: Definitions = Definitions()
|