summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_ai.s4
-rw-r--r--asm/rom3.s4
-rw-r--r--asm/rom_800D42C.s110
-rw-r--r--include/hold_effects.h72
-rw-r--r--include/pokemon.h19
-rw-r--r--src/calculate_base_damage.c82
-rw-r--r--src/pokemon_2.c2
-rw-r--r--sym_ewram.txt2
8 files changed, 194 insertions, 101 deletions
diff --git a/asm/battle_ai.s b/asm/battle_ai.s
index 89950f005..5df4635b2 100644
--- a/asm/battle_ai.s
+++ b/asm/battle_ai.s
@@ -212,7 +212,7 @@ _08108AE8: .4byte gAIScriptPtr
thumb_func_start BattleAICmd_unk_36
BattleAICmd_unk_36: @ 8108AEC
push {lr}
- ldr r2, _08108B3C @ =word_2024DB8
+ ldr r2, _08108B3C @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x7
ands r0, r1
@@ -255,7 +255,7 @@ _08108B2E:
pop {r0}
bx r0
.align 2, 0
-_08108B3C: .4byte word_2024DB8
+_08108B3C: .4byte gBattleWeather
_08108B40: .4byte 0x02016800
_08108B44: .4byte gAIScriptPtr
thumb_func_end BattleAICmd_unk_36
diff --git a/asm/rom3.s b/asm/rom3.s
index 823ac4e0c..f5238ddb5 100644
--- a/asm/rom3.s
+++ b/asm/rom3.s
@@ -2133,7 +2133,7 @@ dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes: @ 800C870
lsls r0, 24
cmp r0, 0
bne _0800C910
- ldr r0, _0800C90C @ =word_2024DB8
+ ldr r0, _0800C90C @ =gBattleWeather
ldrh r0, [r0]
strb r0, [r7, 0xC]
ands r6, r0
@@ -2144,7 +2144,7 @@ dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes: @ 800C870
.align 2, 0
_0800C904: .4byte gUnknown_03004040
_0800C908: .4byte gUnknown_02024C0E
-_0800C90C: .4byte word_2024DB8
+_0800C90C: .4byte gBattleWeather
_0800C910:
ldr r0, _0800C944 @ =gUnknown_03004040
movs r1, 0
diff --git a/asm/rom_800D42C.s b/asm/rom_800D42C.s
index db4158af6..1b0ef2731 100644
--- a/asm/rom_800D42C.s
+++ b/asm/rom_800D42C.s
@@ -6574,7 +6574,7 @@ _08010906:
strb r1, [r2]
ldr r3, _08010B00 @ =gUnknown_02024C08
strb r1, [r3]
- ldr r4, _08010B04 @ =word_2024DB8
+ ldr r4, _08010B04 @ =gBattleWeather
strh r1, [r4]
ldr r1, _08010B08 @ =gUnknown_02024DBC
movs r2, 0
@@ -6804,7 +6804,7 @@ _08010AF4: .4byte gUnknown_02024C80
_08010AF8: .4byte gUnknown_02024C7A
_08010AFC: .4byte gUnknown_02024C07
_08010B00: .4byte gUnknown_02024C08
-_08010B04: .4byte word_2024DB8
+_08010B04: .4byte gBattleWeather
_08010B08: .4byte gUnknown_02024DBC
_08010B0C: .4byte gUnknown_02024C6C
_08010B10: .4byte gUnknown_020239F8
@@ -11323,7 +11323,7 @@ b_first_side: @ 8012FF0
ldrb r3, [r0]
cmp r3, 0x21
bne _0801305C
- ldr r0, _08013074 @ =word_2024DB8
+ ldr r0, _08013074 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x7
ands r0, r1
@@ -11332,7 +11332,7 @@ b_first_side: @ 8012FF0
_0801305C:
cmp r3, 0x22
bne _08013078
- ldr r0, _08013074 @ =word_2024DB8
+ ldr r0, _08013074 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
@@ -11343,7 +11343,7 @@ _0801306C:
b _0801307A
.align 2, 0
_08013070: .4byte gBattleMons
-_08013074: .4byte word_2024DB8
+_08013074: .4byte gBattleWeather
_08013078:
movs r3, 0x1
_0801307A:
@@ -11357,7 +11357,7 @@ _0801307A:
ldrb r2, [r0]
cmp r2, 0x21
bne _0801309A
- ldr r0, _080130B4 @ =word_2024DB8
+ ldr r0, _080130B4 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x7
ands r0, r1
@@ -11366,7 +11366,7 @@ _0801307A:
_0801309A:
cmp r2, 0x22
bne _080130BA
- ldr r0, _080130B4 @ =word_2024DB8
+ ldr r0, _080130B4 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
@@ -11377,7 +11377,7 @@ _080130AA:
b _080130BC
.align 2, 0
_080130B0: .4byte gBattleMons
-_080130B4: .4byte word_2024DB8
+_080130B4: .4byte gBattleWeather
_080130B8:
movs r3, 0x1
_080130BA:
@@ -17566,7 +17566,7 @@ _08016318: .4byte gUnknown_081D939A
_0801631C: .4byte 0x02000000
_08016320: .4byte 0x0001600e
_08016324:
- ldr r3, _0801635C @ =word_2024DB8
+ ldr r3, _0801635C @ =gBattleWeather
ldrh r2, [r3]
movs r0, 0x7
ands r0, r2
@@ -17596,7 +17596,7 @@ _08016332:
strb r0, [r1, 0x5]
b _0801639C
.align 2, 0
-_0801635C: .4byte word_2024DB8
+_0801635C: .4byte gBattleWeather
_08016360: .4byte gUnknown_02024DBC
_08016364: .4byte 0x0000fffe
_08016368: .4byte 0x0000fffd
@@ -17633,7 +17633,7 @@ _0801639C:
_080163A0: .4byte gUnknown_02024D1E
_080163A4: .4byte gUnknown_081D8F62
_080163A8:
- ldr r3, _080163DC @ =word_2024DB8
+ ldr r3, _080163DC @ =gBattleWeather
ldrh r2, [r3]
movs r0, 0x18
ands r0, r2
@@ -17660,7 +17660,7 @@ _080163B6:
ldr r0, _080163EC @ =gUnknown_081D8FFF
b _080163F4
.align 2, 0
-_080163DC: .4byte word_2024DB8
+_080163DC: .4byte gBattleWeather
_080163E0: .4byte gUnknown_02024DBC
_080163E4: .4byte 0x0000fff7
_080163E8: .4byte gUnknown_02024C10
@@ -17687,7 +17687,7 @@ _08016414: .4byte 0x02000000
_08016418: .4byte 0x000160a4
_0801641C: .4byte gUnknown_02024D1E
_08016420:
- ldr r3, _08016450 @ =word_2024DB8
+ ldr r3, _08016450 @ =gBattleWeather
ldrh r2, [r3]
movs r0, 0x60
ands r0, r2
@@ -17712,7 +17712,7 @@ _08016420:
ldr r0, _08016460 @ =gUnknown_081D9016
b _08016468
.align 2, 0
-_08016450: .4byte word_2024DB8
+_08016450: .4byte gBattleWeather
_08016454: .4byte gUnknown_02024DBC
_08016458: .4byte 0x0000ffdf
_0801645C: .4byte gUnknown_02024C10
@@ -17741,7 +17741,7 @@ _08016488: .4byte gUnknown_081D9008
_0801648C: .4byte 0x02000000
_08016490: .4byte 0x0001600e
_08016494:
- ldr r3, _080164BC @ =word_2024DB8
+ ldr r3, _080164BC @ =gBattleWeather
ldrh r2, [r3]
movs r0, 0x80
ands r0, r2
@@ -17762,7 +17762,7 @@ _08016494:
ldr r0, _080164CC @ =gUnknown_081D8FFF
b _080164D4
.align 2, 0
-_080164BC: .4byte word_2024DB8
+_080164BC: .4byte gBattleWeather
_080164C0: .4byte gUnknown_02024DBC
_080164C4: .4byte 0x0000ff7f
_080164C8: .4byte gUnknown_02024C10
@@ -21347,7 +21347,7 @@ _0801825C:
movs r0, 0
b _08018314
_08018260:
- ldr r1, _0801831C @ =word_2024DB8
+ ldr r1, _0801831C @ =gBattleWeather
ldrh r0, [r1]
movs r2, 0xE7
ands r2, r0
@@ -21447,7 +21447,7 @@ _08018314:
pop {r1}
bx r1
.align 2, 0
-_0801831C: .4byte word_2024DB8
+_0801831C: .4byte gBattleWeather
_08018320: .4byte gBattleMons
thumb_func_end castform_switch
@@ -21766,7 +21766,7 @@ _080185A4:
.4byte _08018620
.4byte _080185D0
_080185D0:
- ldr r2, _080185EC @ =word_2024DB8
+ ldr r2, _080185EC @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x7
ands r0, r1
@@ -21780,11 +21780,11 @@ _080185D0:
movs r1, 0xA
b _08018638
.align 2, 0
-_080185EC: .4byte word_2024DB8
+_080185EC: .4byte gBattleWeather
_080185F0: .4byte 0x02000000
_080185F4: .4byte 0x000160a4
_080185F8:
- ldr r3, _08018614 @ =word_2024DB8
+ ldr r3, _08018614 @ =gBattleWeather
ldrh r1, [r3]
movs r2, 0x18
adds r0, r2, 0
@@ -21798,11 +21798,11 @@ _080185F8:
movs r1, 0xC
b _08018638
.align 2, 0
-_08018614: .4byte word_2024DB8
+_08018614: .4byte gBattleWeather
_08018618: .4byte 0x02000000
_0801861C: .4byte 0x000160a4
_08018620:
- ldr r3, _08018668 @ =word_2024DB8
+ ldr r3, _08018668 @ =gBattleWeather
ldrh r1, [r3]
movs r2, 0x60
adds r0, r2, 0
@@ -21838,14 +21838,14 @@ _08018656:
bl b_push_move_exec
bl _08019F76
.align 2, 0
-_08018668: .4byte word_2024DB8
+_08018668: .4byte gBattleWeather
_0801866C: .4byte 0x02000000
_08018670: .4byte 0x000160a4
_08018674: .4byte 0x00016003
_08018678: .4byte gUnknown_02024D1E
_0801867C: .4byte gUnknown_081D901D
_08018680:
- ldr r2, _080186A8 @ =word_2024DB8
+ ldr r2, _080186A8 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x4
ands r0, r1
@@ -21864,12 +21864,12 @@ _08018690:
strb r5, [r0]
bl _08019F22
.align 2, 0
-_080186A8: .4byte word_2024DB8
+_080186A8: .4byte gBattleWeather
_080186AC: .4byte gUnknown_081D9704
_080186B0: .4byte 0x02000000
_080186B4: .4byte 0x00016003
_080186B8:
- ldr r2, _080186E0 @ =word_2024DB8
+ ldr r2, _080186E0 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x10
ands r0, r1
@@ -21888,12 +21888,12 @@ _080186C8:
strb r2, [r0]
bl _08019F22
.align 2, 0
-_080186E0: .4byte word_2024DB8
+_080186E0: .4byte gBattleWeather
_080186E4: .4byte gUnknown_081D9744
_080186E8: .4byte 0x02000000
_080186EC: .4byte 0x00016003
_080186F0:
- ldr r2, _08018718 @ =word_2024DB8
+ ldr r2, _08018718 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x40
ands r0, r1
@@ -21912,7 +21912,7 @@ _08018700:
strb r5, [r0]
bl _08019F22
.align 2, 0
-_08018718: .4byte word_2024DB8
+_08018718: .4byte gBattleWeather
_0801871C: .4byte gUnknown_081D97FE
_08018720: .4byte 0x02000000
_08018724: .4byte 0x00016003
@@ -22086,7 +22086,7 @@ _08018876:
beq _0801888E
bl _08019F76
_0801888E:
- ldr r0, _080188D0 @ =word_2024DB8
+ ldr r0, _080188D0 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x7
ands r0, r1
@@ -22118,7 +22118,7 @@ _080188C4:
str r0, [r1]
bl _08019F22
.align 2, 0
-_080188D0: .4byte word_2024DB8
+_080188D0: .4byte gBattleWeather
_080188D4: .4byte gUnknown_081D9730
_080188D8: .4byte gUnknown_02024BEC
_080188DC:
@@ -28938,7 +28938,7 @@ _0801C22E:
lsls r0, 24
cmp r0, 0
bne _0801C27E
- ldr r0, _0801C2A8 @ =word_2024DB8
+ ldr r0, _0801C2A8 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x7
ands r0, r1
@@ -28971,7 +28971,7 @@ _0801C290:
_0801C29C: .4byte 0xfffeffff
_0801C2A0: .4byte 0xfffdffff
_0801C2A4: .4byte 0xfffbffff
-_0801C2A8: .4byte word_2024DB8
+_0801C2A8: .4byte gBattleWeather
_0801C2AC: .4byte gBattleMoves
_0801C2B0:
movs r0, 0
@@ -29197,7 +29197,7 @@ _0801C430:
lsls r0, 24
cmp r0, 0
bne _0801C482
- ldr r0, _0801C574 @ =word_2024DB8
+ ldr r0, _0801C574 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
@@ -29267,7 +29267,7 @@ _0801C4C0:
ldrb r0, [r0]
cmp r0, 0x8
bne _0801C518
- ldr r0, _0801C574 @ =word_2024DB8
+ ldr r0, _0801C574 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x18
ands r0, r1
@@ -29325,7 +29325,7 @@ _0801C544:
.align 2, 0
_0801C56C: .4byte gUnknown_02024C07
_0801C570: .4byte gBattleMoves
-_0801C574: .4byte word_2024DB8
+_0801C574: .4byte gBattleWeather
_0801C578: .4byte gAccuracyStageRatios
_0801C57C: .4byte gBattleMons
_0801C580: .4byte gUnknown_02024C08
@@ -33722,7 +33722,7 @@ _0801E7EA:
lsls r0, 24
cmp r0, 0
bne _0801E826
- ldr r0, _0801E87C @ =word_2024DB8
+ ldr r0, _0801E87C @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
@@ -33778,7 +33778,7 @@ _0801E86E:
mov r10, r3
b _0801EA14
.align 2, 0
-_0801E87C: .4byte word_2024DB8
+_0801E87C: .4byte gBattleWeather
_0801E880: .4byte gBattleMons
_0801E884: .4byte gUnknown_02024C0A
_0801E888:
@@ -47354,7 +47354,7 @@ _080256CC: .4byte gUnknown_02024C10
thumb_func_start sub_80256D0
sub_80256D0: @ 80256D0
push {lr}
- ldr r2, _080256F0 @ =word_2024DB8
+ ldr r2, _080256F0 @ =gBattleWeather
ldrh r0, [r2]
movs r1, 0x7
ands r1, r0
@@ -47370,7 +47370,7 @@ sub_80256D0: @ 80256D0
strb r0, [r1, 0x5]
b _0802570C
.align 2, 0
-_080256F0: .4byte word_2024DB8
+_080256F0: .4byte gBattleWeather
_080256F4: .4byte gUnknown_02024C68
_080256F8: .4byte gUnknown_02024D1E
_080256FC:
@@ -50358,7 +50358,7 @@ _08026E90: .4byte gUnknown_02024C10
thumb_func_start sub_8026E94
sub_8026E94: @ 8026E94
push {lr}
- ldr r2, _08026EB4 @ =word_2024DB8
+ ldr r2, _08026EB4 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x18
ands r0, r1
@@ -50374,7 +50374,7 @@ sub_8026E94: @ 8026E94
strb r0, [r1, 0x5]
b _08026ED2
.align 2, 0
-_08026EB4: .4byte word_2024DB8
+_08026EB4: .4byte gBattleWeather
_08026EB8: .4byte gUnknown_02024C68
_08026EBC: .4byte gUnknown_02024D1E
_08026EC0:
@@ -50428,7 +50428,7 @@ _08026F0A:
beq _08026F20
b _0802701C
_08026F20:
- ldr r2, _08026F94 @ =word_2024DB8
+ ldr r2, _08026F94 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x18
ands r0, r1
@@ -50486,7 +50486,7 @@ _08026F20:
movs r0, 0x1
b _08026FAC
.align 2, 0
-_08026F94: .4byte word_2024DB8
+_08026F94: .4byte gBattleWeather
_08026F98: .4byte gUnknown_02024C07
_08026F9C: .4byte gBattleMons
_08026FA0: .4byte gUnknown_02024C98
@@ -53030,7 +53030,7 @@ move_weather_interaction: @ 80283B4
adds r3, r1, 0
cmp r0, 0x97
bne _080283D8
- ldr r0, _08028410 @ =word_2024DB8
+ ldr r0, _08028410 @ =gBattleWeather
ldrh r1, [r0]
movs r0, 0x60
ands r0, r1
@@ -53066,7 +53066,7 @@ _080283FA:
b _0802841A
.align 2, 0
_0802840C: .4byte gBattleMoves
-_08028410: .4byte word_2024DB8
+_08028410: .4byte gBattleWeather
_08028414: .4byte gUnknown_02024C6C
_08028418:
movs r0, 0x2
@@ -55063,7 +55063,7 @@ _080293E4: .4byte gUnknown_02024C10
thumb_func_start sub_80293E8
sub_80293E8: @ 80293E8
push {lr}
- ldr r2, _08029408 @ =word_2024DB8
+ ldr r2, _08029408 @ =gBattleWeather
ldrh r1, [r2]
movs r0, 0x60
ands r0, r1
@@ -55079,7 +55079,7 @@ sub_80293E8: @ 80293E8
strb r0, [r1, 0x5]
b _08029426
.align 2, 0
-_08029408: .4byte word_2024DB8
+_08029408: .4byte gBattleWeather
_0802940C: .4byte gUnknown_02024C68
_08029410: .4byte gUnknown_02024D1E
_08029414:
@@ -55398,7 +55398,7 @@ atkC0_recoverbasedonsunlight: @ 802967C
ldrh r0, [r0, 0x2C]
cmp r1, r0
beq _0802975C
- ldr r4, _080296F4 @ =word_2024DB8
+ ldr r4, _080296F4 @ =gBattleWeather
ldrh r0, [r4]
cmp r0, 0
beq _080296CE
@@ -55439,7 +55439,7 @@ _080296CE:
_080296E8: .4byte gUnknown_02024C08
_080296EC: .4byte gUnknown_02024C07
_080296F0: .4byte gBattleMons
-_080296F4: .4byte word_2024DB8
+_080296F4: .4byte gBattleWeather
_080296F8: .4byte gUnknown_02024BEC
_080296FC:
ldrh r1, [r4]
@@ -56293,7 +56293,7 @@ _08029DA8: .4byte gUnknown_02024C10
thumb_func_start sub_8029DAC
sub_8029DAC: @ 8029DAC
push {lr}
- ldr r3, _08029DD0 @ =word_2024DB8
+ ldr r3, _08029DD0 @ =gBattleWeather
ldrh r1, [r3]
movs r2, 0x80
adds r0, r2, 0
@@ -56310,7 +56310,7 @@ sub_8029DAC: @ 8029DAC
strb r0, [r1, 0x5]
b _08029DEA
.align 2, 0
-_08029DD0: .4byte word_2024DB8
+_08029DD0: .4byte gBattleWeather
_08029DD4: .4byte gUnknown_02024C68
_08029DD8: .4byte gUnknown_02024D1E
_08029DDC:
@@ -58875,7 +58875,7 @@ sub_802B1C0: @ 802B1C0
lsls r0, 24
cmp r0, 0
bne _0802B276
- ldr r3, _0802B218 @ =word_2024DB8
+ ldr r3, _0802B218 @ =gBattleWeather
ldrb r0, [r3]
ldr r2, _0802B21C @ =0x02000000
cmp r0, 0
@@ -58896,7 +58896,7 @@ _0802B202:
strb r0, [r1]
b _0802B276
.align 2, 0
-_0802B218: .4byte word_2024DB8
+_0802B218: .4byte gBattleWeather
_0802B21C: .4byte 0x02000000
_0802B220: .4byte 0x0001601f
_0802B224: .4byte 0x0001601c
diff --git a/include/hold_effects.h b/include/hold_effects.h
new file mode 100644
index 000000000..b653f5a92
--- /dev/null
+++ b/include/hold_effects.h
@@ -0,0 +1,72 @@
+#ifndef GUARD_HOLD_EFFECTS_H
+#define GUARD_HOLD_EFFECTS_H
+
+#define HOLD_EFFECT_NONE 0
+#define HOLD_EFFECT_RESTORE_HP 1
+#define HOLD_EFFECT_CURE_PAR 2
+#define HOLD_EFFECT_CURE_SLP 3
+#define HOLD_EFFECT_CURE_PSN 4
+#define HOLD_EFFECT_CURE_BRN 5
+#define HOLD_EFFECT_CURE_FRZ 6
+#define HOLD_EFFECT_RESTORE_PP 7
+#define HOLD_EFFECT_CURE_CONFUSION 8
+#define HOLD_EFFECT_CURE_STATUS 9
+#define HOLD_EFFECT_CONFUSE_SPICY 10
+#define HOLD_EFFECT_CONFUSE_DRY 11
+#define HOLD_EFFECT_CONFUSE_SWEET 12
+#define HOLD_EFFECT_CONFUSE_BITTER 13
+#define HOLD_EFFECT_CONFUSE_SOUR 14
+#define HOLD_EFFECT_ATTACK_UP 15
+#define HOLD_EFFECT_DEFENSE_UP 16
+#define HOLD_EFFECT_SPEED_UP 17
+#define HOLD_EFFECT_SP_ATTACK_UP 18
+#define HOLD_EFFECT_SP_DEFENSE_UP 19
+#define HOLD_EFFECT_CRITICAL_UP 20
+#define HOLD_EFFECT_RANDOM_STAT_UP 21
+#define HOLD_EFFECT_EVASION_UP 22
+#define HOLD_EFFECT_RESTORE_STATS 23
+#define HOLD_EFFECT_MACHO_BRACE 24
+#define HOLD_EFFECT_EXP_SHARE 25
+#define HOLD_EFFECT_QUICK_CLAW 26
+#define HOLD_EFFECT_HAPPINESS_UP 27
+#define HOLD_EFFECT_CURE_ATTRACT 28
+#define HOLD_EFFECT_CHOICE_BAND 29
+#define HOLD_EFFECT_FLINCH 30
+#define HOLD_EFFECT_BUG_POWER 31
+#define HOLD_EFFECT_DOUBLE_PRIZE 32
+#define HOLD_EFFECT_REPEL 33
+#define HOLD_EFFECT_SOUL_DEW 34
+#define HOLD_EFFECT_DEEP_SEA_TOOTH 35
+#define HOLD_EFFECT_DEEP_SEA_SCALE 36
+#define HOLD_EFFECT_CAN_ALWAYS_RUN 37
+#define HOLD_EFFECT_PREVENT_EVOLVE 38
+#define HOLD_EFFECT_FOCUS_BAND 39
+#define HOLD_EFFECT_LUCKY_EGG 40
+#define HOLD_EFFECT_SCOPE_LENS 41
+#define HOLD_EFFECT_STEEL_POWER 42
+#define HOLD_EFFECT_LEFTOVERS 43
+#define HOLD_EFFECT_DRAGON_SCALE 44
+#define HOLD_EFFECT_LIGHT_BALL 45
+#define HOLD_EFFECT_GROUND_POWER 46
+#define HOLD_EFFECT_ROCK_POWER 47
+#define HOLD_EFFECT_GRASS_POWER 48
+#define HOLD_EFFECT_DARK_POWER 49
+#define HOLD_EFFECT_FIGHTING_POWER 50
+#define HOLD_EFFECT_ELECTRIC_POWER 51
+#define HOLD_EFFECT_WATER_POWER 52
+#define HOLD_EFFECT_FLYING_POWER 53
+#define HOLD_EFFECT_POISON_POWER 54
+#define HOLD_EFFECT_ICE_POWER 55
+#define HOLD_EFFECT_GHOST_POWER 56
+#define HOLD_EFFECT_PSYCHIC_POWER 57
+#define HOLD_EFFECT_FIRE_POWER 58
+#define HOLD_EFFECT_DRAGON_POWER 59
+#define HOLD_EFFECT_NORMAL_POWER 60
+#define HOLD_EFFECT_UP_GRADE 61
+#define HOLD_EFFECT_SHELL_BELL 62
+#define HOLD_EFFECT_LUCKY_PUNCH 63
+#define HOLD_EFFECT_METAL_POWDER 64
+#define HOLD_EFFECT_THICK_CLUB 65
+#define HOLD_EFFECT_STICK 66
+
+#endif // GUARD_HOLD_EFFECTS_H
diff --git a/include/pokemon.h b/include/pokemon.h
index dd80e1ea1..ee141dcc5 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -95,6 +95,25 @@
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
+#define TYPE_NORMAL 0x00
+#define TYPE_FIGHTING 0x01
+#define TYPE_FLYING 0x02
+#define TYPE_POISON 0x03
+#define TYPE_GROUND 0x04
+#define TYPE_ROCK 0x05
+#define TYPE_BUG 0x06
+#define TYPE_GHOST 0x07
+#define TYPE_STEEL 0x08
+#define TYPE_MYSTERY 0x09
+#define TYPE_FIRE 0x0a
+#define TYPE_WATER 0x0b
+#define TYPE_GRASS 0x0c
+#define TYPE_ELECTRIC 0x0d
+#define TYPE_PSYCHIC 0x0e
+#define TYPE_ICE 0x0f
+#define TYPE_DRAGON 0x10
+#define TYPE_DARK 0x11
+
struct PokemonSubstruct0
{
u16 species;
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 37fc15414..186fa062c 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -7,6 +7,9 @@
#include "sprite.h"
#include "berry.h"
#include "item.h"
+#include "abilities.h"
+#include "hold_effects.h"
+#include "flag.h"
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[6];
@@ -21,7 +24,7 @@ extern struct BattlePokemon gBattleMons[4];
extern u16 gUnknown_02024BE6;
extern u8 byte_2024C06;
extern u8 gCritMultiplier;
-extern u16 word_2024DB8;
+extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
extern struct SpriteTemplate gUnknown_02024E8C;
@@ -47,7 +50,6 @@ extern u8 gStatStageRatios[];
extern u8 gHoldEffectToType[][2];
extern u8 battle_side_get_owner(u8);
-extern u8 FlagGet(u16);
extern u8 sub_8018324(u8, u8, u8, u8, u16);
extern u8 sub_803C348(u8);
@@ -108,14 +110,14 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item);
}
- if (attacker->ability == 37 || attacker->ability == 74)
+ if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER)
attack *= 2;
if (!(gUnknown_020239F8 & 0x902))
{
if ((gUnknown_020239F8 & 8)
&& gTrainerBattleOpponent != 1024
- && FlagGet(2055)
+ && FlagGet(BADGE01_GET)
&& !battle_side_get_owner(a7))
attack = (110 * attack) / 100;
@@ -123,7 +125,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
{
if ((gUnknown_020239F8 & 8)
&& gTrainerBattleOpponent != 1024
- && FlagGet(2059)
+ && FlagGet(BADGE05_GET)
&& !battle_side_get_owner(a8))
defense = (110 * defense) / 100;
@@ -131,7 +133,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
{
if ((gUnknown_020239F8 & 8)
&& gTrainerBattleOpponent != 1024
- && FlagGet(2061)
+ && FlagGet(BADGE07_GET)
&& !battle_side_get_owner(a7))
spAttack = (110 * spAttack) / 100;
@@ -139,7 +141,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
{
if ((gUnknown_020239F8 & 8)
&& gTrainerBattleOpponent != 1024
- && FlagGet(2061)
+ && FlagGet(BADGE07_GET)
&& !battle_side_get_owner(a8))
spDefense = (110 * spDefense) / 100;
}
@@ -160,45 +162,45 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
}
}
- if (attackerHoldEffect == 29)
+ if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND)
attack = (150 * attack) / 100;
- if (attackerHoldEffect == 34 && !(gUnknown_020239F8 & 0x100) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
+ if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gUnknown_020239F8 & 0x100) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
spAttack = (150 * spAttack) / 100;
- if (defenderHoldEffect == 34 && !(gUnknown_020239F8 & 0x100) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
+ if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gUnknown_020239F8 & 0x100) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
spDefense = (150 * spDefense) / 100;
- if (attackerHoldEffect == 35 && attacker->species == 373)
+ if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL)
spAttack *= 2;
- if (defenderHoldEffect == 36 && defender->species == 373)
+ if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL)
spDefense *= 2;
- if (attackerHoldEffect == 45 && attacker->species == 25)
+ if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU)
spAttack *= 2;
- if (defenderHoldEffect == 64 && defender->species == 132)
+ if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO)
defense *= 2;
- if (attackerHoldEffect == 65 && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK))
+ if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK))
attack *= 2;
- if (defender->ability == 47 && (type == 10 || type == 15))
+ if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE))
spAttack /= 2;
- if (attacker->ability == 55)
+ if (attacker->ability == ABILITY_HUSTLE)
attack = (150 * attack) / 100;
- if (attacker->ability == 57 && sub_8018324(0xE, 0, 0x3A, 0, 0))
+ if (attacker->ability == ABILITY_PLUS && sub_8018324(0xE, 0, ABILITY_MINUS, 0, 0))
spAttack = (150 * spAttack) / 100;
- if (attacker->ability == 58 && sub_8018324(0xE, 0, 0x39, 0, 0))
+ if (attacker->ability == ABILITY_MINUS && sub_8018324(0xE, 0, ABILITY_PLUS, 0, 0))
spAttack = (150 * spAttack) / 100;
- if (attacker->ability == 62 && attacker->status1)
+ if (attacker->ability == ABILITY_GUTS && attacker->status1)
attack = (150 * attack) / 100;
- if (defender->ability == 63 && defender->status1)
+ if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1)
defense = (150 * defense) / 100;
- if (type == 13 && sub_8018324(0xE, 0, 0, 0xFD, 0))
+ if (type == TYPE_ELECTRIC && sub_8018324(0xE, 0, 0, 0xFD, 0))
gBattleMovePower /= 2;
- if (type == 10 && sub_8018324(0xE, 0, 0, 0xFE, 0))
+ if (type == TYPE_FIRE && sub_8018324(0xE, 0, 0, 0xFE, 0))
gBattleMovePower /= 2;
- if (type == 12 && attacker->ability == 65 && attacker->hp <= (attacker->maxHP / 3))
+ if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3))
gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (type == 10 && attacker->ability == 66 && attacker->hp <= (attacker->maxHP / 3))
+ if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3))
gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (type == 11 && attacker->ability == 67 && attacker->hp <= (attacker->maxHP / 3))
+ if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3))
gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (type == 6 && attacker->ability == 68 && attacker->hp <= (attacker->maxHP / 3))
+ if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3))
gBattleMovePower = (150 * gBattleMovePower) / 100;
if (gBattleMoves[gUnknown_02024BE6].effect == 7)
defense /= 2;
@@ -229,7 +231,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
damage = (a / b) / 50;
- if ((attacker->status1 & 0x10) && attacker->ability != 62)
+ if ((attacker->status1 & 0x10) && attacker->ability != ABILITY_GUTS)
damage /= 2;
if ((a4 & 1) && gCritMultiplier == 1)
@@ -284,37 +286,37 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
damage /= 2;
}
- if ((gUnknown_020239F8 & 1) && gBattleMoves[move].target == 8 && sub_803C348(2u) == 2)
+ if ((gUnknown_020239F8 & 1) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
damage /= 2;
- if (!sub_8018324(0xE, 0, 0xD, 0, 0) && !sub_8018324(0xE, 0, 0x4D, 0, 0))
+ if (!sub_8018324(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !sub_8018324(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
{
- if (word_2024DB8 & 1)
+ if (gBattleWeather & 1)
{
- if (type == 10)
+ if (type == TYPE_FIRE)
{
damage /= 2;
}
- else if (type == 11)
+ else if (type == TYPE_WATER)
{
damage = (15 * damage) / 10;
}
}
- if ((word_2024DB8 & 0x9F) && gUnknown_02024BE6 == 76)
+ if ((gBattleWeather & 0x9F) && gUnknown_02024BE6 == 76)
damage /= 2;
- if (word_2024DB8 & 0x60)
+ if (gBattleWeather & 0x60)
{
- if (type == 10)
+ if (type == TYPE_FIRE)
{
damage = (15 * damage) / 10;
}
- else if (type == 11)
+ else if (type == TYPE_WATER)
{
damage /= 2;
}
}
}
- if ((dword_2017100[a7] & 1) && type == 10)
+ if ((dword_2017100[a7] & 1) && type == TYPE_FIRE)
damage = (15 * damage) / 10;
}
@@ -1381,7 +1383,7 @@ _0803C25C:\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _0803C30C\n\
- ldr r2, _0803C2AC @ =word_2024DB8\n\
+ ldr r2, _0803C2AC @ =gBattleWeather\n\
ldrh r1, [r2]\n\
movs r0, 0x1\n\
ands r0, r1\n\
@@ -1397,7 +1399,7 @@ _0803C25C:\n\
.align 2, 0\n\
_0803C2A4: .4byte gUnknown_020239F8\n\
_0803C2A8: .4byte gBattleMoves\n\
-_0803C2AC: .4byte word_2024DB8\n\
+_0803C2AC: .4byte gBattleWeather\n\
_0803C2B0:\n\
lsrs r0, r5, 31\n\
adds r0, r5, r0\n\
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 251459571..2baf1155e 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -26,7 +26,7 @@ extern u8 gUnknown_02024C07;
extern u8 gUnknown_02024C08;
extern u8 gUnknown_02024C0C;
extern u8 gXXX_CritRelated;
-extern u16 word_2024DB8;
+extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
extern struct SpriteTemplate gUnknown_02024E8C;
diff --git a/sym_ewram.txt b/sym_ewram.txt
index b96fae641..d76fc1e13 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -246,7 +246,7 @@ gUnknown_02024D28: @ 2024D28
gUnknown_02024D68: @ 2024D68
.space 0x50
-word_2024DB8: @ 2024DB8
+gBattleWeather: @ 2024DB8
.space 0x4
gUnknown_02024DBC: @ 2024DBC