30 lines
No EOL
793 B
Python
30 lines
No EOL
793 B
Python
from ..core.enums.game import LanguageRarity
|
|
from ..core.stuctures.character import Language, Race
|
|
|
|
def get_available_languages(
|
|
race: Race,
|
|
exclude_secret: bool = True
|
|
) -> list[Language]:
|
|
"""
|
|
Returns languages available for a character to learn.
|
|
|
|
Args:
|
|
race: The character's race.
|
|
exclude_secret: If True, excludes secret languages (Druidic, Thieves' Cant).
|
|
|
|
Returns:
|
|
List of learnable languages.
|
|
"""
|
|
from ..entities.languages import ALL_LANGUAGES
|
|
|
|
# Already known languages
|
|
known = set(race.languages)
|
|
|
|
# Available languages
|
|
available = [
|
|
lang for lang in ALL_LANGUAGES
|
|
if lang not in known
|
|
and (not exclude_secret or lang.rarity != LanguageRarity.SECRET)
|
|
]
|
|
|
|
return available |