Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .thumb
- .global atk04_critcalc
- .include "equs.txt"
- .equ itemid_get_x12, 0x9A924
- .equ rand, 0x44EC8
- .equ __umodsi3, 0x1E4684
- .equ sub_EB2E0, 0xEB2E0
- .org 0x1E408
- push {r4-r7, lr}
- ldr r1, =(battle_data)
- ldr r0, =(b_attacker)
- ldrb r2, [r0]
- mov r0, #0x58
- mul r0, r2
- add r0, r0, r1
- ldrh r0, [r0, #0x2E] @battle_data.held_item
- cmp r0, #ENIGMA_BERRY
- bne loc_1E438
- ldr r1, =(sav1_copied_berries_pbs)
- lsl r0, r2, #0x3
- sub r0, r0, r2
- lsl r0, r0, #0x2
- add r0, r0, r1
- ldrb r6, [r0, #0x7]
- b loc_1E440
- .align 2, 0
- .pool
- loc_1E438:
- bl itemid_get_x12
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- loc_1E440:
- ldr r1, =(gPotentialItemEffectBattler)
- ldr r3, =(b_attacker)
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r4, =(battle_data)
- ldrb r1, [r3]
- mov r0, #0x58
- mov r7, r1
- mul r7, r0
- mov r0, r4
- add r0, #0x50
- add r0, r7, r0
- ldr r0, [r0]
- mov r1, #0x80
- lsl r1, r1, #0xD @0x100000, focus_energy
- and r0, r1
- neg r0, r0
- asr r5, r0, #0x1F
- mov r0, #0x2
- and r5, r0
- ldr r2, =(move_data)
- ldr r0, =(b_move_to_execute_A)
- ldrh r1, [r0]
- lsl r0, r1, #0x1
- add r0, r0, r1
- lsl r0, r0, #0x2
- add r0, r0, r2
- ldrb r1, [r0]
- mov r12, r3
- cmp r1, #MOVE_EFFECT_HIGH_CRIT_CHANCE
- bne loc_1E480
- add r5, #0x1
- loc_1E480:
- mov r0, r5
- cmp r1, #MOVE_EFFECT_SKY_ATTACK
- bne loc_1E488
- add r0, #0x1
- loc_1E488:
- cmp r1, #MOVE_EFFECT_BLAZE_KICK
- bne loc_1E48E
- add r0, #0x1
- loc_1E48E:
- mov r2, r0
- cmp r1, #MOVE_EFFECT_POISON_TAIL
- bne loc_1E496
- add r2, #0x1
- loc_1E496:
- mov r1, #0x0
- cmp r6, #HOLD_EFFECT_LUCKY_PUNCH
- bne loc_1E4A6
- add r0, r7, r4
- ldrh r0, [r0]
- cmp r0, #113 @CHANSEY
- bne loc_1E4A6
- mov r1, #0x1
- loc_1E4A6:
- lsl r5, r1, #0x1
- mov r3, #0x0
- cmp r6, #HOLD_EFFECT_STICK
- bne loc_1E4C0
- mov r0, r12
- ldrb r1, [r0]
- mov r0, #0x58
- mul r0, r1
- add r0, r0, r4
- ldrh r0, [r0]
- cmp r0, #83 @FARFETCHD
- bne loc_1E4C0
- mov r3, #0x1
- loc_1E4C0:
- lsl r1, r3, #0x1
- cmp r6, #HOLD_EFFECT_SCOPE_LENS
- bne loc_1E4E0
- add r0, r5, #0x1
- add r0, r2, r0
- b loc_1E4E2
- .align 2, 0
- .pool
- loc_1E4E0:
- add r0, r2, r5
- loc_1E4E2:
- add r0, r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r5, r0
- cmp r5, #4
- bls loc_1E4F0
- mov r5, #4
- loc_1E4F0:
- ldr r0, =(b_defender)
- ldrb r1, [r0]
- mov r0, #0x58
- mul r0, r1
- add r0, r0, r4
- add r0, #0x20 @battle_data.ability
- ldrb r4, [r0]
- cmp r4, #BATTLE_ARMOR
- beq atk04_NoCrit
- cmp r4, #SHELL_ARMOR
- beq atk04_NoCrit
- ldr r1, =(status3)
- mov r2, r12
- ldrb r0, [r2]
- lsl r0, r0, #0x2
- add r0, r0, r1
- ldr r0, [r0]
- mov r1, #0x80
- lsl r1, r1, #0x8 @0x8000, STATUS3_CANT_SCORE_A_CRIT
- and r0, r1
- cmp r0, #0x0
- bne atk04_NoCrit
- ldr r4, =(battle_type_flags)
- ldr r0, [r4]
- mov r1, #0x80
- lsl r1, r1, #0x2 @0x200, BATTLETYPE_FIRST_BATTLE
- and r0, r1
- cmp r0, #0x0
- bne atk04_NoCrit
- bl rand
- ldr r2, =(sCriticalHitChance + rom)
- lsl r1, r5, #0x1
- add r1, r1, r2
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- ldrh r1, [r1]
- bl __umodsi3
- lsl r0, r0, #0x10
- cmp r0, #0x0
- bne atk04_NoCrit
- ldr r0, [r4]
- mov r1, #0x10
- and r0, r1
- cmp r0, #0x0
- beq loc_1E55A
- mov r0, #0x1
- bl sub_EB2E0
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq atk04_NoCrit
- loc_1E55A:
- ldr r0, [r4]
- mov r1, #0x80
- lsl r1, r1, #0x9 @0x10000
- and r0, r1
- cmp r0, #0x0
- bne atk04_NoCrit
- ldr r1, =(b_critical_multiplier)
- mov r0, #0x2
- b loc_1E584
- .align 2, 0
- .pool
- atk04_NoCrit:
- ldr r1, =(b_critical_multiplier)
- mov r0, #0x1
- loc_1E584:
- strb r0, [r1]
- ldr r1, =(b_movescr_cursor)
- ldr r0, [r1]
- add r0, #0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
- .pool
- .org 0x250530
- sCriticalHitChance:
- .hword 16 @stage 1, 6%
- .hword 8 @stage 2, 12%
- .hword 4 @stage 3, 25%
- .hword 3 @stage 4, 33%
- .hword 2 @stage 5, 50%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement