# SPDX-License-Identifier: GPL-3.0
# Copyright (c) 2014-2023 William Edwards <shadowapex@gmail.com>, Benjamin Bean <superman2k5@gmail.com>
from __future__ import annotations
from dataclasses import dataclass
from typing import TYPE_CHECKING
from tuxemon import formula
from tuxemon.technique.techeffect import TechEffect, TechEffectResult
if TYPE_CHECKING:
from tuxemon.monster import Monster
from tuxemon.technique.technique import Technique
[docs]class RecoverEffectResult(TechEffectResult):
pass
[docs]@dataclass
class RecoverEffect(TechEffect):
"""
This effect has a chance to apply the recovering status effect.
"""
name = "recover"
[docs] def apply(
self, tech: Technique, user: Monster, target: Monster
) -> RecoverEffectResult:
if tech.slug == "status_recover":
# avoids NoneType situation and reset the user
if user is None:
user = tech.link
assert user
heal = formula.simple_recover(user)
user.current_hp += heal
else:
heal = formula.simple_recover(user)
user.current_hp += heal
return {
"success": bool(heal),
}
return {"success": False}