Advertisement
Squeetz

Firered base_damage_calc

Oct 28th, 2018
1,417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 24.28 KB | None | 0 0
  1. .thumb
  2.  
  3. .global move_damage_calc
  4.  
  5. .equ rom, 0x08000000
  6.  
  7. @ addresses
  8. .equ b_cur_move_power,          0x02024020
  9. .equ move_data,                 0x08250C04
  10. .equ sav1_copied_berries_pbs,   0x02023F54
  11. .equ battle_type_flags,         0x02022B4C
  12. .equ b_critical_multiplier,     0x02023D71
  13. .equ fractions_stat_buffs,      0x0825DEAD
  14. .equ weather,                   0x02023F1C
  15. .equ b_move_to_execute_A,       0x02023D4A
  16. .equ b_resources,               0x02023FF4
  17.  
  18. @ functions
  19. .equ itemid_get_x12,            0x9A924
  20. .equ itemid_get_quality,        0x9A948
  21. .equ __divsi3,                  0x1E4018
  22. .equ flag_check,                0x6E6D0
  23. .equ battle_side_get_owner,     0x751C4
  24. .equ ability_something,         0x19F18
  25. .equ __udivsi3,                 0x1E460C
  26. .equ sub_3F5B4,                 0x3F5B4
  27.  
  28. @ stack arguments
  29. .equ move_power_override,   0x4C
  30. .equ move_type_override,    0x50
  31. .equ arg_bank_attacker,     0x54
  32. .equ arg_bank_defender,     0x58
  33.  
  34. @ status
  35. .equ STATUS_BURN,       0x10
  36.  
  37. @ types
  38. .equ normal_type,   0x0
  39. .equ fighting_type, 0x1
  40. .equ flying_type,   0x2
  41. .equ poison_type,   0x3
  42. .equ ground_type,   0x4
  43. .equ rock_type,     0x5
  44. .equ bug_type,      0x6
  45. .equ ghost_type,    0x7
  46. .equ steel_type,    0x8
  47. .equ mystery_type,  0x9
  48. .equ fire_type,     0xA
  49. .equ water_type,    0xB
  50. .equ grass_type,    0xC
  51. .equ electric_type, 0xD
  52. .equ psychic_type,  0xE
  53. .equ ice_type,      0xF
  54. .equ dragon_type,   0x10
  55. .equ dark_type,     0x11
  56.  
  57. @ moves & effects
  58. .equ EFFECT_EXPLOSION,  0x7
  59. .equ SOLARBEAM,         0x4C
  60.  
  61. @ abilities
  62. .equ HUGE_POWER,    0x25
  63. .equ PURE_POWER,    0x4A
  64. .equ THICK_FAT,     0x2F
  65. .equ HUSTLE,        0x37
  66. .equ PLUS,          0x39
  67. .equ MINUS,         0x3A
  68. .equ GUTS,          0x3E
  69. .equ MARVEL_SCALE,  0x3F
  70. .equ OVERGROW,      0x41
  71. .equ BLAZE,         0x42
  72. .equ TORRENT,       0x43
  73. .equ SWARM,         0x44
  74. .equ CLOUD_NINE,    0xD
  75. .equ AIR_LOCK,      0x4D
  76.  
  77. @ items
  78. .equ ENIGMA_BERRY,  0xAF
  79.  
  80. @ item effects
  81. .equ HOLD_EFFECT_CHOICE_BAND,       29
  82. .equ HOLD_EFFECT_SOUL_DEW,          34
  83. .equ HOLD_EFFECT_DEEPSEATOOTH,      35
  84. .equ HOLD_EFFECT_DEEPSEASCALE,      36
  85. .equ HOLD_EFFECT_LIGHT_BALL,        45
  86. .equ HOLD_EFFECT_METAL_POWDER,      64
  87. .equ HOLD_EFFECT_THICK_CLUB,        65
  88. .equ HOLD_EFFECT_BUG_POWER,         31
  89. .equ HOLD_EFFECT_STEEL_POWER,       42
  90. .equ HOLD_EFFECT_GROUND_POWER,      46
  91. .equ HOLD_EFFECT_ROCK_POWER,        47
  92. .equ HOLD_EFFECT_GRASS_POWER,       48
  93. .equ HOLD_EFFECT_DARK_POWER,        49
  94. .equ HOLD_EFFECT_FIGHTING_POWER,    50
  95. .equ HOLD_EFFECT_ELECTRIC_POWER,    51
  96. .equ HOLD_EFFECT_WATER_POWER,       52
  97. .equ HOLD_EFFECT_FLYING_POWER,      53
  98. .equ HOLD_EFFECT_POISON_POWER,      54
  99. .equ HOLD_EFFECT_ICE_POWER,         55
  100. .equ HOLD_EFFECT_GHOST_POWER,       56
  101. .equ HOLD_EFFECT_PSYCHIC_POWER,     57
  102. .equ HOLD_EFFECT_FIRE_POWER,        58
  103. .equ HOLD_EFFECT_DRAGON_POWER,      59
  104. .equ HOLD_EFFECT_NORMAL_POWER,      60
  105.  
  106. @ stack
  107. .equ battle_data_defender,  0x4
  108. .equ move_id,               0x8
  109. .equ sidestatus,            0xC
  110. .equ bank_attacker,         0x10
  111. .equ defender_defense,      0x14
  112. .equ defender_spdef,        0x18
  113. .equ defender_item_effect,  0x1C
  114. .equ attacker_item_quality, 0x20
  115. .equ attacker_data_ability, 0x24
  116. .equ defender_data_ability, 0x28
  117.  
  118. /*
  119. registers:
  120. r6 = attacker's battle_data
  121. r7 = attacker's attack
  122. r8 = attacker's spatk
  123. r9 = move type
  124. r10 = attacker's held item effect
  125. */
  126.  
  127.  
  128.  
  129.  
  130. .org 0x3ECEC
  131.     push {r4-r7, lr}
  132.     mov r7, r10
  133.     mov r6, r9
  134.     mov r5, r8
  135.     push {r5-r7}
  136.     sub sp, sp, #0x2C
  137.     mov r6, r0
  138.     str r1, [sp, #battle_data_defender]
  139.     str r2, [sp, #move_id]
  140.     ldr r0, [sp, #move_power_override]
  141.     ldr r1, [sp, #move_type_override]
  142.     ldr r2, [sp, #arg_bank_attacker]
  143.     ldr r4, [sp, #arg_bank_defender]
  144.     lsl r3, r3, #0x10
  145.     lsr r3, r3, #0x10
  146.     str r3, [sp, #sidestatus]
  147.     lsl r0, r0, #0x10
  148.     lsr r3, r0, #0x10
  149.     lsl r1, r1, #0x18
  150.     lsr r7, r1, #0x18
  151.     lsl r2, r2, #0x18
  152.     lsr r2, r2, #0x18
  153.     str r2, [sp, #bank_attacker]
  154.     lsl r4, r4, #0x18
  155.     lsr r4, r4, #0x18
  156.     mov r5, #0x0
  157.     cmp r3, #0x0                            @move_power_override
  158.     bne loc_3ED40
  159.     ldr r2, =(b_cur_move_power)
  160.     ldr r1, =(move_data)
  161.     ldr r3, [sp, #move_id]
  162.     lsl r0, r3, #0x1
  163.     add r0, r0, r3
  164.     lsl r0, r0, #0x2
  165.     add r0, r0, r1
  166.     ldrb r0, [r0, #0x1]                     @move.power
  167.     strh r0, [r2]
  168.     b loc_3ED44
  169. .align 2
  170. .pool
  171.    
  172. loc_3ED40:
  173.     ldr r0, =(b_cur_move_power)
  174.     strh r3, [r0]
  175.    
  176. loc_3ED44:
  177.     cmp r7, #0x0                            @move_type_override
  178.     bne loc_3ED64
  179.     ldr r1, =(move_data)
  180.     ldr r7, [sp, #move_id]
  181.     lsl r0, r7, #0x1
  182.     add r0, r0, r7
  183.     lsl r0, r0, #0x2
  184.     add r0, r0, r1
  185.     ldrb r0, [r0, #0x2]                     @move.type
  186.     mov r9, r0
  187.     b loc_3ED6E
  188. .align 2
  189. .pool
  190.    
  191. loc_3ED64:
  192.     mov r0, #0x3F
  193.     mov r9, r0
  194.     mov r1, r9
  195.     and r1, r7
  196.     mov r9, r1                              @r9 = move type
  197.    
  198. loc_3ED6E:
  199.     ldrh r7, [r6, #0x2]                     @battle_data.attack
  200.     ldr r2, [sp, #battle_data_defender]
  201.     ldrh r2, [r2, #0x4]                     @battle_data.defense
  202.     str r2, [sp, #defender_defense]
  203.     ldrh r3, [r6, #0x8]                     @battle_data.spatk
  204.     mov r8, r3
  205.     ldr r0, [sp, #battle_data_defender]
  206.     ldrh r0, [r0, #0xA]                     @battle_data.spdef
  207.     str r0, [sp, #defender_spdef]
  208.     ldrh r0, [r6, #0x2E]                    @battle_data.item
  209.     cmp r0, #ENIGMA_BERRY
  210.     bne loc_3EDA0
  211.     ldr r1, =(sav1_copied_berries_pbs)
  212.     ldr r2, [sp, #bank_attacker]
  213.     lsl r0, r2, #0x3
  214.     sub r0, r0, r2
  215.     lsl r0, r0, #0x2
  216.     add r0, r0, r1
  217.     ldrb r3, [r0, #0x7]
  218.     mov r10, r3
  219.     ldrb r0, [r0, #0x1A]
  220.     b loc_3EDB6
  221. .align 2
  222. .pool
  223.    
  224. loc_3EDA0:
  225.     ldrh r0, [r6, #0x2E]                    @battle_data.item
  226.     bl itemid_get_x12
  227.     lsl r0, r0, #0x18
  228.     lsr r0, r0, #0x18
  229.     mov r10, r0
  230.     ldrh r0, [r6, #0x2E]                    @battle_data.item
  231.     bl itemid_get_quality
  232.     lsl r0, r0, #0x18
  233.     lsr r0, r0, #0x18
  234.    
  235. loc_3EDB6:
  236.     str r0, [sp, #attacker_item_quality]
  237.     ldr r1, [sp, #battle_data_defender]
  238.     ldrh r0, [r1, #0x2E]                    @battle_data.item
  239.     cmp r0, #ENIGMA_BERRY
  240.     bne loc_3EDE6
  241.     ldr r1, =(sav1_copied_berries_pbs)
  242.     lsl r0, r4, #0x3
  243.     sub r0, r0, r4
  244.     lsl r0, r0, #0x2
  245.     add r0, r0, r1
  246.     ldrb r0, [r0, #0x7]
  247.     str r0, [sp, #defender_item_effect]
  248.     b loc_3EDFC
  249. .align 2
  250. .pool
  251.    
  252. loc_3EDD4:
  253.     ldr r0, [sp, #attacker_item_quality]
  254.     add r0, #100
  255.     mul r0, r7
  256.     mov r1, #100
  257.     bl __divsi3
  258.     lsl r0, r0, #0x10
  259.     lsr r7, r0, #0x10
  260.     b loc_3EF44
  261.    
  262. loc_3EDE6:
  263.     ldr r2, [sp, #battle_data_defender]
  264.     ldrh r0, [r2, #0x2E]
  265.     bl itemid_get_x12
  266.     lsl r0, r0, #0x18
  267.     lsr r0, r0, #0x18
  268.     str r0, [sp, #defender_item_effect]
  269.     ldr r3, [sp, #battle_data_defender]
  270.     ldrh r0, [r3, #0x2E]
  271.     bl itemid_get_quality
  272.    
  273. loc_3EDFC:
  274.     mov r0, r6
  275.     add r0, #0x20                           @attacker's ability
  276.     ldrb r1, [r0]
  277.     str r0, [sp, #attacker_data_ability]
  278.     cmp r1, #HUGE_POWER
  279.     beq loc_3EE0C
  280.     cmp r1, #PURE_POWER
  281.     bne loc_3EE10
  282.    
  283. loc_3EE0C:
  284.     lsl r0, r7, #0x11
  285.     lsr r7, r0, #0x10                       @atk *= 2
  286.    
  287. loc_3EE10:
  288.     ldr r0, =(battle_type_flags)
  289.     ldr r0, [r0]
  290.     ldr r1, =(0x802)                        @link/ereader battle
  291.     and r0, r1
  292.     cmp r0, #0x0
  293.     bne loc_3EEE8
  294.     mov r0, #0x82
  295.     lsl r0, r0, #0x4                        @0x820, badge 1
  296.     bl flag_check
  297.     lsl r0, r0, #0x18
  298.     cmp r0, #0x0
  299.     beq loc_3EE44
  300.     ldr r0, [sp, #bank_attacker]
  301.     bl battle_side_get_owner
  302.     lsl r0, r0, #0x18
  303.     cmp r0, #0x0
  304.     bne loc_3EE44
  305.     mov r0, #110
  306.     mul r0, r7
  307.     mov r1, #100
  308.     bl __divsi3
  309.     lsl r0, r0, #0x10
  310.     lsr r7, r0, #0x10
  311.    
  312. loc_3EE44:
  313.     ldr r0, =(battle_type_flags)
  314.     ldr r0, [r0]
  315.     ldr r1, =(0x802)
  316.     and r0, r1
  317.     cmp r0, #0x0
  318.     bne loc_3EEE8
  319.     ldr r0, =(0x824)                        @badge 5
  320.     bl flag_check
  321.     lsl r0, r0, #0x18
  322.     cmp r0, #0x0
  323.     beq loc_3EE7A
  324.     mov r0, r4
  325.     bl battle_side_get_owner
  326.     lsl r0, r0, #0x18
  327.     cmp r0, #0x0
  328.     bne loc_3EE7A
  329.     mov r0, #110
  330.     ldr r1, [sp, #defender_defense]
  331.     mul r0, r1
  332.     mov r1, #100
  333.     bl __divsi3
  334.     lsl r0, r0, #0x10
  335.     lsr r0, r0, #0x10
  336.     str r0, [sp, #defender_defense]
  337.    
  338. loc_3EE7A:
  339.     ldr r0, =(battle_type_flags)
  340.     ldr r0, [r0]
  341.     ldr r1, =(0x802)
  342.     and r0, r1
  343.     cmp r0, #0x0
  344.     bne loc_3EEE8
  345.     ldr r0, =(0x826)                        @badge 7
  346.     bl flag_check
  347.     lsl r0, r0, #0x18
  348.     cmp r0, #0x0
  349.     beq loc_3EEB2
  350.     ldr r0, [sp, #bank_attacker]
  351.     bl battle_side_get_owner
  352.     lsl r0, r0, #0x18
  353.     cmp r0, #0x0
  354.     bne loc_3EEB2
  355.     mov r0, #110
  356.     mov r2, r8
  357.     mul r2, r0
  358.     mov r0, r2
  359.     mov r1, #100
  360.     bl __divsi3
  361.     lsl r0, r0, #0x10
  362.     lsr r0, r0, #0x10
  363.     mov r8, r0
  364.    
  365. loc_3EEB2:
  366.     ldr r0, =(battle_type_flags)
  367.     ldr r0, [r0]
  368.     ldr r1, =(0x802)
  369.     and r0, r1
  370.     cmp r0, #0x0
  371.     bne loc_3EEE8
  372.     ldr r0, =(0x826)                        @badge 7
  373.     bl flag_check
  374.     lsl r0, r0, #0x18
  375.     cmp r0, #0x0
  376.     beq loc_3EEE8
  377.     mov r0, r4
  378.     bl battle_side_get_owner
  379.     lsl r0, r0, #0x18
  380.     cmp r0, #0x0
  381.     bne loc_3EEE8
  382.     mov r0, #110
  383.     ldr r3, [sp, #defender_spdef]
  384.     mul r0, r3
  385.     mov r1, #100
  386.     bl __divsi3
  387.     lsl r0, r0, #0x10
  388.     lsr r0, r0, #0x10
  389.     str r0, [sp, #defender_spdef]
  390.    
  391. loc_3EEE8:
  392.     mov r2, #0x0
  393.     ldr r4, =(gHoldEffectToType + rom)
  394.     ldr r0, [sp, #battle_data_defender]
  395.     add r0, #0x20
  396.     str r0, [sp, #defender_data_ability]
  397.     mov r3, r4
  398.    
  399. loc_3EEF4:
  400.     lsl r1, r2, #0x1
  401.     ldrb r0, [r3]
  402.     cmp r10, r0
  403.     bne loc_3EF3C
  404.     add r0, r4, #0x1
  405.     add r0, r1, r0
  406.     ldrb r0, [r0]
  407.     cmp r9, r0
  408.     bne loc_3EF3C
  409.     mov r1, r9
  410.     cmp r1, #0x8
  411.     bhi loc_3EF0E
  412.     b loc_3EDD4
  413.    
  414. loc_3EF0E:
  415.     ldr r0, [sp, #attacker_item_quality]
  416.     add r0, #100
  417.     mov r2, r8
  418.     mul r2, r0
  419.     mov r0, r2
  420.     mov r1, #100
  421.     bl __divsi3
  422.     lsl r0, r0, #0x10
  423.     lsr r0, r0, #0x10
  424.     mov r8, r0
  425.     b loc_3EF44
  426. .align 2
  427. .pool
  428.  
  429. loc_3EF3C:
  430.     add r3, #2
  431.     add r2, #1
  432.     cmp r2, #0x10
  433.     bls loc_3EEF4
  434.    
  435. loc_3EF44:
  436.     mov r3, r10
  437.     cmp r3, #HOLD_EFFECT_CHOICE_BAND
  438.     bne loc_3EF58
  439.     mov r0, #150
  440.     mul r0, r7
  441.     mov r1, #100
  442.     bl __divsi3
  443.     lsl r0, r0, #0x10
  444.     lsr r7, r0, #0x10
  445.    
  446. loc_3EF58:
  447.     mov r0, r10
  448.     cmp r0, #HOLD_EFFECT_SOUL_DEW
  449.     bne loc_3EF90
  450.     ldr r0, =(battle_type_flags)
  451.     ldr r0, [r0]
  452.     mov r1, #0x80
  453.     lsl r1, r1, #0x1                        @0x100
  454.     and r0, r1
  455.     cmp r0, #0x0                            @battle tower
  456.     bne loc_3EF90
  457.     ldr r1, =(0xFFFFFE69)                   @-407
  458.     mov r0, r1
  459.     ldrh r2, [r6]                           @attacker species
  460.     add r0, r0, r2
  461.     lsl r0, r0, #0x10
  462.     lsr r0, r0, #0x10
  463.     cmp r0, #0x1                            @ if not Latias or Latios
  464.     bhi loc_3EF90
  465.     mov r0, #150
  466.     mov r3, r8
  467.     mul r3, r0
  468.     mov r0, r3
  469.     mov r1, #100
  470.     bl __divsi3
  471.     lsl r0, r0, #0x10
  472.     lsr r0, r0, #0x10
  473.     mov r8, r0                              @spatk + 50%
  474.    
  475. loc_3EF90:
  476.     ldr r0, [sp, #defender_item_effect]
  477.     cmp r0, #HOLD_EFFECT_SOUL_DEW
  478.     bne loc_3EFC8
  479.     ldr r0, =(battle_type_flags)
  480.     ldr r0, [r0]
  481.     mov r1, #0x80
  482.     lsl r1, r1, #0x1
  483.     and r0, r1
  484.     cmp r0, #0x0
  485.     bne loc_3EFC8
  486.     ldr r1, =(0xFFFFFE69)
  487.     mov r0, r1
  488.     ldr r2, [sp, #battle_data_defender]
  489.     ldrh r2, [r2]
  490.     add r0, r0, r2
  491.     lsl r0, r0, #0x10
  492.     lsr r0, r0, #0x10
  493.     cmp r0, #0x1
  494.     bhi loc_3EFC8
  495.     mov r0, #150
  496.     ldr r3, [sp, #defender_spdef]
  497.     mul r0, r3
  498.     mov r1, #100
  499.     bl __divsi3
  500.     lsl r0, r0, #0x10
  501.     lsr r0, r0, #0x10
  502.     str r0, [sp, #defender_spdef]
  503.    
  504. loc_3EFC8:
  505.     mov r0, r10
  506.     cmp r0, #HOLD_EFFECT_DEEPSEATOOTH
  507.     bne loc_3EFDE
  508.     ldrh r1, [r6]
  509.     ldr r0, =(0x175)                    @clamperl
  510.     cmp r1, r0
  511.     bne loc_3EFDE
  512.     mov r1, r8
  513.     lsl r0, r1, #0x11
  514.     lsr r0, r0, #0x10
  515.     mov r8, r0                          @spatk *= 2
  516.    
  517. loc_3EFDE:
  518.     ldr r2, [sp, #defender_item_effect]
  519.     cmp r2, #HOLD_EFFECT_DEEPSEASCALE
  520.     bne loc_3EFF6
  521.     ldr r3, [sp, #battle_data_defender]
  522.     ldrh r1, [r3]
  523.     ldr r0, =(0x175)                    @clamperl
  524.     cmp r1, r0
  525.     bne loc_3EFF6
  526.     ldr r1, [sp, #defender_spdef]
  527.     lsl r0, r1, #0x11
  528.     lsr r0, r0, #0x10
  529.     str r0, [sp, #defender_spdef]
  530.    
  531. loc_3EFF6:
  532.     mov r2, r10
  533.     cmp r2, #HOLD_EFFECT_LIGHT_BALL
  534.     bne loc_3F00A
  535.     ldrh r0, [r6]
  536.     cmp r0, #25                         @pikachu
  537.     bne loc_3F00A
  538.     mov r3, r8
  539.     lsl r0, r3, #0x11
  540.     lsr r0, r0, #0x10
  541.     mov r8, r0
  542.    
  543. loc_3F00A:
  544.     ldr r0, [sp, #defender_item_effect]
  545.     cmp r0, #HOLD_EFFECT_METAL_POWDER
  546.     bne loc_3F020
  547.     ldr r1, [sp, #battle_data_defender]
  548.     ldrh r0, [r1]
  549.     cmp r0, #132                        @ditto
  550.     bne loc_3F020
  551.     ldr r2, [sp, #defender_defense]
  552.     lsl r0, r2, #0x11
  553.     lsr r0, r0, #0x10
  554.     str r0, [sp, #defender_defense]
  555.    
  556. loc_3F020:
  557.     mov r3, r10
  558.     cmp r3, #HOLD_EFFECT_THICK_CLUB
  559.     bne loc_3F036
  560.     ldrh r0, [r6]
  561.     sub r0, #104                        @cubone
  562.     lsl r0, r0, #0x10
  563.     lsr r0, r0, #0x10
  564.     cmp r0, #0x1                        @if species higher than marowak
  565.     bhi loc_3F036
  566.     lsl r0, r7, #0x11
  567.     lsr r7, r0, #0x10
  568.    
  569. loc_3F036:
  570.     ldr r1, [sp, #defender_data_ability]
  571.     ldrb r0, [r1]
  572.     cmp r0, #THICK_FAT
  573.     bne loc_3F04E
  574.     mov r2, r9
  575.     cmp r2, #fire_type
  576.     beq loc_3F048
  577.     cmp r2, #ice_type
  578.     bne loc_3F04E
  579.    
  580. loc_3F048:
  581.     mov r3, r8
  582.     lsr r3, r3, #0x1
  583.     mov r8, r3
  584.    
  585. loc_3F04E:
  586.     ldr r0, [sp, #attacker_data_ability]
  587.     ldrb r4, [r0]
  588.     cmp r4, #HUSTLE
  589.     bne loc_3F064
  590.     mov r0, #150
  591.     mul r0, r7
  592.     mov r1, #100
  593.     bl __divsi3
  594.     lsl r0, r0, #0x10
  595.     lsr r7, r0, #0x10
  596.    
  597. loc_3F064:
  598.     cmp r4, #PLUS
  599.     bne loc_3F092
  600.     mov r0, #0x0
  601.     str r0, [sp]
  602.     mov r0, #0xE
  603.     mov r1, #0x0
  604.     mov r2, #MINUS
  605.     mov r3, #0x0
  606.     bl ability_something
  607.     lsl r0, r0, #0x18
  608.     cmp r0, #0x0
  609.     beq loc_3F092
  610.     mov r0, #150
  611.     mov r1, r8
  612.     mul r1, r0
  613.     mov r0, r1
  614.     mov r1, #100
  615.     bl __divsi3
  616.     lsl r0, r0, #0x10
  617.     lsr r0, r0, #0x10
  618.     mov r8, r0
  619.    
  620. loc_3F092:
  621.     ldr r2, [sp, #attacker_data_ability]
  622.     ldrb r0, [r2]
  623.     cmp r0, #MINUS
  624.     bne loc_3F0C4
  625.     mov r0, #0x0
  626.     str r0, [sp]
  627.     mov r0, #0xE                @is ability present
  628.     mov r1, #0x0
  629.     mov r2, #PLUS
  630.     mov r3, #0x0
  631.     bl ability_something
  632.     lsl r0, r0, #0x18
  633.     cmp r0, #0x0
  634.     beq loc_3F0C4
  635.     mov r0, #150
  636.     mov r3, r8
  637.     mul r3, r0
  638.     mov r0, r3
  639.     mov r1, #100
  640.     bl __divsi3
  641.     lsl r0, r0, #0x10
  642.     lsr r0, r0, #0x10
  643.     mov r8, r0
  644.    
  645. loc_3F0C4:
  646.     ldr r1, [sp, #attacker_data_ability]
  647.     ldrb r0, [r1]
  648.     cmp r0, #GUTS
  649.     bne loc_3F0E0
  650.     ldr r0, [r6, #0x4C]                 @status1
  651.     cmp r0, #0x0
  652.     beq loc_3F0E0
  653.     mov r0, #150
  654.     mul r0, r7
  655.     mov r1, #100
  656.     bl __divsi3
  657.     lsl r0, r0, #0x10
  658.     lsr r7, r0, #0x10
  659.    
  660. loc_3F0E0:
  661.     ldr r2, [sp, #defender_data_ability]
  662.     ldrb r0, [r2]
  663.     cmp r0, #MARVEL_SCALE
  664.     bne loc_3F102
  665.     ldr r3, [sp, #battle_data_defender]
  666.     ldr r0, [r3, #0x4C]                 @status1
  667.     cmp r0, #0x0
  668.     beq loc_3F102
  669.     mov r0, #150
  670.     ldr r1, [sp, #defender_defense]
  671.     mul r0, r1
  672.     mov r1, #100
  673.     bl __divsi3
  674.     lsl r0, r0, #0x10
  675.     lsr r0, r0, #0x10
  676.     str r0, [sp, #defender_defense]
  677.    
  678. loc_3F102:
  679.     mov r2, r9
  680.     cmp r2, #electric_type
  681.     bne loc_3F126
  682.     mov r0, #0x0
  683.     str r0, [sp]
  684.     mov r0, #0xE
  685.     mov r1, #0x0
  686.     mov r2, #0x0
  687.     mov r3, #0xFD               @mud sport
  688.     bl ability_something
  689.     lsl r0, r0, #0x18
  690.     cmp r0, #0x0
  691.     beq loc_3F126
  692.     ldr r1, =(b_cur_move_power)
  693.     ldrh r0, [r1]
  694.     lsr r0, r0, #0x1            @mud sport is present, half power
  695.     strh r0, [r1]
  696.    
  697. loc_3F126:
  698.     mov r3, r9
  699.     cmp r3, #fire_type
  700.     bne loc_3F14A
  701.     mov r0, #0x0
  702.     str r0, [sp]
  703.     mov r0, #0xE
  704.     mov r1, #0x0
  705.     mov r2, #0x0
  706.     mov r3, #0xFE               @water sport
  707.     bl ability_something
  708.     lsl r0, r0, #0x18
  709.     cmp r0, #0x0
  710.     beq loc_3F14A
  711.     ldr r1, =(b_cur_move_power)
  712.     ldrh r0, [r1]
  713.     lsr r0, r0, #0x1            @water sport is present, half power
  714.     strh r0, [r1]
  715.    
  716. loc_3F14A:
  717.     mov r0, r9
  718.     cmp r0, #grass_type
  719.     bne loc_3F17A
  720.     ldr r1, [sp, #attacker_data_ability]
  721.     ldrb r0, [r1]
  722.     cmp r0, #OVERGROW
  723.     bne loc_3F17A
  724.     ldrh r0, [r6, #0x2C]                @battle_data.max_hp
  725.     mov r1, #3
  726.     bl __udivsi3
  727.     ldrh r1, [r6, #0x28]                @battle_data.current_hp
  728.     lsl r0, r0, #0x10
  729.     lsr r0, r0, #0x10
  730.     cmp r1, r0
  731.     bhi loc_3F17A
  732.     ldr r4, =(b_cur_move_power)
  733.     ldrh r1, [r4]
  734.     mov r0, #150
  735.     mul r0, r1
  736.     mov r1, #100
  737.     bl __divsi3
  738.     strh r0, [r4]
  739.    
  740. loc_3F17A:
  741.     mov r2, r9
  742.     cmp r2, #fire_type
  743.     bne loc_3F1AA
  744.     ldr r3, [sp, #attacker_data_ability]
  745.     ldrb r0, [r3]
  746.     cmp r0, #BLAZE
  747.     bne loc_3F1AA
  748.     ldrh r0, [r6, #0x2C]
  749.     mov r1, #3
  750.     bl __udivsi3
  751.     ldrh r1, [r6, #0x28]
  752.     lsl r0, r0, #0x10
  753.     lsr r0, r0, #0x10
  754.     cmp r1, r0
  755.     bhi loc_3F1AA
  756.     ldr r4, =(b_cur_move_power)
  757.     ldrh r1, [r4]
  758.     mov r0, #150
  759.     mul r0, r1
  760.     mov r1, #100
  761.     bl __divsi3
  762.     strh r0, [r4]
  763.    
  764. loc_3F1AA:
  765.     mov r0, r9
  766.     cmp r0, #water_type
  767.     bne loc_3F1DA
  768.     ldr r1, [sp, #attacker_data_ability]
  769.     ldrb r0, [r1]
  770.     cmp r0, #TORRENT
  771.     bne loc_3F1DA
  772.     ldrh r0, [r6, #0x2C]
  773.     mov r1, #3
  774.     bl __udivsi3
  775.     ldrh r1, [r6, #0x28]
  776.     lsl r0, r0, #0x10
  777.     lsr r0, r0, #0x10
  778.     cmp r1, r0
  779.     bhi loc_3F1DA
  780.     ldr r4, =(b_cur_move_power)
  781.     ldrh r1, [r4]
  782.     mov r0, #150
  783.     mul r0, r1
  784.     mov r1, #100
  785.     bl __divsi3
  786.     strh r0, [r4]
  787.    
  788. loc_3F1DA:
  789.     mov r2, r9
  790.     cmp r2, #bug_type
  791.     bne loc_3F20A
  792.     ldr r3, [sp, #attacker_data_ability]
  793.     ldrb r0, [r3]
  794.     cmp r0, #SWARM
  795.     bne loc_3F20A
  796.     ldrh r0, [r6, #0x2C]
  797.     mov r1, #3
  798.     bl __udivsi3
  799.     ldrh r1, [r6, #0x28]
  800.     lsl r0, r0, #0x10
  801.     lsr r0, r0, #0x10
  802.     cmp r1, r0
  803.     bhi loc_3F20A
  804.     ldr r4, =(b_cur_move_power)
  805.     ldrh r1, [r4]
  806.     mov r0, #150
  807.     mul r0, r1
  808.     mov r1, #100
  809.     bl __divsi3
  810.     strh r0, [r4]
  811.    
  812. loc_3F20A:
  813.     ldr r2, =(move_data)
  814.     ldr r0, =(b_move_to_execute_A)
  815.     ldrh r1, [r0]
  816.     lsl r0, r1, #0x1
  817.     add r0, r0, r1
  818.     lsl r0, r0, #0x2
  819.     add r0, r0, r2
  820.     ldrb r0, [r0]
  821.     cmp r0, #EFFECT_EXPLOSION
  822.     bne loc_3F224
  823.     ldr r0, [sp, #defender_defense]
  824.     lsr r0, r0, #0x1
  825.     str r0, [sp, #defender_defense]
  826.    
  827. loc_3F224:
  828.     mov r1, r9
  829.     cmp r1, #0x8
  830.     bls loc_3F22C
  831.     b loc_3F38A
  832.    
  833. loc_3F22C:
  834.     ldr r0, =(b_critical_multiplier)
  835.     ldrb r1, [r0]
  836.     mov r4, r0
  837.     cmp r1, #2
  838.     bne loc_3F268
  839.     mov r0, #0x19
  840.     ldrsb r0, [r6, r0]
  841.     cmp r0, #6
  842.     ble loc_3F264
  843.     ldr r2, =(fractions_stat_buffs)
  844.     b loc_3F26E
  845. .align 2
  846. .pool
  847.  
  848. loc_3F264:
  849.     mov r5, r7
  850.     b loc_3F286
  851.    
  852. loc_3F268:
  853.     ldr r2, =(fractions_stat_buffs)
  854.     mov r0, #0x19
  855.     ldrsb r0, [r6, r0]
  856.    
  857. loc_3F26E:
  858.     lsl r0, r0, #0x1
  859.     add r1, r0, r2
  860.     ldrb r1, [r1]
  861.     mov r5, r7
  862.     mul r5, r1
  863.     add r2, #0x1
  864.     add r0, r0, r2
  865.     ldrb r1, [r0]
  866.     mov r0, r5
  867.     bl __divsi3
  868.     mov r5, r0
  869.    
  870. loc_3F286:
  871.     ldr r0, =(b_cur_move_power)
  872.     ldrh r0, [r0]
  873.     mul r5, r0
  874.     mov r0, r6
  875.     add r0, #0x2A                       @battle_data.level
  876.     ldrb r0, [r0]
  877.     lsl r0, r0, #0x1
  878.     mov r1, #5
  879.     bl __divsi3
  880.     add r0, #0x2
  881.     mul r5, r0
  882.     ldrb r0, [r4]
  883.     cmp r0, #0x2
  884.     bne loc_3F2C4
  885.     ldr r2, [sp, #battle_data_defender]
  886.     mov r0, #0x1A
  887.     ldrsb r0, [r2, r0]
  888.     cmp r0, #0x5
  889.     bgt loc_3F2C0
  890.     ldr r2, =(fractions_stat_buffs)
  891.     ldr r3, [sp, #battle_data_defender]
  892.     mov r0, #0x1A
  893.     ldrsb r0, [r3, r0]
  894.     b loc_3F2CC
  895. .pool
  896.  
  897. loc_3F2C0:
  898.     ldr r3, [sp, #defender_defense]
  899.     b loc_3F2E6
  900.    
  901. loc_3F2C4:
  902.     ldr r2, =(fractions_stat_buffs)
  903.     ldr r1, [sp, #battle_data_defender]
  904.     mov r0, #0x1A
  905.     ldrsb r0, [r1, r0]
  906.    
  907. loc_3F2CC:
  908.     lsl r0, r0, #0x1
  909.     add r1, r0, r2
  910.     ldrb r1, [r1]
  911.     ldr r7, [sp, #defender_defense]
  912.     mov r3, r7
  913.     mul r3, r1
  914.     add r2, #0x1
  915.     add r0, r0, r2
  916.     ldrb r1, [r0]
  917.     mov r0, r3
  918.     bl __divsi3
  919.     mov r3, r0
  920.    
  921. loc_3F2E6:
  922.     mov r0, r5
  923.     mov r1, r3
  924.     bl __divsi3
  925.     mov r5, r0
  926.     mov r1, #50
  927.     bl __divsi3
  928.     mov r5, r0
  929.     ldr r0, [r6, #0x4C]
  930.     mov r1, #STATUS_BURN
  931.     and r0, r1
  932.     cmp r0, #0x0
  933.     beq loc_3F310
  934.     ldr r1, [sp, #attacker_data_ability]
  935.     ldrb r0, [r1]
  936.     cmp r0, #GUTS
  937.     beq loc_3F310
  938.     lsr r0, r5, #0x1F
  939.     add r0, r5, r0
  940.     asr r5, r0, #0x1
  941.    
  942. loc_3F310:
  943.     mov r0, #0x1
  944.     ldr r2, [sp, #sidestatus]
  945.     and r0, r2
  946.     cmp r0, #0x0
  947.     beq loc_3F352
  948.     ldrb r1, [r4]
  949.     cmp r1, #0x1
  950.     bne loc_3F352
  951.     ldr r0, =(battle_type_flags)
  952.     ldr r0, [r0]
  953.     and r0, r1
  954.     cmp r0, #0x0
  955.     beq loc_3F34C
  956.     mov r0, #0x2
  957.     bl sub_3F5B4
  958.     lsl r0, r0, #0x18
  959.     lsr r0, r0, #0x18
  960.     cmp r0, #0x2
  961.     bne loc_3F34C
  962.     mov r0, r5
  963.     mov r1, #0x3
  964.     bl __divsi3
  965.     lsl r5, r0, #0x1
  966.     b loc_3F352
  967. .pool
  968.  
  969. loc_3F34C:
  970.     lsr r0, r5, #0x1F
  971.     add r0, r5, r0
  972.     asr r5, r0, #0x1
  973.    
  974. loc_3F352:
  975.     ldr r0, =(battle_type_flags)
  976.     ldr r0, [r0]
  977.     mov r1, #0x1
  978.     and r0, r1
  979.     cmp r0, #0x0
  980.     beq loc_3F384
  981.     ldr r0, =(move_data)
  982.     ldr r3, [sp, #move_id]
  983.     lsl r1, r3, #0x1
  984.     add r1, r1, r3
  985.     lsl r1, r1, #0x2
  986.     add r1, r1, r0
  987.     ldrb r0, [r1, #0x6]                 @move.target
  988.     cmp r0, #0x8                        @both foes
  989.     bne loc_3F384
  990.     mov r0, #0x2
  991.     bl sub_3F5B4
  992.     lsl r0, r0, #0x18
  993.     lsr r0, r0, #0x18
  994.     cmp r0, #0x2
  995.     bne loc_3F384
  996.     lsr r0, r5, #0x1F
  997.     add r0, r5, r0
  998.     asr r5, r0, #0x1
  999.    
  1000. loc_3F384:
  1001.     cmp r5, #0x0
  1002.     bne loc_3F38A
  1003.     mov r5, #0x1
  1004.    
  1005. loc_3F38A:
  1006.     mov r7, r9
  1007.     cmp r7, #0x9
  1008.     bne loc_3F392
  1009.     mov r5, #0x0
  1010.    
  1011. loc_3F392:
  1012.     mov r0, r9
  1013.     cmp r0, #0x9
  1014.     bhi loc_3F39A
  1015.     b loc_3F59C
  1016.    
  1017. loc_3F39A:
  1018.     ldr r0, =(b_critical_multiplier)
  1019.     ldrb r1, [r0]
  1020.     mov r4, r0
  1021.     cmp r1, #0x2
  1022.     bne loc_3F3C4
  1023.     mov r0, #0x1C                       @spatk buff
  1024.     ldrsb r0, [r6, r0]
  1025.     cmp r0, #0x6
  1026.     ble loc_3F3C0
  1027.     ldr r2, =(fractions_stat_buffs)
  1028.     b loc_3F3CA
  1029. .pool
  1030.  
  1031. loc_3F3C0:
  1032.     mov r5, r8
  1033.     b loc_3F3E2
  1034.    
  1035. loc_3F3C4:
  1036.     ldr r2, =(fractions_stat_buffs)
  1037.     mov r0, #0x1C
  1038.     ldrsb r0, [r6, r0]
  1039.    
  1040. loc_3F3CA:
  1041.     lsl r0, r0, #0x1
  1042.     add r1, r0, r2
  1043.     ldrb r1, [r1]
  1044.     mov r5, r8
  1045.     mul r5, r1
  1046.     add r2, #0x1
  1047.     add r0, r0, r2
  1048.     ldrb r1, [r0]
  1049.     mov r0, r5
  1050.     bl __divsi3
  1051.     mov r5, r0
  1052.    
  1053. loc_3F3E2:
  1054.     ldr r0, =(b_cur_move_power)
  1055.     ldrh r0, [r0]
  1056.     mul r5, r0
  1057.     mov r0, r6
  1058.     add r0, #0x2A                       @battle_data.level
  1059.     ldrb r0, [r0]
  1060.     lsl r0, r0, #0x1
  1061.     mov r1, #5
  1062.     bl __divsi3
  1063.     add r0, #0x2
  1064.     mul r5, r0
  1065.     ldrb r0, [r4]
  1066.     cmp r0, #0x2
  1067.     bne loc_3F41C
  1068.     ldr r1, [sp, #battle_data_defender]
  1069.     mov r0, #0x1D                       @spdef buff
  1070.     ldrsb r0, [r1, r0]
  1071.     cmp r0, #0x5
  1072.     bgt loc_3F418
  1073.     ldr r2, =(fractions_stat_buffs)
  1074.     b loc_3F424
  1075. .align 2
  1076. .pool
  1077.  
  1078. loc_3F418:
  1079.     ldr r3, [sp, #defender_spdef]
  1080.     b loc_3F43E
  1081.    
  1082. loc_3F41C:
  1083.     ldr r2, =(fractions_stat_buffs)
  1084.     ldr r7, [sp, #battle_data_defender]
  1085.     mov r0, #0x1D                       @spdef buff
  1086.     ldrsb r0, [r7, r0]
  1087.    
  1088. loc_3F424:
  1089.     lsl r0, r0, #0x1
  1090.     add r1, r0, r2
  1091.     ldrb r1, [r1]
  1092.     ldr r6, [sp, #defender_spdef]
  1093.     mov r3, r6
  1094.     mul r3, r1
  1095.     add r2, #0x1
  1096.     add r0, r0, r2
  1097.     ldrb r1, [r0]
  1098.     mov r0, r3
  1099.     bl __divsi3
  1100.     mov r3, r0
  1101.    
  1102. loc_3F43E:
  1103.     mov r0, r5
  1104.     mov r1, r3
  1105.     bl __divsi3
  1106.     mov r5, r0
  1107.     mov r1, #50
  1108.     bl __divsi3
  1109.     mov r5, r0
  1110.     mov r0, #0x2
  1111.     ldr r7, [sp, #sidestatus]
  1112.     and r0, r7
  1113.     cmp r0, #0x0
  1114.     beq loc_3F492
  1115.     ldrb r1, [r4]
  1116.     cmp r1, #0x1
  1117.     bne loc_3F492
  1118.     ldr r0, =(battle_type_flags)
  1119.     ldr r0, [r0]
  1120.     and r0, r1
  1121.     cmp r0, #0x0
  1122.     beq loc_3F48C
  1123. @ double battle:
  1124.     mov r0, #0x2
  1125.     bl sub_3F5B4
  1126.     lsl r0, r0, #0x18
  1127.     lsr r0, r0, #0x18
  1128.     cmp r0, #0x2
  1129.     bne loc_3F48C
  1130.     mov r0, r5
  1131.     mov r1, #3
  1132.     bl __divsi3
  1133.     lsl r5, r0, #0x1
  1134.     b loc_3F492
  1135. .pool
  1136.  
  1137. loc_3F48C:
  1138.     lsr r0, r5, #0x1F
  1139.     add r0, r5, r0
  1140.     asr r5, r0, #0x1
  1141.    
  1142. loc_3F492:
  1143.     ldr r0, =(battle_type_flags)
  1144.     ldr r0, [r0]
  1145.     mov r1, #0x1
  1146.     and r0, r1
  1147.     cmp r0, #0x0
  1148.     beq loc_3F4C4
  1149. @ double battle:
  1150.     ldr r0, =(move_data)
  1151.     ldr r2, [sp, #move_id]
  1152.     lsl r1, r2, #0x1
  1153.     add r1, r1, r2
  1154.     lsl r1, r1, #0x2
  1155.     add r1, r1, r0
  1156.     ldrb r0, [r1, #0x6]                 @move.target
  1157.     cmp r0, #0x8                        @both foes
  1158.     bne loc_3F4C4
  1159.     mov r0, #0x2
  1160.     bl sub_3F5B4
  1161.     lsl r0, r0, #0x18
  1162.     lsr r0, r0, #0x18
  1163.     cmp r0, #0x2
  1164.     bne loc_3F4C4
  1165.     lsr r0, r5, #0x1F
  1166.     add r0, r5, r0
  1167.     asr r5, r0, #0x1
  1168.    
  1169. loc_3F4C4:
  1170.     mov r0, #0x0
  1171.     str r0, [sp]
  1172.     mov r0, #0xE                @0xE = check if ability is present
  1173.     mov r1, #0x0
  1174.     mov r2, #CLOUD_NINE
  1175.     mov r3, #0x0
  1176.     bl ability_something
  1177.     lsl r0, r0, #0x18
  1178.     lsr r0, r0, #0x18
  1179.     cmp r0, #0x0
  1180.     bne loc_3F574
  1181.     str r0, [sp]
  1182.     mov r0, #0xE                @0xE = check if ability is present
  1183.     mov r1, #0x0
  1184.     mov r2, #AIR_LOCK
  1185.     mov r3, #0x0
  1186.     bl ability_something
  1187.     lsl r0, r0, #0x18
  1188.     cmp r0, #0x0
  1189.     bne loc_3F574
  1190.     ldr r2, =(weather)
  1191.     ldrh r1, [r2]
  1192.     mov r0, #0x1                @rainy
  1193.     and r0, r1
  1194.     mov r4, r2
  1195.     cmp r0, #0x0
  1196.     beq loc_3F52C
  1197.     mov r3, r9
  1198.     cmp r3, #fire_type
  1199.     beq loc_3F518
  1200.     cmp r3, #water_type
  1201.     beq loc_3F520
  1202.     b loc_3F52C
  1203. .align 2
  1204. .pool
  1205.  
  1206. loc_3F518:
  1207.     lsr r0, r5, #0x1F           @fire move, half power
  1208.     add r0, r5, r0
  1209.     asr r5, r0, #0x1
  1210.     b loc_3F52C
  1211.    
  1212. loc_3F520:
  1213.     lsl r0, r5, #0x4            @water move, boost by 50%
  1214.     sub r0, r0, r5
  1215.     mov r1, #10
  1216.     bl __divsi3
  1217.     mov r5, r0
  1218.    
  1219. loc_3F52C:
  1220.     ldrh r1, [r4]
  1221.     mov r0, #0x9F               @any other weather than sunny
  1222.     and r0, r1
  1223.     cmp r0, #0x0
  1224.     beq loc_3F544
  1225.     ldr r0, =(b_move_to_execute_A)
  1226.     ldrh r0, [r0]
  1227.     cmp r0, #SOLARBEAM
  1228.     bne loc_3F544
  1229.     lsr r0, r5, #0x1F           @halve solarbeam's power
  1230.     add r0, r5, r0
  1231.     asr r5, r0, #0x1
  1232.    
  1233. loc_3F544:
  1234.     ldrh r1, [r4]
  1235.     mov r0, #0x60               @sunny
  1236.     and r0, r1
  1237.     cmp r0, #0x0
  1238.     beq loc_3F574
  1239.     mov r6, r9
  1240.     cmp r6, #fire_type
  1241.     beq loc_3F560
  1242.     cmp r6, #water_type
  1243.     beq loc_3F56E
  1244.     b loc_3F574
  1245. .align 2
  1246. .pool
  1247.  
  1248. loc_3F560:             
  1249.     lsl r0, r5, #0x4            @fire move, boost by 50%
  1250.     sub r0, r0, r5
  1251.     mov r1, #10
  1252.     bl __divsi3
  1253.     mov r5, r0
  1254.     b loc_3F574
  1255.    
  1256. loc_3F56E:                      @water move, half power
  1257.     lsr r0, r5, #0x1F
  1258.     add r0, r5, r0
  1259.     asr r5, r0, #0x1
  1260.    
  1261. loc_3F574:
  1262.     ldr r0, =(b_resources)
  1263.     ldr r0, [r0]
  1264.     ldr r0, [r0, #0x4]
  1265.     ldr r7, [sp, #bank_attacker]
  1266.     lsl r1, r7, #0x2
  1267.     add r0, r0, r1
  1268.     ldr r0, [r0]
  1269.     mov r1, #0x1
  1270.     and r0, r1
  1271.     cmp r0, #0x0                        @flash fire
  1272.     beq loc_3F59C
  1273.     mov r0, r9                          @if move type = fire
  1274.     cmp r0, #fire_type
  1275.     bne loc_3F59C
  1276.     lsl r0, r5, #0x4
  1277.     sub r0, r0, r5
  1278.     mov r1, #10
  1279.     bl __divsi3
  1280.     mov r5, r0
  1281.    
  1282. loc_3F59C:
  1283.     add r0, r5, #0x2
  1284.     add sp, sp, #0x2C
  1285.     pop {r3-r5}
  1286.     mov r8, r3
  1287.     mov r9, r4
  1288.     mov r10, r5
  1289.     pop {r4-r7}
  1290.     pop {r1}
  1291.     bx r1
  1292. .align 2
  1293. .pool
  1294.    
  1295. .org 0x25DECC
  1296. gHoldEffectToType:
  1297.     .byte HOLD_EFFECT_BUG_POWER,        bug_type
  1298.     .byte HOLD_EFFECT_STEEL_POWER,      steel_type
  1299.     .byte HOLD_EFFECT_GROUND_POWER,     ground_type
  1300.     .byte HOLD_EFFECT_ROCK_POWER,       rock_type
  1301.     .byte HOLD_EFFECT_GRASS_POWER,      grass_type
  1302.     .byte HOLD_EFFECT_DARK_POWER,       dark_type
  1303.     .byte HOLD_EFFECT_FIGHTING_POWER,   fighting_type
  1304.     .byte HOLD_EFFECT_ELECTRIC_POWER,   electric_type
  1305.     .byte HOLD_EFFECT_WATER_POWER,      water_type
  1306.     .byte HOLD_EFFECT_FLYING_POWER,     flying_type
  1307.     .byte HOLD_EFFECT_POISON_POWER,     poison_type
  1308.     .byte HOLD_EFFECT_ICE_POWER,        ice_type
  1309.     .byte HOLD_EFFECT_GHOST_POWER,      ghost_type
  1310.     .byte HOLD_EFFECT_PSYCHIC_POWER,    psychic_type
  1311.     .byte HOLD_EFFECT_FIRE_POWER,       fire_type
  1312.     .byte HOLD_EFFECT_DRAGON_POWER,     dragon_type
  1313.     .byte HOLD_EFFECT_NORMAL_POWER,     normal_type
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement