22 lines
570 B
Python
22 lines
570 B
Python
from dataclasses import dataclass, field
|
|
from functools import cached_property
|
|
from typing import Iterable, Tuple
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Skill:
|
|
name: str
|
|
has_mastery: bool = field(kw_only=True)
|
|
|
|
@cached_property
|
|
def mastery_name(self) -> str:
|
|
return f"{self.name} Mastery"
|
|
|
|
@cached_property
|
|
def level_name(self) -> str:
|
|
return f"{self.name} Level"
|
|
|
|
@cached_property
|
|
def level_names_by_level(self) -> Iterable[Tuple[int, str]]:
|
|
return tuple((level, f"Level {level} {self.name}") for level in range(1, 11))
|