diff --git a/asm/include/overlay_29_0231B33C.inc b/asm/include/overlay_29_0231B33C.inc index a1fadad6..cd8f2944 100644 --- a/asm/include/overlay_29_0231B33C.inc +++ b/asm/include/overlay_29_0231B33C.inc @@ -1,117 +1,25 @@ #pragma once .public AbilityIsActiveVeneer -.public AddHeldItemToBag .public AnimationDelayOrSomething -.public APPLES_AND_BERRIES_ITEM_IDS -.public ApplyBlastSeedEffect -.public ApplyCalciumEffect -.public ApplyCheriBerryEffect -.public ApplyDoughSeedEffect -.public ApplyGinsengEffect -.public ApplyGonePebbleEffect -.public ApplyGracideaEffect -.public ApplyGravelyrockEffect -.public ApplyGrimyFoodEffect -.public ApplyGummiBoostsDungeonMode -.public ApplyHungerSeedEffect -.public ApplyIronEffect -.public ApplyKeyEffect -.public ApplyMixElixirEffect -.public ApplyPechaBerryEffect -.public ApplyProteinEffect -.public ApplyRawstBerryEffect -.public ApplyViaSeedEffect -.public ApplyVileSeedEffect -.public ApplyViolentSeedEffect -.public ApplyZincEffect -.public BoostIQ .public BoostSpeedOneStage -.public CACNEA_SPIKE_POWER -.public CalcDamageFixedNoCategory -.public CALCIUM_STAT_BOOST -.public CalcStatusDuration -.public CheckVariousConditions__0230156C -.public CORSOLA_TWIG_POWER -.public DealDamageProjectile -.public DetermineMonsterShadow .public DUNGEON_PTR +.public DetermineMonsterShadow .public DungeonGetSpriteIndex -.public EndNegativeStatusConditionWrapper -.public EnemyEvolution -.public EntityIsValid__0231CBC8 -.public ExclusiveItemEffectFlagTest .public FemaleToMaleForm .public FreezeAnim -.public GEO_PEBBLE_DAMAGE .public GetActiveTeamMember .public GetIdleAnimationId -.public GetItemCategoryVeneer -.public GOLD_FANG_POWER -.public GOLD_THORN_POWER -.public GRAVELEROCK_DAMAGE -.public GUMMI_STAT_BOOST -.public InitMove -.public IqSkillIsEnabled -.public IRON_STAT_BOOST -.public IRON_THORN_POWER -.public IsBagFull .public IsShaymin .public IsSkyExclusiveDungeon -.public LevelUpItemEffect -.public LIFE_SEED_HP_BOOST -.public LogMessageByIdWithPopupCheckUserTarget -.public ORAN_BERRY_FULL_HP_BOOST -.public ORAN_BERRY_HP_RESTORATION -.public OREN_BERRY_DAMAGE -.public ov10_022C44EC -.public ov10_022C4558 -.public ov10_022C4574 +.public SetMonsterTypeAndAbility +.public SwapMonsterWanFileIndex +.public UnfreezeAnim .public ov10_022C457C -.public ov10_022C4864 .public ov29_022E3590 -.public ov29_022E5A00 -.public ov29_022E5AE4 .public ov29_022E60E4 .public ov29_022E81F8 .public ov29_022E9FD0 .public ov29_022EA370 -.public ov29_022F9EA0 -.public ov29_022FB920 -.public ov29_022FB9BC .public ov29_02304830 -.public ov29_0230F9A4 -.public PlaySeByIdIfNotSilence -.public PrepareItemForPrinting__02345728 -.public PROTEIN_STAT_BOOST -.public RARE_FOSSIL_DAMAGE -.public RestoreAllMovePP -.public SetMonsterTypeAndAbility -.public SILVER_SPIKE_POWER -.public SITRUS_BERRY_FULL_HP_BOOST -.public SITRUS_BERRY_HP_RESTORATION -.public SLEEP_TURN_RANGE -.public SpawnDroppedItemWrapper -.public STICK_POWER .public sub_020017EC .public sub_0201CF80 -.public SubstitutePlaceholderStringTags -.public SwapMonsterWanFileIndex -.public TryDecreaseLevel -.public TryIncreaseBelly -.public TryIncreaseHp -.public TryInflictBlinkerStatus -.public TryInflictConfusedStatus -.public TryInflictCrossEyedStatus -.public TryInflictDropeyeStatus -.public TryInflictEyedropStatus -.public TryInflictInvisibleStatus -.public TryInflictPetrifiedStatus -.public TryInflictSleeplessStatus -.public TryInflictSleepStatus -.public TryInflictSlipStatus -.public TryWarp -.public UnfreezeAnim -.public UpdateShopkeeperModeAfterAttack -.public WaitUntilAlertBoxPauseIsOver -.public WONDER_GUMMI_STAT_BOOST -.public ZINC_STAT_BOOST diff --git a/asm/overlay_29_0231B33C.s b/asm/overlay_29_0231B33C.s index 8596e6a1..dc22e1b7 100644 --- a/asm/overlay_29_0231B33C.s +++ b/asm/overlay_29_0231B33C.s @@ -285,1514 +285,3 @@ _0231B680: .word 0x00000216 _0231B684: .word 0x00000217 _0231B688: .word DUNGEON_PTR arm_func_end ChangeShayminForme - - arm_func_start ApplyItemEffect -ApplyItemEffect: ; 0x0231B68C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x5c - movs sb, r0 - mov sl, r2 - mov r8, r3 - ldr r7, [sp, #0x80] - ldr r6, [sp, #0x84] - beq _0231B840 - cmp r1, #0 - bne _0231B840 - mov r0, r7 - ldr r5, [r7, #0xb4] - mov r4, #0 - bl ov29_022FB9BC - cmp r0, #0 - beq _0231B6E4 - mov r0, r8 - mov r2, r6 - add r1, r7, #4 - mov r3, r4 - bl SpawnDroppedItemWrapper - b _0231CBA4 -_0231B6E4: - ldrb r0, [r5, #6] - cmp r0, #0 - ldrsh r0, [r6, #4] - beq _0231B74C - bl GetItemCategoryVeneer - cmp r0, #0 - beq _0231B720 - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #2 - beq _0231B720 - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #1 - movne r4, #1 -_0231B720: - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #4 - bne _0231B768 - ldrsh r1, [r6, #4] - cmp r1, #0x190 - blt _0231B768 - ldr r0, _0231C6C0 ; =0x000001AB - cmp r1, r0 - movle r4, #0 - b _0231B768 -_0231B74C: - bl GetItemCategoryVeneer - cmp r0, #2 - beq _0231B768 - mov r0, r7 - mov r1, #2 - bl IqSkillIsEnabled - mov r4, r0 -_0231B768: - mov r0, r7 - bl CheckVariousConditions__0230156C - cmp r0, #0 - movne r4, #0 - cmp r4, #0 - beq _0231B840 - ldrb r0, [r5, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0231B840 - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0231B7B0 - bl IsBagFull - cmp r0, #0 - bne _0231B840 -_0231B7B0: - ldrb r0, [r5, #9] - cmp r0, #1 - bne _0231B7D4 - mov r0, r8 - mov r2, r6 - add r1, r7, #4 - mov r3, #0 - bl SpawnDroppedItemWrapper - b _0231CBA4 -_0231B7D4: - ldr r0, _0231C6C4 ; =0x00001317 - bl PlaySeByIdIfNotSilence - mov r1, r6 - mov r0, #0 - bl PrepareItemForPrinting__02345728 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231C6C8 ; =0x00000BE6 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - ldrh r0, [r6] - strh r0, [r5, #0x62] - ldrh r0, [r6, #2] - strh r0, [r5, #0x64] - ldrh r0, [r6, #4] - strh r0, [r5, #0x66] - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0231B834 - mov r0, r5 - bl AddHeldItemToBag -_0231B834: - mov r0, r7 - bl ov29_022F9EA0 - b _0231CBA4 -_0231B840: - cmp sb, #0 - beq _0231B860 - mov r0, r7 - mov r1, r6 - bl ov29_022E5A00 - mov r0, r8 - mov r1, r7 - bl UpdateShopkeeperModeAfterAttack -_0231B860: - ldrb r0, [r6] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0231B8E4 - mov r1, r6 - mov r0, #0 - bl PrepareItemForPrinting__02345728 - ldr r2, _0231C6CC ; =0x00000BE7 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - cmp sb, #0 - beq _0231B8E4 - add r1, sp, #0x21 - ldr r0, _0231C6D0 ; =ov10_022C4574 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - mov r0, r8 - bl EnemyEvolution - b _0231CBA4 -_0231B8E4: - cmp sb, #0 - bne _0231B8F8 - mov r0, r7 - mov r1, r6 - bl ov29_022E5AE4 -_0231B8F8: - mov r0, r8 - mov r1, r6 - bl ov29_0230F9A4 - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #2 - bne _0231B92C - mov r3, #0 - mov r0, r8 - mov r1, r7 - mov r2, #5 - str r3, [sp] - bl TryIncreaseBelly -_0231B92C: - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #5 - beq _0231B94C - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #0xa - bne _0231B9A8 -_0231B94C: - cmp sb, #0 - beq _0231B994 - add r1, sp, #0x20 - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231B994: - ldr r2, _0231C6DC ; =0x00000BE8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231B9A8: - ldrsh r0, [r6, #4] - cmp r0, #0x19c - bgt _0231BD6C - bge _0231CA60 - cmp r0, #0x194 - bgt _0231BD00 - bge _0231CA60 - cmp r0, #0x190 - bgt _0231BCD0 - bge _0231CA60 - cmp r0, #0xb6 - bgt _0231BCC0 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0231CABC -_0231B9E4: ; jump table - b _0231CABC ; case 0 - b _0231BE50 ; case 1 - b _0231BE88 ; case 2 - b _0231BEC0 ; case 3 - b _0231BEF8 ; case 4 - b _0231BF30 ; case 5 - b _0231BF68 ; case 6 - b _0231BFDC ; case 7 - b _0231BFA0 ; case 8 - b _0231C018 ; case 9 - b _0231C050 ; case 10 - b _0231CABC ; case 11 - b _0231CABC ; case 12 - b _0231CABC ; case 13 - b _0231CABC ; case 14 - b _0231CABC ; case 15 - b _0231CABC ; case 16 - b _0231CABC ; case 17 - b _0231CABC ; case 18 - b _0231CABC ; case 19 - b _0231CABC ; case 20 - b _0231CABC ; case 21 - b _0231CABC ; case 22 - b _0231CABC ; case 23 - b _0231CABC ; case 24 - b _0231CABC ; case 25 - b _0231CABC ; case 26 - b _0231CABC ; case 27 - b _0231CABC ; case 28 - b _0231CABC ; case 29 - b _0231CABC ; case 30 - b _0231CABC ; case 31 - b _0231CABC ; case 32 - b _0231CABC ; case 33 - b _0231CABC ; case 34 - b _0231CABC ; case 35 - b _0231CABC ; case 36 - b _0231CABC ; case 37 - b _0231CABC ; case 38 - b _0231CABC ; case 39 - b _0231CABC ; case 40 - b _0231CABC ; case 41 - b _0231CABC ; case 42 - b _0231CABC ; case 43 - b _0231CABC ; case 44 - b _0231CABC ; case 45 - b _0231CABC ; case 46 - b _0231CABC ; case 47 - b _0231CABC ; case 48 - b _0231CABC ; case 49 - b _0231CABC ; case 50 - b _0231CABC ; case 51 - b _0231CABC ; case 52 - b _0231CABC ; case 53 - b _0231CABC ; case 54 - b _0231CABC ; case 55 - b _0231CABC ; case 56 - b _0231CABC ; case 57 - b _0231CABC ; case 58 - b _0231CABC ; case 59 - b _0231CABC ; case 60 - b _0231CABC ; case 61 - b _0231CABC ; case 62 - b _0231CABC ; case 63 - b _0231CABC ; case 64 - b _0231CABC ; case 65 - b _0231CABC ; case 66 - b _0231CABC ; case 67 - b _0231CABC ; case 68 - b _0231C08C ; case 69 - b _0231C0A4 ; case 70 - b _0231C0CC ; case 71 - b _0231C15C ; case 72 - b _0231CABC ; case 73 - b _0231C118 ; case 74 - b _0231C210 ; case 75 - b _0231C130 ; case 76 - b _0231C0F4 ; case 77 - b _0231C248 ; case 78 - b _0231C258 ; case 79 - b _0231C144 ; case 80 - b _0231C194 ; case 81 - b _0231C184 ; case 82 - b _0231C16C ; case 83 - b _0231C1BC ; case 84 - b _0231C234 ; case 85 - b _0231C1A4 ; case 86 - b _0231C278 ; case 87 - b _0231C268 ; case 88 - b _0231C1F4 ; case 89 - b _0231C1E4 ; case 90 - b _0231C224 ; case 91 - b _0231C304 ; case 92 - b _0231C31C ; case 93 - b _0231C338 ; case 94 - b _0231C348 ; case 95 - b _0231C360 ; case 96 - b _0231C370 ; case 97 - b _0231CABC ; case 98 - b _0231C28C ; case 99 - b _0231C2A4 ; case 100 - b _0231C2BC ; case 101 - b _0231C2D4 ; case 102 - b _0231C380 ; case 103 - b _0231C6B0 ; case 104 - b _0231CABC ; case 105 - b _0231C768 ; case 106 - b _0231C7A0 ; case 107 - b _0231C2EC ; case 108 - b _0231C394 ; case 109 - b _0231C3B4 ; case 110 - b _0231C3F4 ; case 111 - b _0231C3D4 ; case 112 - b _0231C5FC ; case 113 - b _0231C61C ; case 114 - b _0231C63C ; case 115 - b _0231C7B0 ; case 116 - b _0231C7C0 ; case 117 - b _0231C7FC ; case 118 - b _0231C404 ; case 119 - b _0231C420 ; case 120 - b _0231C43C ; case 121 - b _0231C458 ; case 122 - b _0231C474 ; case 123 - b _0231C490 ; case 124 - b _0231C4AC ; case 125 - b _0231C4C8 ; case 126 - b _0231C4E4 ; case 127 - b _0231C500 ; case 128 - b _0231C51C ; case 129 - b _0231C538 ; case 130 - b _0231C554 ; case 131 - b _0231C570 ; case 132 - b _0231C58C ; case 133 - b _0231C5A8 ; case 134 - b _0231C5C4 ; case 135 - b _0231C5E0 ; case 136 - b _0231C80C ; case 137 - b _0231CABC ; case 138 - b _0231CABC ; case 139 - b _0231CABC ; case 140 - b _0231CABC ; case 141 - b _0231CABC ; case 142 - b _0231CABC ; case 143 - b _0231CABC ; case 144 - b _0231CABC ; case 145 - b _0231CABC ; case 146 - b _0231CABC ; case 147 - b _0231CABC ; case 148 - b _0231CABC ; case 149 - b _0231CABC ; case 150 - b _0231CABC ; case 151 - b _0231CABC ; case 152 - b _0231CABC ; case 153 - b _0231CABC ; case 154 - b _0231CABC ; case 155 - b _0231CABC ; case 156 - b _0231CABC ; case 157 - b _0231CABC ; case 158 - b _0231CABC ; case 159 - b _0231CABC ; case 160 - b _0231CABC ; case 161 - b _0231CABC ; case 162 - b _0231CABC ; case 163 - b _0231CABC ; case 164 - b _0231CABC ; case 165 - b _0231CABC ; case 166 - b _0231C81C ; case 167 - b _0231C82C ; case 168 - b _0231C844 ; case 169 - b _0231C8B0 ; case 170 - b _0231C91C ; case 171 - b _0231C988 ; case 172 - b _0231CABC ; case 173 - b _0231CABC ; case 174 - b _0231CABC ; case 175 - b _0231CABC ; case 176 - b _0231CABC ; case 177 - b _0231CABC ; case 178 - b _0231CA50 ; case 179 - b _0231C9F4 ; case 180 - b _0231CABC ; case 181 - b _0231C65C ; case 182 -_0231BCC0: - ldr r1, _0231C6E0 ; =0x0000016B - cmp r0, r1 - beq _0231CB14 - b _0231CABC -_0231BCD0: - ldr r1, _0231C6E4 ; =0x00000192 - cmp r0, r1 - bgt _0231BCF0 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BCF0: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD00: - cmp r0, #0x198 - bgt _0231BD3C - bge _0231CA60 - ldr r1, _0231C6E8 ; =0x00000196 - cmp r0, r1 - bgt _0231BD2C - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD2C: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD3C: - ldr r1, _0231C6EC ; =0x0000019A - cmp r0, r1 - bgt _0231BD5C - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD5C: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD6C: - cmp r0, #0x1a4 - bgt _0231BDE4 - bge _0231CA60 - cmp r0, #0x1a0 - bgt _0231BDB4 - bge _0231CA60 - ldr r1, _0231C6F0 ; =0x0000019E - cmp r0, r1 - bgt _0231BDA4 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDA4: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDB4: - ldr r1, _0231C6F4 ; =0x000001A2 - cmp r0, r1 - bgt _0231BDD4 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDD4: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDE4: - cmp r0, #0x1a8 - bgt _0231BE20 - bge _0231CA60 - ldr r1, _0231C6F8 ; =0x000001A6 - cmp r0, r1 - bgt _0231BE10 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE10: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE20: - ldr r1, _0231C6FC ; =0x000001AA - cmp r0, r1 - bgt _0231BE40 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE40: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE50: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x52 - bl InitMove - ldr r0, _0231C704 ; =STICK_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #1 - add r2, sp, #0x52 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231BE88: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x4a - bl InitMove - ldr r0, _0231C708 ; =IRON_THORN_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #2 - add r2, sp, #0x4a - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231BEC0: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x42 - bl InitMove - ldr r0, _0231C70C ; =SILVER_SPIKE_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #3 - add r2, sp, #0x42 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231BEF8: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x3a - bl InitMove - ldr r0, _0231C710 ; =GOLD_FANG_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #4 - add r2, sp, #0x3a - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231BF30: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x32 - bl InitMove - ldr r0, _0231C714 ; =CACNEA_SPIKE_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #5 - add r2, sp, #0x32 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231BF68: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x2a - bl InitMove - ldr r0, _0231C718 ; =CORSOLA_TWIG_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #6 - add r2, sp, #0x2a - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231BFA0: - mov r4, #0 - str r4, [sp] - ldr r0, _0231C71C ; =GEO_PEBBLE_DAMAGE - ldr r1, _0231C720 ; =0x0000024F - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231BFDC: - mov r4, #0 - str r4, [sp] - ldr r0, _0231C724 ; =GRAVELEROCK_DAMAGE - ldr r1, _0231C720 ; =0x0000024F - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C018: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x22 - bl InitMove - ldr r0, _0231C728 ; =GOLD_THORN_POWER - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #9 - add r2, sp, #0x22 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl DealDamageProjectile - b _0231CB14 -_0231C050: - mov r4, #0 - str r4, [sp] - ldr r0, _0231C72C ; =RARE_FOSSIL_DAMAGE - ldr r1, _0231C720 ; =0x0000024F - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C08C: - mov r0, r8 - mov r1, r7 - mov r3, sl - mov r2, #1 - bl EndNegativeStatusConditionWrapper - b _0231CB14 -_0231C0A4: - ldr r1, _0231C730 ; =ORAN_BERRY_HP_RESTORATION - ldr r0, _0231C734 ; =ORAN_BERRY_FULL_HP_BOOST - ldrsh r2, [r1] - ldrsh r3, [r0] - mov r4, #1 - mov r0, r8 - mov r1, r7 - str r4, [sp] - bl TryIncreaseHp - b _0231CB14 -_0231C0CC: - ldr r1, _0231C738 ; =SITRUS_BERRY_HP_RESTORATION - ldr r0, _0231C73C ; =SITRUS_BERRY_FULL_HP_BOOST - ldrsh r2, [r1] - ldrsh r3, [r0] - mov r4, #1 - mov r0, r8 - mov r1, r7 - str r4, [sp] - bl TryIncreaseHp - b _0231CB14 -_0231C0F4: - ldr r0, _0231C740 ; =LIFE_SEED_HP_BOOST - mov r4, #1 - ldrsh r3, [r0] - mov r0, r8 - mov r1, r7 - mov r2, #0 - str r4, [sp] - bl TryIncreaseHp - b _0231CB14 -_0231C118: - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryInflictBlinkerStatus - b _0231CB14 -_0231C130: - mov r0, r8 - mov r1, r7 - mov r2, #0 - bl TryInflictCrossEyedStatus - b _0231CB14 -_0231C144: - mov r0, r8 - mov r1, r7 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - b _0231CB14 -_0231C15C: - mov r0, r8 - mov r1, r7 - bl TryInflictEyedropStatus - b _0231CB14 -_0231C16C: - mov r0, r8 - mov r1, r7 - mov r2, #1 - mov r3, #0 - bl TryInflictConfusedStatus - b _0231CB14 -_0231C184: - mov r0, r8 - mov r1, r7 - bl ApplyCheriBerryEffect - b _0231CB14 -_0231C194: - mov r0, r8 - mov r1, r7 - bl ApplyPechaBerryEffect - b _0231CB14 -_0231C1A4: - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryWarp - b _0231CB14 -_0231C1BC: - ldr r1, _0231C744 ; =SLEEP_TURN_RANGE - mov r0, r7 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r8 - mov r1, r7 - mov r3, #1 - bl TryInflictSleepStatus - b _0231CB14 -_0231C1E4: - mov r0, r8 - mov r1, r7 - bl TryInflictSleeplessStatus - b _0231CB14 -_0231C1F4: - mov r2, #1 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl LevelUpItemEffect - b _0231CB14 -_0231C210: - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl TryDecreaseLevel - b _0231CB14 -_0231C224: - mov r0, r8 - mov r1, r7 - bl TryInflictPetrifiedStatus - b _0231CB14 -_0231C234: - ldr r2, _0231C748 ; =0x00000BE9 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C248: - mov r0, r8 - mov r1, r7 - bl ApplyRawstBerryEffect - b _0231CB14 -_0231C258: - mov r0, r8 - mov r1, r7 - bl ApplyHungerSeedEffect - b _0231CB14 -_0231C268: - mov r0, r8 - mov r1, r7 - bl ApplyGinsengEffect - b _0231CB14 -_0231C278: - mov r0, r8 - mov r1, r7 - mov r2, sb - bl ApplyBlastSeedEffect - b _0231CB14 -_0231C28C: - ldr r2, _0231C74C ; =0x000003E7 - mov r0, r8 - mov r1, r7 - mov r3, #0 - bl RestoreAllMovePP - b _0231CB14 -_0231C2A4: - ldr r1, _0231C750 ; =PROTEIN_STAT_BOOST - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ApplyProteinEffect - b _0231CB14 -_0231C2BC: - ldr r1, _0231C754 ; =CALCIUM_STAT_BOOST - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ApplyCalciumEffect - b _0231CB14 -_0231C2D4: - ldr r1, _0231C758 ; =IRON_STAT_BOOST - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ApplyIronEffect - b _0231CB14 -_0231C2EC: - ldr r1, _0231C75C ; =ZINC_STAT_BOOST - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ApplyZincEffect - b _0231CB14 -_0231C304: - mov r0, r8 - mov r1, r7 - mov r2, #1 - mov r3, #0 - bl EndNegativeStatusConditionWrapper - b _0231CB14 -_0231C31C: - mov r3, #1 - mov r0, r8 - mov r1, r7 - mov r2, #5 - str r3, [sp] - bl LevelUpItemEffect - b _0231CB14 -_0231C338: - mov r0, r8 - mov r1, r7 - bl ApplyVileSeedEffect - b _0231CB14 -_0231C348: - mov r0, r8 - mov r1, r7 - mov r2, #4 - mov r3, #0 - bl TryWarp - b _0231CB14 -_0231C360: - mov r0, r8 - mov r1, r7 - bl ApplyViolentSeedEffect - b _0231CB14 -_0231C370: - mov r0, r8 - mov r1, r7 - bl TryInflictInvisibleStatus - b _0231CB14 -_0231C380: - mov r0, r7 - mov r1, #0xa - mov r2, #0 - bl BoostIQ - b _0231CB14 -_0231C394: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0x32 - mov r3, #5 - str r4, [sp] - bl TryIncreaseBelly - b _0231CB14 -_0231C3B4: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0x64 - mov r3, #0xa - str r4, [sp] - bl TryIncreaseBelly - b _0231CB14 -_0231C3D4: - mov r4, #1 - mov r0, r8 - mov r1, r7 - rsb r2, r4, #0x3e8 - mov r3, #0xa - str r4, [sp] - bl TryIncreaseBelly - b _0231CB14 -_0231C3F4: - mov r0, r8 - mov r1, r7 - bl ApplyGrimyFoodEffect - b _0231CB14 -_0231C404: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #1 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C420: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #2 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C43C: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #3 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C458: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #4 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C474: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #5 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C490: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #6 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C4AC: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #7 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C4C8: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #8 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C4E4: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #9 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C500: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xa - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C51C: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xb - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C538: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xc - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C554: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xd - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C570: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xe - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C58C: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xf - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5A8: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0x10 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5C4: - ldr r1, _0231C760 ; =GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0x11 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5E0: - ldr r1, _0231C764 ; =WONDER_GUMMI_STAT_BOOST - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xff - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5FC: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0x32 - mov r3, #5 - str r4, [sp] - bl TryIncreaseBelly - b _0231CB14 -_0231C61C: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0xa - mov r3, #0 - str r4, [sp] - bl TryIncreaseBelly - b _0231CB14 -_0231C63C: - mov r4, #1 - mov r0, r8 - mov r1, r7 - rsb r2, r4, #0x3e8 - mov r3, #0x32 - str r4, [sp] - bl TryIncreaseBelly - b _0231CB14 -_0231C65C: - cmp sb, #0 - beq _0231C6A4 - add r1, sp, #0x1f - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C6A4: - mov r0, r8 - bl ApplyKeyEffect - b _0231CB14 -_0231C6B0: - mov r0, r8 - mov r1, r7 - bl TryInflictDropeyeStatus - b _0231CB14 - .align 2, 0 -#ifdef JAPAN -#define APPLY_ITEM_EFFECT_OFFSET -0x2C1 -#else -#define APPLY_ITEM_EFFECT_OFFSET 0 -#endif -_0231C6C0: .word 0x000001AB -_0231C6C4: .word 0x00001317 -_0231C6C8: .word 0x00000BE6 + APPLY_ITEM_EFFECT_OFFSET -_0231C6CC: .word 0x00000BE7 + APPLY_ITEM_EFFECT_OFFSET -_0231C6D0: .word ov10_022C4574 -_0231C6D4: .word 0x00000256 -_0231C6D8: .word ov10_022C4558 -_0231C6DC: .word 0x00000BE8 + APPLY_ITEM_EFFECT_OFFSET -_0231C6E0: .word 0x0000016B -_0231C6E4: .word 0x00000192 -_0231C6E8: .word 0x00000196 -_0231C6EC: .word 0x0000019A -_0231C6F0: .word 0x0000019E -_0231C6F4: .word 0x000001A2 -_0231C6F8: .word 0x000001A6 -_0231C6FC: .word 0x000001AA -_0231C700: .word 0x00000195 -_0231C704: .word STICK_POWER -_0231C708: .word IRON_THORN_POWER -_0231C70C: .word SILVER_SPIKE_POWER -_0231C710: .word GOLD_FANG_POWER -_0231C714: .word CACNEA_SPIKE_POWER -_0231C718: .word CORSOLA_TWIG_POWER -_0231C71C: .word GEO_PEBBLE_DAMAGE -_0231C720: .word 0x0000024F -_0231C724: .word GRAVELEROCK_DAMAGE -_0231C728: .word GOLD_THORN_POWER -_0231C72C: .word RARE_FOSSIL_DAMAGE -_0231C730: .word ORAN_BERRY_HP_RESTORATION -_0231C734: .word ORAN_BERRY_FULL_HP_BOOST -_0231C738: .word SITRUS_BERRY_HP_RESTORATION -_0231C73C: .word SITRUS_BERRY_FULL_HP_BOOST -_0231C740: .word LIFE_SEED_HP_BOOST -_0231C744: .word SLEEP_TURN_RANGE -_0231C748: .word 0x00000BE9 + APPLY_ITEM_EFFECT_OFFSET -_0231C74C: .word 0x000003E7 -_0231C750: .word PROTEIN_STAT_BOOST -_0231C754: .word CALCIUM_STAT_BOOST -_0231C758: .word IRON_STAT_BOOST -_0231C75C: .word ZINC_STAT_BOOST -_0231C760: .word GUMMI_STAT_BOOST -_0231C764: .word WONDER_GUMMI_STAT_BOOST -_0231C768: - mov r0, r8 - mov r1, r7 - bl TryInflictSlipStatus - cmp r0, #0 - bne _0231CB14 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBAC ; =0x00000C75 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C7A0: - mov r0, r8 - mov r1, r7 - bl ApplyViaSeedEffect - b _0231CB14 -_0231C7B0: - mov r0, r8 - mov r1, r7 - bl ApplyMixElixirEffect - b _0231CB14 -_0231C7C0: - mov r4, #0 - str r4, [sp] - ldr r0, _0231CBB0 ; =OREN_BERRY_DAMAGE - str r4, [sp, #4] - mov r1, #0x270 - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C7FC: - mov r0, r8 - mov r1, r7 - bl ApplyDoughSeedEffect - b _0231CB14 -_0231C80C: - mov r0, r8 - mov r1, r7 - bl ApplyGravelyrockEffect - b _0231CB14 -_0231C81C: - mov r0, r8 - mov r1, r7 - bl ApplyGonePebbleEffect - b _0231CB14 -_0231C82C: - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryInflictBlinkerStatus - b _0231CB14 -_0231C844: - cmp sb, #0 - beq _0231C88C - add r1, sp, #0x1e - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C88C: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C8B0: - cmp sb, #0 - beq _0231C8F8 - add r1, sp, #0x1d - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C8F8: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C91C: - cmp sb, #0 - beq _0231C964 - add r1, sp, #0x1c - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C964: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C988: - cmp sb, #0 - beq _0231C9D0 - add r1, sp, #0x1b - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C9D0: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C9F4: - cmp sb, #0 - beq _0231CA3C - add r1, sp, #0x1a - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231CA3C: - ldr r2, _0231CBB8 ; =0x00000C76 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231CA50: - mov r0, r8 - mov r1, r7 - bl ApplyGracideaEffect - b _0231CB14 -_0231CA60: - cmp sb, #0 - beq _0231CAA8 - add r1, sp, #0x19 - ldr r0, _0231CBBC ; =ov10_022C44EC - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231CAA8: - ldr r2, _0231C6DC ; =0x00000BE8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231CABC: - cmp sb, #0 - beq _0231CB04 - add r1, sp, #0x18 - ldr r0, _0231C6D8 ; =ov10_022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231CB04: - ldr r2, _0231C6DC ; =0x00000BE8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_0231CB14: - mov r0, r7 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - beq _0231CB9C - ldr r1, [r7, #0xb4] - ldrsh r4, [r6, #4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - bne _0231CB48 -#ifdef JAPAN - add r0, r1, #0x224 -#else - add r0, r1, #0x228 -#endif - mov r1, #0x5d - bl ExclusiveItemEffectFlagTest -_0231CB48: - cmp r0, #0 - beq _0231CB9C - ldr r0, _0231CBC0 ; =APPLES_AND_BERRIES_ITEM_IDS - b _0231CB90 -_0231CB58: - cmp r4, r1 - bne _0231CB8C - mov r0, #0xa - bl WaitUntilAlertBoxPauseIsOver - ldr r0, _0231CBC4 ; =ov10_022C4864 - mov r4, #1 - ldr r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #0 - str r4, [sp] - bl TryIncreaseHp - b _0231CB9C -_0231CB8C: - add r0, r0, #2 -_0231CB90: - ldrsh r1, [r0] - cmp r1, #0 - bne _0231CB58 -_0231CB9C: -#ifdef EUROPE - mov r0, #1 - bl ov29_022FB920 -#endif - mov r0, r8 - bl EnemyEvolution -_0231CBA4: - add sp, sp, #0x5c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0231CBAC: .word 0x00000C75 + APPLY_ITEM_EFFECT_OFFSET -_0231CBB0: .word OREN_BERRY_DAMAGE -_0231CBB4: .word 0x00000C67 + APPLY_ITEM_EFFECT_OFFSET -_0231CBB8: .word 0x00000C76 + APPLY_ITEM_EFFECT_OFFSET -_0231CBBC: .word ov10_022C44EC -_0231CBC0: .word APPLES_AND_BERRIES_ITEM_IDS -_0231CBC4: .word ov10_022C4864 - arm_func_end ApplyItemEffect diff --git a/include/overlay_29_0231CBC8.h b/include/overlay_29_0231CBC8.h index ea4e4a67..2823f729 100644 --- a/include/overlay_29_0231CBC8.h +++ b/include/overlay_29_0231CBC8.h @@ -6,4 +6,6 @@ // Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity). bool8 EntityIsValid__0231CBC8(struct entity *entity); +void ApplyItemEffect(char param_1, u8 param_2, u8 param_3, struct entity *attacker, struct entity *defender, struct item *item); + #endif //PMDSKY_OVERLAY_29_0231CBC8_H diff --git a/src/dungeon_projectile_throw.c b/src/dungeon_projectile_throw.c index 79db778a..dd89c843 100644 --- a/src/dungeon_projectile_throw.c +++ b/src/dungeon_projectile_throw.c @@ -1,4 +1,5 @@ #include "dungeon_projectile_throw.h" +#include "overlay_29_0231CBC8.h" #include "dg_object.h" #include "dungeon.h" #include "dungeon_items.h" @@ -35,7 +36,6 @@ extern void SubstitutePlaceholderStringTags(s32 string_id, struct entity *entity extern void ChangeMonsterAnimationToHurt(struct entity *monster, u32 direction); extern void LogMessageByIdWithPopupCheckUserTarget(struct entity *user, struct entity *target, u32 message_id); extern bool8 TryEndPetrifiedOrSleepStatus(struct entity *user, struct entity *target); -extern void ApplyItemEffect(char param_1, u8 param_2, u8 param_3, struct entity *attacker, struct entity *defender, struct item *thrown_item); extern void SpawnDroppedItem(struct entity *entity, struct entity *item_entity, struct item *item, bool8 param_4, struct position *dir_xy, u32 param_6); bool8 ItemIsActive__02347B50(struct entity *entity, enum item_id item_id) diff --git a/src/overlay_29_0231CBC8.c b/src/overlay_29_0231CBC8.c index a3ffb4f6..a961a270 100644 --- a/src/overlay_29_0231CBC8.c +++ b/src/overlay_29_0231CBC8.c @@ -1,5 +1,612 @@ #include "overlay_29_0231CBC8.h" #include "dungeon_util_static.h" +#include "dungeon_capabilities_1.h" +#include "dungeon_pokemon_attributes_1.h" +#include "exclusive_item.h" +#include "item_util.h" +#include "main_0200EDC0.h" +#include "move_orb_effects.h" +#include "moves_1.h" +#include "overlay_29_022EAC7C.h" +#include "overlay_29_02344AF8.h" +#include "overlay_29_0234BA54.h" + +#ifdef JAPAN +#define MESSAGE_BE6 0x925 +#define MESSAGE_BE7 0x926 +#define MESSAGE_BE8 0x927 +#define MESSAGE_BE9 0x928 +#define MESSAGE_C67 0x9A6 +#define MESSAGE_C75 0x9B4 +#define MESSAGE_C76 0x9B5 +#else +#define MESSAGE_BE6 0xBE6 +#define MESSAGE_BE7 0xBE7 +#define MESSAGE_BE8 0xBE8 +#define MESSAGE_BE9 0xBE9 +#define MESSAGE_C67 0xC67 +#define MESSAGE_C75 0xC75 +#define MESSAGE_C76 0xC76 +#endif + + +#ifdef EUROPE +extern void ov29_022FB920(bool8 a); +#endif + +extern void LogMessageByIdWithPopupCheckUserTarget(struct entity *user, struct entity *target, u32 message_id); +extern void SubstitutePlaceholderStringTags(s32 string_id, struct entity *entity, u32 param_3); +extern void TryIncreaseHp(struct entity *user, struct entity *target, s32 hp, s32 a, bool8 b); +extern void EndNegativeStatusConditionWrapper(struct entity *user, struct entity *target, bool8 displayMessage, bool8 fromMove); +extern bool8 SpawnDroppedItemWrapper(struct entity *entity, struct position *pos, struct item *item, u32 a); +extern void TryWarp(struct entity *user, struct entity *target, s32 a, s32 b); +extern void BoostIQ(struct entity *entity, s16 iq, bool8 a); +extern void UpdateShopkeeperModeAfterAttack(struct entity *attacker, struct entity *defender); +extern void TryInflictConfusedStatus(struct entity *user, struct entity *target, bool8 a, bool8 b); +extern void TryInflictInvisibleStatus(struct entity *user, struct entity *target); +extern void TryInflictPetrifiedStatus(struct entity *user, struct entity *target); +extern void TryInflictSleeplessStatus(struct entity *user, struct entity *target); +extern s32 CalcStatusDuration(struct entity *entity, const s16 *turn_range, bool8 iq_skill_effects); + +extern void CalcDamageFixedNoCategory(struct entity *attacker, struct entity *defender, s16 fixed_damage, s32 a, bool8 *flag, s32 b, s32 damage_source, s32 c, s32 d, s32 e); +extern void DealDamageProjectile(struct entity *attacker, struct entity *defender, struct move *move, s16 power, s32 a, s32 b); +extern void ApplyGummiBoostsDungeonMode(struct entity *user, struct entity *target, s32 type, s16 boost); +extern void TryIncreaseBelly(struct entity *user, struct entity *target, s32 a, s32 b, s32 c); +extern void LevelUpItemEffect(struct entity *user, struct entity *target, s32 a, s32 b, s32 c); +extern void RestoreAllMovePP(struct entity *user, struct entity *target, s32 a, s32 b); +extern void TryInflictSleepStatus(struct entity *user, struct entity *target, s32 turns, bool8 a); +extern void TryInflictBlinkerStatus(struct entity *user, struct entity *target, bool8 a, bool8 b); +extern void TryInflictCrossEyedStatus(struct entity *user, struct entity *target, bool8 a); +extern void TryDecreaseLevel(struct entity *user, struct entity *target, s32 a); +extern void ApplyProteinEffect(struct entity *user, struct entity *target, s16 boost); +extern void ApplyCalciumEffect(struct entity *user, struct entity *target, s16 boost); +extern void ApplyIronEffect(struct entity *user, struct entity *target, s16 boost); +extern void ApplyZincEffect(struct entity *user, struct entity *target, s16 boost); +extern void ApplyBlastSeedEffect(struct entity *user, struct entity *target, char a); +extern void ApplyCheriBerryEffect(struct entity *user, struct entity *target); +extern void ApplyPechaBerryEffect(struct entity *user, struct entity *target); +extern void ApplyRawstBerryEffect(struct entity *user, struct entity *target); +extern void ApplyHungerSeedEffect(struct entity *user, struct entity *target); +extern void ApplyGinsengEffect(struct entity *user, struct entity *target); +extern void ApplyVileSeedEffect(struct entity *user, struct entity *target); +extern void ApplyViolentSeedEffect(struct entity *user, struct entity *target); +extern void ApplyGrimyFoodEffect(struct entity *user, struct entity *target); +extern void ApplyMixElixirEffect(struct entity *user, struct entity *target); +extern void ApplyDoughSeedEffect(struct entity *user, struct entity *target); +extern void ApplyViaSeedEffect(struct entity *user, struct entity *target); +extern void ApplyGravelyrockEffect(struct entity *user, struct entity *target); +extern void ApplyGonePebbleEffect(struct entity *user, struct entity *target); +extern void ApplyGracideaEffect(struct entity *user, struct entity *target); +extern void TryInflictDropeyeStatus(struct entity *user, struct entity *target); +extern void TryInflictEyedropStatus(struct entity *user, struct entity *target); +extern bool8 TryInflictSlipStatus(struct entity *user, struct entity *target); +extern void ov29_022E5A00(struct entity *entity, struct item *item); +extern void ov29_022E5AE4(struct entity *entity, struct item *item); +extern void ov29_0230F9A4(struct entity *entity, struct item *item); +extern bool8 ov29_022FB9BC(struct entity *entity); +extern void ov29_022F9EA0(struct entity *entity); +extern void EnemyEvolution(struct entity *entity); +extern bool8 AddHeldItemToBag(struct monster *monster); +extern void ApplyKeyEffect(struct entity *entity); + +extern const s16 STICK_POWER; +extern const s16 IRON_THORN_POWER; +extern const s16 SILVER_SPIKE_POWER; +extern const s16 GOLD_FANG_POWER; +extern const s16 CACNEA_SPIKE_POWER; +extern const s16 CORSOLA_TWIG_POWER; +extern const s16 GOLD_THORN_POWER; +extern const s16 GEO_PEBBLE_DAMAGE; +extern const s16 GRAVELEROCK_DAMAGE; +extern const s16 RARE_FOSSIL_DAMAGE; +extern const s16 OREN_BERRY_DAMAGE; +extern const s16 ORAN_BERRY_HP_RESTORATION; +extern const s16 ORAN_BERRY_FULL_HP_BOOST; +extern const s16 SITRUS_BERRY_HP_RESTORATION; +extern const s16 SITRUS_BERRY_FULL_HP_BOOST; +extern const s16 LIFE_SEED_HP_BOOST; +extern const s16 PROTEIN_STAT_BOOST; +extern const s16 CALCIUM_STAT_BOOST; +extern const s16 IRON_STAT_BOOST; +extern const s16 ZINC_STAT_BOOST; +extern const s16 GUMMI_STAT_BOOST; +extern const s16 WONDER_GUMMI_STAT_BOOST; +extern const s16 ov10_022C44EC; +extern const s16 ov10_022C4558; +extern const s16 ov10_022C4574; +extern const s32 ov10_022C4864; +extern const s16 SLEEP_TURN_RANGE[]; +extern const s16 APPLES_AND_BERRIES_ITEM_IDS[]; + +void ApplyItemEffect(char param_1, u8 param_2, u8 param_3, + struct entity *attacker, struct entity *defender, + struct item *item) +{ + if (param_1 != 0 && param_2 == 0) { + struct monster *monster = GetEntInfo(defender); + bool8 flag = FALSE; + + if (ov29_022FB9BC(defender)) { + SpawnDroppedItemWrapper(attacker, &defender->pos, item, 0); + return; + } + if (monster->is_not_team_member) { + if (GetItemCategoryVeneer(item->id) != CATEGORY_THROWN_LINE && + GetItemCategoryVeneer(item->id) != CATEGORY_BERRIES_SEEDS_VITAMINS && + GetItemCategoryVeneer(item->id) != CATEGORY_THROWN_ARC) { + flag = TRUE; + } + if (GetItemCategoryVeneer(item->id) == CATEGORY_HELD_ITEMS && + item->id >= ITEM_A_STONE && item->id <= ITEM_QUESTION_STONE) { + flag = FALSE; + } + } else if (GetItemCategoryVeneer(item->id) != CATEGORY_BERRIES_SEEDS_VITAMINS) { + flag = IqSkillIsEnabled(defender, IQ_ITEM_CATCHER); + } + if (CheckVariousConditions__0230156C(defender)) { + flag = FALSE; + } + if (flag) { + if (!ItemExists(monster->held_item.flags)) { + if (monster->is_not_team_member || !IsBagFull()) { + if (monster->shopkeeper == SHOPKEEPER_MODE_SHOPKEEPER) { + SpawnDroppedItemWrapper(attacker, &defender->pos, item, 0); + return; + } + PlaySeByIdIfNotSilence(0x1317); + PrepareItemForPrinting__02345728(0, item); + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE6); + monster->held_item = *item; + if (!monster->is_not_team_member) { + AddHeldItemToBag(monster); + } + ov29_022F9EA0(defender); + return; + } + } + } + } + if (param_1) { + ov29_022E5A00(defender, item); + UpdateShopkeeperModeAfterAttack(attacker, defender); + } + if (ItemSticky(item->flags)) { + PrepareItemForPrinting__02345728(0, item); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE7); + if (param_1) { + bool8 b; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4574, 1, &b, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + EnemyEvolution(attacker); + return; + } + } + if (!param_1) { + ov29_022E5AE4(defender, item); + } + ov29_0230F9A4(attacker, item); + if (GetItemCategoryVeneer(item->id) == CATEGORY_BERRIES_SEEDS_VITAMINS) { + TryIncreaseBelly(attacker, defender, 5, 0, 0); + } + if (GetItemCategoryVeneer(item->id) == CATEGORY_TMS_HMS || + GetItemCategoryVeneer(item->id) == CATEGORY_LINK_BOX) { + if (param_1) { + bool8 b; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &b, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE8); + } + } else { + switch (item->id) { + case ITEM_STICK: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, STICK_POWER, 0x100, ITEM_STICK); + break; + } + case ITEM_IRON_THORN: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, IRON_THORN_POWER, 0x100, ITEM_IRON_THORN); + break; + } + case ITEM_SILVER_SPIKE: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, SILVER_SPIKE_POWER, 0x100, ITEM_SILVER_SPIKE); + break; + } + case ITEM_GOLD_FANG: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, GOLD_FANG_POWER, 0x100, ITEM_GOLD_FANG); + break; + } + case ITEM_CACNEA_SPIKE: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, CACNEA_SPIKE_POWER, 0x100, ITEM_CACNEA_SPIKE); + break; + } + case ITEM_CORSOLA_TWIG: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, CORSOLA_TWIG_POWER, 0x100, ITEM_CORSOLA_TWIG); + break; + } + case ITEM_GEO_PEBBLE: + CalcDamageFixedNoCategory(attacker, defender, GEO_PEBBLE_DAMAGE, 1, NULL, 0, DAMAGE_SOURCE_THROWN_ROCK, 0, 0, 0); + break; + case ITEM_GRAVELEROCK: + CalcDamageFixedNoCategory(attacker, defender, GRAVELEROCK_DAMAGE, 1, NULL, 0, DAMAGE_SOURCE_THROWN_ROCK, 0, 0, 0); + break; + case ITEM_GOLD_THORN: { + struct move move; + + InitMove(&move, MOVE_PROJECTILE); + DealDamageProjectile(attacker, defender, &move, GOLD_THORN_POWER, 0x100, ITEM_GOLD_THORN); + break; + } + case ITEM_RARE_FOSSIL: + CalcDamageFixedNoCategory(attacker, defender, RARE_FOSSIL_DAMAGE, 1, NULL, 0, DAMAGE_SOURCE_THROWN_ROCK, 0, 0, 0); + break; + case ITEM_HEAL_SEED: + EndNegativeStatusConditionWrapper(attacker, defender, TRUE, param_3); + break; + case ITEM_ORAN_BERRY: + TryIncreaseHp(attacker, defender, ORAN_BERRY_HP_RESTORATION, ORAN_BERRY_FULL_HP_BOOST, TRUE); + break; + case ITEM_SITRUS_BERRY: + TryIncreaseHp(attacker, defender, SITRUS_BERRY_HP_RESTORATION, SITRUS_BERRY_FULL_HP_BOOST, TRUE); + break; + case ITEM_LIFE_SEED: + TryIncreaseHp(attacker, defender, 0, LIFE_SEED_HP_BOOST, TRUE); + break; + case ITEM_BLINKER_SEED: + TryInflictBlinkerStatus(attacker, defender, FALSE, FALSE); + break; + case ITEM_X_EYE_SEED: + TryInflictCrossEyedStatus(attacker, defender, FALSE); + break; + case ITEM_QUICK_SEED: + BoostSpeedOneStage(attacker, defender, 0, TRUE); + break; + case ITEM_EYEDROP_SEED: + TryInflictEyedropStatus(attacker, defender); + break; + case ITEM_TOTTER_SEED: + TryInflictConfusedStatus(attacker, defender, TRUE, FALSE); + break; + case ITEM_CHERI_BERRY: + ApplyCheriBerryEffect(attacker, defender); + break; + case ITEM_PECHA_BERRY: + ApplyPechaBerryEffect(attacker, defender); + break; + case ITEM_WARP_SEED: + TryWarp(attacker, defender, 0, 0); + break; + case ITEM_SLEEP_SEED: + TryInflictSleepStatus(attacker, defender, CalcStatusDuration(defender, SLEEP_TURN_RANGE, TRUE), TRUE); + break; + case ITEM_CHESTO_BERRY: + TryInflictSleeplessStatus(attacker, defender); + break; + case ITEM_JOY_SEED: + LevelUpItemEffect(attacker, defender, 1, 1, 1); + break; + case ITEM_DOOM_SEED: + TryDecreaseLevel(attacker, defender, 1); + break; + case ITEM_STUN_SEED: + TryInflictPetrifiedStatus(attacker, defender); + break; + case ITEM_PLAIN_SEED: + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE9); + break; + case ITEM_RAWST_BERRY: + ApplyRawstBerryEffect(attacker, defender); + break; + case ITEM_HUNGER_SEED: + ApplyHungerSeedEffect(attacker, defender); + break; + case ITEM_GINSENG: + ApplyGinsengEffect(attacker, defender); + break; + case ITEM_BLAST_SEED: + ApplyBlastSeedEffect(attacker, defender, param_1); + break; + case ITEM_MAX_ELIXIR: + RestoreAllMovePP(attacker, defender, 999, 0); + break; + case ITEM_PROTEIN: + ApplyProteinEffect(attacker, defender, PROTEIN_STAT_BOOST); + break; + case ITEM_CALCIUM: + ApplyCalciumEffect(attacker, defender, CALCIUM_STAT_BOOST); + break; + case ITEM_IRON: + ApplyIronEffect(attacker, defender, IRON_STAT_BOOST); + break; + case ITEM_ZINC: + ApplyZincEffect(attacker, defender, ZINC_STAT_BOOST); + break; + case ITEM_GABITE_SCALE: + EndNegativeStatusConditionWrapper(attacker, defender, TRUE, FALSE); + break; + case ITEM_GOLDEN_SEED: + LevelUpItemEffect(attacker, defender, 5, 1, 1); + break; + case ITEM_VILE_SEED: + ApplyVileSeedEffect(attacker, defender); + break; + case ITEM_PURE_SEED: + TryWarp(attacker, defender, 4, 0); + break; + case ITEM_VIOLENT_SEED: + ApplyViolentSeedEffect(attacker, defender); + break; + case ITEM_VANISH_SEED: + TryInflictInvisibleStatus(attacker, defender); + break; + case ITEM_NECTAR: + BoostIQ(defender, 10, FALSE); + break; + case ITEM_APPLE: + TryIncreaseBelly(attacker, defender, 50, 5, 1); + break; + case ITEM_BIG_APPLE: + TryIncreaseBelly(attacker, defender, 100, 10, 1); + break; + case ITEM_HUGE_APPLE: + TryIncreaseBelly(attacker, defender, 999, 10, 1); + break; + case ITEM_GRIMY_FOOD: + ApplyGrimyFoodEffect(attacker, defender); + break; + case ITEM_WHITE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_NORMAL, GUMMI_STAT_BOOST); + break; + case ITEM_RED_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FIRE, GUMMI_STAT_BOOST); + break; + case ITEM_BLUE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_WATER, GUMMI_STAT_BOOST); + break; + case ITEM_GRASS_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GRASS, GUMMI_STAT_BOOST); + break; + case ITEM_YELLOW_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ELECTRIC, GUMMI_STAT_BOOST); + break; + case ITEM_CLEAR_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ICE, GUMMI_STAT_BOOST); + break; + case ITEM_ORANGE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FIGHTING, GUMMI_STAT_BOOST); + break; + case ITEM_PINK_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_POISON, GUMMI_STAT_BOOST); + break; + case ITEM_BROWN_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GROUND, GUMMI_STAT_BOOST); + break; + case ITEM_SKY_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FLYING, GUMMI_STAT_BOOST); + break; + case ITEM_GOLD_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_PSYCHIC, GUMMI_STAT_BOOST); + break; + case ITEM_GREEN_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_BUG, GUMMI_STAT_BOOST); + break; + case ITEM_GRAY_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ROCK, GUMMI_STAT_BOOST); + break; + case ITEM_PURPLE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GHOST, GUMMI_STAT_BOOST); + break; + case ITEM_ROYAL_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_DRAGON, GUMMI_STAT_BOOST); + break; + case ITEM_BLACK_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_DARK, GUMMI_STAT_BOOST); + break; + case ITEM_SILVER_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_STEEL, GUMMI_STAT_BOOST); + break; + case ITEM_WONDER_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, 0xFF, WONDER_GUMMI_STAT_BOOST); + break; + case ITEM_UNNAMED_0x71: + TryIncreaseBelly(attacker, defender, 50, 5, 1); + break; + case ITEM_UNNAMED_0x72: + TryIncreaseBelly(attacker, defender, 10, 0, 1); + break; + case ITEM_GOLDEN_APPLE: + TryIncreaseBelly(attacker, defender, 999, 50, 1); + break; + case ITEM_KEY: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } + else { + ApplyKeyEffect(attacker); + } + break; + case ITEM_DROPEYE_SEED: + TryInflictDropeyeStatus(attacker, defender); + break; +case ITEM_SLIP_SEED: + if (!TryInflictSlipStatus(attacker, defender)) { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C75); + } + break; +case ITEM_VIA_SEED: + ApplyViaSeedEffect(attacker, defender); + break; +case ITEM_MIX_ELIXIR: + ApplyMixElixirEffect(attacker, defender); + break; +case ITEM_OREN_BERRY: + CalcDamageFixedNoCategory(attacker, defender, OREN_BERRY_DAMAGE, 1, NULL, 0, + DAMAGE_SOURCE_OREN_BERRY, 0, 0, 0); + break; +case ITEM_DOUGH_SEED: + ApplyDoughSeedEffect(attacker, defender); + break; +case ITEM_GRAVELYROCK: + ApplyGravelyrockEffect(attacker, defender); + break; +case ITEM_GONE_PEBBLE: + ApplyGonePebbleEffect(attacker, defender); + break; +case ITEM_WANDER_GUMMI: + TryInflictBlinkerStatus(attacker, defender, 0, 0); + break; +case ITEM_PRIZE_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; +case ITEM_SILVER_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; +case ITEM_GOLD_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; +case ITEM_PRISM_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; +case ITEM_SKY_GIFT: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C76); + } + break; +case ITEM_GRACIDEA: + ApplyGracideaEffect(attacker, defender); + break; + case ITEM_UNNAMED_0x16B: + break; + case ITEM_A_STONE: + case ITEM_B_STONE: + case ITEM_C_STONE: + case ITEM_D_STONE: + case ITEM_E_STONE: + case ITEM_F_STONE: + case ITEM_G_STONE: + case ITEM_H_STONE: + case ITEM_I_STONE: + case ITEM_J_STONE: + case ITEM_K_STONE: + case ITEM_L_STONE: + case ITEM_M_STONE: + case ITEM_N_STONE: + case ITEM_O_STONE: + case ITEM_P_STONE: + case ITEM_Q_STONE: + case ITEM_R_STONE: + case ITEM_S_STONE: + case ITEM_T_STONE: + case ITEM_U_STONE: + case ITEM_V_STONE: + case ITEM_W_STONE: + case ITEM_X_STONE: + case ITEM_Y_STONE: + case ITEM_Z_STONE: + case ITEM_EXCLAMATION_STONE: + case ITEM_QUESTION_STONE: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C44EC, 1, &flag, 0, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE8); + } + break; + case ITEM_NOTHING: + default: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, 0, DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } + else { + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE8); + } + break; + } + } + + if (EntityIsValid__0231CBC8(defender)) { + struct monster *info = GetEntInfo(defender); + s16 id = item->id; + bool8 active; + + if (!info->is_not_team_member) + active = ExclusiveItemEffectFlagTest(info->exclusive_item_effect_flags, EXCLUSIVE_EFF_RECOVER_HP_FROM_APPLES_AND_BERRIES); + else + active = FALSE; + + if (active) { + const s16 *p; + + for (p = APPLES_AND_BERRIES_ITEM_IDS; *p != 0; p++) { + if (id == *p) { + WaitUntilAlertBoxPauseIsOver(10); + TryIncreaseHp(attacker, defender, ov10_022C4864, 0, TRUE); + break; + } + } + } + } + +#ifdef EUROPE + ov29_022FB920(TRUE); +#endif + EnemyEvolution(attacker); +} bool8 EntityIsValid__0231CBC8(struct entity *entity) {