From: Eevee Date: Thu, 8 Jul 2010 05:29:30 +0000 (-0700) Subject: Added an is_shiny accessor to Pokémon structs. X-Git-Tag: veekun-promotions/2010070701^0 X-Git-Url: http://git.veekun.com/zzz-pokedex.git/commitdiff_plain/32fe4eedee350ddca0c66f2404967cc73f89d957?ds=sidebyside Added an is_shiny accessor to Pokémon structs. --- diff --git a/pokedex/struct/__init__.py b/pokedex/struct/__init__.py index d1142d0..d55dda7 100644 --- a/pokedex/struct/__init__.py +++ b/pokedex/struct/__init__.py @@ -76,6 +76,24 @@ class SaveFilePokemon(object): return struct.pack(struct_def, *shuffled) + ### Delicious data + + @property + def is_shiny(self): + u"""Returns true iff this Pokémon is shiny.""" + # See http://bulbapedia.bulbagarden.net/wiki/Personality#Shininess + # But don't see it too much, because the above is super over + # complicated. Do this instead! + personality_msdw = self.structure.personality >> 16 + personality_lsdw = self.structure.personality & 0xffff + return ( + self.structure.original_trainer_id + ^ self.structure.original_trainer_secret_id + ^ personality_msdw + ^ personality_lsdw + ) < 8 + + ### Utility methods shuffle_orders = list( permutations(range(4)) )