def test_double_corrupt(pid: int, otId: int) -> bool: """ Determine if the pid, OTId pair can be used for double corruption. Args: pid (int): PID of pokemon to corrupt. otId (int): OTId of trainer. Returns: bool: True if the pair can be used, False otherwise. """ box_mon = BoxMon() box_mon.personality = pid box_mon.otId = otId box_mon.sub(0).type0.species = 308 box_mon.sub(0).type0.experience = 2195 box_mon.sub(0).type0.friendship = 70 sub1 = box_mon.sub(1).type1 sub1.moves[0] = 33 sub1.moves[1] = 253 sub1.moves[2] = 185 sub1.pp[0] = 35 sub1.pp[1] = 10 sub1.pp[2] = 20 sub2 = box_mon.sub(2).type2 sub2.attackEV = 22 sub2.hpEV = 8 sub3 = box_mon.sub(3).type3 sub3.metLocation = 28 sub3.metLevel = 14 sub3.metGame = 3 sub3.pokeBall = 2 sub3.otGender = 1 sub3.unk = 977594907 box_mon.checksum = box_mon.calc_checksum() sum1 = box_mon.checksum box_mon.encrypt() box_mon.personality |= 0x40000000 box_mon.decrypt() sum2 = box_mon.calc_checksum() box_mon.encrypt() box_mon.otId |= 0x40000000 box_mon.decrypt() sum3 = box_mon.calc_checksum() if sum1 == sum2 == sum3 and box_mon.sub(3).type3.isEgg == 0: box_mon.encrypt() return True return False
def test_double_corrupt(pid, otId): # Test double corruption of Mudkip mon = BoxMon() mon.personality = pid mon.otId = otId mon.sub(0).type0.species = 283 mon.sub(0).type0.experience = 135 mon.sub(0).type0.friendship = 70 sub1 = mon.sub(1).type1 sub1.moves[0] = 33 sub1.moves[1] = 45 sub1.pp[0] = 35 sub1.pp[1] = 40 sub2 = mon.sub(2).type2 sub2.attackEV = 0x31 sub2.hpEV = 0x10 sub3 = mon.sub(3).type3 sub3.metLocation = 16 sub3.metLevel = 5 sub3.metGame = 3 sub3.pokeBall = 4 sub3.otGender = 1 mon.checksum = mon.calc_checksum() sum1 = mon.checksum mon.encrypt() mon.personality |= 0x40000000 mon.decrypt() sum2 = mon.calc_checksum() mon.encrypt() mon.otId |= 0x40000000 mon.decrypt() sum3 = mon.calc_checksum() if sum1 == sum2 == sum3 and mon.sub(3).type3.isEgg == 0: move = mon.sub(1).type1.moves[0] if move != 0x3110: mon.export() return move == 0x3110 return False