Skip to content

Commit 70bf850

Browse files
Added further Effects handling from Showdown parsing and fainting (#596)
1 parent 53fa383 commit 70bf850

File tree

4 files changed

+14
-1
lines changed

4 files changed

+14
-1
lines changed

src/poke_env/environment/abstract_battle.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class AbstractBattle(ABC):
3232
"-ohko",
3333
"-resisted",
3434
"-singlemove",
35-
"-singleturn",
3635
"-supereffective",
3736
"-waiting",
3837
"-zbroken",
@@ -705,6 +704,9 @@ def parse_message(self, split_message: List[str]):
705704
elif split_message[1] == "-sidestart":
706705
side, condition = split_message[2:4]
707706
self._side_start(side, condition)
707+
elif split_message[1] in ["-singleturn", "-singlemove"]:
708+
pokemon, effect = split_message[2:4]
709+
self.get_pokemon(pokemon).start_effect(effect.replace("move: ", ""))
708710
elif split_message[1] == "-swapboost":
709711
source, target, stats = split_message[2:5]
710712
source = self.get_pokemon(source)

src/poke_env/environment/pokemon.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ def end_turn(self):
225225
def faint(self):
226226
self._current_hp = 0
227227
self._status = Status.FNT
228+
self._effects = {}
228229

229230
def forme_change(self, species: str):
230231
species = species.split(",")[0]

unit_tests/environment/test_battle.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,11 @@ def test_battle_request_and_interactions(example_request):
324324
for stat, boost in battle.opponent_active_pokemon.boosts.items():
325325
assert boost == -boosts_before_invertion[stat]
326326

327+
battle.parse_message(["", "-singleturn", "p1: Tyranitar", "move: Rage Powder"])
328+
assert Effect.RAGE_POWDER in battle.opponent_active_pokemon.effects
329+
battle.end_turn(1)
330+
assert Effect.RAGE_POWDER not in battle.opponent_active_pokemon.effects
331+
327332
battle.parse_message(
328333
[
329334
"",

unit_tests/environment/test_enumerations.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ def test_effect_end():
120120
if effect.is_volatile_status:
121121
assert effect.ends_on_switch
122122

123+
furret.switch_in()
124+
furret.start_effect("feint")
125+
furret.faint()
126+
assert furret.effects == {}
127+
123128

124129
def test_field_str():
125130
assert str(Field["ELECTRIC_TERRAIN"])

0 commit comments

Comments
 (0)