# 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.technique.techeffect import TechEffect, TechEffectResult
if TYPE_CHECKING:
from tuxemon.monster import Monster
from tuxemon.technique.technique import Technique
[docs]class ReverseEffectResult(TechEffectResult):
pass
[docs]@dataclass
class ReverseEffect(TechEffect):
"""
Reverse "Switch" effect:
it returns the original monster type.
"reverse user"
"reverse target"
"reverse both"
"""
name = "reverse"
objective: str
[docs] def apply(
self, tech: Technique, user: Monster, target: Monster
) -> ReverseEffectResult:
done: bool = False
if self.objective == "user":
user.return_types()
done = True
elif self.objective == "target":
target.return_types()
done = True
elif self.objective == "both":
user.return_types()
target.return_types()
done = True
return {"success": done}