Files

37 lines
1.2 KiB
Python

from __future__ import annotations
TYPE_RADIANT = "radiant"
TYPE_NOCTURNAL = "nocturnal"
TYPE_ICE = "ice"
TYPE_GARDEN = "garden"
TYPE_WILDFLOWER = "wildflower"
ALL_TYPES = (TYPE_RADIANT, TYPE_NOCTURNAL, TYPE_ICE, TYPE_GARDEN, TYPE_WILDFLOWER)
# type_beats[X] = the type that X is strong against
TYPE_BEATS = {
TYPE_RADIANT: TYPE_NOCTURNAL,
TYPE_NOCTURNAL: TYPE_ICE,
TYPE_ICE: TYPE_GARDEN,
TYPE_GARDEN: TYPE_WILDFLOWER,
TYPE_WILDFLOWER: TYPE_RADIANT,
}
TYPE_ADVANTAGE_MULT = 1.4 # hitting a type you're strong against
TYPE_DISADVANTAGE_MULT = 0.7 # hitting a type that's strong against you
def type_multiplier(attacker_type: str, defender_type: str) -> float:
"""Damage multiplier between two plant types. Only affects damage."""
if TYPE_BEATS.get(attacker_type) == defender_type:
return TYPE_ADVANTAGE_MULT
if TYPE_BEATS.get(defender_type) == attacker_type:
return TYPE_DISADVANTAGE_MULT
return 1.0
def type_relations(ptype: str):
"""Return (strong_against, weak_against) for a type."""
strong = TYPE_BEATS.get(ptype)
weak = next((k for k, v in TYPE_BEATS.items() if v == ptype), None)
return strong, weak