@@ -378,14 +378,17 @@ def _end_illusion_on(
378378 )
379379 illusionist_mon .set_hp (f"{ illusioned .current_hp } /{ illusioned .max_hp } " )
380380
381- illusioned .was_illusioned ()
381+ illusioned .was_illusioned (self . fields )
382382
383383 return illusionist_mon
384384
385385 def _field_end (self , field_str : str ):
386386 field = Field .from_showdown_message (field_str )
387387 if field is not Field .UNKNOWN :
388- self ._fields .pop (field )
388+ if field is Field .NEUTRALIZING_GAS :
389+ self ._fields .pop (field , 0 )
390+ else :
391+ self ._fields .pop (field )
389392
390393 def field_start (self , field_str : str ):
391394 field = Field .from_showdown_message (field_str )
@@ -676,8 +679,22 @@ def parse_message(self, split_message: List[str]):
676679 self .get_pokemon (pokemon ).boost (stat , - int (amount ))
677680 elif event [1 ] == "-ability" :
678681 pokemon , cause = event [2 :4 ]
679- if len (event ) > 4 and event [4 ].startswith ("[from] move:" ):
682+ if (
683+ len (event ) > 4
684+ and (
685+ event [4 ].startswith ("[from] move:" )
686+ or event [4 ].startswith ("[from] ability: Trace" )
687+ )
688+ ) or (
689+ len (event ) > 5
690+ and (
691+ event [5 ].startswith ("[from] move:" )
692+ or event [5 ].startswith ("[from] ability: Trace" )
693+ )
694+ ):
680695 self .get_pokemon (pokemon ).set_temporary_ability (cause )
696+ elif cause == "Neutralizing Gas" :
697+ self .field_start (cause )
681698 else :
682699 self .get_pokemon (pokemon ).ability = cause
683700 elif split_message [1 ] == "-start" :
@@ -711,6 +728,9 @@ def parse_message(self, split_message: List[str]):
711728 self .get_pokemon (target ).start_effect (effect , event [4 :6 ])
712729 actor = event [6 ].replace ("[of] " , "" )
713730 self .get_pokemon (actor ).set_temporary_ability (event [5 ])
731+ elif effect == "ability: Mummy" :
732+ target = event [5 ].replace ("[of] " , "" )
733+ self .get_pokemon (target ).set_temporary_ability ("mummy" )
714734 elif effect == "ability: Symbiosis" :
715735 self .get_pokemon (event [5 ].replace ("[of] " , "" )).item = event [4 ].replace (
716736 "[item] " , ""
@@ -750,7 +770,10 @@ def parse_message(self, split_message: List[str]):
750770 mon .cure_status ()
751771 elif event [1 ] == "-end" :
752772 pokemon , effect = event [2 :4 ]
753- self .get_pokemon (pokemon ).end_effect (effect )
773+ if effect == "ability: Neutralizing Gas" :
774+ self ._field_end (effect )
775+ else :
776+ self .get_pokemon (pokemon ).end_effect (effect )
754777 elif event [1 ] == "-endability" :
755778 pokemon = event [2 ]
756779 self .get_pokemon (pokemon ).set_temporary_ability (None )
0 commit comments