Skip to content

TurnUndead

turn_undead

TurnUndead dataclass

Immutable container for turn undead results.

Each field represents the effectiveness of turning a specific undead type.

Values
  • int: Target number to roll on d20 (lower is better)
  • "T": Automatic success (turn)
  • "D": Destroy undead
  • None: Cannot affect this undead type

Attributes:

Name Type Description
skeleton TurnResult

Turn result for skeletons

zombie TurnResult

Turn result for zombies

ghoul TurnResult

Turn result for ghouls

wight TurnResult

Turn result for wights

wraith TurnResult

Turn result for wraiths

mummy TurnResult

Turn result for mummies

spectre TurnResult

Turn result for spectres

vampire TurnResult

Turn result for vampires

Source code in src/rpgleveler/core/turn_undead.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@dataclass(frozen=True)
class TurnUndead:
    """
    Immutable container for turn undead results.

    Each field represents the effectiveness of turning a specific undead type.

    Values:
        - int: Target number to roll on d20 (lower is better)
        - "T": Automatic success (turn)
        - "D": Destroy undead
        - None: Cannot affect this undead type

    Attributes:
        skeleton: Turn result for skeletons
        zombie: Turn result for zombies
        ghoul: Turn result for ghouls
        wight: Turn result for wights
        wraith: Turn result for wraiths
        mummy: Turn result for mummies
        spectre: Turn result for spectres
        vampire: Turn result for vampires
    """
    skeleton: TurnResult
    zombie: TurnResult
    ghoul: TurnResult
    wight: TurnResult
    wraith: TurnResult
    mummy: TurnResult
    spectre: TurnResult
    vampire: TurnResult

    def to_dict(self) -> dict[str, int | str | None]:
        return vars(self)

    @classmethod
    def from_dict(cls, data: dict[str, int | Literal['T','D'] | None]) -> TurnUndead:
        return cls(**data)