diff options
Diffstat (limited to 'engine/move_mon.asm')
-rwxr-xr-x | engine/move_mon.asm | 151 |
1 files changed, 97 insertions, 54 deletions
diff --git a/engine/move_mon.asm b/engine/move_mon.asm index 0c0694851..0a4465f97 100755 --- a/engine/move_mon.asm +++ b/engine/move_mon.asm @@ -1,5 +1,5 @@ TryAddMonToParty: ; d88c -; Check if to copy wild Pkmn or generate new Pkmn +; Check if to copy wild mon or generate a new one ; Whose is it? ld de, wPartyCount ld a, [wMonType] @@ -47,6 +47,7 @@ TryAddMonToParty: ; d88c ld hl, wPlayerName ld bc, NAME_LENGTH call CopyBytes + ; Only initialize the nickname for party mon ld a, [wMonType] and a jr nz, .skipnickname @@ -76,24 +77,34 @@ TryAddMonToParty: ; d88c ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes GeneratePartyMonStats: ; d906 +; wBattleMode specifies whether it's a wild mon or not. +; wMonType specifies whether it's an opposing mon or not. +; wCurPartySpecies/wCurPartyLevel specify the species and level. +; hl points to the wPartyMon struct to fill. + ld e, l ld d, h push hl + + ; Initialize the species ld a, [wCurPartySpecies] ld [wCurSpecies], a call GetBaseData ld a, [wBaseDexNo] ld [de], a inc de + + ; Copy the item if it's a wild mon ld a, [wBattleMode] and a ld a, $0 jr z, .skipitem ld a, [wEnemyMonItem] - .skipitem ld [de], a inc de + + ; Copy the moves if it's a wild mon push de ld h, d ld l, e @@ -124,15 +135,19 @@ GeneratePartyMonStats: ; d906 .next pop de -rept 4 +rept NUM_MOVES inc de endr + + ; Initialize ID. ld a, [wPlayerID] ld [de], a inc de ld a, [wPlayerID + 1] ld [de], a inc de + + ; Initialize Exp. push de ld a, [wCurPartyLevel] ld d, a @@ -147,24 +162,28 @@ endr ld a, [hProduct + 3] ld [de], a inc de + + ; Initialize stat experience. xor a - ld b, $a + ld b, MON_DVS - MON_STAT_EXP .loop ld [de], a inc de dec b jr nz, .loop + pop hl push hl ld a, [wMonType] and $f - jr z, .generateDVs + jr z, .registerpokedex + push hl farcall GetTrainerDVs pop hl - jr .initializetrainermonstats + jr .initializeDVs -.generateDVs +.registerpokedex ld a, [wCurPartySpecies] ld [wd265], a dec a @@ -174,23 +193,26 @@ endr dec a call SetSeenAndCaughtMon pop de + pop hl push hl ld a, [wBattleMode] and a - jr nz, .copywildmonstats + jr nz, .copywildmonDVs + call Random ld b, a call Random ld c, a - -.initializetrainermonstats +.initializeDVs ld a, b ld [de], a inc de ld a, c ld [de], a inc de + + ; Initialize PP. push hl push de inc hl @@ -201,39 +223,52 @@ endr rept 4 inc de endr - ld a, 70 + + ; Initialize happiness. + ld a, BASE_HAPPINESS ld [de], a inc de + xor a + ; PokerusStatus ld [de], a inc de + ; CaughtData/CaughtTime/CaughtLevel ld [de], a inc de + ; CaughtGender/CaughtLocation ld [de], a inc de + + ; Initialize level. ld a, [wCurPartyLevel] ld [de], a inc de + xor a + ; Status ld [de], a inc de + ; Unused ld [de], a inc de - ld bc, 10 + + ; Initialize HP. + ld bc, MON_STAT_EXP - 1 add hl, bc - ld a, $1 + ld a, 1 ld c, a ld b, FALSE - call CalcPkmnStatC + call CalcMonStatC ld a, [hProduct + 2] ld [de], a inc de ld a, [hProduct + 3] ld [de], a inc de - jr .next2 + jr .initstats -.copywildmonstats +.copywildmonDVs ld a, [wEnemyMonDVs] ld [de], a inc de @@ -252,19 +287,27 @@ endr jr nz, .wildmonpploop pop hl + ; Initialize happiness. ld a, BASE_HAPPINESS ld [de], a inc de + xor a + ; PokerusStatus ld [de], a inc de + ; CaughtData/CaughtTime/CaughtLevel ld [de], a inc de + ; CaughtGender/CaughtLocation ld [de], a inc de + + ; Initialize level. ld a, [wCurPartyLevel] ld [de], a inc de + ld hl, wEnemyMonStatus ; Copy wEnemyMonStatus ld a, [hli] @@ -282,24 +325,24 @@ endr ld [de], a inc de -.next2 +.initstats ld a, [wBattleMode] dec a jr nz, .generatestats ld hl, wEnemyMonMaxHP - ld bc, 2 * 6 ; MaxHP + 5 Stats + ld bc, PARTYMON_STRUCT_LENGTH - MON_MAXHP call CopyBytes pop hl - jr .next3 + jr .registerunowndex .generatestats pop hl ld bc, MON_STAT_EXP - 1 add hl, bc - ld b, $0 ; if b = 1, then stat calculation takes stat exp into account. - call CalcPkmnStats + ld b, FALSE + call CalcMonStats -.next3 +.registerunowndex ld a, [wMonType] and $f jr nz, .done @@ -434,12 +477,12 @@ AddTempmonToParty: ; da96 and a ret -SendGetPkmnIntoFromBox: ; db3f -; Sents/Gets Pkmn into/from Box depending on Parameter -; wPokemonWithdrawDepositParameter == 0: get Pkmn into Party -; wPokemonWithdrawDepositParameter == 1: sent Pkmn into Box -; wPokemonWithdrawDepositParameter == 2: get Pkmn from DayCare -; wPokemonWithdrawDepositParameter == 3: put Pkmn into DayCare +SendGetMonIntoFromBox: ; db3f +; Sents/Gets mon into/from Box depending on Parameter +; wPokemonWithdrawDepositParameter == 0: get mon into Party +; wPokemonWithdrawDepositParameter == 1: sent mon into Box +; wPokemonWithdrawDepositParameter == 2: get mon from DayCare +; wPokemonWithdrawDepositParameter == 3: put mon into DayCare ld a, BANK(sBoxCount) call GetSRAMBank @@ -452,7 +495,7 @@ SendGetPkmnIntoFromBox: ; db3f ld hl, wBreedMon1Species jr z, .breedmon - ; we want to sent a Pkmn into the Box + ; we want to sent a mon into the Box ; so check if there's enough space ld hl, sBoxCount ld a, [hl] @@ -597,7 +640,7 @@ SendGetPkmnIntoFromBox: ; db3f srl a add $2 ld [wMonType], a - predef CopyPkmnToTempMon + predef CopyMonToTempMon callfar CalcLevel ld a, d ld [wCurPartyLevel], a @@ -616,8 +659,8 @@ SendGetPkmnIntoFromBox: ; db3f add hl, bc push bc - ld b, $1 - call CalcPkmnStats + ld b, TRUE + call CalcMonStats pop bc ld a, [wPokemonWithdrawDepositParameter] @@ -732,7 +775,7 @@ RestorePPofDepositedPokemon: ; dcb6 ret ; dd21 -RetrievePokemonFromDayCareMan: ; dd21 +RetrieveMonFromDayCareMan: ; dd21 ld a, [wBreedMon1Species] ld [wCurPartySpecies], a ld de, SFX_TRANSACTION @@ -745,10 +788,10 @@ RetrievePokemonFromDayCareMan: ; dd21 ld [wCurPartyLevel], a xor a ld [wPokemonWithdrawDepositParameter], a - jp Functiondd64 + jp RetrieveBreedmon ; dd42 -RetrievePokemonFromDayCareLady: ; dd42 +RetrieveMonFromDayCareLady: ; dd42 ld a, [wBreedMon2Species] ld [wCurPartySpecies], a ld de, SFX_TRANSACTION @@ -761,10 +804,10 @@ RetrievePokemonFromDayCareLady: ; dd42 ld [wCurPartyLevel], a ld a, PC_DEPOSIT ld [wPokemonWithdrawDepositParameter], a - jp Functiondd64 + jp RetrieveBreedmon ; dd64 -Functiondd64: ; dd64 +RetrieveBreedmon: ; dd64 ld hl, wPartyCount ld a, [hl] cp PARTY_LENGTH @@ -810,12 +853,12 @@ Functiondd64: ; dd64 pop hl call CopyBytes push hl - call Functionde1a + call GetLastPartyMon pop hl ld bc, BOXMON_STRUCT_LENGTH call CopyBytes call GetBaseData - call Functionde1a + call GetLastPartyMon ld b, d ld c, e ld hl, MON_LEVEL @@ -829,8 +872,8 @@ Functiondd64: ; dd64 ld hl, $a add hl, bc push bc - ld b, $1 - call CalcPkmnStats + ld b, TRUE + call CalcMonStats ld hl, wPartyMon1Moves ld a, [wPartyCount] dec a @@ -861,7 +904,7 @@ Functiondd64: ; dd64 ret ; de1a -Functionde1a: ; de1a +GetLastPartyMon: ; de1a ld a, [wPartyCount] dec a ld hl, wPartyMon1Species @@ -875,7 +918,7 @@ Functionde1a: ; de1a DepositMonWithDayCareMan: ; de2a ld de, wBreedMon1Nick call DepositBreedmon - xor a + xor a ; REMOVE_PARTY ld [wPokemonWithdrawDepositParameter], a jp RemoveMonFromPartyOrBox ; de37 @@ -883,7 +926,7 @@ DepositMonWithDayCareMan: ; de2a DepositMonWithDayCareLady: ; de37 ld de, wBreedMon2Nick call DepositBreedmon - xor a + xor a ; REMOVE_PARTY ld [wPokemonWithdrawDepositParameter], a jp RemoveMonFromPartyOrBox ; de44 @@ -904,8 +947,8 @@ DepositBreedmon: ; de44 ld bc, BOXMON_STRUCT_LENGTH jp CopyBytes -SendPkmnIntoBox: ; de6e -; Sends the Pkmn into one of Bills Boxes +SendMonIntoBox: ; de6e +; Sends the mon into one of Bills Boxes ; the data comes mainly from 'wEnemyMon:' ld a, BANK(sBoxCount) call GetSRAMBank @@ -1359,8 +1402,8 @@ ComputeNPCTrademonStats: ; e134 push de ld a, MON_STAT_EXP - 1 call GetPartyParamLocation - ld b, $1 - call CalcPkmnStats + ld b, TRUE + call CalcMonStats pop de ld a, MON_HP call GetPartyParamLocation @@ -1372,17 +1415,17 @@ ComputeNPCTrademonStats: ; e134 ret ; e167 -CalcPkmnStats: ; e167 -; Calculates all 6 Stats of a Pkmn +CalcMonStats: ; e167 +; Calculates all 6 Stats of a mon ; b: Take into account stat EXP if TRUE ; 'c' counts from 1-6 and points with 'wBaseStats' to the base value ; hl is the path to the Stat EXP -; results in $ffb5 and $ffb6 are saved in [de] +; de points to where the final stats will be saved ld c, $0 .loop inc c - call CalcPkmnStatC + call CalcMonStatC ld a, [hMultiplicand + 1] ld [de], a inc de @@ -1395,7 +1438,7 @@ CalcPkmnStats: ; e167 ret ; e17b -CalcPkmnStatC: ; e17b +CalcMonStatC: ; e17b ; 'c' is 1-6 and points to the BaseStat ; 1: HP ; 2: Attack @@ -1626,7 +1669,7 @@ GivePoke:: ; e277 ld a, [wCurPartySpecies] ld [wTempEnemyMonSpecies], a callfar LoadEnemyMon - call SendPkmnIntoBox + call SendMonIntoBox jp nc, .FailedToGiveMon ld a, BOXMON ld [wMonType], a |