ref: 4ee4bf035129567b1e411f063a3cf2d9221ea0ea
dir: /engine/pokemon/search_party.asm/
_FindPartyMonAboveLevel: ld hl, wPartyMon1Level call FindAboveLevel ret _FindPartyMonAtLeastThatHappy: ld hl, wPartyMon1Happiness call FindAtLeastThatHappy ret _FindPartyMonThatSpecies: ld hl, wPartyMon1Species jp FindThatSpecies _FindPartyMonThatSpeciesYourTrainerID: ld hl, wPartyMon1Species call FindThatSpecies ret z ld a, c ld hl, wPartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [wPlayerID] cp [hl] jr nz, .nope inc hl ld a, [wPlayerID + 1] cp [hl] jr nz, .nope ld a, $1 and a ret .nope xor a ret FindAtLeastThatHappy: ; Sets the bits for the Pokemon that have a happiness greater than or equal to b. ; The lowest bits are used. Sets z if no Pokemon in your party is at least that happy. ld c, $0 ld a, [wPartyCount] ld d, a .loop ld a, d dec a push hl push bc ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes pop bc ld a, b cp [hl] pop hl jr z, .greater_equal jr nc, .lower .greater_equal ld a, c or $1 ld c, a .lower sla c dec d jr nz, .loop call RetroactivelyIgnoreEggs ld a, c and a ret FindAboveLevel: ld c, $0 ld a, [wPartyCount] ld d, a .loop ld a, d dec a push hl push bc ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes pop bc ld a, b cp [hl] pop hl jr c, .greater ld a, c or $1 ld c, a .greater sla c dec d jr nz, .loop call RetroactivelyIgnoreEggs ld a, c and a ret FindThatSpecies: ; Find species b in your party. ; If you have no Pokemon, returns c = -1 and z. ; If that species is in your party, returns its location in c, and nz. ; Otherwise, returns z. ld c, -1 ld hl, wPartySpecies .loop ld a, [hli] cp -1 ret z inc c cp b jr nz, .loop ld a, $1 and a ret RetroactivelyIgnoreEggs: ld e, %11111110 ld hl, wPartySpecies .loop ld a, [hli] cp -1 ret z cp EGG jr nz, .skip_notegg ld a, c and e ld c, a .skip_notegg rlc e jr .loop